《2020/03/30》java整理
0. 面试
1. 线程
ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。
ThreadPoolExecutor.DiscardPolicy:丢弃任务,但是不抛出异常。
ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新提交被拒绝的任务 。
ThreadPoolExecutor.CallerRunsPolicy:由调用线程(提交任务的线程)处理该任务
synchronized原理(hard)
线程Lock的使用
java并发编程:Lock锁
Synchronized、Lock、ReentantLock的区别,以及用法
JAVA多线程中join()方法的详细分析
countDownLatch
ABA问题
java中Unsafe使用讲解
线程池
2. java调优
Java性能调优:利用VisualVM进行性能分析
JConsole可视化工具介绍
jmeter 压测
3. jvm 和 gc
深入理解JVM-内存模型(jmm)和GC (非常详细)
常量池
4. java 内存模型(jmm)
深入理解Java内存模型
class.forname 与 classloader.loader
5. springboot
spring-boot配置slf4j日志
Spring mybatis 源码分析
6. zookeeper
7. redis
redis zset
集群环境下redis分布式锁
redis内存模型
redis value过大问题
8. current
-
ABA问题产生及解决方案
https://www.cnblogs.com/lmj612/p/10836912.html -
Java中unsafe使用
https://blog.csdn.net/u010398771/article/details/85319991 -
AQS详解
https://www.jianshu.com/p/da9d051dcc3d -
同步器核心
自旋 LockSupport CAS AQS
自旋:for(;;)
LockSupport.pack(Thread); LockSupport.unpack(Thread)
CAS: compare and set
AQS: AbstractQueuedSynchronizer -
CoutnDwonLatch 与 CyclicBarrier
https://www.cnblogs.com/Lee_xy_z/p/10470181.html
https://www.cnblogs.com/brokencolor/p/9752941.html
9. 并发编程合集
https://blog.csdn.net/ns_code/article/details/17539599
1. netty学习
- netty版本: 4.1.45.Final
- protobuf版本: 3.11.4
NIO的三大核心
nio的三大核心buffer channel selector。
1. 当客户端连接时,会通过ServerSocketChannel得到SocketChannel。
2. 将SocketChannel注册到Selector上,register(Selector sel, int pos),一个selector上可以注册多个SocketChannel
3. 注册后返回一个SelectionKey, 会和该selector关联(集合)
4. selector进行监听select方法,返回有事件发生的通道的个数
5. 进一步得到各个SelectionKey(有事件发生的)
6. 再通过SelectionKey反向获取SocketChannel chanenl()
7. 可以通过得到的channel 完成业务处理。
netty
1. netty 抽象出两组线程池BossGroup专门负责接收客户端的连接,WorkerGroup专门负责网络的读写。
2. BossGroup和WorkerGroup类型都是 NioEventLoopGroup。
3. NioEventLoopGroup 相当于一个事件循环组,这个组中含有多个事件循环,每一个事件循环是NioEventLoop。
4. NioEventLoop 表示一个不断循环的执行处理任务的线程,每个NioEventLoop都有一个selector, 用于监听绑定在
其上的socket的网络通讯。
5. NioEventLoopGroup 可以有多个线程,即可以含有多个NioEventLoop。
6. 每个Boss NioEventLoopGroup 循环执行的步骤有3步:
(1) 轮询accept事件
(2) 处理accept事件,与client建立连接,生成NioSocketChannel, 并将其注册到某个worker NioEventLoop 上的selector
(3) 处理任务队列的任务,即runAllTasks
7. 每个 Worker NioEventLoopGroup 循环执行的步骤:
(1) 轮询read, write事件
(2) 处理I/O事件,即read,write事件,在对应的NioSocketChannel处理
(3) 处理任务队列的任务,即runAllTasks
8. 每个worker NioEventLoop 处理业务时,会使用pipeline(管道),pipeline中包含了channel(它们相互),
即通过管道可以获取到channel, 管道中维护了很多的处理器handler
netty 权威指南代码:https://github.com/*nxian124/nettybook2
2. spring project
mybatis-plus
系统设计
springboot 配置https
https://www.jianshu.com/p/8d4aba3b972d
-
springboot配置文件使用环境变量
https://blog.csdn.net/a704397849/article/details/99944998 -
微服务中的认证鉴权
https://www.jianshu.com/p/357c23e3fe2a -
web交互问题
https://blog.csdn.net/feiyst/article/details/88431621
3. activiti
-
https://www.jianshu.com/p/aadbfd0e37b0 后端代码
-
https://www.cnblogs.com/zsg88/p/12511603.html bpmn-js画流程图
-
https://blog.52itstyle.vip/archives/3706/
-
https://gitee.com/52itstyle/spring-boot-bpmn
-
https://gitee.com/loyin/sunFlow sunFlow
-
https://blog.csdn.net/chenfengdejuanlian/category_6900088.html 获取节点
-
https://github.com/AgileBPM/agile-bpm-basic.git 完整的工作流
4. 表单生成器
https://gitee.com/mrhj/form-generator
5. mysql
- https://www.jianshu.com/p/23caac9d8b5d msyql partition 分区
create table if not exists
6. 优美项目代码
- 在线考试系统 https://www.kancloud.cn/tangyi/spring-microservice-exam/1322864#_145
7. spring
8. 数据库
9. unirest-java
https://kong.github.io/unirest-java/#requests
10 minio
https://blog.csdn.net/hzw2312/article/details/106077729
官方文档
11 ubuntu离线安装包
https://blog.csdn.net/q919683527/article/details/80418593
本文地址:https://blog.csdn.net/weixin_42273782/article/details/105197157
下一篇: 算法提高 我们的征途是星辰大海