5 我是陈旭原

尚未进行身份认证

生命不息 运动不止

等级
TA的排名 3w+

【java虚拟机】- 垃圾回收

文章目录1. 如何判断对象可以回收1.1 引用计数法1.2 可达性分析算法1.3 四种引用2. 垃圾回收算法2.1 标记清除2.2 标记整理2.3 复制3. 分代垃圾回收3.1 相关 VM 参数4. 垃圾回收器4.1 串行1. 如何判断对象可以回收1.1 引用计数法1.2 可达性分析算法Java 虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象扫描堆中的对象,看是否能够沿着 GC Root对象 为起点的引用链找到该对象,找不到,表示可以回收哪些对象可以作为 GC Root ?1.

2020-05-27 17:56:48

【java虚拟机】- 内存模型

文章目录1. java 内存模型1.1 原子性1.2 问题分析1.3 解决方法2. 可见性2.1 退不出的循环2.2 解决方法2.3 可见性3. 有序性3.1 诡异的结果3.2 解决方法3.3 有序性理解3.4 happens-before1. java 内存模型很多人将【java 内存结构】与【java 内存模型】傻傻分不清,【java 内存模型】是 Java Memory Model(JMM)的意思。关于它的权威解释,请参考 https://download.oracle.com/otn-pub

2020-05-26 17:31:43

【java虚拟机】- 内存结构

文章目录1. 程序计数器1.1 定义1.2 作用2. 虚拟机栈2.1 定义2.2 栈内存溢出2.3 线程运行诊断3. 本地方法栈4. 堆4.1 定义4.2 堆内存溢出4.3 堆内存诊断5. 方法区5.1 定义5.2 组成5.3 方法区内存溢出5.4 运行时常量池5.5 StringTable5.5 StringTable 特性5.6 StringTable 位置5.7 StringTable 垃圾回收5.8 StringTable 性能调优6. 直接内存6.1 定义6.2 分配和回收原理1. 程序计数器

2020-05-26 14:27:57

【并发编程】- 源码篇

文章目录指令级并行原理1. 名词2. 鱼罐头的故事3. 指令重排序优化4. 支持流水线的处理器5. SuperScalar 处理器CPU 缓存结构原理1. CPU 缓存结构2. CPU 缓存读3. CPU 缓存一致性4. 内存屏障volatile 原理1. 如何保证可见性2. 如何保证有序性3. double-checked locking 问题指令级并行原理1. 名词Clock Cycle Time主频的概念大家接触的比较多,而 CPU 的 Clock Cycle Time(时钟周期时间),等于

2020-05-15 17:46:57

【并发编程】- 模式篇

文章目录同步模式之保护性暂停1. 定义2. 实现3. 带超时版 GuardedObject4. 多任务版 GuardedObject同步模式之 Balking1. 定义2. 实现同步模式之顺序控制1. 固定运行顺序2. 交替输出异步模式之生产者/消费者1. 定义2. 实现异步模式之工作线程1. 定义2. 饥饿3. 创建多少线程池合适4. 自定义线程池终止模式之两阶段终止模式1. 错误思路2. 两阶段终止模式线程安全单例1. 饿汉单例2. 枚举单例3. 懒汉单例4. DCL 懒汉单例5. 静态内部类懒汉单例享

2020-05-10 15:59:48

【并发编程】- 应用篇

文章目录效率1. 使用多线程充分利用 CPU限制1. 限制对 CPU 的使用2. 限制对共享资源的使用3. 单位时间内限流互斥1. 悲观互斥2. 乐观重试同步和异步1. 需要等待结果2. 不需等待结果缓存1. 缓存更新策略2. 读写锁实现一致性缓存分治1. 案例 - 单词计数2. 案例 - 求和统筹案例 - 烧水泡茶定时1. 定期执行效率1. 使用多线程充分利用 CPU1) 环境搭建基准测试工具选择,使用了比较靠谱的 JMH,它会执行程序预热,执行多次测试并平均cpu 核数限制,有两种思路

2020-05-10 13:40:57

【并发编程】- 基础篇

文章目录一、并发编程1. 概览1.1 这门课讲什么1.2 为什么学这么课1.3 课程特色1.4 预备知识2. 进程与线程2.1 进程与线程2.2 并行与并发2.3 应用3. Java 线程3.1 创建和运行线程3.2 观察多个线程同时运行3.3 查看进程线程的方法3.4 原理之线程运行3.5 常见方法3.6 start 与 run3.7 sleep 与 yield3.8 join 方法详解3.9 interrupt 方法详解3.10 不推荐的方法3.11 主线程与守护线程一、并发编程1. 概览1.1

2020-05-10 10:53:54

【springboot源码分析】- 进阶篇

文章目录一、Spring Boot与缓存1、JSR107一、Spring Boot与缓存JSR-107、Spring缓存抽象、整合Redis1、JSR107Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry。CachingProvider定义了创建、配置、获取、管理和控制多个Cach...

2020-05-08 10:37:34

【springboot源码分析】- 基础篇

