随笔分类 -  Java

ThreadLocal 内存溢出问题 和 java引用类型
摘要:Java 引用类型在1.2以后有4种。 强引用: Java中没有这个接口但是普通的赋值默认就是强引用。 A a = new A();这种就是强引用。 软引用(SoftReference):在内存紧张的时候会清理这种引用的对象 弱引用(WeakReference):任何时候都会清理这引用的种对象 虚引 阅读全文

posted @ 2022-10-13 19:20 zhangyukun 阅读(216) 评论(0) 推荐(0)

reactor的三种模式
摘要:Reactor 响应式编程,是NIO的编程设计模式 单reactor单线程模式: 学的简单NIO例子一般就是这种模式,选择器循环和业务处理线程都用一个线程。也是最简单的NIO编程模式。 单Reactor多线程模式: 把业务线程用多个线程来处理,并且用线程池来管理。这样的NIO编程和BIO很类似都类似 阅读全文

posted @ 2022-09-26 02:23 zhangyukun 阅读(533) 评论(0) 推荐(0)

迭代器遍历对象 快速失败和安全失败
摘要:一、快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出 Concurrent Modification Exception。 原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。 阅读全文

posted @ 2022-09-26 00:53 zhangyukun 阅读(157) 评论(0) 推荐(0)

netty知识点总结
摘要:1 netty 是 NIO 的一个封装,把NIO 关于接受请求建立连接,循环处理可以事件,然后请求交给工作线程的过程。我们只需要重点关心工作线程后面的业务逻辑,别的重复逻辑由netty 框架来做了。 2 要连接 netty 之前先要了解NIO的编程模型,NIO 能够一个线程 处理多个请求 BIO 一 阅读全文

posted @ 2022-09-26 00:48 zhangyukun 阅读(230) 评论(0) 推荐(0)

类和类之间的6种关系
摘要:依赖: 依赖有2种 一种父子关系,一种关联关系 依赖关系是对象之间最弱的关系,任何关系都可以叫做依赖。做弱的依赖是方法参数和返回值,并且只在方法内部使用。 实现: 接口和子类自检的关系 泛化: 父类和子类之间的关系(继承) 关联: 关联包含2种,聚合和组合,两个对象之间的关联关系可以是一对多,多多, 阅读全文

posted @ 2022-07-21 21:07 zhangyukun 阅读(276) 评论(0) 推荐(0)

aspectj this target within 区别
摘要:首先他们三个都匹配一个明确的类型 里面的所有方法 不能带有方法,包名等通配符 只能写成 within(包名.类名格式) 假设有一下继承关系 有一个接口 A ,这个接口有一个实现类A1 A1 有两子类 B,C 1 within 只能匹配指定类型不能匹配子类,并且对比类型是目标类型,target 和 t 阅读全文

posted @ 2022-07-17 02:02 zhangyukun 阅读(148) 评论(0) 推荐(0)

spring aspectj 切入点表达式详解
摘要:1 切入点表达式 切人点表达式可以按照 修饰方式分为注解和非注解分成2类,带有@的是匹配注解的,没有代@的是匹配非注解的 within 用于限定类型,args 用于限定参数,target 指的限定类型和子类,this 指的调用者类型 1 execution 匹配 指定修饰符 指定返回值类型 指定包 阅读全文

posted @ 2022-07-16 14:44 zhangyukun 阅读(440) 评论(0) 推荐(0)

