![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
It 搬运工
日拱一卒。
展开
-
Executor源码解析
java.util.concurrent.Executor的主要作用是用来实现工作者线程和任务线程的分离。工作者线程是用来执行任务的线程,任务线程是被工作者线程执行的业务逻辑。Executor其实是一个接口,它包含一个Executor方法,用来执行业务逻辑线程。public interface Executor { /** * Executes the given command at some time in the future. The command * may.原创 2021-05-11 11:14:39 · 124 阅读 · 1 评论 -
ByteBuffer源码分析
ByteBuffer顾名思义是存放Byte类型的缓存类,其内部是由byte[]数组来实现byte类型存储的。它是作为一种容器,存储的方式是线性存储的。成员变量 final byte[] hb;//存放byte的数组 final int offset;//偏移量 boolean isReadOnly;// 是否只读标识构造函数 ByteBuffer(int mark, int pos, int lim, int cap, byte.原创 2021-05-10 13:46:59 · 161 阅读 · 0 评论 -
CyclicBarrier之栅栏
同德则同心,同心则同志。1. CyclicBarrier之栅栏栅栏类似于闭锁,它能阻塞一组线程直到某个事件发生。栅栏与闭锁的关键区别在于,所有的线程必须同时到达栅栏的位置,才能继续执行。闭锁用于等待事件,而栅栏用于等待其他线程。CyclicBarrier可以使一定数量的参与方反复的在栅栏的位置集合,当线程到达栅栏位置,那么栅栏将打开,此时所有的线程都被释放,那么栅栏就被认为是打破了,所有阻塞的await调用都将终止并抛出异常。如果成功的通过栅栏,那么await将为每个线程返回一个唯一的到达索引号,我.原创 2020-06-10 14:27:47 · 163 阅读 · 0 评论 -
闭锁之CountDownLatch
君子务知大者远者,小人务知小者近者。1. CountDownLatch介绍CountDownLatch是闭锁的一种实现方式,闭锁是一种同步工具类,可以延迟线程的进度直到其到达终止的状态。CountDownLatch它可以使一个或多个线程等待一组事件发生。闭锁状态包括一个计数器,该计数器被初始化为一个整数,表示需要等待的事件数量。countDown方法递减计数器,表示有一个事件发生了。而await方法等待计数器到零,这表示所有需要等待的事件都已经发生了。如果计数器的值没有到达零,那么await方法会.原创 2020-06-02 10:22:35 · 191 阅读 · 0 评论 -
线程简介
信,国之宝也,民之所庇也。1. 线程的作用线程,被称为轻量级进程(Lightweight Process, LWP),是程序执行流的最小单元,是CPU调度和分派的基本单位。线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。使用线程的最大作用是提高程序并行执行的作用,充分利用CPU的利用率,但是并不是线程越多越好,因为如果线程过多,切换线程执行任务是需要花费资源。这要不仅不能降低程序的运行时间,反而线程在不断的切换浪费时间与资源。2. 线程的执行过程3. 线程示例 //使用lamb.原创 2020-05-19 14:34:26 · 204 阅读 · 0 评论 -
String、StringBuilder与StringBuffer的区别
弈者举棋不定,不胜其耦1. String String对象在Java中是不可变的,并且是不可继承的(在String类前使用了final修饰了);当创建一个String对象(不是使用new操作)的时候,JVM首先判断该String对象在常量池是否存在相对的字符;如果存在则返回常量池字符串的句柄。如果是使用new操作创建的字符串,即使内容一样也会在堆上另外开辟一片内存。流程图如下: String var1 = "hello"; String var2 = "he.原创 2020-05-19 14:32:32 · 171 阅读 · 0 评论 -
java数值类型
1.java数值类图2.Integer类Integer存储时使用的字节数 // Bit twiddling /** * The number of bits used to represent an {@code int} value in two's * complement binary form. * * @since 1.5 */原创 2017-12-29 09:19:43 · 479 阅读 · 0 评论 -
使用maven无法查看jdk源码
按住ctrl加鼠标点击无法查看jdk源码的原因:1.JRE system Library 更换成 jdk1.XX.XX(原来可能是jre1.XX.XX)。 2.点击windows->preferences->Maven 把DownLoad Artifact Sources 与DownLoad Artifact Docs勾上。原创 2017-08-28 17:04:27 · 2234 阅读 · 0 评论 -
jsp 实现excel的导出
通过jsp 导出excel 的方法: *在代码中添加:<% String fileName = “fileName.xls”; response.setContentType(“application/vnd.ms-excel”); response.addHeader(“Content-Disposition”, “attachment;filename=”+java.ne原创 2017-08-23 19:41:04 · 373 阅读 · 0 评论 -
java static 语句块与非static语句块的调用顺序
最近笔试的时候遇到这个问题,特来mark一下以便自己回忆。(http://img.blog.csdn.net/20170305190141929?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTU5KTEpfMjNOTUs=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/S原创 2017-03-05 19:03:42 · 374 阅读 · 0 评论 -
java中的异常
try、catch、finally的执行顺序1.try与catch:首先执行try语句块的代码块,如果碰到异常就跳出到catch语句块里面,不再执行其他的代码块转而执行catch里面的代码块。(可以理解为catch 是给try 擦屁股的好人) 2.try、catch与finally: try与catch的运行顺序与上相同,只是finally里的语句块一定会执行。异常分类必检异常(checked原创 2016-07-06 10:52:24 · 331 阅读 · 0 评论 -
cglib 代理
使用cglib 代理需要导入两个包(asm-3.3.1.jar、cglib-2.2.2.jar)导包的时候你要观察你导入这两个包是否兼容。1飞机类:package com.jxufe.cglibproxy;/** * 飞机类* @author jack* @version 创建时间:2016年5月9日 上午10:40:05* */public class Airplane {原创 2016-05-09 11:25:51 · 753 阅读 · 0 评论 -
消除复制别人代码的行数以及点号
package com.jxufe.dormitory;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.File原创 2016-04-18 12:43:49 · 1258 阅读 · 0 评论 -
xml文件的创建
package com.jxufe.read;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;impor原创 2016-04-25 15:37:26 · 253 阅读 · 0 评论 -
Dom解析xml文件
Dom解析xml的步骤: (1)创建一个DocumentBuilderFactory对象(用DocumentBuilderFactory.newInstance()创建) (2)利用DocumentBuilderFactory对象创建DocumentBuilder对象 (3)利用DocumentBuilder对象创建Document对象 (4)解析xm原创 2016-04-25 14:50:44 · 294 阅读 · 0 评论