成为不那么差的java程序员
2019-04-30 18:14:35 0 举报
AI智能生成
成为一个不那么差的程序员
作者其他创作
大纲/内容
分布式技术<br>
CAP定理<br>
微服务相关定义、来源以及对比<br>
Martin Folwer--MicroServices<br>
分布式框架的使用以及原理<br>
Spring Cloud<br>
Dubbo<br>
分布式带来的问题<br>
分布式锁<br>
分布式限流<br>
分布式缓存
分布式ID<br>
消息中间件<br>
负载算法<br>
权重<br>
Hash<br>
一致性Hash<br>
联机<br>
轮询<br>
故障转移<br>
LRU<br>
懂点架构<br>
掌握分布式系统<br>
做好适合现有团队的架构选型<br>
《亿级流量网站架构核心技术》<br>
如何学习<br>
视频<br>
看书<br>
知识付费<br>
打造个人品牌<br>
博客<br>
重点是名片<br>
GitHub<br>
开发自己的开源项目<br>
开发过程中的小痛点<br>
精心整理的知识点<br>
遵守GitHub社交礼仪<br>
尽量用英文<br>
尽量少Push与代码工作无关的内容<br>
别去刷Star<br>
英语挺重要<br>
面向Google和Stack Overflow编程<br>
坚持提高英语<br>
所有的手机电脑系统换成英语<br>
订阅一些英语周刊<br>
<span style="font-size: inherit;color: inherit;line-height: inherit;">湾区日报</span>
定时阅读国外社区有影响力的文章<br>
https://medium.com/
计算机基础<br>
计算机网络<br>
网络分层<br>
OSI&&TCP/IP<br>
TCP/UDP
二者区别<br>
TCP三次握手四次挥手<br>
HTTP<br>
Get和Post区别<br>
无状态协议的理解<br>
Cookie和Session的区别<br>
请求报文和响应报文格式<br>
HTTP优化和缺点<br>
操作系统<br>
linux命令
数据结构与算法<br>
二叉树、栈、队列、红黑树、哈希表<br>
查找、排序算法,时间复杂度<br>
java基础<br>
字符串<br>
String<br>
常量<br>
String Builder<br>
线程不安全<br>
String Buffer<br>
线程安全<br>
基本容器<br>
HashMap<br>
HashSet<br>
ArrayList<br>
LinkList<br>
IO/NIO<br>
区别和应用场景<br>
OOA&&OOD<br>
设计模式<br>
六大原则<br>
单一职责<br>
开闭<br>
里式替换<br>
依赖倒置<br>
接口隔离<br>
迪米特<br>
常用的模式<br>
代理<br>
工厂<br>
构建者<br>
回调<br>
观察者<br>
...<br>
多线程基础<br>
进程和线程的区别
线程创建方式<br>
线程的生命周期<br>
线程的优先级<br>
wait yield sleep suspend<strong> </strong>join notify notify all<br>
threadlocal<br>
反射机制基础<br>
反射机制<br>
class对象的使用<br>
测试<br>
接口测试<br>
Swagger
单元测试<br>
代码覆盖率<br>
Emma<br>
Jacoco<br>
单元测试框架<br>
Junit4<br>
测试代码功能<br>
Mock<br>
Stub<br>
良好的编程习惯<br>
阿里巴巴Java编程规范<br>
多线程<br>
带来的问题<br>
上下文切换(耗时)<br>
无锁并发编程(:Hash算法取模分段)<br>
CAS算法(:Atomic 包)<br>
使用最少线程(:避免创建不必要的线程)<br>
使用协程(:单线程多任务调度)
共享资源<br>
并发编程特性<br>
原子性(操作无法拆分)<br>
可见性(共享资源主从同步一致)<br>
有序性(按代码顺序执行,指令重排序改变执行顺序)<br>
并行&&并发<br>
核心掌握<br>
原子类<br>
Atomic+基本类型的包装类<br>
AtomicReference<br>
...<br>
队列<br>
阻塞<br>
并发<br>
并发工具<br>
ConcurrentHashMap<br>
CountDownLatch
CyclicBarrier<br>
BlockQueue<br>
Semaphore
线程池<br>
ThreadPoolExecutor<br>
使用场景和好处
锁<br>
Synchronized<br>
ReentrantLock<span lang="EN-US"><span lang="EN-US"><strong></strong></span></span>
ReentrantReadWriteLock<strong></strong>
<font color="#381e11">StampedLock(</font><font color="#381e11"><span style="color: #ff0000;">并发量大且读远大于写</span>)</font>
乐观锁&&悲观锁<br>
避免死锁<br>
避免一个线程获取多个锁<br>
避免一个线程在锁内占用多个资源<br>
尝试使用定时锁,Lock.tryLock(timeout)替代内部锁机制<br>
对于数据加锁,加锁解锁必须要同一个数据库连接内<br>
数据库<br>
索引的数据结构与原理<br>
针对于一个慢sql的优化<br>
数据库水平垂直的拆分方案<br>
MyCAT<br>
Shareding-phere<br>
事物、隔离级别、传播特性<br>
内存管理<br>
JVM内存划分<br>
内存、栈溢出的解决方案<br>
垃圾回收机制<br>
线上问题定位及解决<br>
类的加载、创建对象、垃圾回收、类卸载<br>
深拷贝&&浅拷贝<br>
收藏
收藏
0 条评论
下一页
为你推荐
查看更多