![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java core
文章平均质量分 94
loong-judge
生活也是一门艺术
展开
-
JAVA线程间的同步与通信-synchronized
JAVA线程间的同步与通信-synchronized介绍实现机制原理线程中断(interrupt)清除中断状态方法抛出InterruptedException,并且清除中断状态锁升级锁的升级过程Java 对象头全局安全点(safepoint)偏向锁(多线程竞争可以考虑禁用)批量重偏向批量重偏向的原理轻量级锁重量级锁锁的其他优化介绍线程状态 /* Java thread status for tools, * initialized to indicate thread 'not yet原创 2021-11-05 00:59:18 · 261 阅读 · 0 评论 -
JVM垃圾回收-三色标记法
JVM垃圾回收-三色标记法JVM垃圾回收简单回顾如何确定垃圾引用计数法可达性分析GC roots第一次标记第二次标记三色标记法三色标记算法思想多标漏标CMS 之 Increment UpdateCMS 收集过程写屏障G1 之 SATBG1 收集Card Table(多种垃圾回收器均具备)RSet(Remembered Set)CSet(Collection Set)youngGCOld GC 之 并发标记周期SATB(Snapshot At The Beginning),JVM垃圾回收简单回顾关于垃原创 2021-11-03 23:51:45 · 666 阅读 · 0 评论 -
JAVA内存模型
JAVA内存模型线程间通讯jmm 八种操作有序性内存屏障happens-before原则可见性总线嗅探机制volatile原子性锁线程间通讯Java 里面进行多线程通信的主要方式就是共享内存的方式,而scala语言采用线程间发消息机制进行通信。具体共享的内存,参考jvm 内存结构来看:#JMM解决什么问题JMM研究的是在多线程下Java代码的执行顺序,以及共享变量的读写。在多线程下,对共享变量读写的场景下,代码的执行结果可能和自己的期望结果不一致。为什么会产生这种现象呢?共享变量内存读写,原创 2021-11-02 23:54:20 · 167 阅读 · 0 评论 -
Spring boot 启动 tomact 流程源码
启动流程spring boot tomcat 自动装配tomcat 主要组件启动流程Connector 组件获取网络数据流程Endpoint - AcceptorEndPoint - PollerProcessorAdaptercontainerspring boot tomcat 自动装配springboot 入口ServletWebServerFactoryAutoConfiguration,如下图,不再详细介绍。TomcatServletWebServerFactoryCustomizer原创 2021-09-17 02:32:58 · 254 阅读 · 0 评论 -
Java NIO
Java NIO 三大组件,Buffer 缓冲区, Channel 通道,Selecter 多路复用器选择器原创 2021-09-16 18:50:02 · 98 阅读 · 0 评论 -
有n个台阶,每次走1或2个台阶,一共有几种走法? 排列组合来实现
面试XXX金服面试算法题有n个台阶,每次走1或2个台阶,一共有几种走法?用了2个小时,写了排列组合的实现算法。发现原来是 斐波那契数列 。。。。。。可是。。。可但是。。。/** * 有n个台阶,每次走1或2个台阶,一共有几种走法? */private static long calc(int count) { //计算出每步2个台阶, 最大走的次数step2 ...原创 2020-04-10 22:43:15 · 2101 阅读 · 1 评论 -
JDK1.8 JVM内存模型
一、JDK1.8 JVM内存模型概览这里介绍的是JDK1.8 JVM内存模型。1.8同1.7比,最大的差别就是:元数据区取代了永久代。元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中,而是使用本地内存。二、各区域介绍1. 程序计数器每个线程一块,指向当前线程正在执行的字节码代码的行号。如果当前线程执行的是n...转载 2018-06-25 23:46:40 · 381 阅读 · 0 评论 -
javaCRC8计算的坑
c语言的crc8uint8_t calcCRC8(uint8_t *ptr, uint8_tlen){uint8_t crc;uint8_t i; crc = 0; while(len--) { crc ^= *ptr++; for(i = 0; i < 8; i++) { if(crc & 0x0...原创 2018-04-06 19:47:51 · 2105 阅读 · 0 评论 -
Base64OutputStream生成没有换行的构造方法
Base64OutputStream类的源码public class Base64OutputStream extends BaseNCodecOutputStream { public Base64OutputStream(OutputStream out) { this(out, true); } public Base64OutputStream(O...原创 2018-03-29 11:05:17 · 1322 阅读 · 0 评论 -
switch case 不用break的巧妙应用
/** * 判断用户最高学历是否满足申请产品要求的最高学历 * @param prodUserMaxEduDegree * @param userMaxEduDegree * @return */public boolean aboveMaxEduDegree(String prodUserMaxEduDegree, String userMaxEduDegree) { if...原创 2018-03-29 10:49:52 · 1874 阅读 · 0 评论