随笔分类 -  java

1 2 3 下一页

java相关
集合未分页处理导致的full-gc
摘要:参考文献 : "战小狼:OMG!又一个频繁FullGC的案例;" jdk8下进行的,jdk11不存在此案例问题。 1. 问题 集合持有的x对象不能被 ,从而晋升到old区导致 。因此可以设置阈值在年轻代占满之前释放掉x对象——可被 掉。 错误代码 java for(int i=0;i globalL 阅读全文

posted @ 2018-12-05 11:58 coderDu 阅读(310) 评论(0) 推荐(0)

死锁详细介绍
摘要:参考 《java并发编程实战》, "《java并发编程实战》源码" 主要概念 顺序加锁+加时赛锁(全局对象,比如某个类的class对象); 开放调用:如果调用某个方法时不需要持有锁,则这种调用被称为 == 开放调用(open call) ==。非开放调用可以通过==细化加锁力度==转变为开放调用。非 阅读全文

posted @ 2018-10-05 20:29 coderDu 阅读(1266) 评论(0) 推荐(0)

缓存的简单实现方式
摘要:参考: 《Java 并发实践》 李大狗大神的大作和源码非常值得分析阅读 1. 的`hashCode`:数据缓存在类变量中 字符串类维护了一个常量池—每当使用 创建对象,都会首先检查字符串是否在常量池中—有的话直接返回池中对象的实例引用,否则则创建一个对象返回 并将对象放进池中 。 没当调用 方法时, 阅读全文

posted @ 2018-10-04 15:19 coderDu 阅读(198) 评论(0) 推荐(0)

异步任务二:FutureTask源码分析
摘要:参考文献 "Unsafe方法详解" 1. 简介 实现的 接口继承了 接口。 是可取消的异步计算,是 的基本实现,提供了开始、取消任务以及查询其计算结果的方法—— 方法一直阻塞获取结果(接受中断信号), 超时则会抛异常。 除非任务使用 ,否则一旦计算完成,任务就不能重置或者取消了。 可以使用 或者 作 阅读全文

posted @ 2018-09-12 16:14 coderDu 阅读(251) 评论(0) 推荐(0)

UnSafe类方法和使用简介
摘要:参考文献 "Unsafe源码分析" 1. CAS方法 交换int、long和对象: 2. 指令重拍 防止指令重排的写操作,JDK会在执行这三个方法时插入StoreStore内存屏障,避免发生写操作重排序: 3. 获取没有访问权限的实例变量 1. 非系统类需要通过反射获取 实例; 2. 通过 方法获取 阅读全文

posted @ 2018-09-12 11:30 coderDu 阅读(599) 评论(0) 推荐(0)

java自带报文摘要算法实现类MessageDigest
摘要:1. 得到报文加密算法后的haxi数组分三步: 对于md5获取其他算法,我们希望结果值是16进制的字串。 byte(字节)由8位组成,16(hex)进制4位,因此每个byte需要两个16进制字符表示。 阅读全文

posted @ 2018-09-11 10:49 coderDu 阅读(306) 评论(0) 推荐(0)

TimeUnit类用于控制时间和sleep的方法栈
摘要:1. 枚举使用 这种在枚举外调用枚举中声明的方法的设计思路很有意思,也算是动态调用? 1. 定义抽象方法doWork(),可在具体枚举值中实现不同枚举值进行不同的处理; 2. 定义调用参数方法invokeWorker(),调用不同枚举值的抽象方法的实现; demo如下: 2.源码讲解 1. 所有时间 阅读全文

posted @ 2018-09-10 21:52 coderDu 阅读(604) 评论(0) 推荐(0)

ConcurrentHashMap和FutureTask实现高速缓存—Aviator
摘要:1. 介绍 主要方法 实现了 和`Future`接口,其主要方法是: 状态和 方法 实现了 接口,根据其 方法的执行,可以将其氛围三种状态: 1. 未启动: 方法未执行; 2. 已启动: 方法执行中; 3. 已完成: 方法执行结束。 未启动时,执行 则任务永远不会执行;启动时, 将以 中断执行任务线 阅读全文

posted @ 2018-09-10 21:49 coderDu 阅读(613) 评论(0) 推荐(0)

ScheduledThreadPoolExecutor(定时任务、周期任务)和DelayQueue
摘要:1. 介绍 对应的是单个后台线程, 可以在构造函数中指定多个 核心线程数 ,并且其最大线程数默认为 。 对于希望某段时间后 执行一次的定时任务 和某段时间后 周期执行 (周期为两次任务开始间隔时间 可能延迟,或者下次开始距离上次任务时间),可以使用 来提交执行。 注意: 1. 调用周期任务执行方法 阅读全文

posted @ 2018-09-10 21:45 coderDu 阅读(5066) 评论(0) 推荐(0)

源地址哈希算法—不丢失策略的负载均衡方法,可用于AB实验分流
摘要:一.分流和负载均衡区别 结论:AB实验分流不能丢失策略,分流比要完美趋近权重。 负载均衡 只要将流量根据权重打到不同的机器即可,所有机器的业务逻辑都是一样的。 AB实验分流 则需要: 1. 将同一个请求多次访问时打到同一个策略,保证请求不丢失策略。比如用户访问一个页面时不能交替出现不同的展示; 2. 阅读全文

posted @ 2018-09-10 21:40 coderDu 阅读(3202) 评论(0) 推荐(0)

spring容器和应用上下文
摘要:1.容器概念 应用中的对象存在与Spring容器(container)中,Spring容器使用ID(依赖注入)负责创建对象、装配并管理他们的整个生命周期。 2.容器分类 spring容器大致可以分为两类: 3. 应用上下文分类(重申:应用上下文是容器的一种) Spring的应用上下文对象分为两种:从 阅读全文

posted @ 2018-09-10 21:39 coderDu 阅读(200) 评论(0) 推荐(0)

bean生命周期与缓存
摘要:1.引言 接入方调用函数 ,指定某种类型的计算器对输入+参数进行计算。 调度方(服务方)根据 找到合适的计算器进行计算,并返回结果。实现调度的策略是 将计算器类型和计算器的bean维护在map中。 2.结构设计 加载 时,计算器bean缓存bean类实现 : 1. 第一个接口可用于获取上下文, 2. 阅读全文

posted @ 2018-09-10 21:38 coderDu 阅读(240) 评论(0) 推荐(0)

spring bean的生命周期
摘要:1.引言 传统的Java程序,bean的生命周期非常简单:用 实例化后就可以使用,不再使用时由虚拟机进行垃圾回收。 相比之下Spring的生命周期更加复杂,下图展示了bean 装载到Spring应用上下文中的一个典型的生命周期过程: 2. bean生命周期各阶段讲解 2.1 spring 对bean 阅读全文

posted @ 2018-09-10 21:37 coderDu 阅读(175) 评论(0) 推荐(0)

Aviator性能相关操作及注意事项
摘要:一.性能相关 1.1 优化级别 Aviator编译后才执行,对应有两种优化级别: ,默认值,会花较多时间在优化编译上。 适合长期运行的表达式 不会做任何编译优化,适合 需要频繁编译表达式的场景。 优化级别的设置和查询如下: 1.2 多行表达式 打印计算过程 对于多行表达式(;分割),最后返回的结果是 阅读全文

posted @ 2018-09-10 21:36 coderDu 阅读(6456) 评论(0) 推荐(0)

Aviator介绍
摘要:"注]:使用的话多学习[example" ; 一.基本简介 Aviator是一个高性能、轻量级的 java 语言实现的表达式求值引擎. 1.1运行方式 其他轻量级的求值器一般都是通过 解释 的方式运行, 而Aviator则是直接 将表达式编译成 JVM 字节码, 交给 JVM 去执行 。 1.2 a 阅读全文

posted @ 2018-09-10 21:35 coderDu 阅读(11116) 评论(0) 推荐(1)

阻塞队列和生产者-消费者模式、ThreadPoolExecutor类相关
摘要:一.引言 1.1 优势:解耦和阻塞队列方便模式的实现 生产者 消费者模式将 找出完成的工作 和 执行工作 两个过程分离,消除了 生产者和消费者之间的代码依赖性 ,并且将 生产数据与使用数据的过程解耦,简化工作负载的管理,这两个过程处理数据的速度可能不同 。 阻塞队列的阻塞方法put()、take() 阅读全文

posted @ 2018-05-18 13:55 coderDu 阅读(371) 评论(0) 推荐(0)

CopyOnWriteList基本思想、使用场景及实现
摘要:TODO 容器数组使用volatile变量:保证修改后能够是的所有后续的读(写)线程能够立即感知到修改,但是为什么不进行实际写入时仍然要通过相关操作保证“volatile写语义”,见 代码相关操作; 如图所示:写 屏障指令插入策略可以保证在 写之前,所有写操作都已经刷新到主存对所有处理器可见了。其后 阅读全文

posted @ 2018-05-16 00:03 coderDu 阅读(1554) 评论(0) 推荐(0)

Callable、Future和FutureTask简介
摘要:1. 和`Callable Future FutureTask`对比 和`Callable`都是任务的抽象类,不同的是前者不会返回值,后者有返回值。两者源码如下: 及其实现类 用来获取异步计算结果的,说白了就是对具体的Runnable或者Callable对象任务执行的结果进行获取 ,取消 ,判断是否 阅读全文

posted @ 2018-05-15 19:36 coderDu 阅读(153) 评论(0) 推荐(0)

类的可比较性Comparable和比较器Comparator
摘要:1. 源码如下: 类实现该接口意味着该类是可比较的,其方法返回值 分别表示当前类比进行比较的类(方法参数)小、相等、大。 实现该接口意味着该类有了‘可比较’的属性 。 2. 部分源码如下: 如果对没有实现 接口的类进行排序,那么可以使用比较器 实现。他可以选出类中一些“信息”进行比较,比如变量甚至哈 阅读全文

posted @ 2018-05-06 23:44 coderDu 阅读(146) 评论(0) 推荐(0)

重排序和内存屏障指令
摘要:参考及相关文献: [java并发编程艺术](https://book.douban.com/subject/26591326/) "jmm cookbook" "synchronized doug lee" "jsr 133" 英语好有时间的同学,建议瞄一眼此博文去读参考文献内容。 1. 写缓冲区 阅读全文

posted @ 2018-05-06 17:34 coderDu 阅读(877) 评论(0) 推荐(0)

1 2 3 下一页