diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..21c5183 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,101 @@ + + + + + + + + + + { + "lastFilter": { + "state": "OPEN", + "assignee": "AobingJava" + } +} + { + "selectedUrlAndAccountId": { + "url": "https://github.com/AobingJava/JavaFamily.git", + "accountId": "db293c56-b1d4-4a65-bc7c-ff15bdc7754a" + } +} + { + "associatedIndex": 2 +} + + + + + { + "keyToString": { + "RunOnceActivity.ShowReadmeOnStart": "true", + "git-widget-placeholder": "master", + "kotlin-language-version-configured": "true", + "node.js.detected.package.eslint": "true", + "node.js.detected.package.tslint": "true", + "node.js.selected.package.eslint": "(autodetect)", + "node.js.selected.package.tslint": "(autodetect)", + "nodejs_package_manager_path": "npm", + "vue.rearranger.settings.migration": "true" + } +} + + + + + + + + + + + + + + + + + + + + + 1720708986075 + + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md index 39b54fa..2f51ec1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ + 我会从下图中的知识点去写这个系列,很多细节的点,可能想得不是很完善,大家可以去[【公众号】](#公众号)获取或者加我[【微信】](#微信)提意见(别忘记**Star**哟)。 原创文章每周最少两篇,公众号首发文章,[【B站】](https://space.bilibili.com/130763764)首发视频,比博客早一到两篇。 @@ -15,71 +16,67 @@ 微信群 公众号 投稿 - 投稿 公众号 投稿 投稿 - 投稿 - 投稿

-![](https://tva1.sinaimg.cn/large/0082zybply1gcb2u3keh9j30p02j4h2r.jpg) -![](https://tva1.sinaimg.cn/large/007S8ZIlgy1gek7wtyci9j30u0a9h1kz.jpg) -[后端面试点合集](https://mp.weixin.qq.com/s/gBr3UfC1HRcw4U-ZMmtRaQ) # 目录(善用Ctrl+F) -**注 : 没链接的是还没写** +**ps : 没链接的是还没写(耐心等待更哟)** + + +#### [后端面试点合集](https://mp.weixin.qq.com/s/gBr3UfC1HRcw4U-ZMmtRaQ) + +#### [脑图在线编辑地址](https://www.processon.com/view/5e86b713e4b0bf3ebcf4e376) + +- [学习路线](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF.md) - Java基础核心串讲 - - 计算机操作系统与Linux - - [学习linux命令,看这篇2w多字的命令详解就够了](https://mp.weixin.qq.com/s/7bSwKiPmtJbs7FtRWZZqpA) - - [图解HTTP协议](https://mp.weixin.qq.com/s/AK1Pb9rx0q5Hf8dq6HNOhw) - - [面试 HTTP ,99% 的面试官都爱问这些问题](https://mp.weixin.qq.com/s/t7ZYT6wBBbFYVBPOSztpRg) - - 计算机网络 - - 7种常见的设计模式和使用场景 - - Java必会基础与新版本特性 - - [HashMap](https://github.com/AobingJava/JavaFamily/blob/master/docs/basics/HashMap.md) - - [面试官:HashMap 为什么线程不安全?](https://mp.weixin.qq.com/s/VtIpj-uuxFj5Bf6TmTJMTw) - - [万万没想到,HashMap默认容量的选择,竟然背后有这么多思考!?](https://mp.weixin.qq.com/s/ktre8-C-cP_2HZxVW5fomQ) - - [ConcurrentHashMap & Hashtable(文末送书)](https://mp.weixin.qq.com/s/AixdbEiXf3KfE724kg2YIw) - - [ArrayList](https://mp.weixin.qq.com/s/WoGclm7SsbURGigI3Mwr3w) - - [ArrayList源码解析,老哥,来一起复习一哈?](https://mp.weixin.qq.com/s/3PNWmtS-bEZgZjd9wyMiDA) - - [跟着动画学习TCP三次握手和四次挥手](https://mp.weixin.qq.com/s/NL7Jzh0lYoA395yzaGxBHw) - - [面试官问我同步容器(如Vector)的所有操作一定是线程安全的吗?我懵了!](https://mp.weixin.qq.com/s/0cMrE87iUxLBw_qTBMYMgA) - - [全网最透彻HTTPS(面试常问)](https://mp.weixin.qq.com/s/21JaXwdfSjItj5SgOwhapg) - - [枚举](https://mp.weixin.qq.com/s/U5FkL9zyzr0PkAp8MJJ8BQ) - - [我就知道面试官接下来要问我 ConcurrentHashMap 底层原理了](https://mp.weixin.qq.com/s/My4P_BBXDnAGX1gh630ZKw) + - [Java基础知识](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%9F%BA%E7%A1%80%E6%A0%B8%E5%BF%83/java%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md) + - [计算机操作系统](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%9F%BA%E7%A1%80%E6%A0%B8%E5%BF%83/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F.md) + - [IO](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%9F%BA%E7%A1%80%E6%A0%B8%E5%BF%83/io.md) + - [Linux](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%9F%BA%E7%A1%80%E6%A0%B8%E5%BF%83/linux.md) + - [计算机网络](https://github.com/AobingJava/JavaFamily/tree/master/docs/all/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C) + + - [HTTP/HTTPS](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/HTTP/HTTPS.md) + - [TCP/IP](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/TCP/IP.md) + + - [7种常见的设计模式和使用场景](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E5%92%8C%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF.md) + - [Java必会基础与新版本特性](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/Java%E5%BF%85%E4%BC%9A%E5%9F%BA%E7%A1%80%E4%B8%8E%E6%96%B0%E7%89%88%E6%9C%AC%E7%89%B9%E6%80%A7.md) + - [线上问题排查](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E7%BA%BF%E4%B8%8A%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5.md) + + +- 集合框架 + - [HashMap](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6/HashMap.md) + - [ConcurrentHashMap](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6/ConcurrentHashMap.md) + - [ArrayList](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6/ArrayList.md) + - [Vector](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6/Vector.md) + + + - 深入浅出JVM - - JVM内存模型 - - [【JVM故事】了解JVM的结构,好在面试时吹牛](https://mp.weixin.qq.com/s/fit90VdZUa2pG9lbET0i7w) - - [看完这篇垃圾回收,和面试官扯皮没问题了](https://mp.weixin.qq.com/s/_AKQs-xXDHlk84HbwKUzOw) - - [Java堆内存是线程共享的!面试官:你确定吗?](https://mp.weixin.qq.com/s/Wws24Fhg1nH4dHvtcFYi2g) - - 性能调优、线上问题排查 - - 类加载机制详解 - - 垃圾回收机制 - - 垃圾回收器、垃圾回收算法 + - [JVM内存模型](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/jvm/%E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BAJVM.md) + - [性能调优、线上问题排查](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/jvm/%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98%E3%80%81%E7%BA%BF%E4%B8%8A%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5.md) + - [类加载机制详解](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/jvm/%E7%B1%BB%E5%8A%A0%E8%BD%BD%E6%9C%BA%E5%88%B6%E8%AF%A6%E8%A7%A3.md) + - [垃圾回收机制](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/jvm/%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%E6%9C%BA%E5%88%B6.md) + - [垃圾回收器、垃圾回收算法](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/jvm/%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%E5%99%A8%E3%80%81%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%E7%AE%97%E6%B3%95.md) - 并发与多线程 - - 线程状态转换与通信机制 - - 线程同步与互斥 - - 线程池知识点 - - 常见的JUC工具类 - - [【面试】如果把线程当作一个人来对待,所有问题都瞬间明白了](https://mp.weixin.qq.com/s/PrUa0tFyu3UZllP2FRDyVA) - - [Java 并发进阶常见面试题总结](https://mp.weixin.qq.com/s/cdHfTTvMpH60SwG2bjTMBw) - - [如果你这样回答“什么是线程安全”,面试官都会对你刮目相看(建议珍藏)](https://mp.weixin.qq.com/s/WDeewsvWUEBIuabvVVhweA) - - [乐观锁、悲观锁](https://mp.weixin.qq.com/s/WtAdXvaRuBZ-SXayIKu1mA) - - [死磕Synchronized源码](https://mp.weixin.qq.com/s/2ka1cDTRyjsAGk_-ii4ngw) - - [我画了35张图就是为了让你深入 AQS](https://mp.weixin.qq.com/s/trsjgUFRrz40Simq2VKxTA) - - [终于有人把 CountDownLatch,CyclicBarrier,Semaphore 说明白了!](https://mp.weixin.qq.com/s/TDw7GnzDw5FK3RWwkIzzZA) - - [面试官想到,一个Volatile,敖丙都能吹半小时](https://mp.weixin.qq.com/s/Oa3tcfAFO9IgsbE22C5TEg) - + - [多线程基础知识](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%B9%B6%E5%8F%91%E4%B8%8E%E5%A4%9A%E7%BA%BF%E7%A8%8B/%E5%A4%9A%E7%BA%BF%E7%A8%8B%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md) + - [常见关键字](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%B9%B6%E5%8F%91%E4%B8%8E%E5%A4%9A%E7%BA%BF%E7%A8%8B/%E5%B8%B8%E8%A7%81%E5%85%B3%E9%94%AE%E5%AD%97.md) + - [多线程锁机制](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%B9%B6%E5%8F%91%E4%B8%8E%E5%A4%9A%E7%BA%BF%E7%A8%8B/%E5%A4%9A%E7%BA%BF%E7%A8%8B%E9%94%81%E6%9C%BA%E5%88%B6.md) + - [线程池知识点](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%B9%B6%E5%8F%91%E4%B8%8E%E5%A4%9A%E7%BA%BF%E7%A8%8B/%E7%BA%BF%E7%A8%8B%E6%B1%A0%E7%9F%A5%E8%AF%86%E7%82%B9.md) + - [常见的JUC工具类](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%B9%B6%E5%8F%91%E4%B8%8E%E5%A4%9A%E7%BA%BF%E7%A8%8B/%E5%B8%B8%E8%A7%81%E7%9A%84JUC%E5%B7%A5%E5%85%B7%E7%B1%BB.md) + - [多线程经典面试题](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%B9%B6%E5%8F%91%E4%B8%8E%E5%A4%9A%E7%BA%BF%E7%A8%8B/%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%BB%8F%E5%85%B8%E9%9D%A2%E8%AF%95%E9%A2%98.md) + - 常用工具集 - JVM问题排查工具-JMC @@ -87,415 +84,196 @@ - 线上调试神器-btrace - Git原理与工作流 - Linux常用分析工具 - - [怎么排查堆内存溢出啊?](https://mp.weixin.qq.com/s/7XGD-Z3wrThv5HyoK3B8AQ) - - [CPU100%,排查](https://mp.weixin.qq.com/s/roEMz-5tzBZvGxbjq8NhOQ) - + - 数据结构与算法 - 从二叉搜索树到B+树 - 经典问题之字符串 - 经典问题之TOPK + - [最大公共子串](https://mp.weixin.qq.com/s/Yx3uRVGFYikx8gm-oi-0vg) + - [动态规划](https://mp.weixin.qq.com/s/1dG8Dk7nZeIGHQ0Hp8gq7Q) + - [大厂面试爱问的「调度算法」,20 张图一举拿下](https://mp.weixin.qq.com/s/B9MVq1617YgtgBtwvhVg-Q) - [图解红黑树](https://mp.weixin.qq.com/s/-8JFh5iLr88XA4AJ9mMf6g) - + - [面试必备 | 不可不会的反转链表](https://mp.weixin.qq.com/s/_DJgsdhY4drJyEPN9xZX6Q) + - [红黑树【图解】](https://mp.weixin.qq.com/s/sPIE54UmvNgINZIATQKyew) + - [算法学习工具网站](https://mp.weixin.qq.com/s/pWXxg9O5BwcC9Zi68PT3TQ) - 必会框架 - - Spring全家桶以及源码分析 - - [一分钟带你玩转 Spring IoC](https://mp.weixin.qq.com/s/WpRSitDqtgOuU9GnI1-HDw) - - [Spring事务传播行为](https://mp.weixin.qq.com/s/IglQITCkmx7Lpz60QOW7HA) - - [外行人都能看懂的SpringCloud,错过了血亏!](https://mp.weixin.qq.com/s/MJrahcDXwxgDr5zBdO3XWw) - - 高性能NIO框架-Netty + - [Spring全家桶以及源码分析](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%BF%85%E4%BC%9A%E6%A1%86%E6%9E%B6/spring.md) + - [SpringCloud](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%BF%85%E4%BC%9A%E6%A1%86%E6%9E%B6/SpringCloud.md) + + - 分布式框架基石-RPC - - [敖丙找出Dubbo源码BUG,三歪夸了我一天](https://mp.weixin.qq.com/s/_5YMfQK1tmYbmRMldBPlaQ) + - [Dubbo](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%BF%85%E4%BC%9A%E6%A1%86%E6%9E%B6/RPC/Dubbo.md) + - [RPC实践](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%BF%85%E4%BC%9A%E6%A1%86%E6%9E%B6/RPC/RPC%E5%AE%9E%E8%B7%B5.md) + - [Netty](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%BF%85%E4%BC%9A%E6%A1%86%E6%9E%B6/RPC/Netty.md) + - ORM框架Mybatis源码分析 - - [20000 字的 Spring Cloud 总结](https://mp.weixin.qq.com/s/pGSx8eKFH3YnUos3SM2ITw) - - [什么是Zookeeper](https://mp.weixin.qq.com/s/gphDLJMO3QcRoN3zkco4EA) - - [什么是单点登录(SSO)](https://mp.weixin.qq.com/s/drPVkRbCsDIlX6Ls2pDmqA) - - [分布式锁之Zookeeper](https://mp.weixin.qq.com/s/ZqQHWLfVD1Rz1agmH3LWrg) - - [Zookeeper之ZAB协议](https://mp.weixin.qq.com/s/k0zAExTvMsrugCaNJxs7hQ) - -- [高并发架构基石-缓存](https://github.com/AobingJava/JavaFamily/tree/master/docs/redis) - - - [Redis基础知识](https://github.com/AobingJava/JavaFamily/blob/master/docs/redis/Redis%E5%9F%BA%E7%A1%80.md) - - [缓存击穿、雪崩、穿透](https://github.com/AobingJava/JavaFamily/blob/master/docs/redis/%E7%BC%93%E5%AD%98%E5%87%BB%E7%A9%BF%E3%80%81%E9%9B%AA%E5%B4%A9%E3%80%81%E7%A9%BF%E9%80%8F.md) - - [集群高可用、哨兵、持久化、LRU](https://github.com/AobingJava/JavaFamily/blob/master/docs/redis/%E9%9B%86%E7%BE%A4%E9%AB%98%E5%8F%AF%E7%94%A8%E3%80%81%E5%93%A8%E5%85%B5%E3%80%81%E6%8C%81%E4%B9%85%E5%8C%96%E3%80%81LRU.md) - - [分布式锁、并发竞争、双写一致性](https://github.com/AobingJava/JavaFamily/blob/master/docs/redis/%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E3%80%81%E5%B9%B6%E5%8F%91%E7%AB%9E%E4%BA%89%E3%80%81%E5%8F%8C%E5%86%99%E4%B8%80%E8%87%B4%E6%80%A7.md) - - [Redis常见面试题](https://github.com/AobingJava/JavaFamily/blob/master/docs/redis/Redis%E5%B8%B8%E8%A7%81%E9%9D%A2%E8%AF%95%E9%A2%98.md) - - [布隆过滤器(BloomFilter)](https://github.com/AobingJava/JavaFamily/blob/master/docs/redis/%E5%B8%83%E9%9A%86%E8%BF%87%E6%BB%A4%E5%99%A8(BloomFilter).md) - - [秒杀系统设计](https://github.com/AobingJava/JavaFamily/blob/master/docs/redis/%E7%A7%92%E6%9D%80%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1.md) - - [全栈秒杀系统设计](https://mp.weixin.qq.com/s/RRHN8t017ofOvb4nvlCStg) - - [课代表总结](https://github.com/AobingJava/JavaFamily/blob/master/docs/redis/%E8%AF%BE%E4%BB%A3%E8%A1%A8%E6%80%BB%E7%BB%93.md) - - [短小精悍之 Redis 命令行工具有趣的罕见用法](https://mp.weixin.qq.com/s/eSx4aL7iaMZlW0cPZswghA) - - [布隆过滤器实战【防止缓存击穿】](https://mp.weixin.qq.com/s/BdwZViiAqnFhCde4ZsxwPg) - - [布隆过滤器过时了,未来属于布谷鸟过滤器?](https://mp.weixin.qq.com/s/XxY3b5FoVXCvHJWMxQH29g) - - [什么鬼,面试官竟然让敖丙用Redis实现一个消息队列!!?](https://mp.weixin.qq.com/s/5NOTLJ6AM3QJfhvXMSR-MA) - - [Redis—分布式锁深入探究](https://mp.weixin.qq.com/s/49hgH3COla3wU0rgyiUVgg) - - [Redis—跳跃表](https://mp.weixin.qq.com/s/NOsXdrMrWwq4NTm180a6vw) - - [Redis—5种基本数据结构](https://mp.weixin.qq.com/s/MT1tB2_7f5RuOxKhuEm1vQ) - - [Redis—持久化](https://mp.weixin.qq.com/s/O_qDco6-Dasu3RomWIK_Ig) - - [Reids—神奇的HyperLoglog解决统计问题](https://mp.weixin.qq.com/s/9dtGe3d_mbbxW5FpVPDNow) - - [Redis分布式锁](https://mp.weixin.qq.com/s/Z_xriP-jc2Bnmdcm0l5xzg) - - [妈妈再也不担心我面试被Redis问得脸都绿了](https://mp.weixin.qq.com/s/vXBFscXqDcXS_VaIERplMQ) + - [Zookeeper](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%BF%85%E4%BC%9A%E6%A1%86%E6%9E%B6/Zookeeper.md) + -- [消息队列](https://github.com/AobingJava/JavaFamily/tree/master/docs/mq) +- 高并发架构基石-缓存 + + - [Redis数据结构、基础知识](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E7%BC%93%E5%AD%98/Redis%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E3%80%81%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md) + - [Redis常见线上故障及其解决方案](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E7%BC%93%E5%AD%98/Redis%E5%B8%B8%E8%A7%81%E7%BA%BF%E4%B8%8A%E6%95%85%E9%9A%9C%E5%8F%8A%E5%85%B6%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88.md) + - [Redis常见面试题](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E7%BC%93%E5%AD%98/Redis%E5%B8%B8%E8%A7%81%E9%9D%A2%E8%AF%95%E9%A2%98.md) + - [知识点之外的缓存之路](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E7%BC%93%E5%AD%98/%E7%9F%A5%E8%AF%86%E7%82%B9%E4%B9%8B%E5%A4%96%E7%9A%84%E7%BC%93%E5%AD%98%E4%B9%8B%E8%B7%AF.md) + - - [消息队列基础知识](https://github.com/AobingJava/JavaFamily/blob/master/docs/mq/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97%E5%9F%BA%E7%A1%80.md) - - [消息重复消费、分布式事务、顺序消费](https://github.com/AobingJava/JavaFamily/blob/master/docs/mq/%E9%87%8D%E5%A4%8D%E6%B6%88%E8%B4%B9%E3%80%81%E9%A1%BA%E5%BA%8F%E6%B6%88%E8%B4%B9%E3%80%81%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1.md) - - [Kafka架构与原理](https://mp.weixin.qq.com/s/-IPfWPS1WQMEgcIu0Ak2VQ) - - [RocketMQ](https://github.com/AobingJava/JavaFamily/blob/master/docs/mq/RocketMQ.md) + +- 消息队列 + - [消息队列基础知识](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/mq/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97%E5%9F%BA%E7%A1%80.md) + - [Kafka](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/mq/kafka.md) + - [RocketMQ](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/mq/RocketMQ.md) + - [消息队列面试题](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/mq/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97%E9%9D%A2%E8%AF%95%E9%A2%98.md) + - 数据库 - - MySQL - - 索引、锁机制 - - 事务特性、隔离级别 - - MySQL调优与最佳实践 - - [MySQL的索引是怎么加速查询的?](https://mp.weixin.qq.com/s/7TPVOT7sloDUKmhldf9uvg) - - [数据库索引](https://mp.weixin.qq.com/s/_9rDde9wRYoZeh07EASNQQ) - - [MySql主从复制,从原理到实践!](https://mp.weixin.qq.com/s/eEWMSTAUF1H-gFBx26jujw) - - [MySQL 的 InnoDB 存储引擎是怎么设计的?](https://mp.weixin.qq.com/s/wr2gJGQSA8QH_lmPh1XOkw) - - [数据库基础知识](https://mp.weixin.qq.com/s/NDL1Q6nqdPq5oMBWSpq4ug) - - [原来MySQL面试还会问这些(undo log)](https://mp.weixin.qq.com/s/Lx4TNPLQzYaknR7D3gmOmQ) - - [数据库连接池到底应该设多大?这篇文章可能会颠覆你的认知](https://mp.weixin.qq.com/s/dQFSrXEmgBMh1PW835rlwQ) - - [漫话:如何给女朋友解释什么是撞库、脱库和洗库?](https://mp.weixin.qq.com/s/L0XUMHInnwN9gSYGH2nzdg) - -- 大数据 + - [MySQL基础知识](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/db/MySQL%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md) + - [索引、锁机制](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/db/%E7%B4%A2%E5%BC%95%E3%80%81%E9%94%81%E6%9C%BA%E5%88%B6.md) + - [事务特性、隔离级别、数据安全](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/db/%E4%BA%8B%E5%8A%A1%E7%89%B9%E6%80%A7%E3%80%81%E9%9A%94%E7%A6%BB%E7%BA%A7%E5%88%AB%E3%80%81%E6%95%B0%E6%8D%AE%E5%AE%89%E5%85%A8.md) + - [数据库性能调优](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/db/%E6%95%B0%E6%8D%AE%E5%BA%93%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98.md) + - [分库分表](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/db/%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8.md) + - [数据库面试题](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/db/%E6%95%B0%E6%8D%AE%E5%BA%93%E9%9D%A2%E8%AF%95%E9%A2%98.md) + - [OceanBase 4.3 发版|实时分析 AP 的里程碑版本](https://github.com/oceanbase) +- 大数据 + - [大数据体系](https://mp.weixin.qq.com/s/7rW9eHxdRXtWJExVupcZZQ) - ODPS离线分析 - Hive - Spark - Hadoop - Hbase - HDFS + - [Flink](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%A4%A7%E6%95%B0%E6%8D%AE/Flink.md) + - 搜索引擎 - - ElasticSearch + - [ElasticSearch](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/es.md) - Canal - Kibana - Lucene - Logstash -- 优秀开源框架推荐 +- [优秀开源框架推荐](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%BC%80%E6%BA%90/%E5%BC%80%E6%BA%90%E6%A1%86%E6%9E%B6.md) + - - [阿里巴巴开源限流系统 Sentinel 全解析](https://mp.weixin.qq.com/s/NgS9tL4IVwGZrssz7fURpA) - - [支付宝的架构到底有多牛逼?还没看完我就跪了!](https://mp.weixin.qq.com/s/d4K9hJHzZ5IAd2aarsdQrw) - 架构演进之路 - 从All in one 到微服务 - - 互联网架构之路 - - 怎么设计一个能顶住双十一的系统? + - [互联网架构之路](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E4%B9%8B%E8%B7%AF/%E4%BA%92%E8%81%94%E7%BD%91%E6%9E%B6%E6%9E%84%E4%B9%8B%E8%B7%AF.md) + - [怎么设计一个能顶住双十一的系统?](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E4%B9%8B%E8%B7%AF/%E6%80%8E%E4%B9%88%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E8%83%BD%E9%A1%B6%E4%BD%8F%E5%8F%8C%E5%8D%81%E4%B8%80%E7%9A%84%E7%B3%BB%E7%BB%9F.md) + - [分布式&分布式事务](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E4%B9%8B%E8%B7%AF/%E5%88%86%E5%B8%83%E5%BC%8F%26%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1.md) - 互联网前沿技术 - 容器化:Docker与k8s详解 - 面试技巧 + + - [简历](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E6%8A%80%E5%B7%A7/%E7%AE%80%E5%8E%86.md) + - [语言组织](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E6%8A%80%E5%B7%A7/%E8%AF%AD%E8%A8%80%E7%BB%84%E7%BB%87.md) + - [加分项](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E6%8A%80%E5%B7%A7/%E5%8A%A0%E5%88%86%E9%A1%B9.md) + - [面试流程](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E6%8A%80%E5%B7%A7/%E9%9D%A2%E8%AF%95%E6%B5%81%E7%A8%8B.md) - - [简历怎么写?](https://mp.weixin.qq.com/s/0pNv6pMnenKn1A9PE61VnQ) - - [能不能好好写简历?](https://mp.weixin.qq.com/s/LxVeT49GMKu72PZJ-rDHpA) - - [简历这样写,技术人都不直男了!](https://mp.weixin.qq.com/s/tl4DpsQPVh-bvlFzNsrzvw) - - 语言组织 - - 加分项 - - 扬长避短 - - [自我介绍](https://github.com/AobingJava/JavaFamily/blob/master/docs/coderLife/%E6%95%96%E4%B8%99%E7%94%A820%E8%A1%8C%E4%BB%A3%E7%A0%81%E6%8B%BF%E4%BA%86%E6%AF%94%E8%B5%9B%E5%86%A0%E5%86%9B.md) - - [互联网公司面试流程 注意事项 加分点 防骗指南](https://mp.weixin.qq.com/s/jhmpG2bBb4aXoUJzahC0Rg) - - [互联网公司面试流程&加分点,别跟敖丙一样被无良HR坑了](https://mp.weixin.qq.com/s/7Rq8QR58Adi5WGHRlnhDeQ) - - 研发规范 + + - [阿里巴巴技术规范](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E7%A0%94%E5%8F%91%E8%A7%84%E8%8C%83/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E6%8A%80%E6%9C%AF%E8%A7%84%E8%8C%83.md) + - [开源漏洞](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E7%A0%94%E5%8F%91%E8%A7%84%E8%8C%83/%E5%BC%80%E6%BA%90%E6%BC%8F%E6%B4%9E.md) + - [大厂技术研发规范](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E7%A0%94%E5%8F%91%E8%A7%84%E8%8C%83/%E5%A4%A7%E5%8E%82%E6%8A%80%E6%9C%AF%E7%A0%94%E5%8F%91%E8%A7%84%E8%8C%83.md) + +- [各地互联网公司盘点](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%90%84%E5%9C%B0%E4%BA%92%E8%81%94%E7%BD%91%E5%85%AC%E5%8F%B8%E7%9B%98%E7%82%B9.md) - - [为什么阿里巴巴禁止开发人员使用isSuccess作为变量名?](https://mp.weixin.qq.com/s/xvTCaBXkRc7e6dGCUJxRPQ) - - [为什么阿里巴巴要求谨慎使用ArrayList中的subList方法](https://mp.weixin.qq.com/s/9y89Hy-YnpPjXpcmXpy_GQ) - - [为什么阿里巴巴不建议在for循环中使用"+"进行字符串拼接](https://mp.weixin.qq.com/s/fLUf8V0Qahe8piNrRp1UVQ) - 面试真题&面经分享 - - - [互联网寒冬,敖丙挚友7面阿里,终获Offer](https://mp.weixin.qq.com/s/gYpZCSYK3YYEvGFFeHdFJQ) - - [二本 两年经验读者 阿里P6面经](https://mp.weixin.qq.com/s/WOS6HMdt1-mAGuLiC30_-Q) - - [3 年经验的 Java 后端妹子,横扫阿里、滴滴、美团,看完面经我觉得敖丙是垃圾!](https://mp.weixin.qq.com/s/oAnGGBkre7Z4VkhME-TgzQ) - - [2020 字节跳动后端面经分享!已拿 offer!](https://mp.weixin.qq.com/s/hr2pDs2wsiHQuDzW7jmOow) - - [春招字节跳动、蘑菇街四轮面试,分别问了啥?](https://mp.weixin.qq.com/s/xBC1IRr6v8hmIJ9lqCp5pQ) - - [敖丙8年经验读者,疫情期间面20家大厂总结](https://mp.weixin.qq.com/s/AQvDX0n8wBBaWl2OmcpnrA) - - [京东+百度一面,不小心都拿了Offer](https://mp.weixin.qq.com/s/VVonP6MgGRUnBnWa2ukkyw) - - [蚂蚁金服2019实习生面经总结(已拿口头offer)](https://mp.weixin.qq.com/s/0opKiGbKjAfJkRVeVHzpZg) - - [Bigo的Java面试,我挂在了第三轮技术面上......](https://mp.weixin.qq.com/s/3_HnVzGm16zU2zhk7BnwFw) - - [15个经典的Spring面试常见问题](https://mp.weixin.qq.com/s/OMlwHHnGcN7iZ8lerUvW7w) - - [Spring常见问题总结(补充版)](https://mp.weixin.qq.com/s/wcK2qsZxKDJTLIGqEIyaNg) - - [我是如何在面试别人Spring事务时“套路”对方的](https://mp.weixin.qq.com/s/JcHt99SAbNIlY063rmylpA) - - [我和阿里面试官的一次“邂逅”(附问题详解)](https://mp.weixin.qq.com/s/-DZj158-LOQmnCayf1_n3A) - - [一份还热乎的蚂蚁金服面经(已拿Offer)!附答案!!](https://mp.weixin.qq.com/s/HtLwChoLzqhbM4pKldLDng) - - [十道校招常见的面试题](https://mp.weixin.qq.com/s/wTKSvziyEXrSyf21iMjhZQ) - - [JVM必问知识点:类加载过程](https://mp.weixin.qq.com/s/eHqFONXXNc-LD4ugaKM6UA) - - [迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)](https://mp.weixin.qq.com/s/EVequWGVMWV5Ki2llFzdHg) - - [互联网寒冬,敖丙挚友7面阿里,终获Offer](https://mp.weixin.qq.com/s/gYpZCSYK3YYEvGFFeHdFJQ) - - [Java后端实习面经,电子科大大三读者投稿!看了之后感触颇深!很开心!](https://mp.weixin.qq.com/s/ttKI82_CQdMmxoBw8TS92g) - - [敖丙读者只复习了半年,怒拿字节跳动Offer](https://mp.weixin.qq.com/s/g6qFbEWfJeahzuzjECuvDg) - - [敖丙读者一个月面试近20家大中小厂,在互联网寒冬突破重围,成功上岸阿里云 !](https://mp.weixin.qq.com/s/F2TiFw-LYFXMRj_hsD-TIw) + - [阿里巴巴](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E7%9C%9F%E9%A2%98%26%E9%9D%A2%E7%BB%8F%E5%88%86%E4%BA%AB/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E9%9D%A2%E8%AF%95%E9%A2%98.md) + - [字节跳动](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E7%9C%9F%E9%A2%98%26%E9%9D%A2%E7%BB%8F%E5%88%86%E4%BA%AB/%E5%AD%97%E8%8A%82%E8%B7%B3%E5%8A%A8%E9%9D%A2%E8%AF%95%E9%A2%98.md) + - [拼多多](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E7%9C%9F%E9%A2%98%26%E9%9D%A2%E7%BB%8F%E5%88%86%E4%BA%AB/%E6%8B%BC%E5%A4%9A%E5%A4%9A%E9%9D%A2%E8%AF%95%E9%A2%98.md) + - [哔哩哔哩](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E7%9C%9F%E9%A2%98%26%E9%9D%A2%E7%BB%8F%E5%88%86%E4%BA%AB/bilibili.md) + - [小红书](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E7%9C%9F%E9%A2%98%26%E9%9D%A2%E7%BB%8F%E5%88%86%E4%BA%AB/%E5%B0%8F%E7%BA%A2%E4%B9%A6.md) + - [京东](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E7%9C%9F%E9%A2%98%26%E9%9D%A2%E7%BB%8F%E5%88%86%E4%BA%AB/%E4%BA%AC%E4%B8%9C.md) + - [百度](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E7%9C%9F%E9%A2%98%26%E9%9D%A2%E7%BB%8F%E5%88%86%E4%BA%AB/%E7%99%BE%E5%BA%A6.md) + - [美团](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E7%9C%9F%E9%A2%98%26%E9%9D%A2%E7%BB%8F%E5%88%86%E4%BA%AB/%E7%BE%8E%E5%9B%A2.md) + - [网易](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E7%9C%9F%E9%A2%98%26%E9%9D%A2%E7%BB%8F%E5%88%86%E4%BA%AB/%E7%BD%91%E6%98%93.md) + - [腾讯](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E7%9C%9F%E9%A2%98%26%E9%9D%A2%E7%BB%8F%E5%88%86%E4%BA%AB/%E8%85%BE%E8%AE%AF%E9%9D%A2%E8%AF%95%E9%A2%98.md) + - [国企](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E7%9C%9F%E9%A2%98%26%E9%9D%A2%E7%BB%8F%E5%88%86%E4%BA%AB/%E5%9B%BD%E4%BC%81.md) + - [外企](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E7%9C%9F%E9%A2%98%26%E9%9D%A2%E7%BB%8F%E5%88%86%E4%BA%AB/%E5%A4%96%E4%BC%81.md) + - [校招](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E7%9C%9F%E9%A2%98%26%E9%9D%A2%E7%BB%8F%E5%88%86%E4%BA%AB/%E6%A0%A1%E6%8B%9B%E9%9D%A2%E8%AF%95%E9%A2%98.md) + - 社招 + - [其他](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E9%9D%A2%E8%AF%95%E7%9C%9F%E9%A2%98%26%E9%9D%A2%E7%BB%8F%E5%88%86%E4%BA%AB/%E5%85%B6%E4%BB%96.md) + +- 职场杂谈 + + - 程序人生系列 - - [大学个人经历 | 如诗的青春](https://mp.weixin.qq.com/s/FJC2uEg9o56dqCPijgizFA) - - [蘑菇街裁员说明 海阔凭鱼跃,天高任鸟飞](https://mp.weixin.qq.com/s/JB6CT4SfOg8e9lhkiWwZNg) - - [我知道互联网不相信眼泪,但是敖丙今天还是没忍住](https://mp.weixin.qq.com/s/UC6NsEFlNfqMdEkzvHxKRA) - - [2020无畏年少青春,迎风潇洒前行](https://mp.weixin.qq.com/s/66ZDj60KPEfohHg0g8Cggw) - - [写作一个月的感受](https://github.com/AobingJava/JavaFamily/blob/master/docs/coderLife/%E5%86%99%E4%BD%9C%E4%B8%80%E4%B8%AA%E6%9C%88%E5%9C%A8%E6%84%9F%E6%81%A9%E8%8A%82%E5%AF%B9%E5%A4%A7%E5%AE%B6%E8%AF%B4%E7%9A%84%E8%AF%9D.md) - - [敖丙用20行代码拿了比赛冠军](https://github.com/AobingJava/JavaFamily/blob/master/docs/coderLife/%E6%95%96%E4%B8%99%E7%94%A820%E8%A1%8C%E4%BB%A3%E7%A0%81%E6%8B%BF%E4%BA%86%E6%AF%94%E8%B5%9B%E5%86%A0%E5%86%9B.md) - - [应届毕业生工作7个月小结](https://mp.weixin.qq.com/s/XcrBvdlh1At_V42qfQZ9Kw) - - [教你在服务器搭建个人面试项目](https://github.com/AobingJava/JavaFamily/blob/master/docs/coderLife/%E6%95%99%E4%BD%A0%E5%9C%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E9%9D%A2%E8%AF%95%E9%A1%B9%E7%9B%AE.md) - - [记一次害敖丙差点丢工作的线上P0事故](https://github.com/AobingJava/JavaFamily/blob/master/docs/coderLife/%E8%AE%B0%E4%B8%80%E6%AC%A1%E5%B7%AE%E7%82%B9%E5%AE%B3%E6%95%96%E4%B8%99%E4%B8%A2%E5%B7%A5%E4%BD%9C%E7%9A%84%E7%9A%84%E7%BA%BF%E4%B8%8AP0%E4%BA%8B%E6%95%85.md) - - [阿里五年老员工有什么话想对大家说?](https://mp.weixin.qq.com/s/9vPZd1q1vpKuE2qZazLQmA) - - [从毕业到技术专家我做了啥](https://github.com/AobingJava/JavaFamily/blob/master/docs/coderLife/%E9%A3%8E%E9%9B%A8%E5%8D%81%E5%B9%B4%E4%BB%8E%E6%AF%95%E4%B8%9A%E5%88%B0%E6%8A%80%E6%9C%AF%E4%B8%93%E5%AE%B6%E6%88%91%E5%81%9A%E4%BA%86%E5%95%A5.md) - - [50天全网2W粉,感谢坚持!](https://mp.weixin.qq.com/s/_5tVdE9oFPBUK3Z0gKH26g) - - [MacBook Pro 入手一年了,到底香不香?](https://mp.weixin.qq.com/s/SKzzAT-jBZ2l2R1Evr75ig) - - [【互联网寒冬】经历裁员,拿20W被迫去大厂](https://mp.weixin.qq.com/s/0WurpFJlZQtjjdleGPK0Cw) - - [【相亲】95年高颜值妹子,喜欢上进的男生](https://mp.weixin.qq.com/s/LCaZQAVL1DnihhngZ3Wq0w) - - [我的青春结束了](https://mp.weixin.qq.com/s/matyTWXuZ_qs9hGfAl9_NQ) - - [时间刺客--敖丙](https://mp.weixin.qq.com/s/wlfurOBpxeaf6iy7CtHRlA) - -- 日常生活 - - - [敖丙参加了一场温州游资的婚礼](https://mp.weixin.qq.com/s/sM3hJe5z3_pCH-8GWs0iOA) - - [敖丙枯燥无味的假期,一直在吃狗粮](https://mp.weixin.qq.com/s/1jQnRCXdrUQzZInQmzABvA) - - [送别了好友,敖丙跟你聊聊【离职】这个话题](https://mp.weixin.qq.com/s/pHcgkDvKfElRIVZGd4Kzng) - - [请照顾好自己,周末病魔差点一套带走我。](https://mp.weixin.qq.com/s/5C4UjGtHoZVu8uI4yP5wRg) - - [敖丙我参加了蘑菇街年会,流了一晚上鼻血](https://mp.weixin.qq.com/s/fkByjmdaqdw0TELDzdm5mQ) - - [曾经我们并肩作战,敬未来一杯,敬资本一杯](https://mp.weixin.qq.com/s/s9HPYYi9VfYMt7UGCTqWVw) - - [敖丙我写了一个新手都写不出的低级bug,被骂惨了。](https://mp.weixin.qq.com/s/yB9s771gDz6oMKZsUnJuyg) - - [敖丙的第一次相亲,还没开始,就已经结束了。](https://mp.weixin.qq.com/s/mLLbpnI1pVnlUzL7H3EuNQ) - - [我的母亲](https://mp.weixin.qq.com/s/yGcgvp9s18CERp9nx2iigw) + - [成长经历](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/%E6%88%90%E9%95%BF%E7%BB%8F%E5%8E%86.md) + - [职场经历](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/%E8%81%8C%E5%9C%BA%E7%BB%8F%E5%8E%86.md) + - [自媒体经历](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/%E8%87%AA%E5%AA%92%E4%BD%93%E7%BB%8F%E5%8E%86.md) + - [生活趣事](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/%E7%94%9F%E6%B4%BB%E8%B6%A3%E4%BA%8B.md) + - [读者经历](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/%E8%AF%BB%E8%80%85%E7%BB%8F%E5%8E%86.md) + - [过年特辑](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/%E8%BF%87%E5%B9%B4%E7%89%B9%E8%BE%91.md) + -- 过年特辑 +- [科普](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E7%A7%91%E6%99%AE.md) - - [贵州打工仔回家过年,遭遇流感,被隔离,偶遇读者,偶遇直播同行...](https://mp.weixin.qq.com/s/MXSWBVQyVD4OW0tjy5UO8Q) - - [敖丙回家过年,外婆说没带女朋友别回来了?喝了老爸89年的酒,当场反目。](https://mp.weixin.qq.com/s/pQrepZAbgP59gmj42Z1kdA) - - [书房翻杂物,看到初恋的信件,看到奖牌,看到梅西、力宏,帅丙的眼角又湿了.....](https://mp.weixin.qq.com/s/VECNJbVV0Bz8PKlG8pYwVw) - - [疫情之下,从一座空城,到另一座空城,贵州小伙带你看不一样的杭州](https://mp.weixin.qq.com/s/8blBtbBLJtVvpnrJ7tmh_g) - - [昂,我24岁了](https://mp.weixin.qq.com/s/_HCBjYI9bcNy-zBHu58l7g) +- [人物&杂谈](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E4%BA%BA%E7%89%A9%26%E6%9D%82%E8%B0%88.md) + + + +- [AI工具](https://juejin.cn/post/7389069052436217896#comment) + + + - **福利** + - [Java/后端学习路线](https://mp.weixin.qq.com/s/5QpuDtXAalR-pz59B5t27g) - - [整理的书单(附个人喜欢的文学书)](https://github.com/AobingJava/JavaFamily/blob/master/docs/creative/%E3%80%8A%E5%90%90%E8%A1%80%E6%95%B4%E7%90%86%E3%80%8B%E5%8D%81%E5%B9%B4%E9%A3%8E%E9%9B%A8%E6%8A%80%E6%9C%AF%E4%BA%BA%E7%9A%84%E4%B9%A6%E5%8D%95%E6%95%B4%E7%90%86.md) - - [整理好用的工具集](https://github.com/AobingJava/JavaFamily/blob/master/docs/creative/%E9%A1%B6%E7%BA%A7%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9A%84%E7%99%BE%E5%AE%9D%E7%AE%B1.md) + - [Java/后端学习路线 2.0优化版本](https://mp.weixin.qq.com/s/QrRVMp6z7HjZA4trsga_cg) + - [整理的书单(附个人喜欢的文学书)](https://mp.weixin.qq.com/s/Wod2cGjGkGeB0iLVAqpksQ) + - [敖丙大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了](https://mp.weixin.qq.com/s/7NS452k5hVPW0dUQ-oTi-A) + - [整理好用的工具集](https://mp.weixin.qq.com/s/WYiXHVJ-p1sZAf4jb5gIXg) - [通用的学习方法](https://mp.weixin.qq.com/s/JX72OoiNrZ9R0DTuOOtcoA) - [IDEA破解(请勿传播)](https://github.com/AobingJava/JavaFamily/blob/master/docs/idea/idea.md) - [电子书(请勿传播)](https://github.com/AobingJava/JavaFamily/blob/master/docs/idea/%E7%94%B5%E5%AD%90%E4%B9%A6.md) - [面试资料(持续更新)](https://github.com/AobingJava/JavaFamily/blob/master/docs/idea/%E8%B5%84%E6%96%99.md) - [简历模板(欢迎补充)](https://github.com/AobingJava/JavaFamily/blob/master/docs/idea/%E8%B5%84%E6%96%99.md) - [概要设计模板](https://github.com/AobingJava/JavaFamily/blob/master/docs/idea/%E8%B5%84%E6%96%99.md) - - - - - -# MyAll - -2019个人经历:https://juejin.im/post/5df603bbf265da33c90b41d4 - -大学个人经历:https://mp.weixin.qq.com/s/FJC2uEg9o56dqCPijgizFA - -公众号:三太子敖丙 + - [5分钟白嫖敖丙常用的免费效率软件/工具!](https://mp.weixin.qq.com/s/2_hM5Z9IMLIRQ2QEPTABcQ) -B站:https://space.bilibili.com/130763764 +所有文章pdf版本 : 链接:https://pan.baidu.com/s/1PKO0LDspwJPNqT6qwqNorQ 密码:f654 -直播:http://live.bilibili.com/21996111(每周五可能) -GitHub:https://github.com/AobingJava/JavaFamily -知乎:https://www.zhihu.com/people/aobingJava +### 阿里、字节、快手、腾讯、美团、滴滴内推 -CSDN:https://blog.csdn.net/qq_35190492 +ao_bing@foxmail.com -掘金:https://juejin.im/user/59b416065188257e671b670a -思否:https://segmentfault.com/u/aobing -开源中国:https://my.oschina.net/javaFamily - -今日头条:https://www.toutiao.com/c/user/3270187212/#mid=1557137040287746 - -技术交流群:添加我微信 aobing2 备注【加群】即可 + + + ![](https://tva1.sinaimg.cn/large/00831rSTly1gck2pplt8ej315u0u0k1b.jpg) -投稿:投稿可获得100-1000元不等的稿酬 点击 [【查看详情】](http://mp.weixin.qq.com/s?__biz=MzAwNDA2OTM1Ng==&mid=305658311&idx=1&sn=4a38e5bbb8845a245452f8ffad9fe4b3&chksm=0cf2db443b855252577ac26a16bbf477942401f7e832bd075866d82a0fa25a02ab5b1534cb72#rd) +## Star History + + + + + Star History Chart + + # 祝福 -希望大家都能找到心仪的工作,学习是一条时而郁郁寡欢,时而开环大笑的路,加油。 +希望大家都能找到心仪的工作,学习是一条时而郁郁寡欢,时而开怀大笑的路,加油。 如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。 敖丙在工作中发现我身边的人真的就是实力越强的越努力,**最高级的自律,享受孤独**。 - - -# 知识星球 -**[**【点击了解详细 领取减32的优惠券】**](https://github.com/AobingJava/JavaFamily/blob/master/docs/idea/%E7%9F%A5%E8%AF%86%E6%98%9F%E7%90%83.md)** - -我会在里面分享个人经历、分享经验、理财,职业规划,答疑等都会涉及,嘉宾分别是公众号大V、大厂架构师、阿里、美团、拼多多的技术专家,都是我朋友,希望能跟你共事(已经有读者去了阿里,也有一个来了蘑菇跟我做同事了,找机会我会分享出来)。 - -# 项目经验&服务器 -大家都说简历没项目写,我就帮大家找了一个项目,还附赠[**【搭建教程】**](https://github.com/AobingJava/JavaFamily/blob/master/docs/coderLife/%E6%95%99%E4%BD%A0%E5%9C%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E9%9D%A2%E8%AF%95%E9%A1%B9%E7%9B%AE.md)。 - - - - -

- - - -

- -云耀云服务器,88元一年起 - -注意,不是突发型只有20%性能,也不是共享型,完全独享。[**【点击购买】**](https://activity.huaweicloud.com/discount_area_v5/index.html?bpName=5f9f98a29e2c40b780c1793086f29fe2&bindType=1&salesID=AB071682) - - -

- - - -

- -**已结束** 活动折扣价:89/年,223/3年,比学生9.9每月还便宜(只阿里云新用户可用) - -买了搭建个项目,熟悉技术栈比较香**推荐买三年的划算点**[**【点击购买】**](https://dashi.aliyun.com/site/aobing/ali) - - - - - - - -# 岗位内推 - -找所有职位比较出色的朋友,觉得合适的给我简历我可以内推,阿里、美团、蘑菇街、拼多多、字节跳动、腾讯等都可以. - -阿里巴巴投递邮箱 : xichao.jy@alibaba-inc.com - -字节/腾讯/蘑菇街/其他岗位 : aobing@mogu.com - - -### 近期机会 - -**天猫国际:** - -天猫国际是中国消费升级的第一跨境平台,是阿里经济体5年2000亿美金进口承诺的担纲。 - -2019年天猫国际技术部和考拉合并成立了阿里巴巴大进口技术部,是阿里巴巴国际化战略的核心技术部门。 - -我们致力于进口业务的技术突破和创新,助力中国的消费者实现“买遍全球”的需求。希望你加入我们,同我们一道引领电子商务、电子支付、供应链等全球化方向,建立一个让全球消费者喜爱,让全球商家受益的国际化技术体系。 - -1.你将致力于进口电商相关的推荐、搜索、用户增长、供应链规划等算法的设计和研发 - -2.你将致力于应用人工智能的最新技术,提高自动化和智能化程度,大幅提升业务效率 - -3.你将有机会深入到最前沿的大数据电商系统的设计和研发。近期成立的新BU,发展前景广阔,提供你足够施展才能的舞台。 - -现招聘 java研发实习生、前端实习生、算法、数据分析和测试实习生。 - -有意请发简历到 joshua.liff@alibaba-inc.com - -要求:2020年11-2021年10本科及以上毕业生,理工科相关专业优先,有论文发表或者程序设计大赛、acm等算法比赛获奖的优先。 - -**国际化电商基础链路团队:** - - -- Vision:AE基础链路的Vision是打造全球化、灵动性的基础链路团队,构建一个完整的电商基础领域闭环。在这里你可以领略到完整的国际化电商体系的进化和发展,在整个电商基础领域的生命周期里可以任意选择发挥你的所长。只要你敢想,我们就敢一起干; - -- 领域:基于Siruis,Poloris中台架构体系,负责AE核心的交易、营销优惠、支付&结算、会员店铺、钱包等基础域国际化小前台体系建设,并构建差异化的国家站的整体业务解决方案; - -- 创新:基于AE跨境、本地化的多业务形态,小前台结合国际化中台的业务和技术策略,孵化创新业务与解决方案,如海外钱包解决方案、数字商品解决方案,助力海外业务多元化。联合算法赋能基础链路,创造更多结合算法能力的场景,如营销优惠,通过技术促进业务,更好的降成本促增收; - -- 挑战:我们的基础领域业务遍布全世界各个角落,每个国家都会带给我们不一样的挑战和机遇,在这里我们可以重新定义电商基础领域,实现基础链路领域国家差异化; - - -岗位要求: - -- 3 年及以上使用 JAVA 开发的经验,JAVA 基础扎实,理解io、多线程、集合等基础框架,了解 JVM 原理; - -- 熟悉WEB开发,熟悉Servlet,MVC框架,具有扎实的数据结构与算法知识; - -- 对用过的开源框架,能了解到它的原理和机制;对 Spring、mybatis 等开源框架熟悉; - -- 熟悉分布式系统的设计和应用,熟悉分布式、缓存、消息等机制;能对分布式常用技术进行合理应用,解决问题; - -- 熟悉 Linux 操作系统和大型数据库(RDBMS, NoSQL, NewSQL);对 sql 优化有丰富的经验; - -- 工作积极主动、很好的沟通能力、学习能力,适应能力好;能接受全栈任务,具备耐心和细心的品质。 - -- 英语流利为加分项 - -有意请发简历到 fightingcrap@gmail.com - -# 赞赏码 - -熬夜不易,觉得有很大帮助的朋友可以赏杯咖啡(不接受学生赞赏),赏了一定要加我微信跟我说。 -

- -

- - -# 鸣谢列表 - -以下排名不分先后! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -" - - - - - - - - - - - - - - - - - - - - - - - -# 赞助商 -以下排名不分先后! -![](https://tva1.sinaimg.cn/large/007S8ZIlly1ge4xvdlh0wj30zk0d1q6d.jpg) - - - - ![](https://tva1.sinaimg.cn/large/00831rSTly1gck2pplt8ej315u0u0k1b.jpg) \ No newline at end of file diff --git "a/docs/all/Java\345\277\205\344\274\232\345\237\272\347\241\200\344\270\216\346\226\260\347\211\210\346\234\254\347\211\271\346\200\247.md" "b/docs/all/Java\345\277\205\344\274\232\345\237\272\347\241\200\344\270\216\346\226\260\347\211\210\346\234\254\347\211\271\346\200\247.md" new file mode 100644 index 0000000..f228e5d --- /dev/null +++ "b/docs/all/Java\345\277\205\344\274\232\345\237\272\347\241\200\344\270\216\346\226\260\347\211\210\346\234\254\347\211\271\346\200\247.md" @@ -0,0 +1,7 @@ +[枚举](https://mp.weixin.qq.com/s/U5FkL9zyzr0PkAp8MJJ8BQ) + +[从String中移除空白字符的多种方式!?差别竟然这么大!](https://mp.weixin.qq.com/s/Du2huBEkI7IR3noPeK_67g) + +[双亲委派原则](https://mp.weixin.qq.com/s/6nJ-6cDLW6TfysWV5ZB3Iw) + +[Java 16 新特征,真香!](https://mp.weixin.qq.com/s/-NQoKpBTXwGUxd2hUbCU2Q) \ No newline at end of file diff --git "a/docs/all/db/MySQL\345\237\272\347\241\200\347\237\245\350\257\206.md" "b/docs/all/db/MySQL\345\237\272\347\241\200\347\237\245\350\257\206.md" new file mode 100644 index 0000000..95ebf1b --- /dev/null +++ "b/docs/all/db/MySQL\345\237\272\347\241\200\347\237\245\350\257\206.md" @@ -0,0 +1,23 @@ + [国庆肝了8天整整2W字的数据库知识点](https://mp.weixin.qq.com/s/J3kCOJwyv2nzvI0_X0tlnA) + + [MySQL大表怎么DDL变更](https://mp.weixin.qq.com/s/pinOFeF09orQCnIp4L6XyA) + + [MySql主从复制,从原理到实践!](https://mp.weixin.qq.com/s/eEWMSTAUF1H-gFBx26jujw) + + [MySQL查询缓存](https://mp.weixin.qq.com/s/LZBctWNWi3qehb-dgUCmxQ) + + [MySQL 的 InnoDB 存储引擎是怎么设计的?](https://mp.weixin.qq.com/s/wr2gJGQSA8QH_lmPh1XOkw) + + [你怎么连模糊匹配like %%怎么优化都不知道](https://mp.weixin.qq.com/s/ygvuP35B_sJAlBHuuEJhfg) + + [数据库基础知识](https://mp.weixin.qq.com/s/NDL1Q6nqdPq5oMBWSpq4ug) + + [MySQL面试夺命20问](https://mp.weixin.qq.com/s/vwHkXGNCdRdx8k7BeBMy9w) + + [mysql 的一行记录是怎么存储的?](https://mp.weixin.qq.com/s/3d66-yXVZoDFRG1wyRw7kA) + + [MySQL的性能到底有多强?](https://mp.weixin.qq.com/s/Chsfldp_BUNOFFCoCPN-ZQ) + + [MySql 35卷](https://mp.weixin.qq.com/s/MaVYENapeJcLNpYcR7tqBQ) + + [为什么 MySQL 喜欢 B+ 树?](https://mp.weixin.qq.com/s/AoPq8poENF9T4mVS1fDFPw) \ No newline at end of file diff --git "a/docs/all/db/\344\272\213\345\212\241\347\211\271\346\200\247\343\200\201\351\232\224\347\246\273\347\272\247\345\210\253\343\200\201\346\225\260\346\215\256\345\256\211\345\205\250.md" "b/docs/all/db/\344\272\213\345\212\241\347\211\271\346\200\247\343\200\201\351\232\224\347\246\273\347\272\247\345\210\253\343\200\201\346\225\260\346\215\256\345\256\211\345\205\250.md" new file mode 100644 index 0000000..2b7c276 --- /dev/null +++ "b/docs/all/db/\344\272\213\345\212\241\347\211\271\346\200\247\343\200\201\351\232\224\347\246\273\347\272\247\345\210\253\343\200\201\346\225\260\346\215\256\345\256\211\345\205\250.md" @@ -0,0 +1,15 @@ + [MySQL安全方案](https://mp.weixin.qq.com/s/rQDitOOnLpLEoj8M11NHwg) + + [数据库连接池到底应该设多大?这篇文章可能会颠覆你的认知](https://mp.weixin.qq.com/s/dQFSrXEmgBMh1PW835rlwQ) + + [数据库设计](https://mp.weixin.qq.com/s/yo_LJ6IwGnjiBXSA7ZHdOA) + + [漫话:如何给女朋友解释什么是撞库、脱库和洗库?](https://mp.weixin.qq.com/s/L0XUMHInnwN9gSYGH2nzdg) + + [MVCC和事务隔离级别的关系](https://mp.weixin.qq.com/s/0-YEqTMd0OaIhW99WqavgQ) + + [MySQL事务与MVCC如何实现的隔离级别](https://mp.weixin.qq.com/s/CZHuGT4sKs_QHD_bv3BfAQ) + + [数据库事务](https://mp.weixin.qq.com/s/iFmvvt4DJ-_qFeb0XUh6QA) + + [MySQL 默认隔离级别是RR,为什么阿里等大厂会改成RC?](https://mp.weixin.qq.com/s/mIz0T0v68_dvUgCrj-qdug) \ No newline at end of file diff --git "a/docs/all/db/\345\210\206\345\272\223\345\210\206\350\241\250.md" "b/docs/all/db/\345\210\206\345\272\223\345\210\206\350\241\250.md" new file mode 100644 index 0000000..848ed83 --- /dev/null +++ "b/docs/all/db/\345\210\206\345\272\223\345\210\206\350\241\250.md" @@ -0,0 +1,3 @@ +[我们为什么要分库分表?](https://mp.weixin.qq.com/s/-Jipxjwe-jAax4hJSe-9Jg) + +[分库分表方案](https://mp.weixin.qq.com/s/dMqXBW6W8DeqfAPvko3ViQ) \ No newline at end of file diff --git "a/docs/all/db/\346\225\260\346\215\256\345\272\223\346\200\247\350\203\275\350\260\203\344\274\230.md" "b/docs/all/db/\346\225\260\346\215\256\345\272\223\346\200\247\350\203\275\350\260\203\344\274\230.md" new file mode 100644 index 0000000..d6be30f --- /dev/null +++ "b/docs/all/db/\346\225\260\346\215\256\345\272\223\346\200\247\350\203\275\350\260\203\344\274\230.md" @@ -0,0 +1,11 @@ + [为什么MySQL不建议使用delete删除数据?](https://mp.weixin.qq.com/s/7dpNkLaglIyb_9DKdH43eQ) + + [工作以来总结的大厂SQL调优姿势](https://mp.weixin.qq.com/s/nEmN4S9JOTVGj5IHyfNtCw) + + [为啥阿里巴巴不建议MySQL使用Text类型?](https://mp.weixin.qq.com/s/oVjm_iLvbkximBjHv9d8ig) + + [用对了这些场景下的索引,技术总监夸我棒](https://mp.weixin.qq.com/s/-gmAPfiKMNJgHhIZqR2C4A) + + [MySQL索引凭什么让查询效率提高这么多?](https://mp.weixin.qq.com/s/qESZSzHoxUKQRJhb1EQA_Q) + + [MySQL调优](https://mp.weixin.qq.com/s/e0CqJG2-PCDgKLjQfh02tw) \ No newline at end of file diff --git "a/docs/all/db/\346\225\260\346\215\256\345\272\223\351\235\242\350\257\225\351\242\230.md" "b/docs/all/db/\346\225\260\346\215\256\345\272\223\351\235\242\350\257\225\351\242\230.md" new file mode 100644 index 0000000..0751635 --- /dev/null +++ "b/docs/all/db/\346\225\260\346\215\256\345\272\223\351\235\242\350\257\225\351\242\230.md" @@ -0,0 +1,17 @@ + [innodb是如何插入数据的?](https://mp.weixin.qq.com/s/SqSPxSRslkjUcDasBHGRSQ) + + [数据库自增ID用完了会怎么样?](https://mp.weixin.qq.com/s/qEA1pC2pfh3xz9HuM8iIBg) + + [阿里面试:说说一致性读实现原理?](https://mp.weixin.qq.com/s/qHzb6oPrrbAPoIlfLJVNAg) + + [我说 SELECT COUNT(*) 会造成全表扫描,面试官让我回去等通知](https://mp.weixin.qq.com/s/SNRvdmyS57oWS_CyYKVvSA) + + [原来MySQL面试还会问这些(undo log)](https://mp.weixin.qq.com/s/Lx4TNPLQzYaknR7D3gmOmQ) + + [explain](https://mp.weixin.qq.com/s/izOKK9Ft5wLts8hWIo4ODQ) + + [你说说一条更新SQL的执行过程?](https://mp.weixin.qq.com/s/-5N6eg1yMBUvDMbJOXp0eg) + + [一条SQL语句执行得很慢的原因有哪些?](https://mp.weixin.qq.com/s/YKmFEtHcZPBn1S9so0kxYw) + + [数据库的锁,到底锁的是什么?](https://mp.weixin.qq.com/s/mvG0wVr2kpbM8iqfZnimiQ) \ No newline at end of file diff --git "a/docs/all/db/\347\264\242\345\274\225\343\200\201\351\224\201\346\234\272\345\210\266.md" "b/docs/all/db/\347\264\242\345\274\225\343\200\201\351\224\201\346\234\272\345\210\266.md" new file mode 100644 index 0000000..03cce13 --- /dev/null +++ "b/docs/all/db/\347\264\242\345\274\225\343\200\201\351\224\201\346\234\272\345\210\266.md" @@ -0,0 +1,13 @@ + [数据库索引](https://mp.weixin.qq.com/s/_9rDde9wRYoZeh07EASNQQ) + + [一口气搞懂MySQL索引所有知识点](https://mp.weixin.qq.com/s/faOaXRQM8p0kwseSHaMCbg) + + [你都是如何设计索引的?](https://mp.weixin.qq.com/s/fShA7jxjshKyHEHfVDrLVA) + + [MySQL的索引是怎么加速查询的?](https://mp.weixin.qq.com/s/7TPVOT7sloDUKmhldf9uvg) + + [索引下推](https://mp.weixin.qq.com/s/87qsrj-_hG54uxcOlFr35Q) + + [MySQL 的全局锁、表锁和行锁](https://mp.weixin.qq.com/s/1LGJjbx_n_cvZndjM3R8mQ) + + [聊聊索引失效?](https://mp.weixin.qq.com/s/WnO_4SoEL6jugkxPHW4KCg) \ No newline at end of file diff --git "a/docs/all/jvm/\345\236\203\345\234\276\345\233\236\346\224\266\345\231\250\343\200\201\345\236\203\345\234\276\345\233\236\346\224\266\347\256\227\346\263\225.md" "b/docs/all/jvm/\345\236\203\345\234\276\345\233\236\346\224\266\345\231\250\343\200\201\345\236\203\345\234\276\345\233\236\346\224\266\347\256\227\346\263\225.md" new file mode 100644 index 0000000..8357b1c --- /dev/null +++ "b/docs/all/jvm/\345\236\203\345\234\276\345\233\236\346\224\266\345\231\250\343\200\201\345\236\203\345\234\276\345\233\236\346\224\266\347\256\227\346\263\225.md" @@ -0,0 +1 @@ +[垃圾回收底层原理](https://mp.weixin.qq.com/s/nY6vL5MlUXY1lfnIvNHMnw) \ No newline at end of file diff --git "a/docs/all/jvm/\345\236\203\345\234\276\345\233\236\346\224\266\346\234\272\345\210\266.md" "b/docs/all/jvm/\345\236\203\345\234\276\345\233\236\346\224\266\346\234\272\345\210\266.md" new file mode 100644 index 0000000..e30c133 --- /dev/null +++ "b/docs/all/jvm/\345\236\203\345\234\276\345\233\236\346\224\266\346\234\272\345\210\266.md" @@ -0,0 +1 @@ + [看完这篇垃圾回收,和面试官扯皮没问题了](https://mp.weixin.qq.com/s/_AKQs-xXDHlk84HbwKUzOw) \ No newline at end of file diff --git "a/docs/all/jvm/\346\200\247\350\203\275\350\260\203\344\274\230\343\200\201\347\272\277\344\270\212\351\227\256\351\242\230\346\216\222\346\237\245.md" "b/docs/all/jvm/\346\200\247\350\203\275\350\260\203\344\274\230\343\200\201\347\272\277\344\270\212\351\227\256\351\242\230\346\216\222\346\237\245.md" new file mode 100644 index 0000000..b3db0f1 --- /dev/null +++ "b/docs/all/jvm/\346\200\247\350\203\275\350\260\203\344\274\230\343\200\201\347\272\277\344\270\212\351\227\256\351\242\230\346\216\222\346\237\245.md" @@ -0,0 +1,11 @@ + [线上服务的FGC问题排查,看这篇就够了!](https://mp.weixin.qq.com/s/P8s3kuceBNovUP5adXpFCQ) + + [记一次大促期间JVM堆外内存泄漏故障排查记录](https://mp.weixin.qq.com/s/yutHXOi6Xl3-Qn91Pvg9wA) + + [怎么排查堆内存溢出啊?](https://mp.weixin.qq.com/s/7XGD-Z3wrThv5HyoK3B8AQ) + + [CPU100%,排查](https://mp.weixin.qq.com/s/roEMz-5tzBZvGxbjq8NhOQ) + + [排查YGC问题](https://mp.weixin.qq.com/s/LRx9tLtx1tficWPvUWUTuQ) + + [CPU飙高排查](https://mp.weixin.qq.com/s/nWghy4McYx6Ix3QPSLSmkQ) \ No newline at end of file diff --git "a/docs/all/jvm/\346\267\261\345\205\245\346\265\205\345\207\272JVM.md" "b/docs/all/jvm/\346\267\261\345\205\245\346\265\205\345\207\272JVM.md" new file mode 100644 index 0000000..443e9a3 --- /dev/null +++ "b/docs/all/jvm/\346\267\261\345\205\245\346\265\205\345\207\272JVM.md" @@ -0,0 +1,7 @@ +[【JVM故事】了解JVM的结构,好在面试时吹牛](https://mp.weixin.qq.com/s/fit90VdZUa2pG9lbET0i7w) + +[Java堆内存是线程共享的!面试官:你确定吗?](https://mp.weixin.qq.com/s/Wws24Fhg1nH4dHvtcFYi2g) + +[JVM](https://mp.weixin.qq.com/s/0XqhneKz7F5A-PE9CdzyoA) + +[面试系列重启:JVM篇](https://mp.weixin.qq.com/s/FEPtidbx7WKz6LbhoerRcA) \ No newline at end of file diff --git "a/docs/all/jvm/\347\261\273\345\212\240\350\275\275\346\234\272\345\210\266\350\257\246\350\247\243.md" "b/docs/all/jvm/\347\261\273\345\212\240\350\275\275\346\234\272\345\210\266\350\257\246\350\247\243.md" new file mode 100644 index 0000000..2c4b59b --- /dev/null +++ "b/docs/all/jvm/\347\261\273\345\212\240\350\275\275\346\234\272\345\210\266\350\257\246\350\247\243.md" @@ -0,0 +1 @@ + [JVM必问知识点:类加载过程](https://mp.weixin.qq.com/s/eHqFONXXNc-LD4ugaKM6UA) \ No newline at end of file diff --git a/docs/all/line.md b/docs/all/line.md new file mode 100644 index 0000000..f857db5 --- /dev/null +++ b/docs/all/line.md @@ -0,0 +1,2 @@ +![](https://tva1.sinaimg.cn/large/0082zybply1gcb2u3keh9j30p02j4h2r.jpg) +![](https://tva1.sinaimg.cn/large/007S8ZIlgy1gf8flovpg1j30u07l7hdx.jpg) \ No newline at end of file diff --git a/docs/all/mq/RocketMQ.md b/docs/all/mq/RocketMQ.md new file mode 100644 index 0000000..d401c98 --- /dev/null +++ b/docs/all/mq/RocketMQ.md @@ -0,0 +1 @@ + [RocketMQ](https://mp.weixin.qq.com/s/y-4TVwbc7AFGEA7q-_OkYw) \ No newline at end of file diff --git a/docs/all/mq/kafka.md b/docs/all/mq/kafka.md new file mode 100644 index 0000000..2788086 --- /dev/null +++ b/docs/all/mq/kafka.md @@ -0,0 +1,11 @@ +[Kafka架构与原理](https://mp.weixin.qq.com/s/-IPfWPS1WQMEgcIu0Ak2VQ) + +[Kafka 架构设计](https://mp.weixin.qq.com/s/8wfZEsNDpeLr-_uu2CawFw) + +[Kafka性能篇:为何Kafka这么"快"?](https://mp.weixin.qq.com/s/kMIhPW2uLdy-mgS9sF6agw) + +[Kafka 精妙的高性能设计(上篇)](https://mp.weixin.qq.com/s/kImrkVLE4dtpVnb-Yp479Q) + +[Kafka 精妙的高性能设计(下篇)](https://mp.weixin.qq.com/s/YJFltTP4J5si1Z5SbuMUJw) + +[kafka夺命连环11问](https://mp.weixin.qq.com/s/sFUvgaQUXSA8b4hshhbwOQ) \ No newline at end of file diff --git "a/docs/all/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\347\241\200.md" "b/docs/all/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\347\241\200.md" new file mode 100644 index 0000000..f971c07 --- /dev/null +++ "b/docs/all/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\347\241\200.md" @@ -0,0 +1,5 @@ +[消息队列基础知识](https://mp.weixin.qq.com/s/Qhw4oS0OeN1N7uT1z6rbqg) + +[用通俗的语言介绍 RPC 框架的架构原理](https://mp.weixin.qq.com/s/jKr_ZDPww8A9huLAMBPEIQ) + +[消息重复消费、分布式事务、顺序消费](https://mp.weixin.qq.com/s/OKon95MRUqDc9IwtEqPSjQ) \ No newline at end of file diff --git "a/docs/all/mq/\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225\351\242\230.md" "b/docs/all/mq/\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225\351\242\230.md" new file mode 100644 index 0000000..5ed7187 --- /dev/null +++ "b/docs/all/mq/\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225\351\242\230.md" @@ -0,0 +1,7 @@ + [面试题:如何保证消息不丢失?处理重复消息?消息有序性?消息堆积处理?](https://mp.weixin.qq.com/s/1r1x-Irbatvzdc90haaecA) + + [面试官:你对Kafka比较熟? 那说说kafka日志段如何读写的吧?](https://mp.weixin.qq.com/s/68XX9qnEvDTCOw8gYLNBxQ) + + [师兄大厂面试遇到面试官的 Kafka 暴击三连问,快面哭了!](https://mp.weixin.qq.com/s/ejZBAGI7qLE_QYSe-AqipA) + + [消息队列之推还是拉,RocketMQ 和 Kafka是如何做的?](https://mp.weixin.qq.com/s/S_0YCwUtyQqeBml02jPYqg) \ No newline at end of file diff --git "a/docs/mq/\351\207\215\345\244\215\346\266\210\350\264\271\343\200\201\351\241\272\345\272\217\346\266\210\350\264\271\343\200\201\345\210\206\345\270\203\345\274\217\344\272\213\345\212\241.md" "b/docs/all/mq/\351\207\215\345\244\215\346\266\210\350\264\271\343\200\201\351\241\272\345\272\217\346\266\210\350\264\271\343\200\201\345\210\206\345\270\203\345\274\217\344\272\213\345\212\241.md" similarity index 100% rename from "docs/mq/\351\207\215\345\244\215\346\266\210\350\264\271\343\200\201\351\241\272\345\272\217\346\266\210\350\264\271\343\200\201\345\210\206\345\270\203\345\274\217\344\272\213\345\212\241.md" rename to "docs/all/mq/\351\207\215\345\244\215\346\266\210\350\264\271\343\200\201\351\241\272\345\272\217\346\266\210\350\264\271\343\200\201\345\210\206\345\270\203\345\274\217\344\272\213\345\212\241.md" diff --git "a/docs/all/\344\272\272\347\211\251&\346\235\202\350\260\210.md" "b/docs/all/\344\272\272\347\211\251&\346\235\202\350\260\210.md" new file mode 100644 index 0000000..35c89d5 --- /dev/null +++ "b/docs/all/\344\272\272\347\211\251&\346\235\202\350\260\210.md" @@ -0,0 +1,15 @@ +[罗永浩](https://mp.weixin.qq.com/s/FUbxHFAQeUgV59Zhp7Fe0w) + +[俞敏洪](https://mp.weixin.qq.com/s/Udd3B4L-94hH9ggEtOcJAw) + +[远方是门票机酒,前方是山川大海](https://mp.weixin.qq.com/s/RasTw7_XpxZoDP5k2bpz0w) + +[门户前浪退市,从此只做“新浪”](https://mp.weixin.qq.com/s/lt_RxXC_OAl7aezCkmSyyg) + +[“小破站”二次上市 - ( ゜- ゜)つロ 乾杯~](https://mp.weixin.qq.com/s/a4CzPbx5Bim6mFzzqq0vrA) + +[我们在努力成为恒星](https://mp.weixin.qq.com/s/s2xcFud-8IJq7MpgO1QSHA) + +[苏宁张近东:三十年沉沉浮浮,零售史上不为人知的秘密](https://mp.weixin.qq.com/s/bTWTgiQInITy9Dv5BJ-Dgg) + +[陈欧,带货网红鼻祖的起起落落落落落落创业路](https://mp.weixin.qq.com/s/LyWW3tXSNMGY6MNi-HnNOg) \ No newline at end of file diff --git "a/docs/all/\345\220\204\345\234\260\344\272\222\350\201\224\347\275\221\345\205\254\345\217\270\347\233\230\347\202\271.md" "b/docs/all/\345\220\204\345\234\260\344\272\222\350\201\224\347\275\221\345\205\254\345\217\270\347\233\230\347\202\271.md" new file mode 100644 index 0000000..5a37a8e --- /dev/null +++ "b/docs/all/\345\220\204\345\234\260\344\272\222\350\201\224\347\275\221\345\205\254\345\217\270\347\233\230\347\202\271.md" @@ -0,0 +1,9 @@ + [北京有哪些牛逼的互联网公司](https://mp.weixin.qq.com/s/OcVumzBwGjX9GIkS-lGMoA) + + [武汉有哪些不错的互联网公司?](https://mp.weixin.qq.com/s/fhMkMMqTrAe-8Af6Jk4XAg) + + [杭州有哪些牛批的互联网公司](https://mp.weixin.qq.com/s/35YoYTQkehqSi_tOj1XZAg) + + [上海有哪些不错的互联网公司?](https://mp.weixin.qq.com/s/oBUoRuMvbhQJI5n2keIa1Q) + + [成都有哪些牛批的互联网公司](https://mp.weixin.qq.com/s/POFAsVr5bNz6zu-IVYVA8g) \ No newline at end of file diff --git "a/docs/all/\345\237\272\347\241\200\346\240\270\345\277\203/io.md" "b/docs/all/\345\237\272\347\241\200\346\240\270\345\277\203/io.md" new file mode 100644 index 0000000..d185a7e --- /dev/null +++ "b/docs/all/\345\237\272\347\241\200\346\240\270\345\277\203/io.md" @@ -0,0 +1,15 @@ +[迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)](https://mp.weixin.qq.com/s/EVequWGVMWV5Ki2llFzdHg) + +[原来 8 张图,就能学废 Reactor 和 Proactor](https://mp.weixin.qq.com/s/px6-YnPEUCEqYIp_YHhDzg) + +[敖丙说了这么多次 I/O,可你知道其中的原理么?](https://mp.weixin.qq.com/s/TJghsMRqkzBIsoHjGiEwFw) + +[「网络IO套路」当时就靠它追到女友](https://mp.weixin.qq.com/s/x-AZQO5uiuu5svIvScotzA) + +[IO 多路复用](https://mp.weixin.qq.com/s/CMWlDywI1zbgJSoeGTBmuw) + +[一次相亲经历,我彻底搞懂了什么叫阻塞非阻塞,同步异步](https://mp.weixin.qq.com/s/DEd0VY3dhR6B0hjQSEtB7Q) + +[让我们,从头到尾,通透I/O模型](https://mp.weixin.qq.com/s/Gb6tZl_7B3IwLYdR6Au6-w) + +[为什么网络 I/O 会被阻塞?](https://mp.weixin.qq.com/s/RTJRzM1R7t344w5whESYmg) \ No newline at end of file diff --git "a/docs/all/\345\237\272\347\241\200\346\240\270\345\277\203/java\345\237\272\347\241\200\347\237\245\350\257\206.md" "b/docs/all/\345\237\272\347\241\200\346\240\270\345\277\203/java\345\237\272\347\241\200\347\237\245\350\257\206.md" new file mode 100644 index 0000000..177445f --- /dev/null +++ "b/docs/all/\345\237\272\347\241\200\346\240\270\345\277\203/java\345\237\272\347\241\200\347\237\245\350\257\206.md" @@ -0,0 +1,10 @@ + +[Java基础面试16问](https://mp.weixin.qq.com/s/-xFSHf7Gz3FUcafTJUIGWQ) + +[零拷贝](https://mp.weixin.qq.com/s/FgBCop2zFfcX5ZszE0NoCQ) + +[面试官:详细说说你对序列化的理解](https://mp.weixin.qq.com/s/nzFBPuUGSSIGZaBbE-FkTg) + +[同事:你能跟我聊聊class文件么?](https://mp.weixin.qq.com/s/QgC65Ld5UCXo11xXgQ_6UA) + +[JAVA代码编译流程是怎样的?](https://mp.weixin.qq.com/s/q4q-jr-6NDXxkXuC2ZegJQ) \ No newline at end of file diff --git "a/docs/all/\345\237\272\347\241\200\346\240\270\345\277\203/linux.md" "b/docs/all/\345\237\272\347\241\200\346\240\270\345\277\203/linux.md" new file mode 100644 index 0000000..b641474 --- /dev/null +++ "b/docs/all/\345\237\272\347\241\200\346\240\270\345\277\203/linux.md" @@ -0,0 +1,13 @@ +[52图初探Linux通用知识](https://mp.weixin.qq.com/s/dP8AJbvGgvYIXDy3zeXCRg) + +[大厂面试Linux就这5个问题](https://mp.weixin.qq.com/s/24vBHgtw5efC9V9yYqknNg) + +[Linux 内核 vs Windows 内核](https://mp.weixin.qq.com/s/7iQ5jO_qfYbwKdM21qywYg) + +[学习linux命令,看这篇2w多字的命令详解就够了](https://mp.weixin.qq.com/s/7bSwKiPmtJbs7FtRWZZqpA) + +[Linux IO 模型](https://mp.weixin.qq.com/s/TbIPlBtkK_zCyt54cCX8dw) + +[Linux命令](https://mp.weixin.qq.com/s/T6try9YIKh8gTLG2lyKKOQ) + +[3万字Linux总结](https://mp.weixin.qq.com/s/kG1g7ghTkOMzyEoZ6tQMHQ) \ No newline at end of file diff --git "a/docs/all/\345\237\272\347\241\200\346\240\270\345\277\203/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237.md" "b/docs/all/\345\237\272\347\241\200\346\240\270\345\277\203/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237.md" new file mode 100644 index 0000000..42209f8 --- /dev/null +++ "b/docs/all/\345\237\272\347\241\200\346\240\270\345\277\203/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237.md" @@ -0,0 +1,30 @@ + +[图解 | 计算机文件系统](https://mp.weixin.qq.com/s/j2msue1Hjcwd9z1U2p0TDQ) + +[浏览器的秘密藏在这31张图里](https://mp.weixin.qq.com/s/11MRrxmiyZybTUbjRDRubQ) + +[带宽、延时、吞吐率、PPS 这些都是啥?](https://mp.weixin.qq.com/s/eWHQ8co0jF_a26Xz8ZQLjg) + +[进程和线程基础知识全家桶,30 张图一套带走](https://mp.weixin.qq.com/s/FaHKGRI69TqDj0AJtNiVoA) + +[20 张图揭开内存管理的迷雾](https://mp.weixin.qq.com/s/oexktPKDULqcZQeplrFunQ) + +[看完这篇操作系统,和面试官扯皮就没问题了。](https://mp.weixin.qq.com/s/59xyIj1nIFp2TtkKFYnR-g) + +[计算机内存管理基础知识](https://mp.weixin.qq.com/s/OGRMAJeDw8wuO7UW5PjoVQ) + +[用动图的方式,理解 CPU 缓存一致性协议!](https://mp.weixin.qq.com/s/cyI2VAP4dqkStbsNMDWhDQ) + +[进程间通信](https://mp.weixin.qq.com/s/mblyh6XrLj1bCwL0Evs-Vg) + +[进程之间究竟有哪些通信方式?](https://mp.weixin.qq.com/s/CGqy0j5WvarN6mTmYB8vSA) + +[键盘敲入 A 字母时,操作系统期间发生了什么...](https://mp.weixin.qq.com/s/fKHOf_CzG8HYXHlg54V_rg) + +[一口气搞懂「文件系统」,就靠这 25 张图了](https://mp.weixin.qq.com/s/UT2JrfpkA5OUC9fJJ_MirQ) + +[10 张图打开 CPU 缓存一致性的大门](https://mp.weixin.qq.com/s/hjywA21UrvZSzdgvAr6fQA) + +[2.5w字 + 36 张图+一周时间:爆肝操作系统面试题](https://mp.weixin.qq.com/s/ws6bgcv6dKIIJDwYYliMAg) + +[计算机时间到底是怎么来的?](https://mp.weixin.qq.com/s/uM1ZNT8UwfvhqoscK8FJiQ) \ No newline at end of file diff --git "a/docs/all/\345\244\247\346\225\260\346\215\256/Flink.md" "b/docs/all/\345\244\247\346\225\260\346\215\256/Flink.md" new file mode 100644 index 0000000..4134421 --- /dev/null +++ "b/docs/all/\345\244\247\346\225\260\346\215\256/Flink.md" @@ -0,0 +1,9 @@ + + + [Flink入门教程](https://mp.weixin.qq.com/s/xa2iGrmyoXq3FtZeU9GU-w) + + [Flink的CheckPoint机制](https://mp.weixin.qq.com/s/-OY0VGDWUoOMgKg-xKjZRQ) + + [Flink背压](https://mp.weixin.qq.com/s/Ttm9lCYxu7Wx0oE-LsjRlw) + + [Flink入门](https://mp.weixin.qq.com/s/Ey-oWpGO_QDo4DixiccVGg) \ No newline at end of file diff --git "a/docs/all/\345\255\246\344\271\240\350\267\257\347\272\277.md" "b/docs/all/\345\255\246\344\271\240\350\267\257\347\272\277.md" new file mode 100644 index 0000000..e0d17e9 --- /dev/null +++ "b/docs/all/\345\255\246\344\271\240\350\267\257\347\272\277.md" @@ -0,0 +1,11 @@ + +[后端技术学些啥](https://mp.weixin.qq.com/s/co6ZiALBCUHxc-8SpcKxPw) + + [从毕业到技术专家我做了啥](https://mp.weixin.qq.com/s/mYfVAo8-jkPFwhbqDZyQzw) + +[秒杀系统设计](https://mp.weixin.qq.com/s/z2S1EjWQDwKm5Ud36IenNw) + +[全栈秒杀系统设计](https://mp.weixin.qq.com/s/RRHN8t017ofOvb4nvlCStg) + + [秒杀系统2.0](https://mp.weixin.qq.com/s/KWb3POodisbOEsQVblsoGw) + \ No newline at end of file diff --git "a/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\347\237\245\350\257\206.md" "b/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\347\237\245\350\257\206.md" new file mode 100644 index 0000000..9242adc --- /dev/null +++ "b/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\347\237\245\350\257\206.md" @@ -0,0 +1,9 @@ +[可重入锁](https://mp.weixin.qq.com/s/GDno-X1N8zc98h9MZ8_KoA) + +[(并发问题的根源到底是什么?)](https://mp.weixin.qq.com/s/TsENp5ygFdE0_REgz5Y3Ew) + +[敖丙稳住了多线程翻车的现场](https://mp.weixin.qq.com/s/g_eWT05_38AURchMIvNSnA) + +[2w字 + 40张图带你参透并发编程!](https://mp.weixin.qq.com/s/NZAJWBiFvGzCZXjr0KC9Dw) + +[图解Java中那18 把锁](https://mp.weixin.qq.com/s/XCR93HSm_E0c3KDcmZk3cA) \ No newline at end of file diff --git "a/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\345\244\232\347\272\277\347\250\213\347\273\217\345\205\270\351\235\242\350\257\225\351\242\230.md" "b/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\345\244\232\347\272\277\347\250\213\347\273\217\345\205\270\351\235\242\350\257\225\351\242\230.md" new file mode 100644 index 0000000..7cc59f9 --- /dev/null +++ "b/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\345\244\232\347\272\277\347\250\213\347\273\217\345\205\270\351\235\242\350\257\225\351\242\230.md" @@ -0,0 +1,5 @@ + [【面试】如果把线程当作一个人来对待,所有问题都瞬间明白了](https://mp.weixin.qq.com/s/PrUa0tFyu3UZllP2FRDyVA) + + [Java 并发进阶常见面试题总结](https://mp.weixin.qq.com/s/cdHfTTvMpH60SwG2bjTMBw) + + [如果你这样回答“什么是线程安全”,面试官都会对你刮目相看(建议珍藏)](https://mp.weixin.qq.com/s/WDeewsvWUEBIuabvVVhweA) \ No newline at end of file diff --git "a/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\345\244\232\347\272\277\347\250\213\351\224\201\346\234\272\345\210\266.md" "b/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\345\244\232\347\272\277\347\250\213\351\224\201\346\234\272\345\210\266.md" new file mode 100644 index 0000000..26607b8 --- /dev/null +++ "b/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\345\244\232\347\272\277\347\250\213\351\224\201\346\234\272\345\210\266.md" @@ -0,0 +1,3 @@ + [乐观锁、悲观锁](https://mp.weixin.qq.com/s/WtAdXvaRuBZ-SXayIKu1mA) + + [互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景](https://mp.weixin.qq.com/s/6QrQ0TZVqSQq26Rms0_mvA) \ No newline at end of file diff --git "a/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\345\270\270\350\247\201\345\205\263\351\224\256\345\255\227.md" "b/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\345\270\270\350\247\201\345\205\263\351\224\256\345\255\227.md" new file mode 100644 index 0000000..4681c38 --- /dev/null +++ "b/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\345\270\270\350\247\201\345\205\263\351\224\256\345\255\227.md" @@ -0,0 +1,5 @@ + [死磕Synchronized源码](https://mp.weixin.qq.com/s/2ka1cDTRyjsAGk_-ii4ngw) + + [当Synchronized遇到这玩意儿,有个大坑,要注意!](https://mp.weixin.qq.com/s/0oUXYFxpsi6Q9MfR5NKtLQ) + + [面试官想到,一个Volatile,敖丙都能吹半小时](https://mp.weixin.qq.com/s/Oa3tcfAFO9IgsbE22C5TEg) \ No newline at end of file diff --git "a/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\345\270\270\350\247\201\347\232\204JUC\345\267\245\345\205\267\347\261\273.md" "b/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\345\270\270\350\247\201\347\232\204JUC\345\267\245\345\205\267\347\261\273.md" new file mode 100644 index 0000000..8516d06 --- /dev/null +++ "b/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\345\270\270\350\247\201\347\232\204JUC\345\267\245\345\205\267\347\261\273.md" @@ -0,0 +1,13 @@ +[AQS](https://mp.weixin.qq.com/s/hB5ncpe7_tVovQj1sNlDRA) + +[我画了35张图就是为了让你深入 AQS](https://mp.weixin.qq.com/s/trsjgUFRrz40Simq2VKxTA) + +[1.5w字,30图带你彻底掌握 AQS!](https://mp.weixin.qq.com/s/iNz6sTen2CSOdLE0j7qu9A) + +[TheadLocal 引起的内存泄露故障分析](https://mp.weixin.qq.com/s/Gf4MiHPz8DynY80UmwH04Q) + +[终于有人把 CountDownLatch,CyclicBarrier,Semaphore 说明白了!](https://mp.weixin.qq.com/s/TDw7GnzDw5FK3RWwkIzzZA) + +[Java面试必问:ThreadLocal](https://mp.weixin.qq.com/s/LzkZXPtLW2dqPoz3kh3pBQ) + +[StampedLock](https://mp.weixin.qq.com/s/gjfeayR36vDAr3FAVd4w4g) \ No newline at end of file diff --git "a/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\347\272\277\347\250\213\346\261\240\347\237\245\350\257\206\347\202\271.md" "b/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\347\272\277\347\250\213\346\261\240\347\237\245\350\257\206\347\202\271.md" new file mode 100644 index 0000000..9385e08 --- /dev/null +++ "b/docs/all/\345\271\266\345\217\221\344\270\216\345\244\232\347\272\277\347\250\213/\347\272\277\347\250\213\346\261\240\347\237\245\350\257\206\347\202\271.md" @@ -0,0 +1,3 @@ +[记一次线程池引发的故障 排查下来是三歪的锅](https://mp.weixin.qq.com/s/TQGtNpPiTypeKd5kUnfxEw) + +[深入线程池,连环17问](https://mp.weixin.qq.com/s/NDOx94yY06OnHjrYq2lVYw) \ No newline at end of file diff --git "a/docs/all/\345\274\200\346\272\220/\345\274\200\346\272\220\346\241\206\346\236\266.md" "b/docs/all/\345\274\200\346\272\220/\345\274\200\346\272\220\346\241\206\346\236\266.md" new file mode 100644 index 0000000..b379d34 --- /dev/null +++ "b/docs/all/\345\274\200\346\272\220/\345\274\200\346\272\220\346\241\206\346\236\266.md" @@ -0,0 +1,3 @@ +[阿里巴巴开源限流系统 Sentinel 全解析](https://mp.weixin.qq.com/s/NgS9tL4IVwGZrssz7fURpA) + +[支付宝的架构到底有多牛逼?还没看完我就跪了!](https://mp.weixin.qq.com/s/d4K9hJHzZ5IAd2aarsdQrw) \ No newline at end of file diff --git "a/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/RPC/Dubbo.md" "b/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/RPC/Dubbo.md" new file mode 100644 index 0000000..2fb599b --- /dev/null +++ "b/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/RPC/Dubbo.md" @@ -0,0 +1,15 @@ +[Dubbo基础](https://mp.weixin.qq.com/s/FPbu8rFOHyTGROIV8XJeTA) + +[Dubbo的服务暴露过程](https://mp.weixin.qq.com/s/ISiN06QynyE2pPtX3cGQ9w) + +[Dubbo的服务引用过程](https://mp.weixin.qq.com/s/9oDy1OPcfDaEhKD4eNUdOA) + +[Dubbo服务调用过程](https://mp.weixin.qq.com/s/oNR9v_ID2oAlEvDI93hRcw) + +[Dubbo的SPI机制是啥?](https://mp.weixin.qq.com/s/gwWOsdQGEN0t2GJVMQQexw) + +[Dubbo集群容错负载均衡](https://mp.weixin.qq.com/s/-IkHNAM4B0R_j50LkQunig) + +[Dubbo面试题](https://mp.weixin.qq.com/s/FwL6qArqYc2ENymXk1eZFQ) + +[1w+字的 Dubbo 面试题/知识点总结!(2021 最新版)](https://mp.weixin.qq.com/s/2qSA6aJn6KRXrATVE44k0w) \ No newline at end of file diff --git "a/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/RPC/Netty.md" "b/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/RPC/Netty.md" new file mode 100644 index 0000000..54e4974 --- /dev/null +++ "b/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/RPC/Netty.md" @@ -0,0 +1,3 @@ + [高性能NIO框架-Netty](https://mp.weixin.qq.com/s/I9PGsWo7-ykGf2diKklGtA) + + [Netty常见面试题总结](https://mp.weixin.qq.com/s/eJ-dAtOYsxylGL7pBv7VVA) \ No newline at end of file diff --git "a/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/RPC/RPC\345\256\236\350\267\265.md" "b/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/RPC/RPC\345\256\236\350\267\265.md" new file mode 100644 index 0000000..3a5f107 --- /dev/null +++ "b/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/RPC/RPC\345\256\236\350\267\265.md" @@ -0,0 +1,3 @@ +[敖丙RPC的超时设置,一不小心搞了线上事故](https://mp.weixin.qq.com/s/pkWkD1VhMxhZPRrybLcQjA) + + [敖丙找出Dubbo源码BUG,三歪夸了我一天](https://mp.weixin.qq.com/s/_5YMfQK1tmYbmRMldBPlaQ) \ No newline at end of file diff --git "a/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/SpringCloud.md" "b/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/SpringCloud.md" new file mode 100644 index 0000000..3a0ab76 --- /dev/null +++ "b/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/SpringCloud.md" @@ -0,0 +1,3 @@ + [外行人都能看懂的SpringCloud,错过了血亏!](https://mp.weixin.qq.com/s/MJrahcDXwxgDr5zBdO3XWw) + +[20000 字的 Spring Cloud 总结](https://mp.weixin.qq.com/s/pGSx8eKFH3YnUos3SM2ITw) \ No newline at end of file diff --git "a/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/Zookeeper.md" "b/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/Zookeeper.md" new file mode 100644 index 0000000..8e45aea --- /dev/null +++ "b/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/Zookeeper.md" @@ -0,0 +1,5 @@ + [什么是Zookeeper](https://mp.weixin.qq.com/s/gphDLJMO3QcRoN3zkco4EA) + + [分布式锁之Zookeeper](https://mp.weixin.qq.com/s/ZqQHWLfVD1Rz1agmH3LWrg) + [Zookeeper之ZAB协议](https://mp.weixin.qq.com/s/k0zAExTvMsrugCaNJxs7hQ) + [Zookeeper夺命连环9问](https://mp.weixin.qq.com/s/YawG0GqznDHaiHXZuTsCjA) \ No newline at end of file diff --git "a/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/spring.md" "b/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/spring.md" new file mode 100644 index 0000000..928ac14 --- /dev/null +++ "b/docs/all/\345\277\205\344\274\232\346\241\206\346\236\266/spring.md" @@ -0,0 +1,31 @@ +[一分钟带你玩转 Spring IoC](https://mp.weixin.qq.com/s/WpRSitDqtgOuU9GnI1-HDw) + +[AOP 面试造火箭事件始末](https://mp.weixin.qq.com/s/NXZp8a3n-ssnC6Y1Hy9lzw) + +[SpringAOP面试题](https://mp.weixin.qq.com/s/qlAvW10TRNVak1oJyHO39Q) + +[Spring事务传播行为](https://mp.weixin.qq.com/s/IglQITCkmx7Lpz60QOW7HA) + +[什么是 Spring 循环依赖?](https://mp.weixin.qq.com/s/5mwkgJB7GyLdKDgzijyvXw) + +[Spring常见问题总结(补充版)](https://mp.weixin.qq.com/s/wcK2qsZxKDJTLIGqEIyaNg) + +[15个经典的Spring面试常见问题](https://mp.weixin.qq.com/s/OMlwHHnGcN7iZ8lerUvW7w) + +[敖丙说精通字符串,面试官竟然问Java中的String有没有长度限制!](https://mp.weixin.qq.com/s/6YhpbuhdTX9BM_OimoW8MA) + +[Spring中的循环依赖](https://mp.weixin.qq.com/s/kS0K5P4FdF3v-fiIjGIvvQ) + +[Spring容器启动流程](https://mp.weixin.qq.com/s/ut3mRwhfqXNjrBtTmI0oWg) + +[Spring循环依赖](https://mp.weixin.qq.com/s/u29hMRkfTj_1RHNSukDtEw) + +[我是如何在面试别人Spring事务时“套路”对方的](https://mp.weixin.qq.com/s/JcHt99SAbNIlY063rmylpA) + +[SpringIOC 面试题(下)](https://mp.weixin.qq.com/s/4z9V4-k2Whqiz69gXy5iMQ) + +[SpringIOC 面试题(上)](https://mp.weixin.qq.com/s/SH4laewpIsio66MUJFLTyg) + +[深入浅出Spring架构设计](https://mp.weixin.qq.com/s/wXkgudY0ThIRLFxUmohJog) + +[Spring](https://mp.weixin.qq.com/s/liWn2Dn91cmuiqHSxVO_fA) \ No newline at end of file diff --git "a/docs/all/\346\220\234\347\264\242\345\274\225\346\223\216/es.md" "b/docs/all/\346\220\234\347\264\242\345\274\225\346\223\216/es.md" new file mode 100644 index 0000000..6d6967e --- /dev/null +++ "b/docs/all/\346\220\234\347\264\242\345\274\225\346\223\216/es.md" @@ -0,0 +1,3 @@ +[Elasticsearch入门](https://mp.weixin.qq.com/s/AjGiMikSVgCk6INyf-m8hA) + +[记一次害敖丙差点丢工作的线上P0事故](https://mp.weixin.qq.com/s/F8BsSg6R9LHxKt-gbH_JKQ) \ No newline at end of file diff --git "a/docs/all/\346\236\266\346\236\204\346\274\224\350\277\233\344\271\213\350\267\257/\344\272\222\350\201\224\347\275\221\346\236\266\346\236\204\344\271\213\350\267\257.md" "b/docs/all/\346\236\266\346\236\204\346\274\224\350\277\233\344\271\213\350\267\257/\344\272\222\350\201\224\347\275\221\346\236\266\346\236\204\344\271\213\350\267\257.md" new file mode 100644 index 0000000..276f235 --- /dev/null +++ "b/docs/all/\346\236\266\346\236\204\346\274\224\350\277\233\344\271\213\350\267\257/\344\272\222\350\201\224\347\275\221\346\236\266\346\236\204\344\271\213\350\267\257.md" @@ -0,0 +1 @@ +[我难道天生就是个架构师?这可是100k并发啊](https://mp.weixin.qq.com/s/Pi_fHXhSf17l8q5CZ_U5UA) \ No newline at end of file diff --git "a/docs/all/\346\236\266\346\236\204\346\274\224\350\277\233\344\271\213\350\267\257/\345\210\206\345\270\203\345\274\217&\345\210\206\345\270\203\345\274\217\344\272\213\345\212\241.md" "b/docs/all/\346\236\266\346\236\204\346\274\224\350\277\233\344\271\213\350\267\257/\345\210\206\345\270\203\345\274\217&\345\210\206\345\270\203\345\274\217\344\272\213\345\212\241.md" new file mode 100644 index 0000000..66f76e3 --- /dev/null +++ "b/docs/all/\346\236\266\346\236\204\346\274\224\350\277\233\344\271\213\350\267\257/\345\210\206\345\270\203\345\274\217&\345\210\206\345\270\203\345\274\217\344\272\213\345\212\241.md" @@ -0,0 +1,9 @@ + [分布式架构由来](https://mp.weixin.qq.com/s/uv9xYgYrHWqM5acXQYFegA) + + [分布式事务](https://mp.weixin.qq.com/s/XknegP66mnYboiBx556Kzw) + + [1.4 w字,25 张图让你彻底掌握分布式事务原理](https://mp.weixin.qq.com/s/ujRRtdLOeKEHsHrtDRNXGA) + + [什么是分布式配置中心?](https://mp.weixin.qq.com/s/NY7_z7SpiHy7IMJglPUoMw) + + [几种大厂分布式ID设计方案](https://mp.weixin.qq.com/s/pT2m_xqzcJkpV3Ql0o6dMw) \ No newline at end of file diff --git "a/docs/all/\346\236\266\346\236\204\346\274\224\350\277\233\344\271\213\350\267\257/\346\200\216\344\271\210\350\256\276\350\256\241\344\270\200\344\270\252\350\203\275\351\241\266\344\275\217\345\217\214\345\215\201\344\270\200\347\232\204\347\263\273\347\273\237.md" "b/docs/all/\346\236\266\346\236\204\346\274\224\350\277\233\344\271\213\350\267\257/\346\200\216\344\271\210\350\256\276\350\256\241\344\270\200\344\270\252\350\203\275\351\241\266\344\275\217\345\217\214\345\215\201\344\270\200\347\232\204\347\263\273\347\273\237.md" new file mode 100644 index 0000000..ffdad0a --- /dev/null +++ "b/docs/all/\346\236\266\346\236\204\346\274\224\350\277\233\344\271\213\350\267\257/\346\200\216\344\271\210\350\256\276\350\256\241\344\270\200\344\270\252\350\203\275\351\241\266\344\275\217\345\217\214\345\215\201\344\270\200\347\232\204\347\263\273\347\273\237.md" @@ -0,0 +1,3 @@ +[压测都做些什么?](https://mp.weixin.qq.com/s/RzJkQuMAszkC8jw8hF-k1w) + +[千万级、亿级流量怎么处理?](https://mp.weixin.qq.com/s/CxqnaB9cUemvCcWkw2nUcw) \ No newline at end of file diff --git "a/docs/all/\347\240\224\345\217\221\350\247\204\350\214\203/\345\244\247\345\216\202\346\212\200\346\234\257\347\240\224\345\217\221\350\247\204\350\214\203.md" "b/docs/all/\347\240\224\345\217\221\350\247\204\350\214\203/\345\244\247\345\216\202\346\212\200\346\234\257\347\240\224\345\217\221\350\247\204\350\214\203.md" new file mode 100644 index 0000000..8053e83 --- /dev/null +++ "b/docs/all/\347\240\224\345\217\221\350\247\204\350\214\203/\345\244\247\345\216\202\346\212\200\346\234\257\347\240\224\345\217\221\350\247\204\350\214\203.md" @@ -0,0 +1,5 @@ + [大厂是如何设计接口的?](https://mp.weixin.qq.com/s/ROMzeipOwWZWNrVGdVwisg) + + [不要再在对外接口中使用枚举类型了!](https://mp.weixin.qq.com/s/ynYi_dMlP2Y9GnQXzQxa3Q) + + [谁在用isXxx形式定义布尔类型年后不用来了](https://mp.weixin.qq.com/s/bhCMqJnms3Q84kVvh_cd4g) \ No newline at end of file diff --git "a/docs/all/\347\240\224\345\217\221\350\247\204\350\214\203/\345\274\200\346\272\220\346\274\217\346\264\236.md" "b/docs/all/\347\240\224\345\217\221\350\247\204\350\214\203/\345\274\200\346\272\220\346\274\217\346\264\236.md" new file mode 100644 index 0000000..0f0437c --- /dev/null +++ "b/docs/all/\347\240\224\345\217\221\350\247\204\350\214\203/\345\274\200\346\272\220\346\274\217\346\264\236.md" @@ -0,0 +1 @@ +[fastjson到底做错了什么?为什么会被频繁爆出漏洞?](https://mp.weixin.qq.com/s/iV9DbX3LhbBkNiaKLL7PxA) \ No newline at end of file diff --git "a/docs/all/\347\240\224\345\217\221\350\247\204\350\214\203/\351\230\277\351\207\214\345\267\264\345\267\264\346\212\200\346\234\257\350\247\204\350\214\203.md" "b/docs/all/\347\240\224\345\217\221\350\247\204\350\214\203/\351\230\277\351\207\214\345\267\264\345\267\264\346\212\200\346\234\257\350\247\204\350\214\203.md" new file mode 100644 index 0000000..68a2ab8 --- /dev/null +++ "b/docs/all/\347\240\224\345\217\221\350\247\204\350\214\203/\351\230\277\351\207\214\345\267\264\345\267\264\346\212\200\346\234\257\350\247\204\350\214\203.md" @@ -0,0 +1,11 @@ + [为什么阿里巴巴禁止使用Apache Beanutils进行属性的copy?](https://mp.weixin.qq.com/s/3XX-Lu1KrKEc3IfB9Iqz5A) + + [为什么阿里巴巴禁止开发人员使用isSuccess作为变量名?](https://mp.weixin.qq.com/s/xvTCaBXkRc7e6dGCUJxRPQ) + + [为什么阿里巴巴要求谨慎使用ArrayList中的subList方法](https://mp.weixin.qq.com/s/9y89Hy-YnpPjXpcmXpy_GQ) + + [为什么阿里巴巴不建议在for循环中使用"+"进行字符串拼接](https://mp.weixin.qq.com/s/fLUf8V0Qahe8piNrRp1UVQ) + + [为什么阿里巴巴禁止使用BigDecimal的equals方法做等值比较?](https://mp.weixin.qq.com/s/JduY7OAeywOlVLbLiX3Xnw) + + [为什么阿里巴巴强制要求使用包装类型定义属性?](https://mp.weixin.qq.com/s/O_jCxZWtTTkFZ9FlaZgOCg) \ No newline at end of file diff --git "a/docs/all/\347\247\221\346\231\256.md" "b/docs/all/\347\247\221\346\231\256.md" new file mode 100644 index 0000000..83c9bf2 --- /dev/null +++ "b/docs/all/\347\247\221\346\231\256.md" @@ -0,0 +1,5 @@ + [你知道程序是怎么处理时区问题的么?](https://mp.weixin.qq.com/s/WszidUcoV_cYeDf26EkAcA) + + [聊一聊理财](https://mp.weixin.qq.com/s/BMttkFZsKu0qmxSz-MqAlw) + + [Swagger 官方 Starter 配上这个增强方案是真的香!](https://mp.weixin.qq.com/s/13ls90r8hWbzW4J1kuVzrQ) \ No newline at end of file diff --git "a/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\346\210\220\351\225\277\347\273\217\345\216\206.md" "b/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\346\210\220\351\225\277\347\273\217\345\216\206.md" new file mode 100644 index 0000000..7588a43 --- /dev/null +++ "b/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\346\210\220\351\225\277\347\273\217\345\216\206.md" @@ -0,0 +1,19 @@ + [嗯,读书就是我们唯一的出路](https://mp.weixin.qq.com/s/IM6ksfs4bWnOljB0EbsyxQ) + + [大学个人经历 | 如诗的青春](https://mp.weixin.qq.com/s/FJC2uEg9o56dqCPijgizFA) + + [人生如水,由溪入海](https://mp.weixin.qq.com/s/417im7XPERSMzGiHnNaiEQ) + + [2019年个人经历](https://mp.weixin.qq.com/s/66ZDj60KPEfohHg0g8Cggw) + + [昂,我24岁了](https://mp.weixin.qq.com/s/_HCBjYI9bcNy-zBHu58l7g) + + [24岁我全款买了人生的第一辆车](https://mp.weixin.qq.com/s/aK6ASJO6G1q4mY3TUShCqQ) + + [2020个人经历](https://mp.weixin.qq.com/s/H88XxwF3GCwc_cL4rGKu8g) + + [我的青春结束了](https://mp.weixin.qq.com/s/matyTWXuZ_qs9hGfAl9_NQ) + + [鲜衣怒马少年时,一日看尽长安花](https://mp.weixin.qq.com/s/oY3CxB2Dk82mBs4W77Zrcw) + + [敖丙离职了](https://mp.weixin.qq.com/s/WPY13Px6OeGssBkZVOL7Aw) \ No newline at end of file diff --git "a/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\347\224\237\346\264\273\350\266\243\344\272\213.md" "b/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\347\224\237\346\264\273\350\266\243\344\272\213.md" new file mode 100644 index 0000000..ad6e4dc --- /dev/null +++ "b/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\347\224\237\346\264\273\350\266\243\344\272\213.md" @@ -0,0 +1,17 @@ + [敖丙的第一次相亲,还没开始,就已经结束了。](https://mp.weixin.qq.com/s/mLLbpnI1pVnlUzL7H3EuNQ) + + [我第一次相亲就被大三岁的姐姐看上](https://mp.weixin.qq.com/s/bM7xtVDwAA82d42UrhEx2g) + + [敖丙参加了一场温州游资的婚礼](https://mp.weixin.qq.com/s/sM3hJe5z3_pCH-8GWs0iOA) + + [敖丙枯燥无味的假期,一直在吃狗粮](https://mp.weixin.qq.com/s/1jQnRCXdrUQzZInQmzABvA) + + [请照顾好自己,周末病魔差点一套带走我。](https://mp.weixin.qq.com/s/5C4UjGtHoZVu8uI4yP5wRg) + + [曾经我们并肩作战,敬未来一杯,敬资本一杯](https://mp.weixin.qq.com/s/s9HPYYi9VfYMt7UGCTqWVw) + + [敖丙我写了一个新手都写不出的低级bug,被骂惨了。](https://mp.weixin.qq.com/s/yB9s771gDz6oMKZsUnJuyg) + + [程序员删库跑路,判刑十个月](https://mp.weixin.qq.com/s/xmhMU17fSCd9aYBkozNVUg) + + [我是没想到老家的出租车师傅连我都敢宰,我给他上了一课](https://mp.weixin.qq.com/s/Djlxil-pt6Kn5SDqt1A_5A) \ No newline at end of file diff --git "a/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\350\201\214\345\234\272\347\273\217\345\216\206.md" "b/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\350\201\214\345\234\272\347\273\217\345\216\206.md" new file mode 100644 index 0000000..51e04f4 --- /dev/null +++ "b/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\350\201\214\345\234\272\347\273\217\345\216\206.md" @@ -0,0 +1,21 @@ + [蘑菇街裁员说明 海阔凭鱼跃,天高任鸟飞](https://mp.weixin.qq.com/s/JB6CT4SfOg8e9lhkiWwZNg) + + [入职一周年,我眼中的蘑菇街](https://mp.weixin.qq.com/s/LjFfDwT62usphaock5pU8Q) + + [在美女如云的蘑菇街工作是怎样的体验?](https://mp.weixin.qq.com/s/_zK6ovSynkcmZ-iwzFHHMA) + + [【互联网寒冬】经历裁员,拿20W被迫去大厂](https://mp.weixin.qq.com/s/0WurpFJlZQtjjdleGPK0Cw) + + [再见了,蘑菇街最帅的男人](https://mp.weixin.qq.com/s/dzxUtvI1m9uO1OpkkcDq0g) + + [敖丙用20行代码拿了比赛冠军](https://mp.weixin.qq.com/s/br7Ak88kA5GkZ26hxwKUiw) + + [敖丙我参加了蘑菇街年会,流了一晚上鼻血](https://mp.weixin.qq.com/s/fkByjmdaqdw0TELDzdm5mQ) + + [时间刺客--敖丙](https://mp.weixin.qq.com/s/wlfurOBpxeaf6iy7CtHRlA) + + [送别了好友,敖丙跟你聊聊【离职】这个话题](https://mp.weixin.qq.com/s/pHcgkDvKfElRIVZGd4Kzng) + + [再见,三歪](https://mp.weixin.qq.com/s/7t2-L7ZYAYXrp0CTbYpAUg) + + [阿里入职培训](https://mp.weixin.qq.com/s/MijvXeWtsJOJIzxcpJdRhA) \ No newline at end of file diff --git "a/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\350\207\252\345\252\222\344\275\223\347\273\217\345\216\206.md" "b/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\350\207\252\345\252\222\344\275\223\347\273\217\345\216\206.md" new file mode 100644 index 0000000..06afde4 --- /dev/null +++ "b/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\350\207\252\345\252\222\344\275\223\347\273\217\345\216\206.md" @@ -0,0 +1,11 @@ + [写作一个月的感受](https://mp.weixin.qq.com/s/g6SQ6nqjKrqjlzaGuLHpYA) + + [我知道互联网不相信眼泪,但是敖丙今天还是没忍住](https://mp.weixin.qq.com/s/UC6NsEFlNfqMdEkzvHxKRA) + + [50天全网2W粉,感谢坚持!](https://mp.weixin.qq.com/s/_5tVdE9oFPBUK3Z0gKH26g) + + [华为现场和百万粉博主线下面基,敖丙c位出道](https://mp.weixin.qq.com/s/SBnev4kAzsqpA9l-unt4dw) + + [敖丙第一次见到一个亿...](https://mp.weixin.qq.com/s/KB7Gkdu4S13mQnlHGAUHfQ) + + [敖丙入职腾讯了](https://mp.weixin.qq.com/s/LvgziYKKE7lLIxag1v3R1A) diff --git "a/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\350\257\273\350\200\205\347\273\217\345\216\206.md" "b/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\350\257\273\350\200\205\347\273\217\345\216\206.md" new file mode 100644 index 0000000..a29c04d --- /dev/null +++ "b/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\350\257\273\350\200\205\347\273\217\345\216\206.md" @@ -0,0 +1,9 @@ + [从网瘾少年逆袭拿到微软 、字节等offer(上)](https://mp.weixin.qq.com/s/irjvJkIRknxasM0D1v3FOw) + + [从网瘾少年逆袭拿到微软 、字节等offer(下)](https://mp.weixin.qq.com/s/CTpY8oxxjdvleTotjrpAsA) + + [我新浪学妹的北京日常](https://mp.weixin.qq.com/s/oSKKUOG-JO0PLMun13gi0A) + + [朋友被裁员之后的工行、华为外包工作经历分享](https://mp.weixin.qq.com/s/cMZN_T7Ar1skWyyx8iHI5g) + + [和华为的一位学长聊了很久,优秀的人果然都有过人之处](https://mp.weixin.qq.com/s/Bg0Qejvxd6nQMuG4gXFzLw) \ No newline at end of file diff --git "a/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\350\277\207\345\271\264\347\211\271\350\276\221.md" "b/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\350\277\207\345\271\264\347\211\271\350\276\221.md" new file mode 100644 index 0000000..300470e --- /dev/null +++ "b/docs/all/\347\250\213\345\272\217\344\272\272\347\224\237/\350\277\207\345\271\264\347\211\271\350\276\221.md" @@ -0,0 +1,8 @@ + + [贵州打工仔回家过年,遭遇流感,被隔离,偶遇读者,偶遇直播同行...](https://mp.weixin.qq.com/s/MXSWBVQyVD4OW0tjy5UO8Q) + + [敖丙回家过年,外婆说没带女朋友别回来了?喝了老爸89年的酒,当场反目。](https://mp.weixin.qq.com/s/pQrepZAbgP59gmj42Z1kdA) + + [书房翻杂物,看到初恋的信件,看到奖牌,看到梅西、力宏,帅丙的眼角又湿了.....](https://mp.weixin.qq.com/s/VECNJbVV0Bz8PKlG8pYwVw) + + [疫情之下,从一座空城,到另一座空城,贵州小伙带你看不一样的杭州](https://mp.weixin.qq.com/s/8blBtbBLJtVvpnrJ7tmh_g) diff --git "a/docs/all/\347\272\277\344\270\212\351\227\256\351\242\230\346\216\222\346\237\245.md" "b/docs/all/\347\272\277\344\270\212\351\227\256\351\242\230\346\216\222\346\237\245.md" new file mode 100644 index 0000000..6f51e3a --- /dev/null +++ "b/docs/all/\347\272\277\344\270\212\351\227\256\351\242\230\346\216\222\346\237\245.md" @@ -0,0 +1,5 @@ + [线上问题如何排查?](https://mp.weixin.qq.com/s/8YBJn8x7Sf9dai9jNkX6Tg) + + [RT 过长,排查思路](https://mp.weixin.qq.com/s/TnLl2OW9XJLSZihcpgP7VQ) + + [线上问题排查](https://mp.weixin.qq.com/s/fA860wCu9PZW3eQTwdbGWQ) diff --git "a/docs/all/\347\274\223\345\255\230/Redis\345\270\270\350\247\201\347\272\277\344\270\212\346\225\205\351\232\234\345\217\212\345\205\266\350\247\243\345\206\263\346\226\271\346\241\210.md" "b/docs/all/\347\274\223\345\255\230/Redis\345\270\270\350\247\201\347\272\277\344\270\212\346\225\205\351\232\234\345\217\212\345\205\266\350\247\243\345\206\263\346\226\271\346\241\210.md" new file mode 100644 index 0000000..42d4821 --- /dev/null +++ "b/docs/all/\347\274\223\345\255\230/Redis\345\270\270\350\247\201\347\272\277\344\270\212\346\225\205\351\232\234\345\217\212\345\205\266\350\247\243\345\206\263\346\226\271\346\241\210.md" @@ -0,0 +1,5 @@ + [缓存击穿、雪崩、穿透](https://mp.weixin.qq.com/s/knz-j-m8bTg5GnKc7oeZLg) + + [布隆过滤器实战【防止缓存击穿】](https://mp.weixin.qq.com/s/BdwZViiAqnFhCde4ZsxwPg) + + [分布式锁、并发竞争、双写一致性](https://mp.weixin.qq.com/s/2hTgP3MRTVDxmmoUFhOaGw) \ No newline at end of file diff --git "a/docs/all/\347\274\223\345\255\230/Redis\345\270\270\350\247\201\351\235\242\350\257\225\351\242\230.md" "b/docs/all/\347\274\223\345\255\230/Redis\345\270\270\350\247\201\351\235\242\350\257\225\351\242\230.md" new file mode 100644 index 0000000..c96ee3f --- /dev/null +++ "b/docs/all/\347\274\223\345\255\230/Redis\345\270\270\350\247\201\351\235\242\350\257\225\351\242\230.md" @@ -0,0 +1,13 @@ + [Redis面试题](https://mp.weixin.qq.com/s/LkIcGS9kFTXNLFlxASPYUA) + + [Redis常见面试题](https://mp.weixin.qq.com/s/R1TJMo2IbPUUMox9OAAafQ) + + [Redis为什么变慢了?一文讲透如何排查Redis性能问题](https://mp.weixin.qq.com/s/rw42cFbJXwPtsGiqkFErfw) + + [Redis不是一直号称单线程效率也很高吗,为什么又采用多线程了?](https://mp.weixin.qq.com/s/mscKInWNAuhCbg183Um9_g) + + [缓存一致性问题怎么解决?](https://mp.weixin.qq.com/s/dYvM8_6SQnYRB6KjPsprbw) + + [内存耗尽后Redis会发生什么?](https://mp.weixin.qq.com/s/-caMTrOXQu-o0O44e6I9dQ) + + [妈妈再也不担心我面试被Redis问得脸都绿了](https://mp.weixin.qq.com/s/vXBFscXqDcXS_VaIERplMQ) \ No newline at end of file diff --git "a/docs/all/\347\274\223\345\255\230/Redis\346\225\260\346\215\256\347\273\223\346\236\204\343\200\201\345\237\272\347\241\200\347\237\245\350\257\206.md" "b/docs/all/\347\274\223\345\255\230/Redis\346\225\260\346\215\256\347\273\223\346\236\204\343\200\201\345\237\272\347\241\200\347\237\245\350\257\206.md" new file mode 100644 index 0000000..819d38a --- /dev/null +++ "b/docs/all/\347\274\223\345\255\230/Redis\346\225\260\346\215\256\347\273\223\346\236\204\343\200\201\345\237\272\347\241\200\347\237\245\350\257\206.md" @@ -0,0 +1,33 @@ +[Redis基础知识](https://mp.weixin.qq.com/s/aOiadiWG2nNaZowmoDQPMQ) + +[图解 Redis 数据结构](https://mp.weixin.qq.com/s/qptE172slg_6Tl1yuzdbfw) + +[Redis为什么这么快?](https://mp.weixin.qq.com/s/KtzvawDnQQwhfjnCoXpcMQ) + +[集群高可用、哨兵、持久化、LRU](https://mp.weixin.qq.com/s/EjDeypra_d9Tfsn-WkJZdw) + +[布隆过滤器(BloomFilter)](https://github.com/AobingJava/JavaFamily/blob/master/docs/redis/%E5%B8%83%E9%9A%86%E8%BF%87%E6%BB%A4%E5%99%A8(BloomFilter).md) + +[Redis—分布式锁深入探究](https://mp.weixin.qq.com/s/49hgH3COla3wU0rgyiUVgg) + +[Redis—跳跃表](https://mp.weixin.qq.com/s/NOsXdrMrWwq4NTm180a6vw) + +[Redis—5种基本数据结构](https://mp.weixin.qq.com/s/MT1tB2_7f5RuOxKhuEm1vQ) + +[Redis—持久化](https://mp.weixin.qq.com/s/O_qDco6-Dasu3RomWIK_Ig) + +[Reids—神奇的HyperLoglog解决统计问题](https://mp.weixin.qq.com/s/9dtGe3d_mbbxW5FpVPDNow) + +[Redis分布式锁](https://mp.weixin.qq.com/s/Z_xriP-jc2Bnmdcm0l5xzg) + +[Redis数据结构底层系列-SDS](https://mp.weixin.qq.com/s/VY31lBOSggOHvVf54GzvYw) + +[短小精悍之 Redis 命令行工具有趣的罕见用法](https://mp.weixin.qq.com/s/eSx4aL7iaMZlW0cPZswghA) + +[Redis分布式锁(全)](https://mp.weixin.qq.com/s/RnSokJxYxYDeenOP_JE3fQ) + +[Redis源码之BitMap](https://mp.weixin.qq.com/s/LavkCpqMTled_1m9CpJQ6w) + +[Redis源码之SDS](https://mp.weixin.qq.com/s/uYUQ1P8Dq1Cdknxif7lF-g) + +[读懂Redis源码,我总结了这7点心得](https://mp.weixin.qq.com/s/h-OEbiUUmKvUZqxmjfmgtg) \ No newline at end of file diff --git "a/docs/redis/Redis\345\237\272\347\241\200.md" "b/docs/all/\347\274\223\345\255\230/redis/Redis\345\237\272\347\241\200.md" similarity index 100% rename from "docs/redis/Redis\345\237\272\347\241\200.md" rename to "docs/all/\347\274\223\345\255\230/redis/Redis\345\237\272\347\241\200.md" diff --git "a/docs/redis/Redis\345\270\270\350\247\201\351\235\242\350\257\225\351\242\230.md" "b/docs/all/\347\274\223\345\255\230/redis/Redis\345\270\270\350\247\201\351\235\242\350\257\225\351\242\230.md" similarity index 100% rename from "docs/redis/Redis\345\270\270\350\247\201\351\235\242\350\257\225\351\242\230.md" rename to "docs/all/\347\274\223\345\255\230/redis/Redis\345\270\270\350\247\201\351\235\242\350\257\225\351\242\230.md" diff --git "a/docs/redis/\345\210\206\345\270\203\345\274\217\351\224\201\343\200\201\345\271\266\345\217\221\347\253\236\344\272\211\343\200\201\345\217\214\345\206\231\344\270\200\350\207\264\346\200\247.md" "b/docs/all/\347\274\223\345\255\230/redis/\345\210\206\345\270\203\345\274\217\351\224\201\343\200\201\345\271\266\345\217\221\347\253\236\344\272\211\343\200\201\345\217\214\345\206\231\344\270\200\350\207\264\346\200\247.md" similarity index 100% rename from "docs/redis/\345\210\206\345\270\203\345\274\217\351\224\201\343\200\201\345\271\266\345\217\221\347\253\236\344\272\211\343\200\201\345\217\214\345\206\231\344\270\200\350\207\264\346\200\247.md" rename to "docs/all/\347\274\223\345\255\230/redis/\345\210\206\345\270\203\345\274\217\351\224\201\343\200\201\345\271\266\345\217\221\347\253\236\344\272\211\343\200\201\345\217\214\345\206\231\344\270\200\350\207\264\346\200\247.md" diff --git "a/docs/redis/\345\270\203\351\232\206\350\277\207\346\273\244\345\231\250(BloomFilter).md" "b/docs/all/\347\274\223\345\255\230/redis/\345\270\203\351\232\206\350\277\207\346\273\244\345\231\250(BloomFilter).md" similarity index 100% rename from "docs/redis/\345\270\203\351\232\206\350\277\207\346\273\244\345\231\250(BloomFilter).md" rename to "docs/all/\347\274\223\345\255\230/redis/\345\270\203\351\232\206\350\277\207\346\273\244\345\231\250(BloomFilter).md" diff --git "a/docs/redis/\347\247\222\346\235\200\347\263\273\347\273\237\350\256\276\350\256\241.md" "b/docs/all/\347\274\223\345\255\230/redis/\347\247\222\346\235\200\347\263\273\347\273\237\350\256\276\350\256\241.md" similarity index 100% rename from "docs/redis/\347\247\222\346\235\200\347\263\273\347\273\237\350\256\276\350\256\241.md" rename to "docs/all/\347\274\223\345\255\230/redis/\347\247\222\346\235\200\347\263\273\347\273\237\350\256\276\350\256\241.md" diff --git "a/docs/redis/\347\274\223\345\255\230\345\207\273\347\251\277\343\200\201\351\233\252\345\264\251\343\200\201\347\251\277\351\200\217.md" "b/docs/all/\347\274\223\345\255\230/redis/\347\274\223\345\255\230\345\207\273\347\251\277\343\200\201\351\233\252\345\264\251\343\200\201\347\251\277\351\200\217.md" similarity index 100% rename from "docs/redis/\347\274\223\345\255\230\345\207\273\347\251\277\343\200\201\351\233\252\345\264\251\343\200\201\347\251\277\351\200\217.md" rename to "docs/all/\347\274\223\345\255\230/redis/\347\274\223\345\255\230\345\207\273\347\251\277\343\200\201\351\233\252\345\264\251\343\200\201\347\251\277\351\200\217.md" diff --git "a/docs/redis/\350\257\276\344\273\243\350\241\250\346\200\273\347\273\223.md" "b/docs/all/\347\274\223\345\255\230/redis/\350\257\276\344\273\243\350\241\250\346\200\273\347\273\223.md" similarity index 100% rename from "docs/redis/\350\257\276\344\273\243\350\241\250\346\200\273\347\273\223.md" rename to "docs/all/\347\274\223\345\255\230/redis/\350\257\276\344\273\243\350\241\250\346\200\273\347\273\223.md" diff --git "a/docs/redis/\351\233\206\347\276\244\351\253\230\345\217\257\347\224\250\343\200\201\345\223\250\345\205\265\343\200\201\346\214\201\344\271\205\345\214\226\343\200\201LRU.md" "b/docs/all/\347\274\223\345\255\230/redis/\351\233\206\347\276\244\351\253\230\345\217\257\347\224\250\343\200\201\345\223\250\345\205\265\343\200\201\346\214\201\344\271\205\345\214\226\343\200\201LRU.md" similarity index 100% rename from "docs/redis/\351\233\206\347\276\244\351\253\230\345\217\257\347\224\250\343\200\201\345\223\250\345\205\265\343\200\201\346\214\201\344\271\205\345\214\226\343\200\201LRU.md" rename to "docs/all/\347\274\223\345\255\230/redis/\351\233\206\347\276\244\351\253\230\345\217\257\347\224\250\343\200\201\345\223\250\345\205\265\343\200\201\346\214\201\344\271\205\345\214\226\343\200\201LRU.md" diff --git "a/docs/all/\347\274\223\345\255\230/\347\237\245\350\257\206\347\202\271\344\271\213\345\244\226\347\232\204\347\274\223\345\255\230\344\271\213\350\267\257.md" "b/docs/all/\347\274\223\345\255\230/\347\237\245\350\257\206\347\202\271\344\271\213\345\244\226\347\232\204\347\274\223\345\255\230\344\271\213\350\267\257.md" new file mode 100644 index 0000000..a7b5c2c --- /dev/null +++ "b/docs/all/\347\274\223\345\255\230/\347\237\245\350\257\206\347\202\271\344\271\213\345\244\226\347\232\204\347\274\223\345\255\230\344\271\213\350\267\257.md" @@ -0,0 +1,17 @@ + [缓存和数据库一致性问题](https://mp.weixin.qq.com/s/D4Ik6lTA_ySBOyD3waNj1w) + + [一个架构师的缓存修炼之路](https://mp.weixin.qq.com/s/Ls-Bld0Q6OQ1VD_az3iqbg) + + [再见了Antirez我永远的神](https://mp.weixin.qq.com/s/u3Ws1FGhJVIJdpM8IHI7OQ) + + [敖丙在蘑菇街的redis技术分享](https://mp.weixin.qq.com/s/xS2dqi5IG10AF7cHbzguAA) + + [课代表总结](https://mp.weixin.qq.com/s/lLTbL5YW0gIJu9Yx2T2OtA) + + [Redis最佳实践:7个维度+43条使用规范,带你彻底玩转Redis](https://mp.weixin.qq.com/s/8EN9vrZMhCK-40o_OdnOlg) + + [布隆过滤器过时了,未来属于布谷鸟过滤器?](https://mp.weixin.qq.com/s/XxY3b5FoVXCvHJWMxQH29g) + + [什么鬼,面试官竟然让敖丙用Redis实现一个消息队列!!?](https://mp.weixin.qq.com/s/5NOTLJ6AM3QJfhvXMSR-MA) + + [我最爱用的一款 Redis 可视化管理工具!好用到爆!!!](https://mp.weixin.qq.com/s/LDkcDO75gsivs04XXNLzTA) \ No newline at end of file diff --git "a/docs/all/\350\201\214\345\234\272\346\235\202\350\260\210.md" "b/docs/all/\350\201\214\345\234\272\346\235\202\350\260\210.md" new file mode 100644 index 0000000..26d26a9 --- /dev/null +++ "b/docs/all/\350\201\214\345\234\272\346\235\202\350\260\210.md" @@ -0,0 +1,49 @@ +[提离职,涨薪 走,别回头](https://mp.weixin.qq.com/s/1rUYxXbb0PaVOkmDQAxHpg) + + [我对外包的看法](https://mp.weixin.qq.com/s/lC6F1HVmAGQzXsFbpZz9Qw) + + [阿里五年老员工有什么话想对大家说?](https://mp.weixin.qq.com/s/9vPZd1q1vpKuE2qZazLQmA) + + [读研or工作?](https://mp.weixin.qq.com/s/Sn7_FcNW7Sq3WVm_LgwVrA) + + [敖丙的前前前同事因为几行代码坐牢了](https://mp.weixin.qq.com/s/UJVD7o-8-Oy0bWeceo7bcA) + + [应届毕业生工作7个月小结](https://mp.weixin.qq.com/s/XcrBvdlh1At_V42qfQZ9Kw) + + [蘑菇街被裁员工自述:若是有缘,江湖再见](https://mp.weixin.qq.com/s/WsMS30S1qDZCs-r5KaYmGA) + + [蘑菇街又裁员了](https://mp.weixin.qq.com/s/-axhH958qOS8daWULP11zA) + + [麻了,我的爱豆也塌房了](https://mp.weixin.qq.com/s/otVb5k76z5ejTAQZSXNpzg) + + [在国企里面当程序猿是一种怎样的体验?](https://mp.weixin.qq.com/s/HJ9wzgW6TAc6Cf6B8oZEdw) + + [跳槽季,应不应该跳,怎么跳?](https://mp.weixin.qq.com/s/enq_fh0hq2gMSgeXfunP6Q) + + [让你自制力提升300%的学习方法](https://mp.weixin.qq.com/s/vseVDxl3BjESeZsdKLd1eA) + + [教你在服务器搭建个人面试项目](https://mp.weixin.qq.com/s/D0bxHiXJKU64SinO1mh7Mw) + + [程序员只能吃青春饭?30岁后出路在何方?](https://mp.weixin.qq.com/s/MvA12XM_ZzOG_7ygTmzIfA) + + [学历对程序员重要么?](https://mp.weixin.qq.com/s/HafYjNNoBwuau-MI6W8EnQ) + + [有哪些事情是你成为程序员之后才知道的?](https://mp.weixin.qq.com/s/UIbINxc-lEktnXLJhLceZQ) + + [天天加班却不受重用,老板到底喜欢什么样的员工?](https://mp.weixin.qq.com/s/3VDS3tku0ZYZ4M_v760TEQ) + + [纵使社会虐我千百遍,我依然待它如初恋](https://mp.weixin.qq.com/s/RcL3Y6BZNSBQZJq8V3LCyw) + + [国家何时整治程序员的高薪现象?](https://mp.weixin.qq.com/s/10DvwjXysmGzLa6AoSsXNw) + + [大学毕业是去大城市好还是回小城市好?](https://mp.weixin.qq.com/s/-bva0Cako549qUqK5BIHkw) + + [大二那年,我发现学生思维在职场行不通](https://mp.weixin.qq.com/s/lr6qlbB6loJ1DMbdV-_Avw) + + [B站崩了,如何防止类似事故的出现?](https://mp.weixin.qq.com/s/UZyUclzkKIRhUM-8vioxvg) + + [每日灵魂拷问:“工作=有钱=快乐?”](https://mp.weixin.qq.com/s/QW8a0ULgSo9uNyswril3Fg) + + [比渣男pua更可怕的,是职场pua](https://mp.weixin.qq.com/s/zv3hhsjCSrzrFIe3rEZRYQ) + + [你热爱编程么?我先来:爱过](https://mp.weixin.qq.com/s/MFtq7jEqnhfi-3OnTCuY5g) \ No newline at end of file diff --git "a/docs/all/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/HTTP/HTTPS.md" "b/docs/all/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/HTTP/HTTPS.md" new file mode 100644 index 0000000..b0d51fd --- /dev/null +++ "b/docs/all/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/HTTP/HTTPS.md" @@ -0,0 +1,12 @@ +[图解HTTP协议](https://mp.weixin.qq.com/s/AK1Pb9rx0q5Hf8dq6HNOhw) + +[全网最透彻HTTPS(面试常问)](https://mp.weixin.qq.com/s/21JaXwdfSjItj5SgOwhapg) + + +[一文领略 HTTP 的前世今生](https://mp.weixin.qq.com/s/ljtDM1d2KgtxAAhwUFSHkg) + +[硬核!30 张图解 HTTP 常见的面试题](https://mp.weixin.qq.com/s/amOya0M00LwpL5kCS96Y6w) + +[面试 HTTP ,99% 的面试官都爱问这些问题](https://mp.weixin.qq.com/s/t7ZYT6wBBbFYVBPOSztpRg) + +[中间人攻击](https://mp.weixin.qq.com/s/Mi3zM-oyMoxxdzSlSnHpQQ) \ No newline at end of file diff --git "a/docs/all/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/TCP/IP.md" "b/docs/all/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/TCP/IP.md" new file mode 100644 index 0000000..46ef343 --- /dev/null +++ "b/docs/all/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/TCP/IP.md" @@ -0,0 +1,21 @@ + [万字长文 | 23 个问题 TCP 疑难杂症全解析](https://mp.weixin.qq.com/s/LUtk6u_zv0w8g8GIGWEuCw) + + [实战!敖丙用“大白鲨”让你看见 TCP](https://mp.weixin.qq.com/s/jTDU-zxP1INTYLpGLypjXQ) + + [面试官:换人!他连 TCP 这几个参数都不懂](https://mp.weixin.qq.com/s/ytV7RZSyFXyvPW_lKhv8hw) + + [TCP/IP 基础知识总结](https://mp.weixin.qq.com/s/lkX2Mb2aCj8ugOaRmVVBqw) + + [TCP 半连接队列和全连接队列满了会发生什么?又该如何应对?](https://mp.weixin.qq.com/s/tRXlq1hErqKQLMMLcxoXvg) + + [跟着动画学习TCP三次握手和四次挥手](https://mp.weixin.qq.com/s/NL7Jzh0lYoA395yzaGxBHw) + + [敖丙用近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题](https://mp.weixin.qq.com/s/rX3A_FA19n4pI9HicIEsXg) + + [你还在为 TCP 重传、滑动窗口、流量控制、拥塞控制发愁吗?看完图解就不愁了](https://mp.weixin.qq.com/s/HjOUsKn8eLfDogbBX3hPnA) + + [IP 基础知识“全家桶”,敖丙45 张图一套带走你](https://mp.weixin.qq.com/s/p9oA9YTZLoXVooUOSNQCMg) + + [敖丙听说你 ping 用的很 6 ?给我图解一下 ping 的工作原理!](https://mp.weixin.qq.com/s/3KF0IxLum8EOtcF0ZNIiPA) + + [一文搞定 UDP 和 TCP 高频面试题!](https://mp.weixin.qq.com/s/BK2H7JQIo6zOrXYg9RcbeA) \ No newline at end of file diff --git "a/docs/all/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\347\275\221\347\273\234\345\237\272\347\241\200.md" "b/docs/all/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\347\275\221\347\273\234\345\237\272\347\241\200.md" new file mode 100644 index 0000000..e12443c --- /dev/null +++ "b/docs/all/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234/\347\275\221\347\273\234\345\237\272\347\241\200.md" @@ -0,0 +1,9 @@ +[计算机网络](https://mp.weixin.qq.com/s/WfcozFAdXbOJ0EIcZEfLVg) + +[拔掉网线后, 原本的 TCP 连接还存在吗?](https://mp.weixin.qq.com/s/0YFsUWL6e9r_aDrCZeTK3w) + +[熬夜整理的20道计算机网络面试题](https://mp.weixin.qq.com/s/3FTuMZaUrT9Vw-ZScJkQbg) + +[什么是单点登录(SSO)](https://mp.weixin.qq.com/s/drPVkRbCsDIlX6Ls2pDmqA) + +[键入网址后,期间发生了什么?](https://mp.weixin.qq.com/s/I6BLwbIpfGEJnxjDcPXc1A) \ No newline at end of file diff --git "a/docs/all/\350\256\276\350\256\241\346\250\241\345\274\217\345\222\214\344\275\277\347\224\250\345\234\272\346\231\257.md" "b/docs/all/\350\256\276\350\256\241\346\250\241\345\274\217\345\222\214\344\275\277\347\224\250\345\234\272\346\231\257.md" new file mode 100644 index 0000000..5ba96fa --- /dev/null +++ "b/docs/all/\350\256\276\350\256\241\346\250\241\345\274\217\345\222\214\344\275\277\347\224\250\345\234\272\346\231\257.md" @@ -0,0 +1,30 @@ + +[单例模式](https://mp.weixin.qq.com/s/dW0L-PoBeTFHhD29HJO0BQ) + +[工厂模式](https://mp.weixin.qq.com/s/j42vn-A_rdWZP3aixXB8Ag) + +[流程引擎](https://mp.weixin.qq.com/s/b8xa3o4fKDme2438oJTakw) + +[建造者模式](https://mp.weixin.qq.com/s/h7iEyxgN34FPn191S8qUpA) + +[原型模式](https://mp.weixin.qq.com/s/fORmbucHuPVMS2z3q-mV3A) + +[责任链模式](https://mp.weixin.qq.com/s/l9EdvpAMukIDOgaN7x3b4w) + +[观察者模式](https://mp.weixin.qq.com/s/_hVGgJxefoVXFHFNXC-U6A) + +[策略模式](https://mp.weixin.qq.com/s/AFbt7VJMASenD2S8KbPKJQ) + +[策略模式2.0](https://mp.weixin.qq.com/s/HOnQf-S-w6A19tGnoIXBrg) + +[模板方法](https://mp.weixin.qq.com/s/oGm4ET-NDp4BSVi0p2MZxA) + +[迭代器模式](https://mp.weixin.qq.com/s/QHgg4CcU6VlA0gtzzQ_JLQ) + +[命令模式&中介者模式](https://mp.weixin.qq.com/s/dtmeTLsML6TYM8F8ch2FGQ) + +[对象池模式&解释器模式](https://mp.weixin.qq.com/s/a1kVL71OlUwZJrsyCE0I-A) + +[代理模式](https://mp.weixin.qq.com/s/lNw1yjn_xMOLpzbunaS10A) + +[使用Java8改造后的模板方法模式真的是yyds](https://mp.weixin.qq.com/s/O0sIOyE2rgTPyj54_QRx_g) \ No newline at end of file diff --git "a/docs/all/\351\233\206\345\220\210\346\241\206\346\236\266/ArrayList.md" "b/docs/all/\351\233\206\345\220\210\346\241\206\346\236\266/ArrayList.md" new file mode 100644 index 0000000..9137e80 --- /dev/null +++ "b/docs/all/\351\233\206\345\220\210\346\241\206\346\236\266/ArrayList.md" @@ -0,0 +1,3 @@ +[ArrayList](https://mp.weixin.qq.com/s/WoGclm7SsbURGigI3Mwr3w) + +[ArrayList源码解析,老哥,来一起复习一哈?](https://mp.weixin.qq.com/s/3PNWmtS-bEZgZjd9wyMiDA) \ No newline at end of file diff --git "a/docs/all/\351\233\206\345\220\210\346\241\206\346\236\266/ConcurrentHashMap.md" "b/docs/all/\351\233\206\345\220\210\346\241\206\346\236\266/ConcurrentHashMap.md" new file mode 100644 index 0000000..7d55468 --- /dev/null +++ "b/docs/all/\351\233\206\345\220\210\346\241\206\346\236\266/ConcurrentHashMap.md" @@ -0,0 +1,3 @@ +[ConcurrentHashMap & Hashtable(文末送书)](https://mp.weixin.qq.com/s/AixdbEiXf3KfE724kg2YIw) + +[我就知道面试官接下来要问我 ConcurrentHashMap 底层原理了](https://mp.weixin.qq.com/s/My4P_BBXDnAGX1gh630ZKw) \ No newline at end of file diff --git "a/docs/all/\351\233\206\345\220\210\346\241\206\346\236\266/HashMap.md" "b/docs/all/\351\233\206\345\220\210\346\241\206\346\236\266/HashMap.md" new file mode 100644 index 0000000..d90ae93 --- /dev/null +++ "b/docs/all/\351\233\206\345\220\210\346\241\206\346\236\266/HashMap.md" @@ -0,0 +1,6 @@ +[HashMap](https://mp.weixin.qq.com/s/0Gf2DzuzgEx0i3mHVvhKNQ) + + +[面试官:HashMap 为什么线程不安全?](https://mp.weixin.qq.com/s/VtIpj-uuxFj5Bf6TmTJMTw) + +[万万没想到,HashMap默认容量的选择,竟然背后有这么多思考!?](https://mp.weixin.qq.com/s/ktre8-C-cP_2HZxVW5fomQ) \ No newline at end of file diff --git "a/docs/all/\351\233\206\345\220\210\346\241\206\346\236\266/Vector.md" "b/docs/all/\351\233\206\345\220\210\346\241\206\346\236\266/Vector.md" new file mode 100644 index 0000000..0d52cd5 --- /dev/null +++ "b/docs/all/\351\233\206\345\220\210\346\241\206\346\236\266/Vector.md" @@ -0,0 +1 @@ + [面试官问我同步容器(如Vector)的所有操作一定是线程安全的吗?我懵了!](https://mp.weixin.qq.com/s/0cMrE87iUxLBw_qTBMYMgA) \ No newline at end of file diff --git "a/docs/all/\351\233\206\345\220\210\346\241\206\346\236\266/\345\237\272\347\241\200.md" "b/docs/all/\351\233\206\345\220\210\346\241\206\346\236\266/\345\237\272\347\241\200.md" new file mode 100644 index 0000000..2286a09 --- /dev/null +++ "b/docs/all/\351\233\206\345\220\210\346\241\206\346\236\266/\345\237\272\347\241\200.md" @@ -0,0 +1,5 @@ +[Java 集合框架看这一篇就够了](https://mp.weixin.qq.com/s/bVOSat47L0Hskfx9akAN6Q) + +[Java 集合中「堆」是啥?](https://mp.weixin.qq.com/s/eSCVJclB-IaJYkPKsWSkRA) + +[别这样创建集合了,非常容易内存泄露](https://mp.weixin.qq.com/s/pFnme5EPWNtfKspI4Y1W-w) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\346\212\200\345\267\247/\345\212\240\345\210\206\351\241\271.md" "b/docs/all/\351\235\242\350\257\225\346\212\200\345\267\247/\345\212\240\345\210\206\351\241\271.md" new file mode 100644 index 0000000..8e0fee9 --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\346\212\200\345\267\247/\345\212\240\345\210\206\351\241\271.md" @@ -0,0 +1 @@ + [面试官喜欢怎样的人](https://mp.weixin.qq.com/s/2mdcZnlTWCDYejGkZCdNOQ) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\346\212\200\345\267\247/\347\256\200\345\216\206.md" "b/docs/all/\351\235\242\350\257\225\346\212\200\345\267\247/\347\256\200\345\216\206.md" new file mode 100644 index 0000000..1faf4a8 --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\346\212\200\345\267\247/\347\256\200\345\216\206.md" @@ -0,0 +1,13 @@ + [简历怎么写?](https://mp.weixin.qq.com/s/0pNv6pMnenKn1A9PE61VnQ) + + [能不能好好写简历?](https://mp.weixin.qq.com/s/LxVeT49GMKu72PZJ-rDHpA) + + + [简历这样写,技术人都不直男了!](https://mp.weixin.qq.com/s/tl4DpsQPVh-bvlFzNsrzvw) + + [10个简历小技巧,成为面试战神](https://mp.weixin.qq.com/s/NyJ2gLDLIomlgkIFYWVvJg) + + [简历制作](https://mp.weixin.qq.com/s/1TPh2mEnSgZ2ZfccVUWicg) + + + [敖丙迟早被你们气死](https://mp.weixin.qq.com/s/KeIJDrHbMH_BRUKLnCqExw) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\346\212\200\345\267\247/\350\257\255\350\250\200\347\273\204\347\273\207.md" "b/docs/all/\351\235\242\350\257\225\346\212\200\345\267\247/\350\257\255\350\250\200\347\273\204\347\273\207.md" new file mode 100644 index 0000000..b5c9c03 --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\346\212\200\345\267\247/\350\257\255\350\250\200\347\273\204\347\273\207.md" @@ -0,0 +1,3 @@ + [自我介绍](https://mp.weixin.qq.com/s/br7Ak88kA5GkZ26hxwKUiw) + + [面试官希望你做怎样的自我介绍?](https://mp.weixin.qq.com/s/Pyi-lbocEr_vFeGxUkSl8A) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\346\212\200\345\267\247/\351\235\242\350\257\225\346\265\201\347\250\213.md" "b/docs/all/\351\235\242\350\257\225\346\212\200\345\267\247/\351\235\242\350\257\225\346\265\201\347\250\213.md" new file mode 100644 index 0000000..950f8d9 --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\346\212\200\345\267\247/\351\235\242\350\257\225\346\265\201\347\250\213.md" @@ -0,0 +1,3 @@ + [互联网公司面试流程 注意事项 加分点 防骗指南](https://mp.weixin.qq.com/s/jhmpG2bBb4aXoUJzahC0Rg) + + [互联网公司面试流程&加分点,别跟敖丙一样被无良HR坑了](https://mp.weixin.qq.com/s/7Rq8QR58Adi5WGHRlnhDeQ) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/bilibili.md" "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/bilibili.md" new file mode 100644 index 0000000..fd7af8b --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/bilibili.md" @@ -0,0 +1,3 @@ +[B站五面面经](https://mp.weixin.qq.com/s/tMPwanTRC3pj3X4Rx4SeTQ) + + [「面经」不小心拿到了B站意向书](https://mp.weixin.qq.com/s/VOVUQ2cbYX5UXrrWLIHFXQ) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\344\272\254\344\270\234.md" "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\344\272\254\344\270\234.md" new file mode 100644 index 0000000..82d7578 --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\344\272\254\344\270\234.md" @@ -0,0 +1 @@ + [京东二面:为什么需要分布式ID?你项目中是怎么做的?](https://mp.weixin.qq.com/s/-04X2NS165vedIGb85q7QQ) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\345\205\266\344\273\226.md" "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\345\205\266\344\273\226.md" new file mode 100644 index 0000000..c82d7bf --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\345\205\266\344\273\226.md" @@ -0,0 +1,7 @@ +[Java后端实习面经,电子科大大三读者投稿!看了之后感触颇深!很开心!](https://mp.weixin.qq.com/s/ttKI82_CQdMmxoBw8TS92g) + +[敖丙8年经验读者,疫情期间面20家大厂总结](https://mp.weixin.qq.com/s/AQvDX0n8wBBaWl2OmcpnrA) + +[被裁一个月面试的面经和经验分享](https://mp.weixin.qq.com/s/MkjSYc0JA1-VErX3lJzPmQ) + +[上岸哈工大!!](https://mp.weixin.qq.com/s/MNm3k1s8CrrI6vF-47cvcg) diff --git "a/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\345\233\275\344\274\201.md" "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\345\233\275\344\274\201.md" new file mode 100644 index 0000000..bd36247 --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\345\233\275\344\274\201.md" @@ -0,0 +1 @@ + [怎么面国企或银行?](https://mp.weixin.qq.com/s/d4OewL8-gCm_IkqDqufvsQ) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\345\244\226\344\274\201.md" "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\345\244\226\344\274\201.md" new file mode 100644 index 0000000..5831474 --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\345\244\226\344\274\201.md" @@ -0,0 +1,3 @@ + [Bigo的Java面试,我挂在了第三轮技术面上......](https://mp.weixin.qq.com/s/3_HnVzGm16zU2zhk7BnwFw) + + [我经历的7轮Google面试](https://mp.weixin.qq.com/s/yYy5YUeA3VAAQMtnMhaFUQ) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\345\255\227\350\212\202\350\267\263\345\212\250\351\235\242\350\257\225\351\242\230.md" "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\345\255\227\350\212\202\350\267\263\345\212\250\351\235\242\350\257\225\351\242\230.md" new file mode 100644 index 0000000..fd22252 --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\345\255\227\350\212\202\350\267\263\345\212\250\351\235\242\350\257\225\351\242\230.md" @@ -0,0 +1,17 @@ + [读者字节、滴滴面经(已拿offer)](https://mp.weixin.qq.com/s/sWtI7M8K1iajreEo3LtwIw) + + [敖丙读者只复习了半年,怒拿字节跳动Offer](https://mp.weixin.qq.com/s/g6qFbEWfJeahzuzjECuvDg) + + [春招字节跳动、蘑菇街四轮面试,分别问了啥?](https://mp.weixin.qq.com/s/xBC1IRr6v8hmIJ9lqCp5pQ) + + [蚂蚁金服2019实习生面经总结(已拿口头offer)](https://mp.weixin.qq.com/s/0opKiGbKjAfJkRVeVHzpZg) + + [2020 字节跳动后端面经分享!已拿 offer!](https://mp.weixin.qq.com/s/hr2pDs2wsiHQuDzW7jmOow) + + [百度、字节跳动等后台面经,已拿Offer!](https://mp.weixin.qq.com/s/BiaXzNw5rp69CPPNBRii3g) + + [学妹字节、蘑菇街、阿里、莉莉丝...面经](https://mp.weixin.qq.com/s/WOIkWLsA7fyyoHPyNT7HdQ) + + [双非本科逆袭 拿下ACM金牌、字节和旷视offer、保研985!](https://mp.weixin.qq.com/s/P2lTpC7yQ7VD8if_rMUcPg) + + [字节一面:“为什么网络要分层?每一层的职责、包含哪些协议?”](https://mp.weixin.qq.com/s/QNqbUI1jxOhlGQvGyssK2w) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\345\260\217\347\272\242\344\271\246.md" "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\345\260\217\347\272\242\344\271\246.md" new file mode 100644 index 0000000..c996b51 --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\345\260\217\347\272\242\344\271\246.md" @@ -0,0 +1 @@ +[小红书](https://mp.weixin.qq.com/s/3OTwlqCpJHEwtUvSQn1xmw) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\346\213\274\345\244\232\345\244\232\351\235\242\350\257\225\351\242\230.md" "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\346\213\274\345\244\232\345\244\232\351\235\242\350\257\225\351\242\230.md" new file mode 100644 index 0000000..bfa7cfd --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\346\213\274\345\244\232\345\244\232\351\235\242\350\257\225\351\242\230.md" @@ -0,0 +1 @@ + [读者一个月拿到阿里字节拼多多offer](https://mp.weixin.qq.com/s/kSiLvSrAMwrHLwxvesyjBw) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\346\240\241\346\213\233\351\235\242\350\257\225\351\242\230.md" "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\346\240\241\346\213\233\351\235\242\350\257\225\351\242\230.md" new file mode 100644 index 0000000..78d6ee2 --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\346\240\241\346\213\233\351\235\242\350\257\225\351\242\230.md" @@ -0,0 +1 @@ +[十道校招常见的面试题](https://mp.weixin.qq.com/s/wTKSvziyEXrSyf21iMjhZQ) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\347\231\276\345\272\246.md" "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\347\231\276\345\272\246.md" new file mode 100644 index 0000000..9987885 --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\347\231\276\345\272\246.md" @@ -0,0 +1,3 @@ + [二本读者实习遭领导歧视,逆袭进百度!](https://mp.weixin.qq.com/s/el7wBmABxzsUng_QLdUtaQ) + +[京东+百度一面,不小心都拿了Offer](https://mp.weixin.qq.com/s/VVonP6MgGRUnBnWa2ukkyw) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\347\275\221\346\230\223.md" "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\347\275\221\346\230\223.md" new file mode 100644 index 0000000..27e4386 --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\347\275\221\346\230\223.md" @@ -0,0 +1 @@ + [双非院校非科班的学弟,刚刚拿到了腾讯、网易、美团等大厂Offer](https://mp.weixin.qq.com/s/TzaV0dfbWw2zHiF55vq_kA) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\347\276\216\345\233\242.md" "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\347\276\216\345\233\242.md" new file mode 100644 index 0000000..54baa3f --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\347\276\216\345\233\242.md" @@ -0,0 +1,3 @@ + [美团面经](https://mp.weixin.qq.com/s/gSG_ZzZN7Ek2HEGtdi_Nkg) + + [3 年经验的 Java 后端妹子,横扫阿里、滴滴、美团,看完面经我觉得敖丙是垃圾!](https://mp.weixin.qq.com/s/oAnGGBkre7Z4VkhME-TgzQ) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\350\205\276\350\256\257\351\235\242\350\257\225\351\242\230.md" "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\350\205\276\350\256\257\351\235\242\350\257\225\351\242\230.md" new file mode 100644 index 0000000..39975f0 --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\350\205\276\350\256\257\351\235\242\350\257\225\351\242\230.md" @@ -0,0 +1,7 @@ + [苦修月余,斩获bigo、腾讯offer,面经奉上!](https://mp.weixin.qq.com/s/EOQafymh7xVtxblstTbQUA) + + [来自朋友最近阿里、腾讯、美团等P7岗位面试题](https://mp.weixin.qq.com/s/yb6MtKMrCl2rAUZVLIfJow) + + [研二师弟拿下微信 offer](https://mp.weixin.qq.com/s/0XJHz2seZAw4bDEA2i_i2Q) + + [腾讯二面:大白你了解共享内存吗?](https://mp.weixin.qq.com/s/BvV5HnwEOATPDFQoI4TYZA) \ No newline at end of file diff --git "a/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\351\230\277\351\207\214\345\267\264\345\267\264\351\235\242\350\257\225\351\242\230.md" "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\351\230\277\351\207\214\345\267\264\345\267\264\351\235\242\350\257\225\351\242\230.md" new file mode 100644 index 0000000..0e07548 --- /dev/null +++ "b/docs/all/\351\235\242\350\257\225\347\234\237\351\242\230&\351\235\242\347\273\217\345\210\206\344\272\253/\351\230\277\351\207\214\345\267\264\345\267\264\351\235\242\350\257\225\351\242\230.md" @@ -0,0 +1,25 @@ + [淘宝|蚂蚁|菜鸟|盒马|嘀嘀|饿了么面经(已拿多个offer)](https://mp.weixin.qq.com/s/oEGSxv5KuNI9BsCxpdi82A) + + [互联网寒冬,敖丙挚友7面阿里,终获Offer](https://mp.weixin.qq.com/s/gYpZCSYK3YYEvGFFeHdFJQ) + + [一道蚂蚁金服笔试题,还行,中等难度](https://mp.weixin.qq.com/s/16cZLY9_uJwhi50RJXknIg) + + [上岸腾讯 PCG 和阿里云!](https://mp.weixin.qq.com/s/zpdLHtqJN5H3iO0VMSzMJw) + + [一份还热乎的蚂蚁金服面经(已拿Offer)!附答案!!](https://mp.weixin.qq.com/s/HtLwChoLzqhbM4pKldLDng) + + [我和阿里面试官的一次“邂逅”(附问题详解)](https://mp.weixin.qq.com/s/-DZj158-LOQmnCayf1_n3A) + + [二本 两年经验读者 阿里P6面经](https://mp.weixin.qq.com/s/WOS6HMdt1-mAGuLiC30_-Q) + + [小姐姐面试蚂蚁金服被虐经历,心疼...](https://mp.weixin.qq.com/s/nzvg3e-RgM59zs9WSeUpLg) + + [一位读者小姐姐的阿里面经分享,快被问哭了!(附部分问题详解)](https://mp.weixin.qq.com/s/jnegDdp4OMSKynZl8OBIpw) + + [朋友怎样刚拿饿了么P7 offer,然后途虎一轮游的](https://mp.weixin.qq.com/s/e6MpOuxeZ53fAatNBhiC9A) + + [朋友离职了,一周面了 20 多场,新鲜面经奉上](https://mp.weixin.qq.com/s/muXoICVmoXxm3XNiNHB5lg) + + [阿里云二面:zookeeper一致性算法](https://mp.weixin.qq.com/s/J2is0iapoxn5ZuQySX9SKw) + +[敖丙读者一个月面试近20家大中小厂,在互联网寒冬突破重围,成功上岸阿里云 !](https://mp.weixin.qq.com/s/F2TiFw-LYFXMRj_hsD-TIw) \ No newline at end of file diff --git a/docs/basics/HashMap.md b/docs/basics/HashMap.md index 919c860..91908a9 100644 --- a/docs/basics/HashMap.md +++ b/docs/basics/HashMap.md @@ -246,7 +246,7 @@ Java8在同样的前提下并不会引起死循环,原因是扩容转移后前 我想起来了面试官! -因为在java中,所有的对象都是继承于Object类。Ojbect类中有两个方法equals、hashCode,这两个方法都是用来比较两个对象是否相等的。 +因为在java中,所有的对象都是继承于Object类。Object类中有两个方法equals、hashCode,这两个方法都是用来比较两个对象是否相等的。 在未重写equals方法我们是继承了object的equals方法,**那里的 equals是比较两个对象的内存地址**,显然我们new了2个对象内存地址肯定不一样 diff --git "a/docs/idea/\350\265\204\346\226\231.md" "b/docs/idea/\350\265\204\346\226\231.md" index 5617836..8b3a7f4 100644 --- "a/docs/idea/\350\265\204\346\226\231.md" +++ "b/docs/idea/\350\265\204\346\226\231.md" @@ -4,9 +4,11 @@ 学习路线对应文章: https://www.bilibili.com/read/cv5006822 -简历模板:链接:https://pan.baidu.com/s/1n-K9CKs_MAlfIIyIFyu7ng 密码:moxs +简历模板 链接: https://pan.baidu.com/s/1n-K9CKs_MAlfIIyIFyu7ng 密码:moxs -概要设计模板:https://pan.baidu.com/s/1X7QUT9c7bHMEgQ4vjI9O8A 密码:3fli +概要设计模板: https://pan.baidu.com/s/1X7QUT9c7bHMEgQ4vjI9O8A 密码:3fli + +电子书 : 链接:https://pan.baidu.com/s/1PKO0LDspwJPNqT6qwqNorQ 密码:f654 Java高级架构体系资料: https://pan.baidu.com/s/1B83Kvb9n2LTgKSmSvbt_Aw 提取码: msba diff --git a/docs/mq/RocketMQ.md b/docs/mq/RocketMQ.md deleted file mode 100644 index 72be586..0000000 --- a/docs/mq/RocketMQ.md +++ /dev/null @@ -1,544 +0,0 @@ -> -> -> 你知道的越多,你不知道的越多 - -> 点赞再看,养成习惯 - -> 本文**GitHub** [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 已收录,有一线大厂面试点脑图、个人联系方式和技术交流群,欢迎Star和指教 - -## 前言 - -**消息队列**在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在**消息队列**的使用和原理方面对小伙伴们进行360°的刁难。 - -作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚(**请允许我使用一下夸张的修辞手法**)。 - -于是在一个寂寞难耐的夜晚,我痛定思痛,决定开始写**《吊打面试官》**系列,希望能帮助各位读者以后面试势如破竹,对面试官进行360°的反击,吊打问你的面试官,让一同面试的同僚瞠目结舌,疯狂收割大厂Offer! - -## 捞一下 - -消息队列系列前面两章分别讲了**消息队列**的基础知识,还有比较常见的问题和常见分布式事务解决方案,那么在实际开发过程中,我们使用频率比较高的消息队列中间件有哪些呢? - -帅丙我工作以来接触的消息队列中间件有**RocketMQ**、**Kafka**、**自研**,是的因为我主要接触的都是电商公司,相对而言业务体量还有场景来说都是他们比较适合,再加上杭州阿里系公司偏多,身边同事或者公司老大基本都是阿里出来创业的,那在使用技术栈的时候**阿里系的开源框架**也就成了首选。 - -就算是自研的中间件多多少少也是借鉴RocketMQ、Kafka的优点自研的,那我后面两章就分别简单的介绍下两者,他们分别在业务场景和大数据领域各自发光发热。 - -那到底是道德的沦丧,还是人性的泯灭,让我们跟着敖丙走进RocketMQ的内心世界。 - -## 正文 - -### RocketMQ简介 - -> RocketMQ是一个纯Java、分布式、队列模型的开源消息中间件,前身是MetaQ,是阿里参考Kafka特点研发的一个队列模型的消息中间件,后开源给apache基金会成为了apache的顶级开源项目,具有高性能、高可靠、高实时、分布式特点。 - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9hjvwekvkg309j06makn.gif) - -我们再看下阿里给他取的名字哈:**Rocket** 火箭 阿里这是希望他上天呀,不过我觉得这个名字确实挺酷的。 - -### 我们先看看他最新的官网 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g9953w22ogj30rr0o646c.jpg) - -### 回顾一下他的心路历程 - -**2007年**:淘宝实施了“五彩石”项目,“五彩石”用于将交易系统从单机变成分布式,也是在这个过程中产生了阿里巴巴第一代消息引擎——Notify。 - -**2010年**:阿里巴巴B2B部门基于ActiveMQ的5.1版本也开发了自己的一款消息引擎,称为Napoli,这款消息引擎在B2B里面广泛地被使用,不仅仅是在交易领域,在很多的后台异步解耦等方面也得到了广泛的应用。 - -**2011年**:业界出现了现在被很多大数据领域所推崇的Kafka消息引擎,阿里巴巴在研究了Kafka的整体机制和架构设计之后,基于Kafka的设计使用Java进行了完全重写并推出了**MetaQ 1.0**版本,主要是用于解决顺序消息和海量堆积的问题。 - -**2012年**:阿里巴巴开源其自研的第三代分布式消息中间件——**RocketMQ**。 - -经过几年的技术打磨,阿里称基于RocketMQ技术,目前双十一当天消息容量可达到万亿级。 - -**2016年11月**:阿里将RocketMQ捐献给**Apache**软件基金会,正式成为孵化项目。 - -阿里称会将其打造成顶级项目。**这是阿里迈出的一大步**,因为加入到开源软件基金会需要经过评审方的考核与观察。 - -坦率而言,业界还对国人的代码开源参与度仍保持着刻板印象;而Apache基金会中的342个项目中,暂时还只有Kylin、CarbonData、Eagle 、Dubbo和 RocketMQ 共计五个中国技术人主导的项目。 - -**2017年2月20日**:RocketMQ正式发布4.0版本,专家称新版本适用于电商领域,金融领域,大数据领域,兼有物联网领域的编程模型。 - -以上就是RocketMQ的整体发展历史,其实在阿里巴巴内部围绕着RocketMQ内核打造了三款产品,分别是**MetaQ**、**Notify**和**Aliware MQ**。 - -这三者分别采用了不同的模型,**MetaQ**主要使用了拉模型,解决了顺序消息和海量堆积问题;**Notify**主要使用了推模型,解决了事务消息;而云产品**Aliware MQ**则是提供了商业化的版本。 - -### 经历多次双11洗礼的英雄 - - 在备战2016年双十一时,**RocketMq**团队重点做了**两件事情**,优化慢请求与统一存储引擎。 - -- **优化慢请求**:这里主要是解决在海量高并发场景下降低慢请求对整个集群带来的抖动,**毛刺问题**。这是一个极具挑战的技术活,团队同学经过长达1个多月的跟进调优,从双十一的复盘情况来看,99.996%的延迟落在了10ms以内,**而99.6%的延迟在1ms以内**。优化主要集中在**RocketMQ**存储层算法优化、JVM与操作系统调优。更多的细节大家可以参考《万亿级数据洪峰下的分布式消息引擎》。 -- **统一存储引擎**:主要解决的消息引擎的高可用,成本问题。在多代消息引擎共存的前提下,我们对Notify的存储模块进行了全面移植与替换。 - -**RocketMQ天生为金融互联网领域而生**,追求高可靠、高可用、高并发、低延迟,是一个阿里巴巴由内而外成功孕育的典范,除了阿里集团上千个应用外,根据我们不完全统计,国内至少有上百家单位、科研教育机构在使用。 - -**RocketMQ**在阿里集团也被广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,**binglog**分发等场景。 - -### 他所拥有的功能 - -我们直接去**GitHub**上看**Apache**对他的描述可能会好点 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g98ystiybgj30np0jagpg.jpg) - -是的功能完整到爆炸基本上开发完全够用,什么?看不懂专业词汇的英文? - -帅丙是暖男来的嘛,中文功能如下 ↓ - -- 发布/订阅消息传递模型 -- 财务级交易消息 -- 各种跨语言客户端,例如Java,C / C ++,Python,Go -- 可插拔的传输协议,例如TCP,SSL,AIO -- 内置的消息跟踪功能,还支持开放式跟踪 -- 多功能的大数据和流生态系统集成 -- 按时间或偏移量追溯消息 -- 可靠的FIFO和严格的有序消息传递在同一队列中 -- 高效的推拉消费模型 -- 单个队列中的百万级消息累积容量 -- 多种消息传递协议,例如JMS和OpenMessaging -- 灵活的分布式横向扩展部署架构 -- 快如闪电的批量消息交换系统 -- 各种消息过滤器机制,例如SQL和Tag -- 用于隔离测试和云隔离群集的Docker映像 -- 功能丰富的管理仪表板,用于配置,指标和监视 -- 认证与授权 - -### 他的项目结构组成是怎么样子的? - -> GitHub地址:https://github.com/apache/rocketmq - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g994wb4851j30b60jgn28.jpg) - -他的核心模块: - -- rocketmq-broker:接受生产者发来的消息并存储(通过调用rocketmq-store),消费者从这里取得消息 -- rocketmq-client:提供发送、接受消息的客户端API。 -- rocketmq-namesrv:NameServer,类似于Zookeeper,这里保存着消息的TopicName,队列等运行时的元信息。 -- rocketmq-common:通用的一些类,方法,数据结构等。 -- rocketmq-remoting:基于Netty4的client/server + fastjson序列化 + 自定义二进制协议。 -- rocketmq-store:消息、索引存储等。 -- rocketmq-filtersrv:消息过滤器Server,需要注意的是,要实现这种过滤,需要上传代码到MQ!(一般而言,我们利用Tag足以满足大部分的过滤需求,如果更灵活更复杂的过滤需求,可以考虑filtersrv组件)。 -- rocketmq-tools:命令行工具。 - -### 他的架构组成,或者理解为为什么他这么快?这么强?这么厉害? - -他主要有四大核心组成部分:**NameServer**、**Broker**、**Producer**以及**Consumer**四部分。 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g9908d8kj5j30nb0fwdh9.jpg) - -**Tip**:我们可以看到**RocketMQ**啥都是**集群**部署的,这是他**吞吐量大**,**高可用**的原因之一,集群的模式也很花哨,可以支持多master 模式、多master多slave异步复制模式、多 master多slave同步双写模式。 - -而且这个模式好像Kafka啊!(我这里是废话,本身就是阿里基于Kafka的很多特性研发的)。 - -### 分别介绍下各个集群组成部分吧 - -### NameServer: - -> 主要负责对于源数据的管理,包括了对于**Topic**和路由信息的管理。 - -**NameServer**是一个功能齐全的服务器,其角色类似Dubbo中的Zookeeper,但NameServer与Zookeeper相比更轻量。主要是因为每个NameServer节点互相之间是独立的,没有任何信息交互。 - -**NameServer**压力不会太大,平时主要开销是在维持心跳和提供Topic-Broker的关系数据。 - -但有一点需要注意,Broker向NameServer发心跳时, 会带上当前自己所负责的所有**Topic**信息,如果**Topic**个数太多(万级别),会导致一次心跳中,就Topic的数据就几十M,网络情况差的话, 网络传输失败,心跳失败,导致NameServer误认为Broker心跳失败。 - -**NameServer** 被设计成几乎无状态的,可以横向扩展,节点之间相互之间无通信,通过部署多台机器来标记自己是一个伪集群。 - -每个 Broker 在启动的时候会到 NameServer 注册,Producer 在发送消息前会根据 Topic 到 **NameServer** 获取到 Broker 的路由信息,Consumer 也会定时获取 Topic 的路由信息。 - -所以从功能上看NameServer应该是和 ZooKeeper 差不多,据说 RocketMQ 的早期版本确实是使用的 ZooKeeper ,后来改为了自己实现的 NameServer 。 - -我们看一下**Dubbo**中注册中心的角色,是不是真的一毛一样,师出同门相似点真的很多: - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9hk6880vrj30qw0k5abb.jpg) - -### Producer - -> 消息生产者,负责产生消息,一般由业务系统负责产生消息。 - -- **Producer**由用户进行分布式部署,消息由**Producer**通过多种负载均衡模式发送到**Broker**集群,发送低延时,支持快速失败。 - -- **RocketMQ** 提供了三种方式发送消息:同步、异步和单向 - - - **同步发送**:同步发送指消息发送方发出数据后会在收到接收方发回响应之后才发下一个数据包。一般用于重要通知消息,例如重要通知邮件、营销短信。 - - - **异步发送**:异步发送指发送方发出数据后,不等接收方发回响应,接着发送下个数据包,一般用于可能链路耗时较长而对响应时间敏感的业务场景,例如用户视频上传后通知启动转码服务。 - - - **单向发送**:单向发送是指只负责发送消息而不等待服务器回应且没有回调函数触发,适用于某些耗时非常短但对可靠性要求并不高的场景,例如日志收集。 - -### Broker - -> 消息中转角色,负责**存储消息**,转发消息。 - -- **Broker**是具体提供业务的服务器,单个Broker节点与所有的NameServer节点保持长连接及心跳,并会定时将**Topic**信息注册到NameServer,顺带一提底层的通信和连接都是**基于Netty实现**的。 -- **Broker**负责消息存储,以Topic为纬度支持轻量级的队列,单机可以支撑上万队列规模,支持消息推拉模型。 -- 官网上有数据显示:具有**上亿级消息堆积能力**,同时可**严格保证消息的有序性**。 - -### Consumer - -> 消息消费者,负责消费消息,一般是后台系统负责异步消费。 - -- **Consumer**也由用户部署,支持PUSH和PULL两种消费模式,支持**集群消费**和**广播消息**,提供**实时的消息订阅机制**。 - - - **Pull**:拉取型消费者(Pull Consumer)主动从消息服务器拉取信息,只要批量拉取到消息,用户应用就会启动消费过程,所以 Pull 称为主动消费型。 -- **Push**:推送型消费者(Push Consumer)封装了消息的拉取、消费进度和其他的内部维护工作,将消息到达时执行的回调接口留给用户应用程序来实现。所以 Push 称为被动消费类型,但从实现上看还是从消息服务器中拉取消息,不同于 Pull 的是 Push 首先要注册消费监听器,当监听器处触发后才开始消费消息。 - -**Tip**: **GItHub** [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 有一线大厂面经和面试考察点脑图,也有个人联系方式。 - -### 消息领域模型 - -![](https://img-blog.csdn.net/20180129202958831) - -#### Message - -**Message**(消息)就是要传输的信息。 - -一条消息必须有一个主题(Topic),主题可以看做是你的信件要邮寄的地址。 - -一条消息也可以拥有一个可选的标签(Tag)和额处的键值对,它们可以用于设置一个业务 Key 并在 Broker 上查找此消息以便在开发期间查找问题。 - -#### Topic - -**Topic**(主题)可以看做消息的规类,它是消息的第一级类型。比如一个电商系统可以分为:交易消息、物流消息等,一条消息必须有一个 Topic 。 - -**Topic** 与生产者和消费者的关系非常松散,一个 Topic 可以有0个、1个、多个生产者向其发送消息,一个生产者也可以同时向不同的 Topic 发送消息。 - -一个 Topic 也可以被 0个、1个、多个消费者订阅。 - -#### Tag - -**Tag**(标签)可以看作子主题,它是消息的第二级类型,用于为用户提供额外的灵活性。使用标签,同一业务模块不同目的的消息就可以用相同 Topic 而不同的 **Tag** 来标识。比如交易消息又可以分为:交易创建消息、交易完成消息等,一条消息可以没有 **Tag** 。 - -标签有助于保持您的代码干净和连贯,并且还可以为 **RocketMQ** 提供的查询系统提供帮助。 - -#### Group - -分组,一个组可以订阅多个Topic。 - -分为ProducerGroup,ConsumerGroup,代表某一类的生产者和消费者,一般来说同一个服务可以作为Group,同一个Group一般来说发送和消费的消息都是一样的 - -#### Queue - - 在**Kafka**中叫Partition,每个Queue内部是有序的,在**RocketMQ**中分为读和写两种队列,一般来说读写队列数量一致,如果不一致就会出现很多问题。 - -#### Message Queue - -**Message Queue**(消息队列),主题被划分为一个或多个子主题,即消息队列。 - -一个 Topic 下可以设置多个消息队列,发送消息时执行该消息的 Topic ,RocketMQ 会轮询该 Topic 下的所有队列将消息发出去。 - -消息的物理管理单位。一个Topic下可以有多个Queue,Queue的引入使得消息的存储可以分布式集群化,具有了水平扩展能力。 - -#### Offset - -在**RocketMQ** 中,所有消息队列都是持久化,长度无限的数据结构,所谓长度无限是指队列中的每个存储单元都是定长,访问其中的存储单元使用Offset 来访问,Offset 为 java long 类型,64 位,理论上在 100年内不会溢出,所以认为是长度无限。 - -也可以认为 Message Queue 是一个长度无限的数组,**Offset** 就是下标。 - -#### 消息消费模式 - -消息消费模式有两种:**Clustering**(集群消费)和**Broadcasting**(广播消费)。 - -默认情况下就是集群消费,该模式下一个消费者集群共同消费一个主题的多个队列,一个队列只会被一个消费者消费,如果某个消费者挂掉,分组内其它消费者会接替挂掉的消费者继续消费。 - -而广播消费消息会发给消费者组中的每一个消费者进行消费。 - -#### Message Order - -**Message Order**(消息顺序)有两种:**Orderly**(顺序消费)和**Concurrently**(并行消费)。 - -顺序消费表示消息消费的顺序同生产者为每个消息队列发送的顺序一致,所以如果正在处理全局顺序是强制性的场景,需要确保使用的主题只有一个消息队列。 - -并行消费不再保证消息顺序,消费的最大并行数量受每个消费者客户端指定的线程池限制。 - -### 一次完整的通信流程是怎样的? - -Producer 与 NameServer集群中的其中一个节点(随机选择)建立长连接,定期从 NameServer 获取 **Topic** 路由信息,并向提供 Topic 服务的 **Broker Master** 建立长连接,且定时向 **Broker** 发送心跳。 - -**Producer** 只能将消息发送到 Broker master,但是 **Consumer** 则不一样,它同时和提供 Topic 服务的 Master 和 Slave建立长连接,既可以从 Broker Master 订阅消息,也可以从 Broker Slave 订阅消息。 - -具体如下图: - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g990ne2odpj30bj07kjrq.jpg) - -我上面说过他跟**Dubbo**像不是我瞎说的,就连他的注册过程都很像**Dubbo**的服务暴露过程。 - -是不是觉得很简单,但是你同时也产生了好奇心,每一步是怎么初始化启动的呢? - -帅丙呀就知道大家都是**求知欲极强的人才**,这不我都准备好了,我们一步步分析一下。 - -主要是人才群里的仔要求我写出来。。。(文末有进群方式) - -#### NameService启动流程 - -在org.apache.rocketmq.namesrv目录下的**NamesrvStartup**这个启动类基本上描述了他的启动过程我们可以看一下代码: - - - 第一步是初始化配置 - - - 创建**NamesrvController**实例,并开启两个定时任务: - - - 每隔10s扫描一次**Broker**,移除处于不激活的**Broker**; - - - 每隔10s打印一次KV配置。 - - ![](https://tva1.sinaimg.cn/large/006tNbRwly1g9hk0fn5l5j315u0na7c0.jpg) - - - 第三步注册钩子函数,启动服务器并监听Broker。 - -**NameService**还有很多东西的哈我这里就介绍他的启动流程,大家还可以去看看代码,还是很有意思的,比如路由注册会发送心跳包,还有**心跳包的处理流程**,**路由删除**,**路由发现**等等。 - -**Tip**:本来我想贴很多源码的,后面跟**歪歪(Java3y)**讨论了很久做出了不贴的决定,大家理解过程为主!我主要是做只是扫盲还有一些痛点分析嘛,深究还是得大家花时间,我要啥都介绍篇幅就不够了。 - -#### Producer - -链路很长涉及的细节也多,我就发一下链路图。 - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9hixadhgfj30wl0icabx.jpg) - -**Producer**是消息发送方,那他怎么发送的呢? - -通过轮训,**Producer**轮训某个**Topic**下面的所有队列实现发送方的负载均衡 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g9983lv0bqj30fj076mxg.jpg) - -#### Broker - -**Broker**在RocketMQ中是进行处理Producer发送消息请求,Consumer消费消息的请求,并且进行消息的持久化,以及HA策略和服务端过滤,就是集群中很重的工作都是交给了**Broker**进行处理。 - -**Broker**模块是通过BrokerStartup进行启动的,会实例化BrokerController,并且调用其初始化方法 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g998c3slw4j30sg0gpwhf.jpg) - -大家去看**Broker**的源码的话会发现,他的**初始化流程很冗长**,会根据配置创建很多线程池主要用来**发送消息**、**拉取消息**、**查询消息**、**客户端管理**和**消费者管理**,也有很多**定时任务**,同时也注册了很多**请求处理器**,用来发送拉取消息查询消息的。 - -#### Consumer - -不说了直接怼图吧!要死了,下次我还是做扫盲,写点爽文吧555 - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9hh97vkpuj30s50fwdin.jpg) - -**Consumer**是消息接受,那他怎么接收消息的呢? - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9hhknjydzj30g9073q36.jpg) - -消费端会通过**RebalanceService**线程,10秒钟做一次基于**Topic**下的所有队列负载。 - -## 面试常见问题分析 - -### 他的优缺点是啥 - -RocketMQ优点: - -- 单机吞吐量:十万级 - -- 可用性:非常高,分布式架构 - -- 消息可靠性:经过参数优化配置,消息可以做到0丢失 - -- 功能支持:MQ功能较为完善,还是分布式的,扩展性好 - -- 支持10亿级别的消息堆积,不会因为堆积导致性能下降 - -- 源码是java,我们可以自己阅读源码,定制自己公司的MQ,可以掌控 - -- 天生为金融互联网领域而生,对于可靠性要求很高的场景,尤其是电商里面的订单扣款,以及业务削峰,在大量交易涌入时,后端可能无法及时处理的情况 - -- **RoketMQ**在稳定性上可能更值得信赖,这些业务场景在阿里双11已经经历了多次考验,如果你的业务有上述并发场景,建议可以选择**RocketMQ** - -RocketMQ缺点: - -- 支持的客户端语言不多,目前是java及c++,其中c++不成熟 - -- 社区活跃度不是特别活跃那种 - -- 没有在 mq 核心中去实现**JMS**等接口,有些系统要迁移需要修改大量代码 - -### 消息去重 - -去重原则:使用业务端逻辑保持幂等性 - -**幂等性**:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用,数据库的结果都是唯一的,不可变的。 - -只要保持幂等性,不管来多少条重复消息,最后处理的结果都一样,需要业务端来实现。 - -**去重策略**:保证每条消息都有唯一编号(**比如唯一流水号)**,且保证消息处理成功与去重表的日志同时出现。 - -建立一个消息表,拿到这个消息做数据库的insert操作。给这个消息做一个唯一主键(primary key)或者唯一约束,那么就算出现重复消费的情况,就会导致主键冲突,那么就不再处理这条消息。 - -### 消息重复 - -消息领域有一个对消息投递的QoS定义,分为: - -- 最多一次(At most once) -- 至少一次(At least once) -- 仅一次( Exactly once) - -> QoS:Quality of Service,服务质量 - -几乎所有的MQ产品都声称自己做到了**At least once**。 - -既然是至少一次,那避免不了消息重复,尤其是在分布式网络环境下。 - -比如:网络原因闪断,ACK返回失败等等故障,确认信息没有传送到消息队列,导致消息队列不知道自己已经消费过该消息了,再次将该消息分发给其他的消费者。 - -不同的消息队列发送的确认信息形式不同,例如**RabbitMQ**是发送一个ACK确认消息,**RocketMQ**是返回一个CONSUME_SUCCESS成功标志,**Kafka**实际上有个offset的概念。 - -**RocketMQ**没有内置消息去重的解决方案,最新版本是否支持还需确认。 - -### 消息的可用性 - -当我们选择好了集群模式之后,那么我们需要关心的就是怎么去存储和复制这个数据,**RocketMQ**对消息的刷盘提供了同步和异步的策略来满足我们的,当我们选择同步刷盘之后,如果刷盘超时会给返回FLUSH_DISK_TIMEOUT,如果是异步刷盘不会返回刷盘相关信息,选择同步刷盘可以尽最大程度满足我们的消息不会丢失。 - -除了存储有选择之后,我们的主从同步提供了同步和异步两种模式来进行复制,当然选择同步可以提升可用性,但是消息的发送RT时间会下降10%左右。 - -**RocketMQ**采用的是混合型的存储结构,即为**Broker**单个实例下所有的队列共用一个日志数据文件(即为CommitLog)来存储。 - -而**Kafka**采用的是独立型的存储结构,每个队列一个文件。 - -这里帅丙认为,**RocketMQ**采用混合型存储结构的缺点在于,会存在较多的随机读操作,因此读的效率偏低。同时消费消息需要依赖**ConsumeQueue**,构建该逻辑消费队列需要一定开销。 - -### RocketMQ 刷盘实现 - - **Broker** 在消息的存取时直接操作的是内存(内存映射文件),这可以提供系统的吞吐量,但是无法避免机器掉电时数据丢失,所以需要持久化到磁盘中。 - -刷盘的最终实现都是使用**NIO**中的 MappedByteBuffer.force() 将映射区的数据写入到磁盘,如果是同步刷盘的话,在**Broker**把消息写到**CommitLog**映射区后,就会等待写入完成。 - -异步而言,只是唤醒对应的线程,不保证执行的时机,流程如图所示。 - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9fzta1rbij30d30b40vj.jpg) - -### 顺序消息: - -我简单的说一下我们使用的**RocketMQ**里面的一个简单实现吧。 - -**Tip**:为啥用**RocketMQ**举例呢,这玩意是阿里开源的,我问了下身边的朋友很多公司都有使用,所以读者大概率是这个的话我就用这个举例吧,具体的细节我后面会在**RocketMQ**和**Kafka**各自章节说到。 - -生产者消费者一般需要保证顺序消息的话,可能就是一个业务场景下的,比如订单的创建、支付、发货、收货。 - -那这些东西是不是一个订单号呢?一个订单的肯定是一个订单号的说,那简单了呀。 - -**一个topic下有多个队列**,为了保证发送有序,**RocketMQ**提供了**MessageQueueSelector**队列选择机制,他有三种实现: - -![](https://img-blog.csdnimg.cn/20181128124324615.png) - -我们可使用**Hash取模法**,让同一个订单发送到同一个队列中,再使用同步发送,只有同个订单的创建消息发送成功,再发送支付消息。这样,我们保证了发送有序。 - -**RocketMQ**的topic内的队列机制,可以保证存储满足**FIFO**(First Input First Output 简单说就是指先进先出),剩下的只需要消费者顺序消费即可。 - -**RocketMQ**仅保证顺序发送,顺序消费由消费者业务保证!!! - -这里很好理解,一个订单你发送的时候放到一个队列里面去,你同一个的订单号Hash一下是不是还是一样的结果,那肯定是一个消费者消费,那顺序是不是就保证了? - -真正的顺序消费不同的中间件都有自己的不同实现我这里就举个例子,大家思路理解下。 - -### 分布式事务: - -#### Half Message(半消息) - -**是指暂不能被Consumer消费的消息**。Producer 已经把消息成功发送到了 Broker 端,但此消息被标记为`暂不能投递`状态,处于该种状态下的消息称为半消息。需要 Producer - -对消息的`二次确认`后,Consumer才能去消费它。 - -#### 消息回查 - -由于网络闪段,生产者应用重启等原因。导致 **Producer** 端一直没有对 **Half Message(半消息)** 进行 **二次确认**。这是**Brock**服务器会定时扫描`长期处于半消息的消息`,会 - -主动询问 **Producer**端 该消息的最终状态(**Commit或者Rollback**),该消息即为 **消息回查**。 - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9hhqfstm1j31do0fgjy9.jpg) - -1. A服务先发送个Half Message给Brock端,消息中携带 B服务 即将要+100元的信息。 -2. 当A服务知道Half Message发送成功后,那么开始第3步执行本地事务。 -3. 执行本地事务(会有三种情况1、执行成功。2、执行失败。3、网络等原因导致没有响应) -4. 如果本地事务成功,那么Product像Brock服务器发送Commit,这样B服务就可以消费该message。 -5. 如果本地事务失败,那么Product像Brock服务器发送Rollback,那么就会直接删除上面这条半消息。 -6. 如果因为网络等原因迟迟没有返回失败还是成功,那么会执行RocketMQ的回调接口,来进行事务的回查。 - -### 消息过滤 - -- **Broker**端消息过滤   - 在**Broker**中,按照**Consumer**的要求做过滤,优点是减少了对于**Consumer**无用消息的网络传输。缺点是增加了Broker的负担,实现相对复杂。 -- **Consumer**端消息过滤 - 这种过滤方式可由应用完全自定义实现,但是缺点是很多无用的消息要传输到**Consumer**端。 - -### Broker的Buffer问题 - -Broker的**Buffer**通常指的是Broker中一个队列的内存Buffer大小,这类**Buffer**通常大小有限。 - -另外,RocketMQ没有内存**Buffer**概念,RocketMQ的队列都是持久化磁盘,数据定期清除。 - -RocketMQ同其他MQ有非常显著的区别,RocketMQ的内存**Buffer**抽象成一个无限长度的队列,不管有多少数据进来都能装得下,这个无限是有前提的,Broker会定期删除过期的数据。 - -例如Broker只保存3天的消息,那么这个**Buffer**虽然长度无限,但是3天前的数据会被从队尾删除。 - -### 回溯消费 - -回溯消费是指Consumer已经消费成功的消息,由于业务上的需求需要重新消费,要支持此功能,Broker在向Consumer投递成功消息后,消息仍然需要保留。并且重新消费一般是按照时间维度。 - -例如由于Consumer系统故障,恢复后需要重新消费1小时前的数据,那么Broker要提供一种机制,可以按照时间维度来回退消费进度。 - -**RocketMQ**支持按照时间回溯消费,时间维度精确到毫秒,可以向前回溯,也可以向后回溯。 - -### 消息堆积 - -消息中间件的主要功能是异步解耦,还有个重要功能是挡住前端的数据洪峰,保证后端系统的稳定性,这就要求消息中间件具有一定的消息堆积能力,消息堆积分以下两种情况: - -- 消息堆积在内存**Buffer**,一旦超过内存**Buffer**,可以根据一定的丢弃策略来丢弃消息,如CORBA Notification规范中描述。适合能容忍丢弃消息的业务,这种情况消息的堆积能力主要在于内存**Buffer**大小,而且消息堆积后,性能下降不会太大,因为内存中数据多少对于对外提供的访问能力影响有限。 -- 消息堆积到持久化存储系统中,例如DB,KV存储,文件记录形式。 当消息不能在内存Cache命中时,要不可避免的访问磁盘,会产生大量读IO,读IO的吞吐量直接决定了消息堆积后的访问能力。 -- 评估消息堆积能力主要有以下四点: - - 消息能堆积多少条,多少字节?即消息的堆积容量。 - - 消息堆积后,发消息的吞吐量大小,是否会受堆积影响? - - 消息堆积后,正常消费的Consumer是否会受影响? - - 消息堆积后,访问堆积在磁盘的消息时,吞吐量有多大? - -### 定时消息 - -定时消息是指消息发到**Broker**后,不能立刻被**Consumer**消费,要到特定的时间点或者等待特定的时间后才能被消费。 - -如果要支持任意的时间精度,在**Broker**层面,必须要做消息排序,如果再涉及到持久化,那么消息排序要不可避免的产生巨大性能开销。 - -**RocketMQ**支持定时消息,但是不支持任意时间精度,支持特定的level,例如定时5s,10s,1m等。 - -## 总结 - -写这种单纯介绍中间件的枯燥乏味,大家看起来估计也累,目前已经破一万个字了,以后我这种类型的少写,大家老是让我写点深度的,我说真的很多东西我源码一贴,看都没人看。 - -**Kafka**我就不发博客了,大家可以去**GItHub**上第一时间阅读,后面会出怎么搭建项目在服务器的教程,还有一些大牛个人经历和个人书单的东西,今年应该先这么写,主要是真心太忙了,望理解。 - -## 絮叨 - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9hj3o7hm1j30nj0igq5x.jpg) - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9hj434k7vj30re0fxq4c.jpg) - -我也不过多描述了,反正嘛网络上重拳出击嘛,现实中唯唯诺诺,让他说理由也说不出来,不回我。 - -他说的是下面这个场景多线程的情况,就是第一个线程还没走完,第二个现在进来,也判断没处理过那不就两个都继续加了么? - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9hj5k3v0ej30910iv0wh.jpg) - -**订单号+业务场景**,组成一个唯一主键,你插入数据库只能成功第一个,后续的都会报错的,报违反唯一主键的错误。 - -还有就是有人疑惑为啥不直接就不判断就等他插入的时候报错,丢掉后续的就好了? - -你要知道**报错有很多种**,你哪里知道不是数据库挂了的错?或者别的运行时异常? - -不过你如果可以做到抛特定的异常也可以,反正我们要**减少数据库的报错**,如果并发大,像我现在负责的系统都是10W+QPS,那日志会打满疯狂报警的。(就是正常情况我们都经常报警) - -解决问题的思路有很多,喷我可以,讲清楚问题,讲清楚你的理由。 - -很多大家都只是单方面的知识摄入,就这样还要喷我,还有一上来就问我为啥今天没发文章,我欠你的?我工作日上班,周六周日都怼上去了,时间有限啊,哥哥。 - -大家都有自己的事情,写文章也耗时耗脑,难免出错,还望理解。 - -## 日常求赞 - -好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是**人才**。 - -我后面会每周都更新几篇《吊打面试官》系列和互联网常用技术栈相关的文章,非常感谢**人才**们能看到这里,如果这个文章写得还不错,觉得「敖丙」我**有点东西**的话 **求点赞👍** **求关注❤️** **求分享👥** 对暖男我来说真的 **非常有用**!!! - -创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见! - -敖丙 | 文 【原创】【转载请联系本人】 如果本篇博客有任何错误,请批评指教,不胜感激 ! - ------- - -> 《吊打面试官》系列每周持续更新,可以关注我的公众号「 **JavaFamily** 」第一时间阅读和催更(公众号比博客早一到两篇哟),本文**GitHub**[https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 已收录,有一线大厂面试点思维导图,欢迎Star和完善,里面也有我个人联系方式有什么问题也可以直接找我,也有技术交流群,我们一起有点东西。 diff --git "a/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\347\241\200.md" "b/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\347\241\200.md" deleted file mode 100644 index 87e737c..0000000 --- "a/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\347\241\200.md" +++ /dev/null @@ -1,278 +0,0 @@ -> 你知道的越多,你不知道的越多 - -> 点赞再看,养成习惯 - -> **GitHub**上已经开源 [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 - -## 前言 - -**消息队列**在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在**消息队列**的使用和原理方面对小伙伴们进行360°的刁难。 - -作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚(**请允许我使用一下夸张的修辞手法**)。 - -于是在一个寂寞难耐的夜晚,**暖男**我痛定思痛,决定开始写**《吊打面试官》**系列,希望能帮助各位读者以后面试势如破竹,对面试官进行360°的反击,吊打问你的面试官,让一同面试的同僚瞠目结舌,疯狂收割大厂Offer! - -## 絮叨 - -这期本来是准备大家投票出来的哈,然后在**Java基础**和**消息队列**选一个写的,但是我一想,Java基础光是集合每种集合我都可以写好几篇了,基础都得写几个月了,那是不是可以先把短的这个消息队列写了? - -我脑子**灵光一闪**,拍了下桌子,那就这么决定了吧! - -所以就有这期了哈哈。 - -**重要!**在开始之前我想问一下,大家是喜欢我直接怼知识点用自己的语言组织的方式讲,还是这样面试场景的方式讲? - -因为我发现一个很严肃的问题,我的开场和结尾要是几百篇都差不多,最后你们会不会厌倦呀? - -总之这个建议对我很有用,或者你有什么写作的建议都可以去**GitHub** [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 上面有我的联系方式,可以加我微信**悄悄**跟我说。 - - - -## 面试开始 - ->一个风度翩翩,穿着格子衬衣的中年男子,拿着一个满是划痕的mac向你走来,看着铮亮的头,心想着肯定是尼玛顶级架构师吧!但是我们看过暖男敖丙的系列,腹有诗书气自华,虚都不虚。 - -![](https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1573833391430&di=f71f2ee36285f2bd553423b29d9a9ff9&imgtype=0&src=http%3A%2F%2Fpic4.zhimg.com%2Fv2-f698be82de32b998da130d425287b797_b.jpg) - -### 小伙子之前问了你这么多Redis的知识,你不仅对答如流,你还能把各自场景的解决方案,优缺点说得这么流畅,说你是不是看过敖丙写的《吊打面试官》系列呀? - -惊!!!老师你怎么知道的,我看了他的系列根本停不下来啊。 - -### 呵呵,Redis没难住你,但是我问个新的技术栈我还怕难不住你?我问问你你项目中用过消息队列么?你为啥用消息队列? - -噗此,这也叫问题?别人用了我能不用么?别人用了我就用了呗,我就是为了用而用。 - -**你心里嘀咕就好了,千万别说出来哈,说出来了没拿到Offer别到时候就在那说,敖丙那个渣男教我说的!** - -![](https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=191940018,3458788842&fm=26&gp=0.jpg) - -面试官你好:我们公司本身的业务体量很小,所以直接**单机一把梭**啥都能搞定了,但是后面业务体量不断扩大,采用**微服务的设计思想**,**分布式的部署方式**,所以拆分了很多的服务,随着体量的增加以及业务场景越来越复杂了,很多场景单机的技术栈和中间件以及不够用了,而且对系统的友好性也下降了,最后做了很多技术选型的工作,我们决定引入**消息队列中间件**。 - -### 哦?你说到业务场景越来越复杂,你那说一下你都在什么场景用到了消息队列? - -嗯,我从三个方面去说一下我使用的场景吧。 - -**Tip**:这三个场景也是消息队列的经典场景,大家基本上要烂熟于心那种,就是一说到消息队列你脑子就要想到**异步、削峰、解耦**,条件反射那种。 - -#### 异步: - -我们之前的场景里面有很多步骤都是在一个流程里面需要做完的,就比如说我的下单系统吧,本来我们业务简单,下单了付了钱就好了,流程就走完了。 - -但是后面来了个产品经理,搞了个**优惠券系统**,OK问题不大,流程里面多100ms去扣减优惠券。 - -后来产品经理灵光一闪说我们可以搞个**积分系统**啊,也行吧,流程里面多了200ms去增减积分。 - -再后来后来隔壁的产品老王说:下单成功后我们要给用户发短信,也将就吧,100ms去发个短信。 - -再后来。。。(敖丙你有完没完!!!) - -![](https://i04piccdn.sogoucdn.com/78f342f734423906) - -反正就流程有点像这样 ↓ - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g93oqf542dj308c0crac9.jpg) - -你们可以看到这才加了三个,我可以**斩钉截铁**的告诉你真正的下单流程涉及的系统绝对在10个以上(主流电商),越大的越多。 - -这个链路这样下去,**时间长得一批**,用户发现我买个东西你特么要花几十秒,垃圾电商我不在你这里买了,不过要是都像**并夕夕**这么便宜,**真香**! - -但是我们公司没有夕夕的那个经济实力啊,那只能优化系统了。 - -Tip:我之前在的电商老东家要求所有接口的**Rt**(**ResponseTime响应时间**)在200ms内,超出的全部优化,我现在所负责的系统QPS也是**9W+**就是抖动一下**网络集群都可能炸锅**那种,**RT**基本上都要求在50ms以内。 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g93dicehuyj30gu05rt9c.jpg) - -**大家感受一下这个QPS。** - -### 嗯不错,链路长了就慢了,那你怎么解决的? - -那链路长了就慢了,但是我们发现上面的流程其实可以**同时做**的呀,你支付成功后,我去校验优惠券的同时我可以去增减积分啊,还可以同时发个短信啊。 - -那正常的流程我们是没办法实现的呀,怎么办,**异步**。 - -你对比一下是不是发现,这样子最多只用100毫秒用户知道下单成功了,至于短信你迟几秒发给他他根本不在意是吧。 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g93dqhk9d9j30d80d4dgb.jpg) - -### 小伙子我打断你一下,你说了异步,那我用线程,线程池去做不是一样的么? - -诶呀,面试官你**不要急嘛**,我后面还会说到的,骚等。 - -#### 解耦: - -既然面试官这么问了,我就说一下为啥我们不能用线程去做,因为用线程去做,你是不是要写代码? - -你一个订单流程,你扣积分,扣优惠券,发短信,扣库存。。。等等这么多业务要调用这么多的接口,**每次加一个你要调用一个接口然后还要重新发布系统**,写一次两次还好,写多了你就说:老子不干了! - -而且真的全部都写在一起的话,不单单是耦合这一个问题,你出问题排查也麻烦,流程里面随便一个地方出问题搞不好会影响到其他的点,小伙伴说我每个流程都**try catch**不就行了,相信我别这么做,这样的代码就像个**定时炸弹💣**,你不知道什么时候爆炸,平时不炸偏偏在你做活动的时候炸,你就领个**P0故障**收拾书包**提前回家过年**吧。 - -Tip:P0—PN 是互联网大厂经常用来判定事故等级的机制,P0是最高等级了。 - -但是你用了**消息队列**,耦合这个问题就迎刃而解了呀。 - -### 哦,帅丙怎么说? - -且听我娓娓道来: - -你下单了,你就把你**支付成功的消息告诉别的系统**,他们收到了去处理就好了,你只用走完自己的流程,把自己的消息发出去,那后面要接入什么系统简单,直接订阅你发送的支付成功消息,你支付成功了我**监听就好了**。 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g93orkh190j308c09o762.jpg) - -### 那你的流程走完了,你不用管别人是否成功么?比如你下单了积分没加,优惠券没扣怎么办? - -问题是个好问题,但是没必要考虑,业务系统本身就是自己的开发人员维护的,你积分扣失败关我下单的什么事情?你管好自己下单系统的就好了。 - -**Tip**:话是这么说,但是这其实是用了消息队列的一个缺点,涉及到**分布式事务**的知识点,我下面会提到。 - -#### 削峰: - -就拿我上一期写的秒杀来说(暗示新同学看我上一期),你平时流量很低,但是你要做秒杀活动00 :00的时候流量疯狂怼进来,你的服务器,**Redis**,**MySQL**各自的承受能力都不一样,你直接**全部流量照单全收**肯定有问题啊,直接就打挂了。 - -### 那怎么办? - -简单,把请求放到队列里面,然后至于每秒消费多少请求,就看自己的**服务器处理能力**,你能处理5000QPS你就消费这么多,可能会比正常的慢一点,但是**不至于打挂服务器**,等流量高峰下去了,你的服务也就没压力了。 - -你看阿里双十一12:00的时候这么多流量瞬间涌进去,他有时候是不是会慢一点,但是人家没挂啊,或者降级给你个友好的提示页面,等高峰过去了又是一条好汉了。 - -![为了这个图特意打高一台服务的流量](https://tva1.sinaimg.cn/large/006y8mN6ly1g93mtf9xmqj30bb055mx6.jpg) - - -### 听你说了辣么多,怎么都是好处,那我问你使用了消息队列有啥问题么? - -诶,看过前面我写的文章的**人才**都知道,我经常说的就是,**技术是把双刃剑**! - -没错面试官,我使用他是因为他带给我们很多好处,但是使用之后问题也是**接踵而至**。 - -同样的暖男我呀,也从三个点介绍他主要的缺点: - -#### 系统复杂性 - -本来蛮简单的一个系统,我代码随便写都没事,现在你凭空接入一个中间件在那,我是不是要考虑去维护他,而且使用的过程中是不是要考虑各种问题,比如消息**重复消费**、**消息丢失**、**消息的顺序消费**等等,反正用了之后就是贼烦。 - -### 我插一句嘴,上面的问题(重复消费、消息丢失、顺序消费)你能分别介绍一下,并且说一下分别是怎么解决的么? - -**不要!**我都说了敖丙下一章写啥? - -其实不是**暖男**我不想在这里写,这三个问题我想了下,统统都是**MQ**的**重点问题**,单独拿一个出来就是一篇文章了,**篇幅实在太长了**,我会在下一章挨个介绍一遍的。 - -#### 数据一致性 - -这个其实是分布式服务本身就存在的一个问题,**不仅仅是消息队列的问题**,但是放在这里说是因为用了消息队列这个问题会暴露得比较严重一点。 - -就像我开头说的,你下单的服务自己保证自己的逻辑成功处理了,你成功发了消息,但是优惠券系统,积分系统等等这么多系统,**他们成功还是失败你就不管了?** - -我说了保证自己的业务数据对的就好了,其实还是比较不负责任的一种说法,这样就**像个渣男,没有格局**,**这样呀你的路会越走越窄的**。 - -![](https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1200408743,1485217286&fm=26&gp=0.jpg) - -**所有的服务都成功才能算这一次下单是成功的**,那怎么才能保证数据一致性呢? - -**分布式事务**:把下单,优惠券,积分。。。都放在一个事务里面一样,要成功一起成功,要失败一起失败。 - -![](https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1574159715058&di=86a613461781c62c563a04c35e70525c&imgtype=0&src=http%3A%2F%2Fws1.sinaimg.cn%2Flarge%2F005GOaLIgy1g0qn53ppnvj306o046dfs.jpg) - -Tip:**分布式事务**在互联网公司里面实在常见,我也不在这里大篇幅介绍了,后面都会专门说的。 - -#### 可用性 - -你搞个系统本身没啥问题,你现在突然接入一个中间件在那放着,万一挂了怎么办?我下个单**MQ挂了**,优惠券不扣了,积分不减了,这不是杀一个程序员能搞定的吧,感觉得杀一片。 - -至于怎么保证高可用,还是那句话也不在这里展开讨论了,我后面一样会写,像写**Redis**那样写出来的。 - -**放心敖丙我不是渣男来的,我肯定会对你们负责的。点赞!** - -### 看不出来啊,你有点东西呀,那我问一下你,你们是怎么做技术选型的? - -目前在市面上比较主流的消息队列中间件主要有,**Kafka、ActiveMQ、RabbitMQ、RocketMQ** 等这几种。 - -不过敖丙我想说的是,**ActiveMQ**和**RabbitMQ**这两着因为吞吐量还有**GitHub**的社区活跃度的原因,在各大互联网公司都已经基本上绝迹了,业务体量一般的公司会是有在用的,但是越来越多的公司更青睐**RocketMQ**这样的消息中间件了。 - -**Kafka**和**RocketMQ**一直在各自擅长的领域发光发亮,不过写这篇文章的时候我问了蚂蚁金服,字节跳动和美团的朋友,好像大家用的都有点不一样,应该都是各自的中间件,可能做过修改,也可能是**自研**的,大多**没有开源**。 - -就像我们公司就是是基于**Kafka**和**RocketMQ**两者的优点自研的消息队列中间件,吞吐量、可靠性、时效性等都很可观。 - -我们回归正题,我这里用网上找的对比图让大家看看差距到底在哪里: - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g93o256nqtj30mq0puwih.jpg) - -大家其实一下子就能看到差距了,就拿**吞吐量**来说,早期比较活跃的**ActiveMQ** 和**RabbitMQ**基本上不是后两者的对手了,在现在这样大数据的年代**吞吐量是真的很重要**。 - -比如现在突然爆发了一个超级热点新闻,你的APP注册用户高达亿数,你要想办法第一时间把突发全部推送到每个人手上,你没有**大吞吐量的消息队列**中间件用啥去推? - -再说这些用户大量涌进来看了你的新闻产生了一系列的附带流量,你怎么应对这些数据,**很多场景离开消息队列基本上难以为继**。 - -就**部署方式**而言前两者也是大不如后面两个**天然分布式架构的哥哥**,都是高可用的分布式架构,而且数据多个副本的数据也能做到0丢失。 - -我们再聊一下**RabbitMQ**这个中间件其实还行,但是这玩意开发语言居然是**erlang**,我敢说绝大部分工程师肯定不会为了一个中间件去刻意学习一门语言的,开发维护成本你想都想不到,出个问题查都查半天。 - -至于**RocketMQ**(阿里开源的),git活跃度还可以。基本上你push了自己的bug确认了有问题都有阿里大佬跟你试试解答并修复的,我个人推荐的也是这个,他的架构设计部分跟同样是阿里开源的一个**RPC**框架是真的很像(**Dubbo**)可能是因为师出同门的原因吧。 - -Tip:**Dubbo**等我写到**RPC**我会详细介绍的。 - -**Kafka**我放到最后说,你们也应该知道了,压轴的这是个大哥,大数据领域,公司的日志采集,实时计算等场景,都离不开他的身影,他基本上算得上是**世界范围级别的消息队列标杆**了。 - -以上这些都只是一些我自己的**个人意见**,真正的选型还是要去**深入研究**的,不然那你公司一天UV就1000你告诉我你要去用**Kafka**我只能说你吃饱撑的。 - -**记住,没有最好的技术,只有最适合的技术,不要为了用而用**。 - -## 面试结束 - -### 嗯,小伙子不错不错,分析得很到位,那你记得下期来说一下消息队列的高可用,重复消费、消息丢失、消息顺序、分布式事务等问题? - -嗯嗯好的面试官,不过不确定能不能一口气说完,毕竟敖丙还没开始写,而且读者还有可能白嫖,动力不一定够。 - -### 嗯嗯这倒是个问题,不过啊在看的都是人才肯定会给你点赞👍的! - -我也这么认为。 - -##总结 - -![](https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1573584978404&di=7b060a364b3cc6d6ab876f8892d6f6af&imgtype=jpg&src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20190113%2F3ea1a7657be04e2281dd04b2f64a57bd.jpeg) - -**消息队列的基础知识**我就先介绍这么多,消息队列在面试里面基本上也是跟我前面写的**Redis**一样必问的。 - -面试的思路还是一样,**要知其然,也要知其所以然,就是要知道为啥用,用了有啥好处,有啥坑。** - -面试官不喜欢**只知道用**的,你只会用那哪天线上出问题怎么办?你难道在旁边拜佛? - -![](https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1574178332323&di=2d508eefa357da8065c3fd1b5cd69166&imgtype=0&src=http%3A%2F%2Fimg.jk51.com%2Fimg_jk51%2F379795628.jpeg) - -后面我会写到很多**实际开发过程中比较复杂**的情况,在面试里面基本上是必考题,我希望你们拿起小本本记下来,**不要去背,要去理解,**我在人才交流群里面有仔问我,我怎么背住这些知识点的? - -**Tip**:**GItHub** [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 上有进群方式和个人联系方式 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g93ot02f3gj30dw08bmy3.jpg) - - - -你确定没逗我?你全靠背,你通过了面试,你开发写代码的时候怎么办?难道也还是背代码?别逗了兄弟,理解是最重要的。 - -而且一般你背还是有实际开发经验的面试官一般一问就知道了,有啥坑他肯定比你清楚,会就是会,不会就不会老实回答就好了。 - -记住,**腹有诗书气自华**,我们一起学习一起进步哟。 - -## 鸣谢 - -之前的文章写了很多人加我,然后有个人才说是他**蚂蚁金服**的Leader推荐的我,我突然意识到我文章的受众好像慢慢变广了,之后不严谨的点要杜绝掉。 - -所以之后我的文章**经常会有**大厂的小伙伴Review,也希望帮助我更好的监督自己的文章吧。 - -这次是 某阿里系电商跟我一起做过活动小组的 **佩恩** 帮我**Review**的文章,感谢! - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g93q07ayuaj30vi098jso.jpg) - -## 日常求赞 - -好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是**人才**。 - -我后面会每周都更新几篇《吊打面试官》系列和互联网常用技术栈相关的文章,非常感谢**人才**们能看到这里,如果这个文章写得还不错,觉得「敖丙」我**有点东西**的话 **求点赞👍** **求关注❤️** **求分享👥** 对暖男我来说真的 **非常有用**!!! - -创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见! - -敖丙 | 文 【原创】【转载请联系本人】 如果本篇博客有任何错误,请批评指教,不胜感激 ! - ------- - -> 《吊打面试官》系列每周持续更新,可以关注我的公众号「 **JavaFamily** 」第一时间阅读和催更(公众号比博客早一到两篇哟),本文**GitHub**上已经收录[https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily),有一线大厂面试点思维导图,欢迎Star和完善,里面也有我个人联系方式有什么问题也可以直接找我,也有人才交流群,我们一起有点东西。 - -![](https://user-gold-cdn.xitu.io/2019/11/16/16e7340546a49ea9?w=900&h=500&f=png&s=201521) \ No newline at end of file