
JavaSE
文章平均质量分 67
Linging_24
好记性不如烂笔头。
展开
-
JDK9新特性
a ==> 1b ==> 2$7 ==> 3...> }| 已创建 方法 sum(int,int)$9 ==> 3...> int a;...> int b;...> }...> }...> }| 已创建 类 Calc$12 ==> 3。原创 2025-02-05 21:09:34 · 1141 阅读 · 0 评论 -
CompleteFuture详解
如上图所示,这里描绘的是一个业务接口的流程,其中包括CF1/CF2/CF3/CF4/CF5共5个步骤,并描绘了这些步骤之间的依赖关系,每个步骤可以是一次RPC调 用、一次数据库操作或者是一次本地方法调用等,在使用CompletableFuture进行 异步化编程时,图中的每个步骤都会产生一个CompletableFuture对象,最终结果 也会用一个CompletableFuture来进行表示。传递时使用指定线程池中的线程,当不传递时,会使用ForkJoinPool中的共用线程池 CommonPool。原创 2024-12-30 19:37:38 · 1166 阅读 · 0 评论 -
三种SPI机制的了解及使用
实现DBApi接口,并且在resources下创建META-INF/services/全限定接口名称文件,这里如上图所示,然后文件中写实现类的全限定类名。SPI的本质就是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类型。注意模块之间需要对应引用依赖,比如:db-api需要被其他三个模块引入,main-project要引入两个实现模块依赖。方式实现SPI机制,可以在不修改源码的前提下,提供Spring框架的扩展性。Spring SPI沿用了Java SPI的设计思想,采用。原创 2024-10-27 11:18:06 · 872 阅读 · 0 评论 -
Reactor线程模型详解
在目前的线程模型中一种是传统阻塞的I/O模型,一种是Reactor线程模型。原创 2023-12-13 23:54:54 · 1633 阅读 · 0 评论 -
IO零拷贝
Linux 2.1 开始提供了 sendFile 函数,其基本原理是:数据根本不经过用户态,直接从 Kernel Buffer 进入到 Socket Buffer,并且由于和用户态完全无关,这就避免了一次上下文切换。因此零拷贝通常是站在操作系统的角度看,即整个过程中,内核缓冲区之间是没有重复数据的。由此可见,复制的操作太频繁,共有 2 次 DMA 拷贝、2 次 CPU 拷贝、4 次上下文切换。紧接着发生第二次数据拷贝,即从内核缓冲区拷贝到用户缓冲区,同时发生一次内核态到用户态的上下文切换。原创 2023-12-13 23:19:42 · 980 阅读 · 0 评论 -
Linux的五种IO模型
不管使用何种方式,好处都是应用进程不会阻塞,可以继续执行,只要等待信号通知数据准备好被处理了、数据准备好被读取了。操作系统内核收到用户进程发起的请求后,从 I/O 设备读取数据到 kernel buffer 中,再将 buffer 中的数据拷贝到用户进程的地址空间,用户进程获取到数据后返回给客户端。和信号驱动 I/O 模型的区别是前者内核告诉我们何时可以开始一个 I/O 操作,而后者内核会告诉我们一个 I/O 操作何时完成。众所周知,出于对 OS 安全性的考虑,用户进程是不能直接操作 I/O 设备的。原创 2023-12-13 23:08:50 · 1463 阅读 · 1 评论 -
HashMap JDK1.8源码详解
首先将高16位无符号右移16位与低十六位做异或运算。如果不这样做,而是直接做&运算那么高十六位所代表的部分特征就可能被丢失 将高十六位无符号右移之后与低十六位做异或运算使得高十六位的特征与低十六位的特征进行了混合得到的新的数值中就高位与低位的信息都被保留了 ,而在这里采用异或运算而不采用& ,| 运算的原因是 异或运算能更好的保留各部分的特征,如果采用&运算计算出来的值会向1靠拢,采用|运算计算出来的值会向0靠拢。int类型的数值是4个字节的,右移16位异或可以同时保留高16位于低16位的特征。原创 2023-09-10 22:31:14 · 225 阅读 · 0 评论 -
ConcurrentHashMap jdk1.8源码详解
原理:cas + synchronized + 数组 + 链表 + 红黑树。用来标识旧hash表扩容后占位的临时节点,即当前桶扩容迁移成功的标识。原创 2023-09-07 20:38:38 · 686 阅读 · 0 评论 -
ProcessBuilder工具类及执行多条命令
【代码】ProcessBuilder执行多条命令。原创 2023-04-01 10:46:01 · 2557 阅读 · 0 评论 -
NIO例子
public class Main3 { /** * nio读取文件中的数据 * @param args */ public static void main(String[] args) throws IOException { readThenWrite(); } /** * nio读取文件中的数据 * 文件 -> channel -> buffer * @throws IOEx原创 2021-09-01 17:06:05 · 205 阅读 · 0 评论 -
常见Java8 stream流
将一个List<T>转为另一个List<K>:List<UserInfo> collect = list.stream() .map(l -> new UserInfo(l.getId(), l.getUsername(), l.getPassword())) .collect(Collectors.toList());原创 2021-08-29 20:06:21 · 169 阅读 · 0 评论 -
枚举类详解
https://blog.youkuaiyun.com/hellojoy/article/details/79883671转载 2020-11-30 16:14:45 · 131 阅读 · 0 评论 -
日期Api
获取年/月/日 时:分:秒Calendar cl = Calendar.getInstance();int year = cl.get(Calendar.YEAR);int month = cl.get(Calendar.MONTH); //0-11int day = cl.get(Calendar.DATE);int hour = cl.get(Calendar.HOUR);int minute = cl.get(Calendar.MINUTE);int second = cl.get(Ca原创 2020-10-11 08:28:54 · 226 阅读 · 0 评论 -
Zip的压缩和解压
压缩: /** * 1.根据地址获得Zip文件 * @param firstDir------源文件路径(即要压缩的文件地址)----d:\\example * @param aimDir--------目标文件路径(即要压缩到什么地方)---d:\\exmaple.zip */ public static void getZip(String firstDir, String...原创 2019-07-26 20:24:51 · 285 阅读 · 0 评论 -
java关键字final、static、abstract的总结
final关键字:final修饰类:(1)fina修饰的类不能被继承,因此该类内的方法自然不能被其子类所 覆盖,所以所有方法被隐式的修饰为final。(2)fina修饰的类不能被继承,因此该类内的方法自然不能被其子类覆盖,所以所有方法被隐式的修饰为final。final修饰方法:(1)final修饰的方法不能被覆盖。final修饰变量:fi...原创 2019-03-05 17:48:26 · 507 阅读 · 0 评论 -
检查类的结构
反射机制最重要的内容:检查类的结构。下面是一些方法:Field[ ] getFields();Field[ ] getDeclareFields();//返回一个包含Field对象的数组,这些对象记录了这个类或其超类的公有域。getDeclareFields方法也将返回包含Field对象的数组,这些对象记录了这个类的全部域。如果类中没有域,或者Class对象描述的是基本类型或数组类型,这些...翻译 2019-02-21 13:48:16 · 311 阅读 · 0 评论 -
java的Comparable接口和Comparator接口
目录一. Comparable简介:二. Comparator简介:三. Comparable接口和Comparator接口的比较和区别:四. 总结:一. Comparable简介:Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行...翻译 2019-02-15 12:17:27 · 537 阅读 · 0 评论 -
java泛型
java泛型的理解转载请注明出处:java泛型总结一. 泛型概念的提出(为什么需要泛型)?首先,我们看下下面这段简短的代码:public class GenericTest { public static void main(String[] args) { List list = new ArrayList(); list.add("qqyum...转载 2019-02-07 15:58:33 · 234 阅读 · 0 评论 -
Java基础语法
1. 命令提示符 2. java运行时环境3. 关键字&标识符4. 常量&变量5. 数据类型转换 6. 运算符7. 方法入门命令提示符常用的命令:1.切换盘符: 盘符:+回车2. 进入文件夹: cd: 文件名称3. 进入多级文件夹: cd: 文件夹1\文件夹2\文件夹34. 返回上一级路径: cd…5. 返回根路径: cd6. 查看当前路径的内容:...原创 2019-09-04 10:47:55 · 206 阅读 · 0 评论