学习笔记系列
文章平均质量分 91
本专栏主要记录学习笔记,方便复习与后续使用。随着学习内容增多,会逐步在该专栏内发布学习笔记。
jianchangMM
这个作者很懒,什么都没留下…
展开
-
Docker基础知识学习与入门
1 Docker概述1.1 Docker简介Docker 是一个开源的应用容器引擎,基于 Go 语言开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。Docker应用场景Web 应用的自动化打包和发布自动化测试和持续集成、发布在服务型环境中部署和调整数据库或其他的后台应用1.2 Dock原创 2020-09-29 13:42:25 · 604 阅读 · 1 评论 -
多线程与并发(三)——电商系统中的应用
1 常见问题1.1 线程协作1)Object中wait:让出锁,阻塞等待notify/notifyAll:唤醒wait的进程,注意,具体唤醒哪一个要看优先级,同优先级的看运气public class NotifyTest { public static void main(String[] args) { byte[] lock = new byte[0]; Thread t1 = new Thread(() -> { sy原创 2020-08-10 10:58:56 · 1773 阅读 · 0 评论 -
多线程与并发(二)——性能优化
1 锁优化1.1 synchronized优化synchronized使用起来非常简单,但是需要注意的是synchronized加锁的是什么维度。对象级别: public synchronized void test() { // TODO } public void test() { synchronized (this) { // TODO } }类级别: public synchr原创 2020-08-10 10:57:04 · 519 阅读 · 0 评论 -
多线程与并发(一)——多线程相关的基本理论与工具
1 线程池1.1 概念1.2 工作机制1.3 源码剖析1.4 注意点1.5 Executors工具1.1 概念2 锁2.1 概述2.2 实现方式2.3 锁的分类及详解乐观锁/悲观锁独享锁/共享锁分段锁可重入锁公平锁/非公平锁锁升级互斥锁/读写锁2.4 AQS概念原理实现方式源码分析场景案例3 原子操作(atomic)4 ThreadLocal5 Fork/Join6 volatile7 ConcurrentHashMap8并发容器...原创 2020-08-04 17:34:10 · 363 阅读 · 0 评论 -
浅拷贝与深拷贝简单介绍
1 浅拷贝1.1 介绍1.2 实现2 深拷贝2.1 介绍2.2 实现2.2.1 基于Cloneable实现2.2.2 基于序列化实现3 小结原创 2020-08-04 17:33:33 · 154 阅读 · 0 评论 -
JDK1.8新特性介绍(四)——日期时间新方式
1 SimpleDateFormat的那些坑1.1 效果演示2 DateTimeFormatter3 LocalDate、LocalTime、LocalDateTime介绍3.1 LocalDate3.1 LocalTime3.1 LocalDateTime原创 2020-08-04 17:32:54 · 176 阅读 · 0 评论 -
JDK1.8新特性介绍(三)——Optional
1 简介2 应用2.1 创建Optional对象2.2 基于Optional对象获取值2.2.1 isPresent()与ifPresent()应用与源码解析2.2.2 get()应用与源码解析2.2.3 orElseThrow()应用与源码解析2.2.4 map()应用与源码解析2.2.5 flatMap()应用与源码解析2.2.6 filter()应用与源码解析2.2.7 orElse()应用与源码解析2.2.8 orElseGet()应用与源码解析...原创 2020-08-04 17:32:18 · 226 阅读 · 0 评论 -
JDK1.8新特性介绍(二)——StampedLock锁
1 ReentrantReadWriteLock回顾2 StampedLock特点3 源码解析3.1 实现原理解析3.1.1 实例化3.1.2 获取锁过程分析3.1.3 释放锁过程分析3.2 乐观读锁解析4 使用示例原创 2020-08-04 17:31:43 · 366 阅读 · 0 评论 -
JDK1.8新特性介绍(一)——CompletableFuture应用与源码解析
1、异步任务创建在CompletableFuture中提供了四个静态方法用于创建异步任务runAsync(Runnable runnable)runAsync(Runnable runnable,Executor executor)supplyAsync(Supplie<U> supplier)supplyAsync(Supplier<U> supplier,Executor executor)1.1 runAsync()应用与源码解析根据源码可知,runAsync(原创 2020-07-30 17:11:23 · 786 阅读 · 0 评论 -
JMM内存模型-同步动作与安全发布
1 JMM内存模型由于存在编译器优化、Processor流水线优化、缓存优化等,我们编写的代码不一定是实际运行的代码,我们编写的代码顺序不一定是实际执行的顺序。所以我们需要学习JMM内存模型来解决上面的问题。1.1 什么是JMM内存模型就是多线程下对共享变量的一组读写规则。共享变量值是否在线程间同步代码可能的执行顺序需要关注的操作就有两种 Load、StoreLoad 就是从缓存读取到寄存器中,如果一级缓存中没有,就会层层读取二级、三级缓存,最后才是MemoryStore 就是从寄存器运算原创 2020-07-27 09:06:12 · 175 阅读 · 0 评论 -
JVM虚拟机调优指导(四)——类加载机制与编译优化
1 类文件结构1.1 MyDemo1.2 字节码1.2.1 字节码表1.2.2 魔数1.2.3 版本号1.3 常量池1.3.1 常量池容量计算1.3.2 常量类型和结构1.3.3 第一个常量1.3.4 第二个常量1.3.5 javap编译字节码1.4 描述符1.4.1 字段描述符1.4.2 方法描述符1.5 实例:字符串拼接2 类加载机制2.1 类加载时机2.2 类加载过程2.2.1 加载2.2.2 验证2.2.3 准备2.2.4 解析2.2.5 初始化2.3原创 2020-07-21 09:01:41 · 351 阅读 · 1 评论 -
JVM虚拟机调优指导(三)—— 垃圾回收与垃圾收集器
1 什么是垃圾回收1.1 C/C++语言的垃圾回收1.2 Java语言的垃圾回收2 什么样的对象需要回收2.1 引用计数法(了解)2.1.1 原理2.1.2 优缺点2.2 可达性分析算法(重点)2.3 对象的引用(了解)3 垃圾收集器算法3.1 标记清除法3.2 标记压缩清除法3.3 标记复制算法3.3.1 JVM中年轻代内存空间3.3.2 优缺点3.4 分代算法4 垃圾收集器4.1 串行垃圾收集器4.1.1 编写测试代码4.1.2 设置垃圾回收为串行收集器4.2 并原创 2020-07-17 16:02:46 · 188 阅读 · 0 评论 -
JVM虚拟机调优指导(二)——内存溢出及死锁问题的定位与分析
3 实战:内存溢出的定位与分析3.1 内存溢出与内存泄露3.2 模拟内存溢出3.3 运行测试3.4 导入到MAT工具中进行分析3.4.1 MAT工具介绍3.4.2 下载安装3.4.3 基本使用3.4.4 导入分析4 实战:死锁问题4.1 构造死锁补充知识点:产生死锁的条件4.2 运行并查询进程编号4.3 查看线程状态5 VisualVM5.1 基本使用5.1.1 启动5.1.2 查看本地进程5.1.3 查看CPU、内存、类、线程运行信息5.1.4 查看线程详情5.1.原创 2020-07-17 16:01:50 · 620 阅读 · 0 评论 -
JVM虚拟机调优指导(一)——JVM虚拟机内存管理模型与运行参数
1 JVM虚拟机内存管理1.1 JVM整体架构1.2 运行时数据区1.2.1 程序计数器1.2.1.1 编写代码1.2.1.2 查询class的汇编代码1.2.2 Java虚拟机栈1.2.2.1 局部变量表1.2.2.2 操作数栈1.2.2.3 动态连接1.2.2.4 方法出口1.2.2.5 实例1.2.3 本地方法栈1.2.4 Java堆区1.2.4.1 jdk1.7堆内存模型1.2.4.2 jdk1.8堆内存模型1.2.4.3 为什么要放弃1.7中的永久区1.2.5 方原创 2020-07-16 13:41:04 · 347 阅读 · 0 评论