首先声明,本文只是使用类文件的平常情况进行说明,对一些特殊情况不深入研究.(比如:int常量多大才会进入常量池而不是嵌入到代码中,为什么接口中的方法被实现后不出现在常量池中等等).首先,对类文件的格式做个总括;然后分别对每个部分进行详细说明;最后使用一个简单的类文件作为例子进行说明. 类文件的信息如以下格式排列: Magic Num->minor number->major number->constant_pool_count->constant_pool->access_flags->this_clas...
1、jaxp 是javase的一部分,就是jdk中的一部分,javax.xml.parsers包 1.1、dom方式解析xml DocumentBuilder DocumentBuilderFactorypackage demo;import org.w3c.dom.*; import org.xml.sax.SAXException;import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import jav...
本篇文章将介绍JT808协议的解析思路。另请大神绕路,不喜勿喷! 1 JT808协议扫盲 1.1 数据类型数据类型描述及要求BYTE 无符号单字节整形(字节, 8 位)WORD 无符号双字节整形(字, 16 位)DWORD 无符号四字节整形(双字, 32 位)BYTE[n] n 字节BCD[n] 8421 码, n 字节STRING GBK 编码,若无数据,置空1.2 消息结构标识位消息头消息体校验码标识位1byte(0x7e) 16byte 1byte 1byte(0x7e)1.3 消息头 消息ID(0-1) 消息体属性(...
一、前言 Java线程同步两种方式,synchronized关键字和Lock锁机制,其中,AQS队列就是Lock锁实现公平加锁的底层支持。 二、AQS源码对于lock.lock()的实现 2.1 AQS类 + 内部Node类 2.1.1 AQS类结构示意图 首先我们要看看AQS的结构的类图从AQS类的类结构示意图可以知道,AbstractQueuedSynchronizer的父类是AbstractOwnableSynchronizer; AbstractQueuedSynchronizer的子类是Sync,然后又通过继承Sync得到了FairSync公平锁和UnfaiSy...
一、前言 CountDownLatch是在java1.5被引入,存在于java.util.cucurrent包中,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。 二、CountDownLatch概要 CountDownLatch类作用:使一个线程等待其他线程各自执行完毕后再执行。 CountDownLatch三步操作构造函数:它是通过一个计数器来实现的,计数器的初始值是线程的数量; 减一操作:每当一个线程执行完毕后,计数器的值就-1; 阻塞通过:...
一、前言 二、synchronized局限性 + Lock锁机制的引入 2.1 synchronized局限性 第一,使用synchronized,其他线程只能等待直到持有锁的线程执行完释放锁(synchronized释放锁有且仅有两种情况) 如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,但是获取锁的线程释放锁只会有两种情况:释放synchronized同步锁的第一种情况:获取锁的线程执行完...
ThreadLocal内部设计 在java8中ThreadLocal是这样设计的:每个Thread维护一个threadLocalMap,这个Map的key是ThreadLocal本身,value才是真正要存储的Object 具体过程是这样的每个Thread线程内部都有一个Map(ThreadLocalMap) Map里面存储ThreadLocal对象(key)和线程的变量副本 Thread内部的Map是由ThreadLocal维护的,由ThreadLocal负责向Map获取和设置线程的变量值 对于不同的线程每次获取副本值时,别的线程并不能获取到当前线程的副本...
采用 io.jsonwebtoken 版 导入maven <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.2</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-impl</artifactId><version>0.11.2</version><scope>runtime</scope></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-jackson</artifactId> <!-- or jjwt-gson ...
一:由于需求需要完成题库系统,用户上传word的试卷,试卷中包含数学、化学、物理公式(OMML),图片以及带有公式图片的复杂表格,将word试卷系统拆分成一个一个的题目,题目中包含(题目类型、题文、选项、答案、解析)并保持基本样式不失真 1:需要解析的word格式2:解析出来题目的Json格式[{"title":"【试卷】学校2020年第二学期期末考试卷","subject":"【科目】数学","number":null,"question":"【题文】<table border=1><tr><t...
1、 Java语言有哪些特点(1)简单易学、有丰富的类库(2)面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高)(3)与平台无关性(JVM是Java跨平台使用的根本)(4)可靠安全(5)支持多线程2、面向对象和面向过程的区别面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一一调用则可。性能较高,所以单片机、嵌入式开发等一般采用面向过程开发面向对象:是把构成问题的事务分解成各...
javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1. 通过form表单向后端发送请求 <form id="postForm" action="${pageContext.request.contextPath}/UploadServlet" method="post" enctype="multipart/form-data"> <div class="bbxx wrap"> <input type="text" id="side-profile-name" name="username" class="form-cont...
在正式解析之前,我们需要下载解析Json所需要的jar包,一共有7个。下载地址如下:https://download.csdn.net/download/zai_xia/10374080 大家也可以自行找资源下载。 然后将这些Jar包 Build Path 进项目就好了。 特别注意:commons-collections这个jar包要用3.x版本的,不能用4.x版本;commons-lang这个jar包要用2.x版本的,不能用3.x版本的。 我们的目的是解析下面这样的json内容: {"data":{ "items":[{"itemstring":"手机","i...
??Java的变量可分为三大类:类变量:也被叫做静态变量;存在于类之内,方法和代码块之外,被static修饰的变量。 成员变量:存在于类之内,方法和代码块之外,没有被static修饰的变量。 局部变量:存在于方法之内的变量或方法的形参被称为局部变量。类变量 ??类变量依赖于类本身,只会在初始化时候在栈内存空间分配一次空间,无论类被实例化几次,都不会再为类变量分配空间;实例化对象访问类变量,底层都是将其转变为类本身来访问类...
核心原理: 该项目核心就是文件分块上传。前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题。 * 如何分片; * 如何合成一个文件; * 中断了从哪个分片开始。 如何分,利用强大的js库,来减轻我们的工作,市场上已经能有关于大文件分块的轮子,虽然程序员的天性曾迫使我重新造轮子。但是因为时间的关系还有工作的关系,我只能罢休了。最后我选择了百度的WebUploader来实现前端所...
[源码解析] 当 Java Stream 遇见 Flink 目录[源码解析] 当 Java Stream 遇见 Flink0x00 摘要0x01 领域1.1 Flink1.2 Java Stream1.3 探寻角度0x02 数据流模型2.1 Java Stream2.2 Flink2.3 分析0x03 流水线3.1 总体对比3.2 示例代码3.3 Stream操作分类3.4 Stage3.4.1 分类3.4.2 AbstractPipeline3.5 流水线构建阶段3.5.1 Head3.5.2 中间操作3.5.3 vs Flink StreamGraph3.6 流水线执行阶段3.6.1 TerminalOp3.6.2 ReduceOp3.6.3 Sink3....