03 2020 档案

摘要:分布式开发:后端提供结口+前端接受信息渲染! 单体开发:后端提供数据+前端获取数据渲染! 整体来说,从开发流程,单体和分布式本质上没有区别,只是技术和思想上略有不同! 分布式开发的本质:网络是不可靠的!服务之间的通信,服务崩了怎么办,客户端怎么访问,服务的注册与发现! 精通Swagger 了解Swa 阅读全文
posted @ 2020-03-30 00:16 执笔人生 阅读(326) 评论(0) 推荐(0)
摘要:学习思路:了解什么是Spring Security ~~> 看官网简介 ~~>简单快速阅读官方文档(看自己想要的) spring boot: 导入maven依赖 配置相关文件 测试代码编写 市面上较为知名的安全框架: Shiro (用的十分多,功能十分强大) Spring Security (用的也 阅读全文
posted @ 2020-03-28 15:11 执笔人生 阅读(342) 评论(0) 推荐(0)
摘要:GC 详解: 口诀:关于垃圾回收:分代收集算法 ——不同的区域使用不同的算法 Young代:GC频繁区域 Old代:GC次数较少 Perm代:不会产生GC 一个对象的历程! JVM在进行GC时,并非每次都是对三个区域进行扫描,大部分时候都是指的新生代! 两个类型: 普通GC:只针对新生代 -- GC 阅读全文
posted @ 2020-03-13 01:30 执笔人生 阅读(272) 评论(0) 推荐(0)
摘要:死锁 什么是死锁? 线程A持有资源A,想要资源B。线程B持有资源B,想要资源A,如此便会死锁。 1 // 面对死锁你该怎么办? 2 // 日志 3 // 查看堆栈信息! JVM 的知识 4 // 1、获取当前运行的java进程号 jps -l 5 // 2、查看信息 jstack 进程号 6 // 阅读全文
posted @ 2020-03-11 14:57 执笔人生 阅读(293) 评论(0) 推荐(0)
摘要:总结: 1、保证可见性(JMM) 2、不保证原子性 (核心难点:原子类) 3、禁止指令重排 (核心难点:说出单例模式。说出CAS。说出CPU原语) 1 // 验证volatile 可见性 2 public class JmmDemo { 3 private volatile static int n 阅读全文
posted @ 2020-03-09 16:51 执笔人生 阅读(287) 评论(0) 推荐(0)
摘要:1. 读写锁 1 // 独占锁(写锁):一次只能被一个线程占有 2 // 共享锁(读锁):可以被多个线程同时占有 3 // 运行结果分析:写锁保证操作的原子性,读锁不能保证操作的原子性 4 // 注意:lock锁一定要配对,不然可能会导致死锁 5 // 个人理解:写操作即为修改数据,会改变原有的数据 阅读全文
posted @ 2020-03-06 23:47 执笔人生 阅读(751) 评论(0) 推荐(0)
摘要:1. List不安全探究 1 // ArrayList<String> list = new ArrayList<>(); // ArrayList 源码中CRUD没加synchronized同步 2 // List<String> list = new Vector<>(); // Vector 阅读全文
posted @ 2020-03-03 13:12 执笔人生 阅读(274) 评论(0) 推荐(0)
摘要:1. synchronized和lock的区别: synchronized 是Java内置关键字,lock 是Java类; synchronized 无法判断是否获得锁,lock 可以; synchronized 会自动释放,lock 需要手动释放; synchronized 线程1阻塞,线程2会永 阅读全文
posted @ 2020-03-02 21:46 执笔人生 阅读(225) 评论(0) 推荐(0)