文章目录一、Spring Boot 入门1、Spring Boot 简介2、微服务3、环境准备1、MAVEN设置;2、IDEA设置4、Spring Boot HelloWorld1、创建一个maven工程;(jar)2、导入spring boot相关的依赖3、编写一个主程序;启动Spring Boot应用4、编写相关的Controller、Service5、运行主程序测试6、简化部署5、Hello...

2020-05-07 11:29:17

mysql 存储过程 游标 like模糊查询并插入处理的一个小案例

DELIMITER $$DROP PROCEDURE IF EXISTS `synchICD10Data`$$CREATE PROCEDURE `synchICD10Data`()BEGIN DECLARE diagnosisCode, diagnosisName VARCHAR(45); DECLARE icdName text; DECLARE count int; DEC...

2020-04-30 16:28:30

java8新特性

目录1、lambda表达式2、Stream API3、其他1、lambda表达式TestLambda1public class TestLambda1 { //原来的匿名内部类 @Test public void test1(){ Comparator<String> com = new Comparator<String>(){ @Overrid...

2020-04-28 10:04:26

【并发编程】- interrupt()、interrupted()、isInterrupted()使用详解

文章目录1、为何不建议用stop方法中断线程2、interrupt、interrupted和isInterrupted方法介绍3、代码测试4、总结源码地址:1、为何不建议用stop方法中断线程在java的世界里,Thread类是对线程概念的抽象。想要中断一个线程有两种方式:(1)调用Thread类的stop方法(2)组合调用Thread类的 interrupt、interrupted和...

2020-04-15 16:12:24

【并发编程】- 多线程与并发编程

文章目录1、什么情况下应该使用多线程2、如何应用多线程3、Java 并发编程的基础4、守护线程1、什么情况下应该使用多线程线程出现的目的是什么?解决进程中多任务的实时性问题?其实简单来说,也就是解决“阻塞”的问题,阻塞的意思就是程序运行到某个函数或过程后等待某些事件发生而暂时停止 CPU 占用的情况,也就是说会使得 CPU 闲置。还有一些场景就是比如对于一个函数中的运算逻辑的性能问题,我们可...

2020-04-15 16:05:33

【设计模式】- 单例模式

文章目录1、单例设计模式介绍2、单例设计模式八种方式3、饿汉式(静态常量)4、饿汉式(静态代码块)5、懒汉式(线程不安全)6、懒汉式(线程安全,同步方法)7、懒汉式(线程安全,同步代码块)8、双重检查9、静态内部类10、枚举11、单例模式在 JDK 应用的源码分析12、单例模式注意事项和细节说明本博客源码地址:https://github.com/suchahaerkang/design-p...

2020-04-14 10:49:22

【设计模式】- 工厂模式

文章目录1、简单工厂模式2、工厂方法模式(Factory Method)3、抽象工厂模式(Abstract Factory)4、工厂模式在 JDK-Calendar 应用的源码分析5、总结:工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。本文从一个具体...

2020-04-09 10:48:20

【设计模式】- 建造者模式

文章目录1、小案例2、传统方式解决盖房需求3、传统方式的问题分析4、建造者模式基本介绍5、建造者模式的四个角色6、建造者模式原理类图7、建造者模式解决盖房需求应用实例8、建造者模式在 JDK 的应用和源码分析9、建造者模式的注意事项和细节本博客源码地址:https://github.com/suchahaerkang/design-pattern.git1、小案例盖房子项目需求1)需要...

2020-04-08 17:48:11

【mybatis学习笔记】

/** * 1、接口式编程 * 原生: Dao ====> DaoImpl * mybatis: Mapper ====> xxMapper.xml * * 2、SqlSession代表和数据库的一次会话;用完必须关闭; * 3、SqlSession和connection一样她都是非线程安全。每次使用都应该去获取新的对象。 * 4、mapper接口没有实现类...

2020-04-07 10:41:50

【springboot源码分析】- 启动配置原理

文章目录1、创建SpringApplication对象2、运行run方法几个重要的事件回调机制配置在META-INF/spring.factoriesApplicationContextInitializerSpringApplicationRunListener只需要放在ioc容器中ApplicationRunnerCommandLineRunner启动流程:1、创建Sprin...

2020-04-04 19:13:27

【springboot源码分析】- SpringBoot与数据访问

文章目录一、JDBC一、JDBC导入依赖包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐jdbc</artifactId></dependency><depend...

2020-04-04 18:55:15

【mysql性能优化】- 避免索引失效原则

文章目录策略1 — 尽量全职匹配策略2 — 最佳左前缀法则策略3 — 不要在索引列上做任何操作策略4 — 范围条件放最后策略5 — 覆盖索引尽量用策略6 — 不等于要甚用策略7 — is null(使用)、is not null(不使用)有影响策略8 — Like查询要当心策略9 — 字符类型加引号(切记)策略10 — OR改UNION效率高前面我们学了执行计划各列的含义以及几个优化案例,本篇博...

2020-04-04 12:20:47

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。