JDK 动态代理 和 cgLib动态代理
摘要:1 spring 动态代理的一些说明 1 spring 5.0 默认使用的 代理方式 依旧是 jdk 动态代理(之前的版本也是) 2 springboot 2.X 开始 默认使用代理方式 cglib(springboot 2.X 默认使用 spring 5,给人的感觉是 spring 5.0 开始默 阅读全文

posted @ 2022-07-14 23:28 zhangyukun 阅读(310) 评论(0) 推荐(1)

SPI 服务提供者接口
摘要:ServiceLoader SPI 全名 Service Provider Interface ,是java提供的 一个 服务接口拓展机制。使用SPI 可以轻松的修改接口的实现方式。 例子代码: 创建一个接口: /** * 描述 * * @Author ZHANGYUKUN * @Date 2022 阅读全文

posted @ 2022-06-28 00:07 zhangyukun 阅读(159) 评论(0) 推荐(0)

Caused by: java.lang.IllegalStateException: getWriter() has already been called for this response
摘要:异常堆栈:看着是一个响应流被再次使用 Caused by: java.lang.IllegalStateException: getWriter() has already been called for this response at org.apache.catalina.connector. 阅读全文

posted @ 2022-06-22 14:52 zhangyukun 阅读(412) 评论(0) 推荐(0)

各种 垃圾收集器结构和原理
摘要:5垃圾收集器 (garbage collection) 1.串行JVM serial 垃圾收集器,也是最早的 垃圾收集器,串行执行回收,如今基本已经没人用了,那时候内存小,即便并行也可以很快完成回收 年轻代使用 serial 老年代使用 serial old 2.并行JVM parallel 垃圾收 阅读全文

posted @ 2022-06-17 21:52 zhangyukun 阅读(350) 评论(0) 推荐(0)

JDK11 新特性 String去空白字符加强版方法 首次支持ZGC
摘要:JDK11的新特性语法 api 方面不多, 如果算上 JDK9,JDK 10 两个短期版本变化也不少,JDK 11 和 JDK8 一样是长期支持版本,商用一般都不会选择9,10这种零时版本。 jdk11 最显著的提高在于首次支持ZGC,但是只是支持,并不建议商用使用。ZGC 能支持 PB级别内存,和 阅读全文

posted @ 2022-06-17 21:22 zhangyukun 阅读(211) 评论(0) 推荐(0)

JDK10 新特性 局部变量类型推断
摘要:JDK 10 主要新特性在于支持 var 申明 的局部变量,相当于一个泛型 1 package com.lomi.jdk10; 2 3 import org.junit.Test; 4 5 import java.awt.print.Book; 6 import java.util.*; 7 imp 阅读全文

posted @ 2022-06-17 21:08 zhangyukun 阅读(62) 评论(0) 推荐(0)

JDK 9新特性 系统模块化 接口私有方法等
摘要:JDK9 新特性 最重要的就是支持模块化编程,和接口私有方法 例子中提供服务的 module-info.java 文件 项目A /** * * 1 一个项目,或者说一个jar包只能被属于一个模块, * 2 如果没有配置模块就是全部使用(没有配置包含2种,引用方和被引用方) * 3 使用模块相当于值暴 阅读全文

posted @ 2022-06-17 20:00 zhangyukun 阅读(198) 评论(0) 推荐(0)

JDK8 新特性 lamdda表达式 Stream 接口支持实例方法
摘要:JDK 8最大的特点在于lamdda 表达式和Stream 集合处理工具流 /** * lamdda 表达式的写法 */ @Test public void test1(){ //传统写法,匿名内部类 Function<String,String> funOld = new Function<Str 阅读全文

posted @ 2022-06-15 23:09 zhangyukun 阅读(86) 评论(0) 推荐(1)

Timer 原理 到 spring 定时器任务
摘要:Java Timer 怎么实现延时任务的?怎么实现周期任务的?消耗资源多吗?执行时间准确吗? 1 Timer 的基本使用。 第一个参数是任务,第二个参数可以是指定时间,第三个参数如果指定了就会周期的执行这个任务 2 Timer 的原理 概述:Timer 有一个内部线程,和一个任务队列,在Timer 阅读全文

posted @ 2022-05-24 21:55 zhangyukun 阅读(205) 评论(0) 推荐(0)

Java 伪内存共享解决方案
摘要:简单的说一下伪内存共享是什么: cpu读取数据的顺序:cpu->寄存器->1级缓存->2级缓存->3级缓存(3级缓存开始是CPU共享的)->主内存->硬盘,读取数据不是一个对象或者一个字节为单位读取的,而已一缓存行为单位,CPU 不同缓存行的大小也不同,一般为32-256个字节,最常见的缓存行大小是 阅读全文

posted @ 2022-05-01 00:16 zhangyukun 阅读(238) 评论(0) 推荐(0)

指针压缩原理和为什么指针压缩只能压缩3位
摘要:1 聊指针压缩前明白几个大前提 1,java对象是8字节对其的,或者说3个字节对齐的。 2,一个字节是8个二进制位。 3,4字节能表示多大数据? 2的32次方=4G 个二进制位的数据,也就是512M 4,带宽用的单位是1K 表示2的10次方位,硬盘内存用的1K是2的10次方字节,也就是硬盘内存寻址是 阅读全文

posted @ 2022-04-25 16:14 zhangyukun 阅读(925) 评论(0) 推荐(0)

tomcat结构 请求处理过程 和 常见参数
摘要:tomcat 结构图 下面的图是一个tomcat server.xml 的默认配置 1 tomcat顶层容器是server,代表服务器,server 里面装着 一个或者多个service 代表服务。tomcat 配置文件server.xml 里面可以看出 server 作为顶层容器,默认监听 800 阅读全文

posted @ 2022-04-24 20:11 zhangyukun 阅读(486) 评论(0) 推荐(0)

websocket 基本使用
摘要:1 websocket基本使用 websocket 是 javax.websocket下面的,不需要任何依赖,直接就可以使用 @ServerEndpoint 标记声明一个websocket 服务 ,configurator 属性指定 鉴权 配置类,@ServerEndpoint 标记的类 为每个链接 阅读全文

posted @ 2022-04-20 12:39 zhangyukun 阅读(595) 评论(0) 推荐(0)

导航