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..7626be2 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + { + "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 3c66e22..7658f65 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ + 我会从下图中的知识点去写这个系列,很多细节的点,可能想得不是很完善,大家可以去[【公众号】](#公众号)获取或者加我[【微信】](#微信)提意见(别忘记**Star**哟)。 原创文章每周最少两篇,公众号首发文章,[【B站】](https://space.bilibili.com/130763764)首发视频,比博客早一到两篇。 @@ -15,196 +16,67 @@ 微信群 公众号 投稿 - 投稿 公众号 投稿 投稿 - 投稿 - 投稿

-![](https://tva1.sinaimg.cn/large/0082zybply1gcb2u3keh9j30p02j4h2r.jpg) -![](https://tva1.sinaimg.cn/large/007S8ZIlgy1gf8flovpg1j30u07l7hdx.jpg) - -#### [后端面试点合集](https://mp.weixin.qq.com/s/gBr3UfC1HRcw4U-ZMmtRaQ) -#### [脑图在线编辑地址](https://www.processon.com/view/5e86b713e4b0bf3ebcf4e376) # 目录(善用Ctrl+F) -**注 : 没链接的是还没写(耐心等待更新吧)** +**ps : 没链接的是还没写(耐心等待更哟)** -- 学习路线 - - [后端技术学些啥](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) - +#### [后端面试点合集](https://mp.weixin.qq.com/s/gBr3UfC1HRcw4U-ZMmtRaQ) + +#### [脑图在线编辑地址](https://www.processon.com/view/5e86b713e4b0bf3ebcf4e376) +- [讯飞星辰](https://juejin.cn/post/7562737437380034612) +- [学习路线](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF.md) + - Java基础核心串讲 - - Java基础知识 - - - [Java基础面试16问](https://mp.weixin.qq.com/s/-xFSHf7Gz3FUcafTJUIGWQ) - - - [零拷贝](https://mp.weixin.qq.com/s/FgBCop2zFfcX5ZszE0NoCQ) - - - [一次相亲经历,我彻底搞懂了什么叫阻塞非阻塞,同步异步](https://mp.weixin.qq.com/s/DEd0VY3dhR6B0hjQSEtB7Q) - - - 计算机操作系统与Linux - - - [52图初探Linux通用知识](https://mp.weixin.qq.com/s/dP8AJbvGgvYIXDy3zeXCRg) - - - [浏览器的秘密藏在这31张图里](https://mp.weixin.qq.com/s/11MRrxmiyZybTUbjRDRubQ) - - [大厂面试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) - - - [带宽、延时、吞吐率、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/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) - - [「网络IO套路」当时就靠它追到女友](https://mp.weixin.qq.com/s/x-AZQO5uiuu5svIvScotzA) - - [10 张图打开 CPU 缓存一致性的大门](https://mp.weixin.qq.com/s/hjywA21UrvZSzdgvAr6fQA) - - [敖丙说了这么多次 I/O,可你知道其中的原理么?](https://mp.weixin.qq.com/s/TJghsMRqkzBIsoHjGiEwFw) - - [迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)](https://mp.weixin.qq.com/s/EVequWGVMWV5Ki2llFzdHg) - - [原来 8 张图,就能学废 Reactor 和 Proactor](https://mp.weixin.qq.com/s/px6-YnPEUCEqYIp_YHhDzg) - - 计算机网络 - - [计算机网络](https://mp.weixin.qq.com/s/WfcozFAdXbOJ0EIcZEfLVg) - - - [什么是单点登录(SSO)](https://mp.weixin.qq.com/s/drPVkRbCsDIlX6Ls2pDmqA) - - [键入网址后,期间发生了什么?](https://mp.weixin.qq.com/s/I6BLwbIpfGEJnxjDcPXc1A) - - HTTP - - [图解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) - - TCP/IP - - [万字长文 | 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) - - - - - 7种常见的设计模式和使用场景 - - - [单例模式](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) - + - [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) - - Java必会基础与新版本特性 - - [枚举](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) - + - [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) + - 集合框架 - - [Java 集合框架看这一篇就够了](https://mp.weixin.qq.com/s/bVOSat47L0Hskfx9akAN6Q) - - - [Java 集合中「堆」是啥?](https://mp.weixin.qq.com/s/eSCVJclB-IaJYkPKsWSkRA) - - - HashMap - - [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) - - ConcurrentHashMap - - [ConcurrentHashMap & Hashtable(文末送书)](https://mp.weixin.qq.com/s/AixdbEiXf3KfE724kg2YIw) - - - [我就知道面试官接下来要问我 ConcurrentHashMap 底层原理了](https://mp.weixin.qq.com/s/My4P_BBXDnAGX1gh630ZKw) - - ArrayList - - [ArrayList](https://mp.weixin.qq.com/s/WoGclm7SsbURGigI3Mwr3w) - - - [ArrayList源码解析,老哥,来一起复习一哈?](https://mp.weixin.qq.com/s/3PNWmtS-bEZgZjd9wyMiDA) - - Vector - - [面试官问我同步容器(如Vector)的所有操作一定是线程安全的吗?我懵了!](https://mp.weixin.qq.com/s/0cMrE87iUxLBw_qTBMYMgA) + - [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) - - - [Java堆内存是线程共享的!面试官:你确定吗?](https://mp.weixin.qq.com/s/Wws24Fhg1nH4dHvtcFYi2g) - - 性能调优、线上问题排查 - - [线上服务的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) - - 类加载机制详解 - - [JVM必问知识点:类加载过程](https://mp.weixin.qq.com/s/eHqFONXXNc-LD4ugaKM6UA) - - - 垃圾回收机制 - - [看完这篇垃圾回收,和面试官扯皮没问题了](https://mp.weixin.qq.com/s/_AKQs-xXDHlk84HbwKUzOw) - - - 垃圾回收器、垃圾回收算法 - - - [垃圾回收底层原理](https://mp.weixin.qq.com/s/nY6vL5MlUXY1lfnIvNHMnw) + - [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) - 并发与多线程 - - 多线程基础知识 - - [可重入锁](https://mp.weixin.qq.com/s/GDno-X1N8zc98h9MZ8_KoA) - - - [敖丙稳住了多线程翻车的现场](https://mp.weixin.qq.com/s/g_eWT05_38AURchMIvNSnA) - - [2w字 + 40张图带你参透并发编程!](https://mp.weixin.qq.com/s/NZAJWBiFvGzCZXjr0KC9Dw) - - 常见关键字 - - [死磕Synchronized源码](https://mp.weixin.qq.com/s/2ka1cDTRyjsAGk_-ii4ngw) - - - [面试官想到,一个Volatile,敖丙都能吹半小时](https://mp.weixin.qq.com/s/Oa3tcfAFO9IgsbE22C5TEg) - - 多线程锁机制 - - [乐观锁、悲观锁](https://mp.weixin.qq.com/s/WtAdXvaRuBZ-SXayIKu1mA) - - - [互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景](https://mp.weixin.qq.com/s/6QrQ0TZVqSQq26Rms0_mvA) - - 线程池知识点 - - [记一次线程池引发的故障 排查下来是三歪的锅](https://mp.weixin.qq.com/s/TQGtNpPiTypeKd5kUnfxEw) - - - 常见的JUC工具类 - - [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) - - - 多线程经典面试题 - - [【面试】如果把线程当作一个人来对待,所有问题都瞬间明白了](https://mp.weixin.qq.com/s/PrUa0tFyu3UZllP2FRDyVA) - - - [Java 并发进阶常见面试题总结](https://mp.weixin.qq.com/s/cdHfTTvMpH60SwG2bjTMBw) - - [如果你这样回答“什么是线程安全”,面试官都会对你刮目相看(建议珍藏)](https://mp.weixin.qq.com/s/WDeewsvWUEBIuabvVVhweA) - + - [多线程基础知识](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 @@ -213,7 +85,6 @@ - Git原理与工作流 - Linux常用分析工具 - - 数据结构与算法 - 从二叉搜索树到B+树 @@ -225,399 +96,138 @@ - [图解红黑树](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) - - - [AOP 面试造火箭事件始末](https://mp.weixin.qq.com/s/NXZp8a3n-ssnC6Y1Hy9lzw) - - [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/JcHt99SAbNIlY063rmylpA) - - SpringCloud - - [外行人都能看懂的SpringCloud,错过了血亏!](https://mp.weixin.qq.com/s/MJrahcDXwxgDr5zBdO3XWw) - - [20000 字的 Spring Cloud 总结](https://mp.weixin.qq.com/s/pGSx8eKFH3YnUos3SM2ITw) + - [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 - - [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) - - RPC实践 - - [敖丙RPC的超时设置,一不小心搞了线上事故](https://mp.weixin.qq.com/s/pkWkD1VhMxhZPRrybLcQjA) - - [敖丙找出Dubbo源码BUG,三歪夸了我一天](https://mp.weixin.qq.com/s/_5YMfQK1tmYbmRMldBPlaQ) - - Netty - - [高性能NIO框架-Netty](https://mp.weixin.qq.com/s/I9PGsWo7-ykGf2diKklGtA) - - [Netty常见面试题总结](https://mp.weixin.qq.com/s/eJ-dAtOYsxylGL7pBv7VVA) + - [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源码分析 - - Zookeeper - - [什么是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) + - [Zookeeper](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%BF%85%E4%BC%9A%E6%A1%86%E6%9E%B6/Zookeeper.md) + - 高并发架构基石-缓存 - - Redis数据结构、基础知识 - - [Redis基础知识](https://mp.weixin.qq.com/s/aOiadiWG2nNaZowmoDQPMQ) - - - [集群高可用、哨兵、持久化、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常见线上故障及其解决方案 - - [缓存击穿、雪崩、穿透](https://mp.weixin.qq.com/s/knz-j-m8bTg5GnKc7oeZLg) - - [布隆过滤器实战【防止缓存击穿】](https://mp.weixin.qq.com/s/BdwZViiAqnFhCde4ZsxwPg) - - - [分布式锁、并发竞争、双写一致性](https://mp.weixin.qq.com/s/2hTgP3MRTVDxmmoUFhOaGw) - - Redis常见面试题 - - [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) - - - - 知识点之外的缓存之路 - - - [一个架构师的缓存修炼之路](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://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://mp.weixin.qq.com/s/Qhw4oS0OeN1N7uT1z6rbqg) - - - [消息重复消费、分布式事务、顺序消费](https://mp.weixin.qq.com/s/OKon95MRUqDc9IwtEqPSjQ) - - Kafka - - [Kafka架构与原理](https://mp.weixin.qq.com/s/-IPfWPS1WQMEgcIu0Ak2VQ) - - - [Kafka性能篇:为何Kafka这么"快"?](https://mp.weixin.qq.com/s/kMIhPW2uLdy-mgS9sF6agw) - - RocketMQ - - [RocketMQ](https://mp.weixin.qq.com/s/y-4TVwbc7AFGEA7q-_OkYw) - - 消息队列面试题 - - [面试题:如何保证消息不丢失?处理重复消息?消息有序性?消息堆积处理?](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) + - [消息队列基础知识](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基础知识 - - [国庆肝了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) - - 索引、锁机制 - - [数据库索引](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) - - 事务特性、隔离级别、数据安全 - - [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) - - - 数据库性能调优 - - [为什么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) - - 分库分表 - - [我们为什么要分库分表?](https://mp.weixin.qq.com/s/-Jipxjwe-jAax4hJSe-9Jg) - - - [分库分表方案](https://mp.weixin.qq.com/s/dMqXBW6W8DeqfAPvko3ViQ) - - 数据库面试题 - - [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) -- 大数据 + - [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) +- 大数据 + - [大数据体系](https://mp.weixin.qq.com/s/7rW9eHxdRXtWJExVupcZZQ) - ODPS离线分析 - Hive - Spark - Hadoop - Hbase - HDFS - - [大数据体系](https://mp.weixin.qq.com/s/7rW9eHxdRXtWJExVupcZZQ) - - [Flink入门教程](https://mp.weixin.qq.com/s/xa2iGrmyoXq3FtZeU9GU-w) + - [Flink](https://github.com/AobingJava/JavaFamily/blob/master/docs/all/%E5%A4%A7%E6%95%B0%E6%8D%AE/Flink.md) + - 搜索引擎 - - ElasticSearch - - [Elasticsearch入门](https://mp.weixin.qq.com/s/AjGiMikSVgCk6INyf-m8hA) - - [记一次害敖丙差点丢工作的线上P0事故](https://mp.weixin.qq.com/s/F8BsSg6R9LHxKt-gbH_JKQ) + - [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 到微服务 - - 互联网架构之路 - - [我难道天生就是个架构师?这可是100k并发啊](https://mp.weixin.qq.com/s/Pi_fHXhSf17l8q5CZ_U5UA) - - 怎么设计一个能顶住双十一的系统? - - [压测都做些什么?](https://mp.weixin.qq.com/s/RzJkQuMAszkC8jw8hF-k1w) - - [千万级、亿级流量怎么处理?](https://mp.weixin.qq.com/s/CxqnaB9cUemvCcWkw2nUcw) - - - 分布式&分布式事务 - - [分布式架构由来](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://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://mp.weixin.qq.com/s/KeIJDrHbMH_BRUKLnCqExw) - - 简历 - - [简历怎么写?](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/br7Ak88kA5GkZ26hxwKUiw) - - - 加分项 - - [面试官喜欢怎样的人](https://mp.weixin.qq.com/s/2mdcZnlTWCDYejGkZCdNOQ) - - 面试流程 - - [互联网公司面试流程 注意事项 加分点 防骗指南](https://mp.weixin.qq.com/s/jhmpG2bBb4aXoUJzahC0Rg) - - - [互联网公司面试流程&加分点,别跟敖丙一样被无良HR坑了](https://mp.weixin.qq.com/s/7Rq8QR58Adi5WGHRlnhDeQ) - + + - [简历](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) + - 研发规范 - - 阿里巴巴技术规范 - - [为什么阿里巴巴禁止使用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) - - - 开源漏洞 - - [fastjson到底做错了什么?为什么会被频繁爆出漏洞?](https://mp.weixin.qq.com/s/iV9DbX3LhbBkNiaKLL7PxA) - - 大厂技术研发规范 - - - [大厂是如何设计接口的?](https://mp.weixin.qq.com/s/ROMzeipOwWZWNrVGdVwisg) - - - [不要再在对外接口中使用枚举类型了!](https://mp.weixin.qq.com/s/ynYi_dMlP2Y9GnQXzQxa3Q) - + - [阿里巴巴技术规范](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) - 面试真题&面经分享 - - 阿里巴巴面试题 - - [淘宝|蚂蚁|菜鸟|盒马|嘀嘀|饿了么面经(已拿多个offer)](https://mp.weixin.qq.com/s/oEGSxv5KuNI9BsCxpdi82A) - - - [互联网寒冬,敖丙挚友7面阿里,终获Offer](https://mp.weixin.qq.com/s/gYpZCSYK3YYEvGFFeHdFJQ) + - [阿里巴巴](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/16cZLY9_uJwhi50RJXknIg) - - - [一份还热乎的蚂蚁金服面经(已拿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) - - 字节跳动面试题 - - [读者字节、滴滴面经(已拿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) - - 拼多多面试题 - - [读者一个月拿到阿里字节拼多多offer](https://mp.weixin.qq.com/s/kSiLvSrAMwrHLwxvesyjBw) - - - 美团面试题 - - [美团面经](https://mp.weixin.qq.com/s/gSG_ZzZN7Ek2HEGtdi_Nkg) - - - [3 年经验的 Java 后端妹子,横扫阿里、滴滴、美团,看完面经我觉得敖丙是垃圾!](https://mp.weixin.qq.com/s/oAnGGBkre7Z4VkhME-TgzQ) - - 腾讯面试题 - - [苦修月余,斩获bigo、腾讯offer,面经奉上!](https://mp.weixin.qq.com/s/EOQafymh7xVtxblstTbQUA) - - [来自朋友最近阿里、腾讯、美团等P7岗位面试题](https://mp.weixin.qq.com/s/yb6MtKMrCl2rAUZVLIfJow) - - 国企面试题 - - [怎么面国企或银行?](https://mp.weixin.qq.com/s/d4OewL8-gCm_IkqDqufvsQ) - - - 外企面试题 - - [Bigo的Java面试,我挂在了第三轮技术面上......](https://mp.weixin.qq.com/s/3_HnVzGm16zU2zhk7BnwFw) - - - [我经历的7轮Google面试](https://mp.weixin.qq.com/s/yYy5YUeA3VAAQMtnMhaFUQ) - - 校招面试题 - - [十道校招常见的面试题](https://mp.weixin.qq.com/s/wTKSvziyEXrSyf21iMjhZQ) - - 社招面试题 - - - 其他 - - [「面经」不小心拿到了B站意向书](https://mp.weixin.qq.com/s/VOVUQ2cbYX5UXrrWLIHFXQ) - - - [小红书](https://mp.weixin.qq.com/s/3OTwlqCpJHEwtUvSQn1xmw) - - [京东+百度一面,不小心都拿了Offer](https://mp.weixin.qq.com/s/VVonP6MgGRUnBnWa2ukkyw) - - [敖丙读者一个月面试近20家大中小厂,在互联网寒冬突破重围,成功上岸阿里云 !](https://mp.weixin.qq.com/s/F2TiFw-LYFXMRj_hsD-TIw) - - [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/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) - - - [应届毕业生工作7个月小结](https://mp.weixin.qq.com/s/XcrBvdlh1At_V42qfQZ9Kw) - - - [在国企里面当程序猿是一种怎样的体验?](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/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) - - 职场经历 - - [蘑菇街裁员说明 海阔凭鱼跃,天高任鸟飞](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/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) - - - 生活趣事 - - [敖丙的第一次相亲,还没开始,就已经结束了。](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) - - 读者经历 - - [从网瘾少年逆袭拿到微软 、字节等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) - - 家人 - - [我的母亲](https://mp.weixin.qq.com/s/yGcgvp9s18CERp9nx2iigw) - - - 过年特辑 - - - [贵州打工仔回家过年,遭遇流感,被隔离,偶遇读者,偶遇直播同行...](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) - - - - - - - + - [成长经历](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://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) - - [你知道程序是怎么处理时区问题的么?](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) - -- 人物&杂谈 - - [罗永浩](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) - **福利** @@ -625,7 +235,6 @@ - [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) @@ -637,234 +246,33 @@ 所有文章pdf版本 : 链接:https://pan.baidu.com/s/1PKO0LDspwJPNqT6qwqNorQ 密码:f654 -技术交流群:添加我微信 Aobingcool 备注【加群】即可 - -投稿:个人精力有限欢迎大家投稿 投稿可获得500-3000元不等的稿酬 点击 [【查看详情】](http://mp.weixin.qq.com/s?__biz=MzAwNDA2OTM1Ng==&mid=305658311&idx=1&sn=4a38e5bbb8845a245452f8ffad9fe4b3&chksm=0cf2db443b855252577ac26a16bbf477942401f7e832bd075866d82a0fa25a02ab5b1534cb72#rd) - - -# 祝福 - -希望大家都能找到心仪的工作,学习是一条时而郁郁寡欢,时而开环大笑的路,加油。 - -如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。 - -敖丙在工作中发现我身边的人真的就是实力越强的越努力,**最高级的自律,享受孤独**。 - - - -# 知识星球(近期会重启在思考内容) -**[**【点击了解详细 领取减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元一年起 - -华为云 [**【点击购买】**](https://activity.huaweicloud.com/1111_promotion/index.html?fromacct=662497fd-8600-411b-9afd-ee2e218560a5&utm_source=V1g3MDY4NTY=&utm_medium=cps&utm_campaign=201905) - - -

- - - -

- -活动折扣价:89/年,223/3年,比学生9.9每月还便宜(只阿里云新用户可用) - -阿里云 [**【点击购买】**](https://dashi.aliyun.com/site/aobing/ali) - - -

- - - -

- -腾讯云 [**【点击购买】**](https://partners.cloud.tencent.com/invitation/1000144091425ee1dbcbc6093/100016776501) - - -# 岗位内推 -找所有职位比较出色的朋友,觉得合适的给我简历我可以内推,阿里、美团、蘑菇街、拼多多、字节跳动、腾讯等都可以. - -阿里巴巴/腾讯/字节/快手其他岗位 : ao_bing@foxmail.com - - - - -## 社招近期机会 - -### 阿里校招学长内推 +### 阿里、字节、快手、腾讯、美团、滴滴内推 ao_bing@foxmail.com -### 涂鸦智慧商业: - -前端小伙伴欢迎尝试 ~ - -#### 关于部门: - -我们大部门这边主要负责 SaaS 业务平台前端的开发,包括中后台,跨端以及工程化等方向。如果对其它团队感兴趣,也可以帮推。 - -#### 进来可以做的事情: - -大部门这边有好些方向,比方说你擅长或者视频、WebRTC 相关技术,那可以来我们安防。或者你有其它喜欢的方向,也可以聊聊看。 有很多事来了可以一起做,比方说最近我们部门在做 React to Web Components 相关的技术、业务场景落地。 -#### 关于技术栈: - -大部门这边主要是以 React 为主,如果你是 Vue 经验的,同样欢迎来聊聊。只是框架层面不同,这个不是重点。 - -#### 关于面试: - -之前遇到过 Vue 经验的小伙伴问我,说会不会问很多 React 的问题。放心,不会的。像比如社招的话,还是会更加注重项目经验的。然后就是,简历到我这里,不会直接就推进系统,会先跟你沟通一下哈,觉得 ok 我们再走流程。最后,流程会全程跟进,可加微信直接找我查进度。 -邮箱: zongwei.hu@tuya.com 微信联系: 15586548537 (昵称是接水怪,不要加错了哦~) - -### 支付宝网商银行: - -Java工作两年及以上的同学欢迎尝试~ -#### 关于部门: -网商银行不做过多介绍了,网上很多相关资料,跟腾讯微众对标,每年绩效都很好。 - -我这边是信贷决策部门,绝对的核心,部门直招,如果对蚂蚁其他团队感兴趣也可以帮推,但没有本部门那么方便跟进。 - -进来可以做的事情: - -可以保证的是一定不是单纯搬砖,本部门在整个网商都是底层核心系统,无论是流量还是数据量都是极大的技术挑战。 - -#### 关于职级: - -p6-p8都有hc,真实hc不刷kpi,目前网商银行业务扩张,目标人数*2,所以放出了很多hc,是进蚂蚁的好机会。 - -#### 关于面试: - -很多同学可能很担心投了没有面好会对以后有影响,或者投了之后面下来发现不合适,这里说明一下,我们不会马上把你简历录系统,会先进行评估并且跟你电话沟通,双方都觉得合适才会开始面试,不会一来就传简历,而且面试时间和进度我可以随时帮跟进,不存在放鸽子这种情况。 - -邮箱: lw263888@alibaba-inc.com 微信联系: lwwei2222 - -### 天猫国际: - -天猫国际是中国消费升级的第一跨境平台,是阿里经济体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/00831rSTly1gck2pplt8ej315u0u0k1b.jpg) -以下排名不分先后! +## Star History - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -" - - - - - - - - - - - - - - - - - + + + + + Star History Chart + +# 祝福 +希望大家都能找到心仪的工作,学习是一条时而郁郁寡欢,时而开怀大笑的路,加油。 -# 赞助商 -以下排名不分先后! -![](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/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\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\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/\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/coderLife/\351\243\216\351\233\250\345\215\201\345\271\264\344\273\216\346\257\225\344\270\232\345\210\260\346\212\200\346\234\257\344\270\223\345\256\266\346\210\221\345\201\232\344\272\206\345\225\245.md" "b/docs/coderLife/\351\243\216\351\233\250\345\215\201\345\271\264\344\273\216\346\257\225\344\270\232\345\210\260\346\212\200\346\234\257\344\270\223\345\256\266\346\210\221\345\201\232\344\272\206\345\225\245.md" deleted file mode 100644 index 8b452f3..0000000 --- "a/docs/coderLife/\351\243\216\351\233\250\345\215\201\345\271\264\344\273\216\346\257\225\344\270\232\345\210\260\346\212\200\346\234\257\344\270\223\345\256\266\346\210\221\345\201\232\344\272\206\345\225\245.md" +++ /dev/null @@ -1,259 +0,0 @@ -> 你知道的越多,你不知道的越多 - -> 点赞再看,养成习惯 - -> 本文 **GitHub** [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 上已经收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 - -### 前言 - -你们都知道的,帅丙我本身肯定是达不到技术专家的地步的。 - -呸,敖丙你个渣男,又标题党 ! - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9ppc3lx7hj307m06na9y.jpg) - -我不是但是我身边很多人是呀,字节跳动,PDD,阿里等等的大佬我认识很多,所以以下是我问了他们的成长路径的总结,还是具有一定的代表性。 - -身边这些朋友都是在互联网领域多年的大牛了,因为生活和个人习惯的原因,很多都没有写博客的习惯,或者没有公开出来,但是他们却遇到了帅丙,**我骚啊,我可以帮他们整理出来啊**。 - -目的是为了让很多跟我一样的新人,对一条完整的职业规划之路有一个清晰的认知,**青铜到王者要经历些什么**? - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9gbkb1bmpj30dw08pt99.jpg) - -### 青铜-万恶之源 - -**《计算机基础》**,这是所有读者大学最开始都会上的课吧,我问了群里的仔,他们都说是的,我想大家也是。 - -在计算机基础中我们会学到计算机的历史、计算机的特点、进制转换、内存管理、线性数据结构、网络请求协议等等。 - -计算机基础真心很重要,无比重要,究极重要,为啥我这么说呢,里面涉及的计算机知识还有很多网络协议的知识,大家以后一定会用到,我可以负责的告诉你,面试也一定会问,什么Http、Https、Tcp/Ip、三次握手、四次挥手面试不要太常问。 - -**Tip**:这里有个小插曲就是我身边那个架构师团队Leader这周面试阿里p8岗位的时候,我以为问的都是什么源码,中间件的究极操作,我想大家跟我想的一样,但是大家错了,反而问的很多计算机的基础知识。 - -​ 我聊天大概问了一下面试内容,有什么求二叉树的镜像,内核态和用户态的理解,计算机的缓存页等。 - -​ 大家是不是惊了,这他*不是我校招的题目么?怎么P8级别的大佬还问这个?其实很好理解,大家想一下到了一定的工作年限技术的广度深度都有一定的造诣了,你写代码就这样了没办法优化了,机器配置也是最好的了,那还能优化啥? - -​ **底层**,我们都知道所有语言到最后要运行都是变成机器语言的,最后归根究底都是要去跟机器交互的,那计算机的底层是不是最后还是要关注的东西了? - -**福利**:他这周会来我们公司面试,届时我会详细问一下具体的面试内容,如果大家想看我可以到时候整理一下写出来,看看那种级别的强者的世界到底是怎么样的。 - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9gc2jxcaij308c08c0sz.jpg) - -学完计算机基础你基本上对计算机的整个知识体系都一知半解了,对于编程或许还是很懵懂,但是你现在已经要踏入编程的门了。 - -#### 白银-编程第一课 - -计算机基础学了,后面就要编程的入门课程了。 - -想必看我这篇文章有99%的小伙伴都是以下面这段代码开始的自己的程序人生的吧: - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9g5yk1a93j30eh097ab2.jpg) - -我还记得**帅丙**我就是大一开始学习的C语言,《C语言程序设计》谭浩强老师的课本,在第27页就是第一章,**HelloWord**,现在回忆起来还历历在目,老师在黑板上写下这两个庄严的单词,同桌的她和我露出无限的求知欲...... - -我想所有的语言都是语法基础开始的,而且编程语言的基础语法也都是大同小异的。 - -If、For、While等关键字,List、Set、Map等集合,Int、float、Double等基础类型,大家第一次学的时候我想也不会知道,这些关键字将会陪伴我们走完各自的程序生涯吧? - -接下去就难一点比如JDBC、IO、文件流啊什么的,帅丙依稀的记得当时还是**代码里面写SQL**然后查询,也不知道记错没有。 - -学到这里,你可能觉得你**JavaSE**无敌,出去可以找工作了,反正当时的帅丙,觉得自己可以闯出一片天了,不知天高地厚,四处炫技。 - -但是幼稚的我根本不知道,**未知的前方还有什么等着我**,我也不知道自己其实才刚入门,但是如果要往WEB方向发展,这些倒是基本足够了。 - -但是你到现在为止学的东西都是服务端的东西呀,怎么让你的服务端东西展示给别人看呢? - -这个时候我们就应该去做个丑不拉几的页面,进行简单的交互了,你这个时候要学**HTML** 、**Servlet**、**MySQL**、 **JavaScript**、**Tomcat**、**CSS**等。 - -目标呢就是写出第一个动态网站,也许只是个登陆功能,只能展示下个人资料,但这是很重要的一步,你要弄清楚的是,一个用户的点击产生的请求,是从哪里发起,哪里接收,哪里处理,哪里返回,你得理解浏览器和服务器的关系和分工,**Cookie**和**Session**,**Request**和**Response**。 - -**Tip**:我记得我刚出来面试就有面试题是这样的,一个Http请求从网页发起到服务端产生数据返回中间经历了些什么,或者Spring做了什么?大家可以思考一下 - -​ 还有有一个自己的项目真心很重要,敖丙我就是在大学期间做了项目,至今在校园内网上稳定运行着,出来实习面试的时候基本上也是一路披荆斩棘,吊打了同行面试的仔,反正大学有个项目贼加分,是读者的大学生记住了么? - -### 黄金-初出茅庐 - -上面的只是WEB开发的学习初级阶段,这都是些JAVA诞生以来最原始的最官方的WEB开发技术,当然现在真正的项目很少直接采用这些技术了,现在都是**前后端分离了**,Vue、Node.js、React等前端的语言更新迭代速度非常快,帅丙我学了一点刚用舒服,前端的朋友告诉我又迭代了......我他*不学了! - -为了不断提高技术的易用性、开发效率和可维护性、可扩展性,无数开源项目都是在这些原始技术的基础上封装、改进。 - -所以这个阶段**不要盲目乐观地跑去找工作或者对实习挑三拣四**,你会被打击到的,又或者找个小公司浑浑噩噩几年过去感觉跟新的技术栈脱节。 - -**有人跟你说小公司学的东西多,他害你的,刚开始能去多大的去多大的,越大越好,你想你去了大的你想去小的分分钟的事情,但是你小的要去大的就相对难了。** - -好,初始阶段完成,开始进入WEB开发的正题,首先是传说中的框架,SSM(Spring SpringMVC Mybatis)成为熟练的增删改查程序员是必须的,在这个阶段你还要理解为什么要用这仨而不是那些Jsp、Servlet、Jdbc,你要体会到写MVC、三层架构的好处。 - -这个阶段不要轻易质疑框架的价值,也许刚开始你会觉得麻烦,觉得他们有时候是多此一举,我最开始这么写的时候发现,真的恶心,什么dao,service,Controller等等,分这么多干嘛。 - -等过一两年后回过头来你会觉得少了这些框架你已经很难干活了,没有分层清晰的系统,你反而开口大骂项目的架构师的。 - -你********* - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9gce550dbj308q078whf.jpg) - -不过要**提醒大家**的是,这个阶段还要避免的心态是,能熟练地增删改查了,就自认为写程序不过如此,然后往简历上填个精通,这也是新手面试被批得体无完肤的原因之一。 - -**浅尝即止,是新手的大忌**,为啥这么写,这么写有啥好处,有啥坏处,多问几个为什么,你**多年后会感谢敖丙**的。 - -如果你学得好,这会应该能熟练地写个博客啊,小论坛啊之类的WEB项目了,也就是达到了就业的基本要求。 - -**Tip**:而且说一下作为一个应届生,你除了基础知识,如果你有自己的技术博客,还有像样的项目能展示给面试官看,是真的很加分,搭建个简单的项目,项目流程你也知道了,技术栈也熟悉了,还可以手机访问网页给面试官现场演示,很加分的。 - -像我身边的朋友**Java3y**,**JavaGuide**,**我没有三颗心脏**等,就是在这个阶段就已经开始写了自己的博客,并且各自都做出了成绩,这些以后都是你面试的议价能力的一部分,也是你的加分项,和你自身的财富。 - -我问了一下他们,都是靠博客就已经得到不少大公司的面试邀约了,反正有项目,有不错的履历,有不错的博客,都会给你加分,如果你什么都没有,现在动手去多学点,少打两局LOL等你到我这个年纪就会发现,**索然无味**。 - -### 铂金-遵义会议 - -这会是程序员生涯的一个**转折点**,把握好了人生起飞,把握不好**全盘皆输**,所以我用在我老家遵义举办的**遵义会议**,作为这阶段的标题,我觉得,**妙啊**! - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9nf6asyshg3078078mz4.gif) - -慢慢的你会发现数据库性能实在不行,出于不甘现状,或者赶时髦,你该去了解**NoSQL**了,**Memcached**、**Redis**、**Mongodb**等非关系型数据库眼花缭乱,没关系,试着用用,能很好地缓解**MySQL**、**Oracle**之类关系数据库的压力。 - -出于公司某些业务需要,你可能会钻研一个特定技术领域,比如全文搜索技术**ElasticSearch**(以下简称Es),那你了解了**Es**,你又要想到数据库的数据怎么同步进**Es**呢? - -你可能会接触到**Logstash**,**Canal**等中间件,然后发现可视化也是个问题,那**Kibana**就应运而生,用的时候发现欧洲人的分词习惯跟我们不一样,那**Ik**中文分词器又得了解啦。 - -使用之后你还会发现他底层的**Lucene**有很多坑要怎避免,时间多你还可以了解**Solr**等等。 - -**总之知识就是一个体系**,我经常跟群里的仔说,形成知识体系,你面试说了**Es**那相关的技术栈你一样要了解的,我题目取了叫《**吊打面试官**》就是噱头,你去面试如果面试官技术深度真的很深,我想被吊打的100%是你。 - -你甚至会开始对系统中一些比较特殊的存在感兴趣,比如**权限系统**,**单点登陆**之类的,又或者某些特定业务领域的**算法研究**,这些是你的加分项。 - -你还发现服务拆分后**Http**通信有诸多弊端,就开始接触优秀的**Rpc框架**还有消息队列中间件了,如**Dubbo**、**RocketMQ**等。 - -再再后来你发现呀,数据量大得一批,表顶不住了,几亿数据查出来要好几秒,那**分库分表**就出来,什么**水平拆分**,**垂直拆分**,还学习了**TDDL**、**Sharding-JDBC**、**DRDS**等这样的分库分表中间件。 - -但是你用了发现全局的唯一id生成又是一个问题,或许中间件有自带的,但是你还是要了解原理,什么**雪花算法**,**uuid**等等也得学。 - -再再再后来呀,你发现分库分表也顶不住了,业务体量爆炸式增长了,你可能就需要了解动态分库分表的解决思路和解决方案了,特别是**FaceBook**开源的一些方案。 - -再再再再后来呀,你发现动态分库分表也不行啊,很多离线的数据也很多啊,每天几个T,公司都要被败光了,那你就要了解大数据场景的离线分析啊,数据缓存啊,数据清洗,数据可视化等等啊什么的。 - -那就需要学什么**ODPS**啊,**Hadoop**、**Hive**、**Hbase**等等中间件或者工具了。 - -再再再再再后来你开始发现你的代码很乱,久了以后自己都看不懂,重复的,难以重用的代码堆积如山,不想维护,BUG百出。 - -于是你要开始重视设计模式,合理地改造下自己的代码习惯,不再被僵化的SSH、MVC三层架构束缚住。 - -再再再再再再.....(敖丙你是不是没玩了?哈哈其实还真有我就不列举了) - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9gi08e7vtj306y06yt8s.jpg) - -到这里不知道你有没有体会到我每篇文章开头那句话的意思?敖丙就是工作之后发现自己越来越无知了,你再品一下下面这句话。 - -> 你知道的越多,你不知道的越多 - -**Google**和各种资料是你进步的动力,极少再遇到必须请教别人才能解决的问题,如果你这个阶段还老是问别人,你的技术生涯也就快到头了。 - -这个阶段,如果你**技术卓越**和**跟敖丙一样能吹**,你的收入将是白领水平,至少接近了,或者大幅领先同龄人了。 - -我觉得多数程序员在工作多年之后都能达到这个水平,有的人只需要一两年,有的人却要用上五六年,在这个阶段落伍的人,有的是出于天赋和思维所限,有的是出于对技术缺乏热情,有的是出于工作内容的制约。 - -**等到年近中年,再也拼不过年轻人,被淘汰出局,只能在自嘲为屌丝和码农的无奈中黯然转行。** - -这是个很重要的分水龄,你能不能继续进步,能不能在30岁以后继续从事技术工作,能不能在公司里**独当一面**,我觉得就看你能不能超越这个阶段了。 - -很多烂公司里工作数年的项目经理,连这个层次都还没达到... - -为了30岁的自己听到裁员完全不虚,为了家里的老母亲不再为了省电费不舍得开灯,为了让自己...... - -我想这个阶段你应该要做好准备,这也是我大篇幅介绍这个阶段的原因。 - -### 砖石-扬帆远航 - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9nfce1urnj306y06yaa0.jpg) - -你要读读优秀开源项目的源码,你要搞懂一些当年不懂的基础知识,你开始理解**《thinking in java》**的精髓,你能写一些底层的代码,有时还会觉得自己封装的比某些开源工具更好用更简单。 - -当年看不懂的《**深入分析JVM虚拟机**》现在你已经可以对里面的知识点**如数家珍**,**张口就来**,并且能够将大量知识点带入到项目中优化,并且能够看到实质性的变化(**暗示KPI**)。 - -WEB的难点和重点永远都在于性能、负载能力上,而现在网络的发达造成了数据量和操作密度的大大上升,硬件却没有相应的进步。 - -你得试着更好地运用更多的服务器来协同工作,从WEB端到服务端到数据库,全都需要集群,需要分布式,需要合理的控制数据的流向,掌握好网站上下,一大堆机器的平衡,找出性能的瓶颈,找出稳定性和安全性的瓶颈,硬件出现故障,第三方技术出现错误,将被当成家常便饭融入到你的系统和代码里仔细考虑。 - -你会开始觉得方案无比地重要,**一将无能累死千军**将不断应验,一个不好的设计,一个不好的方案,会让一群优秀的程序员工作成果大打折扣。 - -**你要关注架构知识,不能再满足于SSH三层架构到底。** - -领域驱动设计,面向事件开发,敏捷开发等等一系列的思想在关键时刻能决定你项目的生死,这个阶段不再有标准范例让你照抄,你只知道思想和原理,实践却需要自己不断尝试和改进。 - -多关注各种杂七杂八的开源技术,有些你可能前面已经接触过了,和通信有关的,和集成开发环境有关的,和架构有关的,各个领域你都应该能信口说上几个主流技术,虽然你可能只是听说过,了解。 - -**但关键时刻你得知道如何去选择技术,并快速掌握它。** - -你还会去考虑尝试下别的语言,这里不是说转向什么C++ C#之类的,那和JAVA程序员不相干,我说的是一些**运行于JVM之上的语言**,比如scala和groovy,初识他们时你会觉得Java真的老了。 - -但当你回到一个综合性的大型项目中,又会觉得Java积累下来的整个体系技术是如此完善,就像一个工业化标准一样,你可能发现光是Spring家族的东西你都受用终身,无法完全通读。 - -你能把这个阶段实践好,胜任项目经理,乃至中小公司的技术总监,大厂的小团队Leader都是可以的。 - -### 大师-登峰造极 - -其实写到上面这个阶段的时候我觉得,这是很多人满足的地方了,都是小公司技术总监了,那我图啥? - -但是未知的人生还在那等着你呢,我问了身边顶级的大神,**为啥要走出舒适区**?去像字节、阿里等这些压力大很多的地方呢? - -他们给的回答都不太一样,但是一样的就是**挑战自我**吧,**谁也不知道哪里是自己的终点**,那为啥不多做点尝试,新的环境,新的技术栈,新业务场景挑战新的自我。 - -这个阶段你的一举一动可能都关系一个项目的生死存亡,一个错误或者正确的决策就可能改变整个项目的命运,水能载舟亦能覆舟,我想用在这里也恰到好处。 - -我身边这样级别的大佬凤毛麟角,但不是没有,他们在公司都是核心人物,大型项目或者项目紧要关头都是他们带领团队**冲冲冲**,除了问题也是能最快给出解决思路和方案的。 - -**Tip**:我现在的老大就是这样的人,双十一大家还手忙脚乱去追数据的时候,他上来一套操作,写了几个脚本就搞定了,卧*我们当时周围一群人,**从头到尾的知识盲区**,结束了还没反应过来,只能拍手叫666。 - -**这就是强者的世界,我所向往的世界,当然我知道这样的世界,只有一步一个脚印才能涉足。** - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9ghpuy5g9j306g06imzr.jpg) - -### 王者-泰山之巅 - -最后王者其实我不会写任何内容,能到这个领域的人本身就是屈指可数了,敖丙身边有,但是我觉得大家自己体会吧,一般就是人脉,交际,能力都到了一定的高度了,这个阶段的事情我也体会不到。 - -能想到的就只有先祖的诗句:指点江山,挥斥方遒。 - -算是给大家留下无限遐想的空间吧,未来或许你就是你所在领域的王者也说不定的呢对吧。 - -### 总结 - -不知不觉写了这么多了,以上是我个人眼里的一般向JAVA 程序员的发展线路,限于篇辐也不全面,实际个人成长路线可能因为工作内容的不同差异会很大,有的人偏向了底层研究,有的人偏向了业务需求设计,有的带有浓重的行业色彩,而且技术之外,还有很多知识也很重要,做JAVA没有轻松的方向,但一个对技术抱有兴趣的人,走到这一步时,仍然会对开发抱有热情,想要写出好的项目。 - -**纯为了生计而工作的程序猿是走不到这一步的,这一行来都来了,大家一天都是24小时,为啥有差距,我想你我都明白的,知道为啥那就干出点名堂吧。** - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9nfi2jrwdj307w07w74a.jpg) - -### 敖丙的絮絮叨叨 - -上周还发起了一个投票大家记得么?就是我要修改我公众号的名字,下面是投票的结果 - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9naouys86j314l0dcjrx.jpg) - -敖丙也是真男人来的,说改就改了,你们会发现我所有博客平台的广告,也会在周末悄无声息的被我改掉的,以后**三太子敖丙**就取代JavaFamily了。 - -并且也做了个很重要的决定,这一个多月来,公众号文末的广告多多少少都有点积蓄了,但是这个钱说实话我出去恰个火锅都够呛,差不多每天都是这样吧。 - -![](https://tva1.sinaimg.cn/large/006tNbRwly1g9nfnpumowj30dc06ymyd.jpg) - -那我一想这个钱是大家给我的,我最后就还给大家,以后也是一样,每次到月底我就抽个奖,买十几本书送大家。 - -**不知道大家喜欢不喜欢呀!!!** - -还有就是抽小伙伴喝咖啡了,这里好像就杭州的小伙伴我能线下约了,外地的小伙伴我就打20块吧,虽然不多但是是个心意嘛。 - -## 点关注,不迷路 - -好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是**人才**。 - -我后面会每周都更新几篇一线互联网大厂面试和常用技术栈相关的文章,非常感谢**人才**们能看到这里,如果这个文章写得还不错,觉得「敖丙」我**有点东西**的话 **求点赞👍** **求关注❤️** **求分享👥** 对暖男我来说真的 **非常有用**!!! - -创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见! - -敖丙 | 文 【原创】 - -如果本篇博客有任何错误,请批评指教,不胜感激 ! - ------- - -> 文章每周持续更新,微信搜索「 **三太子敖丙** 」第一时间阅读和催更(比博客早一到两篇哟),本文 **GitHub** [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 上已经收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 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 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/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" deleted file mode 100644 index c0ab28a..0000000 --- "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" +++ /dev/null @@ -1,286 +0,0 @@ -> 你知道的越多,你不知道的越多 - -> 点赞再看,养成习惯 - -## 前言 - -**Redis**在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在**Redis**的使用和原理方面对小伙伴们进行360°的刁难。作为一个在互联网公司面一次拿一次offer的面霸(**请允许我使用一下夸张的修辞手法**),打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚,在一个寂寞难耐的夜晚,我痛定思痛,决定开始写**《吊打面试官》**系列,希望能帮助各位读者以后面试势如破竹,对面试官进行360°的反击,吊打问你的面试官,让一同面试的同僚瞠目结舌,疯狂收割大厂offer! - -## 絮叨 - -**男儿何不带吴钩,收取关山五十州 FPX 🐂B,LPL两年连冠🏆 🐂B!** - -看着金色的雨落下,我到窗边,发现天有点蓝,风有点绵,我的眼角又湿了! - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g8tfiuabwwj30u00en0vc.jpg) - -最近双十一讲道理有点忙的说,直接肝爆,就是这样作为**暖男**的我,还是给你们挤出时间搞出终章,忍不住给自己**点赞**👍 - -放个双十一照片证明真的忙,希望别取关!!! - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g8t68jj7d2j30r211shdt.jpg) - -现在你们在看的时候,我应该还在睡觉哈哈。困🛌 - -之前跟你们说的,**限流**,**降级**,是不是在双十一又应验了,下单接口其实没挂,牺牲部分用户体验,保住服务器,你多点几下是可以成功的,等流量高峰过去了,所有的用户全部都恢复正常访问,服务器也没啥事。 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g8te6fi2zuj30h80uc79b.jpg) - -去年退款接口被打崩了,今年阿里明显也聪明了很多。 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g8tebz0g59j30h20kagqb.jpg) - -## 正文 - -上几期吊打系列我们提到了Redis的很多知识,还没看的小伙伴可以回顾一下 - -- **[《吊打面试官》系列-Redis基础](https://juejin.im/post/5db66ed9e51d452a2f15d833)** -- **[《吊打面试官》系列-缓存雪崩、击穿、穿透](https://juejin.im/post/5dbef8306fb9a0203f6fa3e2)** -- **[《吊打面试官》系列-Redis哨兵、持久化、主从、手撕LRU](https://juejin.im/post/5dc3a9fbf265da4d3c072eab)** - -那提到**Redis**我相信各位在面试,或者实际开发过程中对基本类型的使用场景,并发竞争带来的问题,以及缓存数据库双写入一致性的问题等,我们有请下一位受害者。 - -## 面试开始 - -> 一个大腹便便,穿着格子衬衣的中年男子,拿着一个满是划痕的mac向你走来,看着快秃顶的头发,心想着肯定是尼玛顶级架构师吧!但是我们腹有诗书气自华,虚都不虚。(这不是第一篇文章的面试官么?) - -![](https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1573415109799&di=10794a9a56bb2985e61410c66725df92&imgtype=0&src=http%3A%2F%2Fn.sinaimg.cn%2Ftech%2Fcrawl%2F300%2Fw550h550%2F20190910%2F26de-iekuaqt2051968.jpg) - -### 小伙子,你还记得我在第一章里面问过你,Redis有几种基础数据类型么? - -嗯嗯,帅气的面试官,我肯定记得,没齿难忘!!! - -我特么谢谢你,都四面了还不给Offer! - -![](https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=2924189579,2302654360&fm=26&gp=0.jpg) - -### 那你能说一下他们的特性,还有分别的使用场景么? - -行吧,那我先从String说起。 - -**String:** - -这是最简单的类型,就是普通的 set 和 get,做简单的 KV 缓存。 - -但是真实的开发环境中,很多仔可能会把很多比较复杂的结构也统一转成**String**去存储使用,比如有的仔他就喜欢把对象或者**List**转换为**JSONString**进行存储,拿出来再反序列话啥的。 - -我在这里就不讨论这样做的对错了,但是我还是希望大家能在最合适的场景使用最合适的数据结构,对象找不到最合适的但是类型可以选最合适的嘛,之后别人接手你的代码一看这么**规范**,诶这小伙子**有点东西**呀,看到你啥都是用的**String**,**垃圾!** - -![](https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=454498675,4139436609&fm=26&gp=0.jpg) - -好了这些都是题外话了,道理还是希望大家记在心里,习惯成自然嘛,小习惯成就你。 - -**String**的实际应用场景比较广泛的有: - -- **缓存功能:String**字符串是最常用的数据类型,不仅仅是**Redis**,各个语言都是最基本类型,因此,利用**Redis**作为缓存,配合其它数据库作为存储层,利用**Redis**支持高并发的特点,可以大大加快系统的读写速度、以及降低后端数据库的压力。 - -- **计数器:**许多系统都会使用**Redis**作为系统的实时计数器,可以快速实现计数和查询的功能。而且最终的数据结果可以按照特定的时间落地到数据库或者其它存储介质当中进行永久保存。 - -- **共享用户Session:**用户重新刷新一次界面,可能需要访问一下数据进行重新登录,或者访问页面缓存**Cookie**,但是可以利用**Redis**将用户的**Session**集中管理,在这种模式只需要保证**Redis**的高可用,每次用户**Session**的更新和获取都可以快速完成。大大提高效率。 - -**Hash:** - -这个是类似 **Map** 的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是**这个对象没嵌套其他的对象**)给缓存在 **Redis** 里,然后每次读写缓存的时候,可以就操作 **Hash** 里的**某个字段**。 - -但是这个的场景其实还是多少单一了一些,因为现在很多对象都是比较复杂的,比如你的商品对象可能里面就包含了很多属性,其中也有对象。我自己使用的场景用得不是那么多。 - -**List:** - -**List** 是有序列表,这个还是可以玩儿出很多花样的。 - -比如可以通过 **List** 存储一些列表型的数据结构,类似粉丝列表、文章的评论列表之类的东西。 - -比如可以通过 **lrange** 命令,读取某个闭区间内的元素,可以基于 **List** 实现分页查询,这个是很棒的一个功能,基于 **Redis** 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西,性能高,就一页一页走。 - -比如可以搞个简单的消息队列,从 **List** 头怼进去,从 **List** 屁股那里弄出来。 - -**List**本身就是我们在开发过程中比较常用的数据结构了,热点数据更不用说了。 - -- **消息队列:Redis**的链表结构,可以轻松实现阻塞队列,可以使用左进右出的命令组成来完成队列的设计。比如:数据的生产者可以通过**Lpush**命令从左边插入数据,多个数据消费者,可以使用**BRpop**命令阻塞的“抢”列表尾部的数据。 - -- 文章列表或者数据分页展示的应用。 - - 比如,我们常用的博客网站的文章列表,当用户量越来越多时,而且每一个用户都有自己的文章列表,而且当文章多时,都需要分页展示,这时可以考虑使用**Redis**的列表,列表不但有序同时还支持按照范围内获取元素,可以完美解决分页查询功能。大大提高查询效率。 - -**Set:** - -**Set** 是无序集合,会自动去重的那种。 - -直接基于 **Set** 将系统里需要去重的数据扔进去,自动就给去重了,如果你需要对一些数据进行快速的全局去重,你当然也可以基于 **JVM** 内存里的 **HashSet** 进行去重,但是如果你的某个系统部署在多台机器上呢?得基于**Redis**进行全局的 **Set** 去重。 - -可以基于 **Set** 玩儿交集、并集、差集的操作,比如交集吧,我们可以把两个人的好友列表整一个交集,看看俩人的共同好友是谁?对吧。 - -反正这些场景比较多,因为对比很快,操作也简单,两个查询一个**Set**搞定。 - -**Sorted Set:** - -**Sorted set** 是排序的 **Set**,去重但可以排序,写进去的时候给一个分数,自动根据分数排序。 - -有序集合的使用场景与集合类似,但是set集合不是自动有序的,而**Sorted set**可以利用分数进行成员间的排序,而且是插入时就排序好。所以当你需要一个有序且不重复的集合列表时,就可以选择**Sorted set**数据结构作为选择方案。 - -- 排行榜:有序集合经典使用场景。例如视频网站需要对用户上传的视频做排行榜,榜单维护可能是多方面:按照时间、按照播放量、按照获得的赞数等。 - -- 用**Sorted Sets**来做带权重的队列,比如普通消息的score为1,重要消息的score为2,然后工作线程可以选择按score的倒序来获取工作任务。让重要的任务优先执行。 - - 微博热搜榜,就是有个后面的热度值,前面就是名称 - - ![](https://tva1.sinaimg.cn/large/006y8mN6ly1g8tet6tp4bj30gi0kwjtr.jpg) - -## 小结 - -**Redis**基础类型有五种,这个我在基础里面也有提到了,这个问题其实一般都是对P6以下,也就是1-3年左右的小伙伴可能是会问得比较多的问题。 - -能回答出来五种我想大家都可以,但是不知道大家是否知道,五种类型具体的使用场景,以及什么时候用什么类型最合适呢? - -要是你回答的不好,没说出几种数据类型,也没说什么场景,你完了,面试官对你印象肯定不好,觉得你平时就是做个简单的 set 和 get。所以看似很简单的面试题实则最容易看出你的深浅了,大家都要注意**打好基础**。 - -###你有没有考虑过,如果你多个系统同时操作(并发)Redis带来的数据问题? - -嗯嗯这个问题我以前开发的时候遇到过,其实并发过程中确实会有这样的问题,比如下面这样的情况 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g8szrt0gywj30se0e4aay.jpg) - -系统A、B、C三个系统,分别去操作**Redis**的同一个Key,本来顺序是1,2,3是正常的,但是因为系统A网络突然抖动了一下,B,C在他前面操作了**Redis**,这样数据不就错了么。 - -就好比下单,支付,退款三个顺序你变了,你先退款,再下单,再支付,那流程就会失败,那数据不就乱了?你订单还没生成你却支付,退款了?明显走不通了,这在线上是很恐怖的事情。 - -### 那这种情况怎么解决呢? - -我们可以找个管家帮我们管理好数据的嘛! - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g8t0ajycjyj30qe0joq4h.jpg) - -某个时刻,多个系统实例都去更新某个 key。可以基于 **Zookeeper** 实现分布式锁。每个系统通过 **Zookeeper** 获取分布式锁,确保同一时间,只能有一个系统实例在操作某个 Key,别人都不允许读和写。 - -你要写入缓存的数据,都是从 **MySQL** 里查出来的,都得写入 **MySQL** 中,写入 **MySQL** 中的时候必须保存一个时间戳,从 **MySQL** 查出来的时候,时间戳也查出来。 - -每次要**写之前,先判断**一下当前这个 Value 的时间戳是否比缓存里的 Value 的时间戳要新。如果是的话,那么可以写,否则,就不能用旧的数据覆盖新的数据。 - -### 你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题? - -一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统**不是严格要求** “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:**读请求和写请求串行化**,串到一个**内存队列**里去。 - -串行化可以保证一定不会出现不一致的情况,但是它也会导致系统的吞吐量大幅度降低,用比正常情况下多几倍的机器去支撑线上的一个请求。 - -把一些列的操作都放到队列里面,顺序肯定不会乱,但是并发高了,这队列很容易阻塞,反而会成为整个系统的弱点,瓶颈 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g8tf91m8bjj308e0q2t9j.jpg) - -### 你了解最经典的KV、DB读写模式么? - -最经典的缓存+数据库读写的模式,就是 **Cache Aside Pattern** - -- 读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。 -- 更新的时候,**先更新数据库,然后再删除缓存**。 - -###为什么是删除缓存,而不是更新缓存? - -原因很简单,很多时候,在复杂点的缓存场景,缓存不单单是数据库中直接取出来的值。 - -比如可能更新了某个表的一个字段,然后其对应的缓存,是需要查询另外两个表的数据并进行运算,才能计算出缓存最新的值的。 - -另外更新缓存的代价有时候是很高的。是不是说,每次修改数据库的时候,都一定要将其对应的缓存更新一份?也许有的场景是这样,但是对于**比较复杂的缓存数据计算的场景**,就不是这样了。如果你频繁修改一个缓存涉及的多个表,缓存也频繁更新。但是问题在于,**这个缓存到底会不会被频繁访问到?** - -举个栗子:一个缓存涉及的表的字段,在 1 分钟内就修改了 20 次,或者是 100 次,那么缓存更新 20 次、100 次;但是这个缓存在 1 分钟内只被读取了 1 次,有**大量的冷数据**。 - -实际上,如果你只是删除缓存的话,那么在 1 分钟内,这个缓存不过就重新计算一次而已,开销大幅度降低。**用到缓存才去算缓存。** - -其实删除缓存,而不是更新缓存,就是一个 Lazy 计算的思想,不要每次都重新做复杂的计算,不管它会不会用到,而是让它到需要被使用的时候再重新计算。 - -像 **Mybatis**,**Hibernate**,都有懒加载思想。查询一个部门,部门带了一个员工的 **List**,没有必要说每次查询部门,都里面的 1000 个员工的数据也同时查出来啊。80% 的情况,查这个部门,就只是要访问这个部门的信息就可以了。先查部门,同时要访问里面的员工,那么这个时候只有在你要访问里面的员工的时候,才会去数据库里面查询 1000 个员工。 - -###Redis 和 Memcached 有啥区别,为啥选择用Redis作为你们的缓存中间件? - -**Redis** 支持复杂的数据结构: - -**Redis** 相比 **Memcached** 来说,拥有更多的数据结构,能支持更丰富的数据操作。如果需要缓存能够支持更复杂的结构和操作, **Redis** 会是不错的选择。 - -**Redis** 原生支持集群模式: - -在 redis3.x 版本中,便能支持 **Cluster** 模式,而 **Memcached** 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据。 - -性能对比: - -由于 **Redis** 只使用单核,而 **Memcached** 可以使用多核,所以平均每一个核上 **Redis** 在存储小数据时比 **Memcached** 性能更高。而在 100k 以上的数据中,**Memcached** 性能要高于 **Redis**,虽然 **Redis** 最近也在存储大数据的性能上进行优化,但是比起 **Remcached**,还是稍有逊色。 - -Tip:其实面试官这么问,是想看你知道为啥用这个技术栈么?你为啥选这个技术栈,你是否做过技术选型的对比,优缺点你是否了解,你啥都不知道,只是为了用而用,那你可能就**差点意思**了。 - -### Redis 的线程模型了解么? - -**Redis** 内部使用文件事件处理器 `file event handler`,这个文件事件处理器是单线程的,所以 **Redis** 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 **Socket**,根据 **Socket** 上的事件来选择对应的事件处理器进行处理。 - -文件事件处理器的结构包含 4 个部分: - -- 多个 **Socket** -- IO 多路复用程序 -- 文件事件分派器 -- 事件处理器(连接应答处理器、命令请求处理器、命令回复处理器) - -多个 **Socket** 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO 多路复用程序会监听多个 **Socket**,会将 **Socket** 产生的事件放入队列中排队,事件分派器每次从队列中取出一个事件,把该事件交给对应的事件处理器进行处理。 - -## 面试结束 - -### 小伙子对你面试了四轮,你说话有理有据,逻辑清晰,来公司后肯定是一把好手,我想要不你来当我的Leader吧,哈哈? - -面试官别跟我开玩笑了,我跟您这样日积月累的技术专家还是有很多差距的,您的经验和技术上的深度,没有很长时间的磨练是无法达到的,我还得多跟您学习。 - -### 好的,小伙子有点东西,你年少有为不自卑,知道什么是珍贵,就是你了来上班吧。 - -好的面试官,不过我想我在Java基础,MQ,Dubbo等等领域还有好多知识点您没问我,要不下次继续面我? - -强行,为吊打下一期埋伏笔哈哈,下期写啥你们定!!! - -能撑到最后,你自己都忍不住自己给自己点个赞了! - -(**暗示点赞,每次都看了不点赞,你们想白嫖我么?你们好坏喲,不过我喜欢**)。 - ----- - -**《吊打面试官》Redis系列 ---- 全剧终** - ----- - -## 总结 - -既然都说了是**Redis**的终章我最后也做个**Redis**方面常见面试题,题目的总结,答案大家要去思考我前面的文章基本上都提到了,结果可以去我公众号回复【答案】获取,不过我还是希望大家能看到题目就能想到答案,并且记在心中,教大家怎么回答只是帮大家组织下语言,真正的场景解决方案还是要大家理解的。 - -(周三以后出答案,我先睡会) - -- 0、在集群模式下,Redis 的 Key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 Hash 算法吗? -- 1、使用Redis有哪些好处? -- 2、Redis相比Memcached有哪些优势? -- 3、Redis常见性能问题和解决方案 -- 4、MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据? -- 5、Memcache与Redis的区别都有哪些? -- 6、Redis 常见的性能问题都有哪些?如何解决? -- 7、在什么样的场景下可以充分的利用Redis的特性,大大提高Redis的效率? -- 8、Redis的缓存雪崩、穿透、击穿了解么?有什么异同点?分别怎么解决? -- 9、Redis的基本类型有哪些?他们的使用场景了解么?比较高级的用法你使用过么? -- 10、Redis主从怎么同步数据的?集群的高可用怎么保证?持久化机制了解么? -- 11、为什么 redis 单线程却能支撑高并发? -- 12、如何保证缓存和数据库数据的一致性? -- 13、项目中是怎么用缓存的,用了缓存之后会带来什么问题? - -## 絮叨+ - -最后我想说的就是,我这四章只是介绍到了一些**Redis**面试比较常见的问题,其实还有很多点我都没回答到,大家如果为了对付面试**可能**是够用了,但是我们技术人员还是要保持对技术的**敬畏心**,你不能**浅尝即止**,还是要深究的。 - -你永远只会用,不去考虑用了会带来的问题,以及出现问题之后的解决方案,我觉得你大概率会**停滞不前**,既然入都入了这行了,为啥不武装一下自己。 - -其实学习技术是个**反哺**的过程,学习的时候可能你只是感觉知识广度、深度上去了,一个知识点你这样,两个、三个知识点你都这样,最后你发现你的技术已经跟身边一样P6的仔不一样了,这样你可能在团队重大项目的贡献都上去了,那P7的晋升几率是不是大了,钱是不是上去了,女朋友是不是好看了,房子是不是大了。 - -## End - -好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是**人才**,我后面会每周都更新几篇《**吊打面试官**》系列和**Java技术栈**相关的文章。如果你有什么想知道的,也可以留言给我,或者去公众号加我微信,我一有时间就会写出来,我们共同进步。 - -非常感谢**人才**们能看到这里,如果这个文章写得还不错,觉得**「敖丙」**我**有点东西**的话 **求点赞👍** **求关注❤️** **求分享👥** **求留言💬** 对暖男我来说**非常有用**。 - -各位的支持和认可,就是我创作的最大动力,我们下篇文章见! - -敖丙 | 文 【原创】【转载请联系本人】 - ------- - -> **《吊打面试官》**系列每周持续更新,可以关注我的公众号「 **JavaFamily** 」第时间阅读和催更(公众号比博客早一到两天哟),里面也有我个人微信有什么问题也可以直接滴滴我,我也是个新人,不过不影响我们一起进步,作为渣男,我给不了你幸福,还给不了你温暖嘛? - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g8p9gftfchj30p00dwjuj.jpg) \ No newline at end of file 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/redis/\347\247\222\346\235\200\347\263\273\347\273\237\350\256\276\350\256\241.md" deleted file mode 100644 index 6f2e552..0000000 --- "a/docs/redis/\347\247\222\346\235\200\347\263\273\347\273\237\350\256\276\350\256\241.md" +++ /dev/null @@ -1,288 +0,0 @@ -> 你知道的越多,你不知道的越多 - -> 点赞再看,养成习惯 - -> **GitHub**上已经开源 [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 有一线大厂面试点脑图和个人联系方式,欢迎Star和指教 - -## 前言 - -**Redis**在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在**Redis**的使用和原理方面对小伙伴们进行360°的刁难。 - -作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚(**请允许我使用一下夸张的修辞手法**)。 - -于是在一个寂寞难耐的夜晚,我痛定思痛,决定开始写**《吊打面试官》**系列,希望能帮助各位读者以后面试势如破竹,对面试官进行360°的反击,吊打问你的面试官,让一同面试的同僚瞠目结舌,疯狂收割大厂Offer! - -## 絮叨 - -之前写了很多**Redis**相关的知识点,我又大概回头看了下,除了比较底层的东西没写很深之外,我基本上的点都提到过了,我相信如果只是为了应付面试应该是够了的,但是如果你想把它们真正的吸收纳为己用,还是需要**大量的知识积累**,和**很多实际操作**的。 - -就我自己而言**Redis**在开发过程中实在用得太普遍了,热点数据的存储啊,整体性能的提升啊都会用到,但是就像我说的**技术就是一把双刃剑**,使用它们随之而来的问题也会很多的,我在老东家双十二就遇到**缓存雪崩**问题让整体服务宕机3分钟,相必大家都知道阿里今年的双十一数据了,那三分钟在这种时候到底值多少钱?真的不敢想象。 - -**Redis**的普遍我就拿掘金我自己的认知举例,不知道对不对,但是目测是对的。 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g92g1h1g46j30dw0f1dix.jpg) - -**大家看到问题所在了么?**是的热门的赞的数据不是最新的,我盲猜一波上面的热门文章是缓存。失效时间应该是几十分钟的,为啥这么做呢? - -热门文章是大家共同都会看到的,也就是**热点数据**,在那做缓存,他是不需要那么高的**实时性**的,那下面的文章列表是最新发布的文章,有高实时性的特点,大家访问多的放在缓存还可以给DB减少压力,我也不知道掘金是不是这么做的哈,反正道理是这么个道理了。 - -那什么场景是使用**Redis比较复杂的场景**,而且需要**大量中间件**和**业务逻辑**去配合的呢? - -**秒杀**!是的就是今天的主题秒杀,我就用我自己的思路带大家一起看一下,设计一个秒杀从前到后,从内到外到底要技术人员做多少准备。 - -## 捞一下 - -上一期吊打系列我们提到了**Redis**相关的一些知识,还没看的小伙伴可以回顾一下 ,这**对于这期的阅读很有帮助**,涉及到主从同步、读写分离、持久化这样的知识点。 - -- **[《吊打面试官》系列-Redis基础](https://juejin.im/post/5db66ed9e51d452a2f15d833)** -- **[《吊打面试官》系列-缓存雪崩、击穿、穿透](https://juejin.im/post/5dbef8306fb9a0203f6fa3e2)** -- **[《吊打面试官》系列-Redis哨兵、持久化、主从、手撕LRU](https://juejin.im/post/5dc3a9fbf265da4d3c072eab)** -- **[《吊打面试官》系列-Redis终章凛冬将至、FPX新王登基](https://juejin.im/post/5dc850b4e51d452c2308ee27)** -- **[《吊打面试官》系列-Redis常见面试题(带答案)](https://juejin.im/post/5dcaebea518825571f5c4ab0)** - -打好基础才可以写出更好的代码哟!不然就等着产品测试怼你吧。 - -## 正文 - -首先设计一个系统之前,我们需要先确认我们的业务场景是怎么样子的,我就**带着大家一起假设一个场景**好吧。 - -### 场景 - -我们现场要卖100件下面这个**婴儿纸尿裤**,然后我们根据以往这样秒杀活动的数据经验来看,目测来抢这100件纸尿裤的人足足有10万人。(南极人打钱!) - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g92ddsedbrj308z0jg759.jpg) - -你一听,完了呀,这我们的服务器哪里顶得住啊!说真的直接打DB肯定挂。但是别急嘛,有**暖男**敖丙在,我们在开始之前应该先思考下**会出现哪些问题**? - -### 问题 - -#### 高并发: - -是的**高并发**这个是我们想都不用想的一个点,一瞬间这么多人进来这不是高并发什么时候是呢? - -是吧,秒杀的特点就是这样**时间极短**、 **瞬间用户量大**。 - -正常的店铺营销都是用极低的价格配合上短信、APP的精准推送,吸引特别多的用户来参与这场秒杀,**爽了商家苦了开发呀**。 - -秒杀大家都知道如果真的营销到位,价格诱人,几十万的流量我觉得完全不是问题,那单机的**Redis**我感觉3-4W的QPS还是能顶得住的,但是再高了就没办法了,那这个数据随便搞个热销商品的秒杀可能都不止了。 - -大量的请求进来,我们需要考虑的点就很多了,**缓存雪崩**,**缓存击穿**,**缓存穿透**这些我之前提到的点都是有可能发生的,出现问题打挂DB那就很难受了,活动失败用户体验差,活动人气没了,最后背锅的还是**开发**。 - - - -#### 超卖: - -但凡是个秒杀,都怕**超卖**,我这里举例的只是尿不湿,要是换成100个华为MatePro30,商家的预算经费卖100个可以赚点还可以造势,结果你写错程序多卖出去200个,你不发货用户**投诉你**,平台**封你店**,你发货就**血亏**,你怎么办? -(没事看了敖丙的文章直接不怕) - -那最后只能**杀个开发祭天**解气了,秒杀的价格本来就低了,基本上都是不怎么赚钱的,超卖了就恐怖了呀,所以超卖也是很关键的一个点。 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g90qmwe0jaj308y0b2jyk.jpg) - -#### 恶意请求: - -你这么低的价格,假如我抢到了,我转手卖掉我不是**血赚**?就算我不卖我也不亏啊,那用户知道,你知道,别的别有用心的人(黑客、黄牛...)肯定也知道的。 - -那简单啊,我知道你什么时候抢,我搞个几十台机器搞点脚本,我也模拟出来十几万个人左右的请求,那我是不是意味着我基本上有80%的成功率了。 - -真实情况可能远远不止,因为机器请求的速度比人的手速往往快太多了,在贵州的敖丙我每年回家抢高铁票都是**秒光**的,我也不知道有没有黄牛的功劳,我要Diss你,黄牛。杰伦演唱会门票抢不到,我也Diss你。 - -Tip:科普下,小道消息了解到的,黄牛的抢票系统,比国内很多小公司的系统还吊很多,架构设计都是顶级的,我用**顶配的服务**加上**顶配的架构设计**,你还想看演唱会?还想回家? - -不过不用黄牛我回家都难,我们云贵川跟我一样要回家过年的仔太多了555! - -#### 链接暴露: - -前面几个问题大家可能都很好理解,一看到这个有的小伙伴可能会比较疑惑,啥是**链接暴露**呀? - - - -相信是个开发同学都对这个画面一点都不陌生吧,懂点行的仔都可以打开谷歌的**开发者模式**,然后看看你的网页代码,有的就有URL,但是我写VUE的时候是事件触发然后去调用文件里面的接口看源码看不到,但是我可以点击一下**查看你的请求地址**啊,不过你好像可以对按钮在秒杀前置灰。 - -不管怎么样子都有危险,撇开外面的所有的东西你都挡住了,你卖这个东西实在便宜得过分,有诱惑力,你能保证**开发不动心**?开发知道地址,在秒杀的时候自己提前请求。。。(开发:怎么TM又是我) - - -![](https://tvax4.sinaimg.cn/large/006Xzox4gy1g7wdbt5o06j308505h745.jpg) - -#### 数据库: - -每秒上万甚至十几万的**QPS**(每秒请求数)直接打到**数据库**,基本上都要把库打挂掉,而且你服务不单单是做秒杀的还涉及其他的业务,你没做**降级、限流、熔断**啥的,别的一起挂,小公司的话可能**全站崩溃404**。 - -反正不管你秒杀怎么挂,你别把别的搞挂了对吧,搞挂了就不是杀一个程序员能搞定的。 - -程序员:我TM好难啊! - -### 问题都列出来了,那怎么设计,怎么解决这些问题就是接下去要考虑的了,我们对症下药。 - -#### 服务单一职责: - -设计个能抗住高并发的系统,我觉得还是得**单一职责**。 - -什么意思呢,大家都知道现在设计都是**微服务的设计思想**,然后再用**分布式的部署方式** - -也就是我们下单是有个订单服务,用户登录管理等有个用户服务等等,那为啥我们不给秒杀也开个服务,我们把秒杀的代码业务逻辑放一起。 - -单独给他建立一个数据库,现在的互联网架构部署都是**分库**的,一样的就是订单服务对应订单库,秒杀我们也给他建立自己的秒杀库。 - -至于表就看大家怎么设计了,该设置索引的地方还是要设置索引的,建完后记得用**explain**看看**SQL**的执行计划。(不了解的小伙伴也没事,MySQL章节我会说的) - -单一职责的好处就是就算秒杀没抗住,秒杀库崩了,服务挂了,也不会影响到其他的服务。(强行高可用) - -#### 秒杀链接加盐: - -我们上面说了链接要是提前暴露出去可能有人直接访问url就提前秒杀了,那又有小伙伴要说了我做个时间的校验就好了呀,那我告诉你,知道链接的地址比起页面人工点击的还是有**很大优势**。 - -我知道url了,那我通过程序不断获取最新的北京时间,可以达到**毫秒级别**的,我就在00毫秒的时候请求,我敢说绝对比你人工点的成功率大太多了,而且我可以一毫秒发送N次请求,搞不好你卖100个产品我全拿了。 - - - -**那这种情况怎么避免?** - -简单,把**URL动态化**,就连写代码的人都不知道,你就通过MD5之类的加密算法加密随机的字符串去做url,然后通过前端代码获取url后台校验才能通过。 - -暖男我呢,又准备了一个简单的url加密给大家尝尝鲜,还不**点个赞**? - - - -#### Redis集群: - -之前不是说单机的**Redis**顶不住嘛,那简单多找几个兄弟啊,秒杀本来就是读多写少,那你们是不是瞬间想起来我之前跟你们提到过的,**Redis集群**,**主从同步**、**读写分离**,我们还搞点**哨兵**,开启**持久化**直接无敌高可用! - - - -#### Nginx: - -**Nginx**大家想必都不陌生了吧,这玩意是**高性能的web服务器**,并发也随便顶几万不是梦,但是我们的**Tomcat**只能顶几百的并发呀,那简单呀**负载均衡**嘛,一台服务几百,那就多搞点,在秒杀的时候多租点**流量机**。 - -Tip:据我所知国内某大厂就是在去年春节活动期间租光了亚洲所有的服务器,小公司也很喜欢在双十一期间买流量机来顶住压力。 - - - -**这样一对比是不是觉得你的集群能顶很多了。** - -**恶意请求拦截**也需要用到它,一般单个用户请求次数太夸张,不像人为的请求在网关那一层就得拦截掉了,不然请求多了他抢不抢得到是一回事,服务器压力上去了,可能占用网络带宽或者把**服务器打崩、缓存击穿**等等。 - -#### 资源静态化: - -秒杀一般都是特定的商品还有页面模板,现在一般都是前后端分离的,所以页面一般都是不会经过后端的,但是前端也要自己的服务器啊,那就把能提前放入**cdn服务器**的东西都放进去,反正把所有能提升效率的步骤都做一下,减少真正秒杀时候服务器的压力。 - -#### 按钮控制: - -大家有没有发现没到秒杀前,一般按钮都是**置灰**的,只有时间到了,才能点击。 - -这是因为怕大家在时间快到的最后几秒秒疯狂请求服务器,然后还没到秒杀的时候基本上服务器就挂了。 - -这个时候就需要前端的配合,定时去请求你的后端服务器,获取最新的北京时间,到时间点再给按钮可用状态。 - -按钮可以点击之后也得给他置灰几秒,不然他一样在开始之后一直点的。**你敢说你们秒杀的时候不是这样的?** - - - -#### 限流: - -限流这里我觉得应该分为**前端限流**和**后端限流**。 - -**前端限流**:这个很简单,一般秒杀不会让你一直点的,一般都是点击一下或者两下然后几秒之后才可以继续点击,这也是保护服务器的一种手段。 - -**后端限流**:秒杀的时候肯定是涉及到后续的订单生成和支付等操作,但是都只是成功的幸运儿才会走到那一步,那一旦100个产品卖光了,return了一个false,前端直接秒杀结束,然后你后端也关闭后续无效请求的介入了。 - -Tip:真正的限流还会有限流组件的加入例如:阿里的Sentinel、Hystrix等。我这里就不展开了,就说一下物理的限流。 - -#### 库存预热: - -**秒杀的本质,就是对库存的抢夺**,每个秒杀的用户来你都去数据库查询库存校验库存,然后扣减库存,撇开性能因数,你不觉得这样好繁琐,对业务开发人员都不友好,而且数据库顶不住啊。 - -**开发:你tm总算为我着想一次了。** - -![](https://i02piccdn.sogoucdn.com/4a437aff2bada6e1) - -#### 那怎么办? - -我们都知道数据库顶不住但是他的兄弟非关系型的数据库**Redis**能顶啊! - -那不简单了,我们要开始秒杀前你通过定时任务或者运维同学**提前把商品的库存加载到Redis中**去,让整个流程都在Redis里面去做,然后等秒杀介绍了,再异步的去修改库存就好了。 - -但是用了Redis就有一个问题了,我们上面说了我们采用**主从**,就是我们会去读取库存然后再判断然后有库存才去减库存,正常情况没问题,但是高并发的情况问题就很大了。 - -这里我就不画图了,我本来想画图的,想了半天我觉得语言可能更好表达一点。 - -**多品几遍!!!**就比如现在库存只剩下1个了,我们高并发嘛,4个服务器一起查询了发现都是还有1个,那大家都觉得是自己抢到了,就都去扣库存,那结果就变成了-3,是的只有一个是真的抢到了,别的都是超卖的。咋办? - -### Lua: - -之前的文章就简单的提到了他,我今天就多一定点篇幅说一下吧。 - -> **Lua** 脚本功能是 Reids在 2.6 版本的最大亮点, 通过内嵌对 Lua 环境的支持, Redis 解决了长久以来不能高效地处理 **CAS** (check-and-set)命令的缺点, 并且可以通过组合使用多个命令, 轻松实现以前很难实现或者不能高效实现的模式。 - -**Lua脚本是类似Redis事务,有一定的原子性,不会被其他命令插队,可以完成一些Redis事务性的操作。**这点是关键。 - -知道原理了,我们就写一个脚本把判断库存扣减库存的操作都写在一个脚本丢给Redis去做,那到0了后面的都Return False了是吧,一个失败了你修改一个开关,直接挡住所有的请求,然后再做后面的事情嘛。 - -#### 限流&降级&熔断&隔离: - -这个为啥要做呢,不怕一万就怕万一,万一你真的顶不住了,**限流**,顶不住就挡一部分出去但是不能说不行,**降级**,降级了还是被打挂了,**熔断**,至少不要影响别的系统,**隔离**,你本身就独立的,但是你会调用其他的系统嘛,你快不行了你别拖累兄弟们啊。 - -![](https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1573745703045&di=af0071ba36eace57ad770eca350b5b68&imgtype=0&src=http%3A%2F%2Fimg.bqatj.com%2Fimg%2F8bb02435ae40b2f2.jpg) - -#### 削峰填谷: - -一说到这个名词,很多小伙伴就知道了,对的**MQ**,你买东西少了你直接100个请求改库我觉得没问题,但是万一秒杀一万个,10万个呢?服务器挂了,**程序员又要背锅的**。 - -Tip:**可能小伙伴说我们业务达不到这个量级,没必要。但是我想说我们写代码,就不应该写出有逻辑漏洞的代码,至少以后公司体量上去了,别人一看居然不用改代码,一看代码作者是敖丙?有点东西!** - -你可以把它放消息队列,然后一点点消费去改库存就好了嘛,不过单个商品其实一次修改就够了,我这里说的是**某个点多个商品**一起秒杀的场景,像极了双十一零点。 - -## 总结 - -到这里我想我已经基本上把该考虑的点还有对应的解决方案也都说了一下,不知道还有没有没考虑到的,但是就算没考虑到我想我这个设计,应该也能撑住一个完整的秒杀流程。 - -(有大佬的话给敖丙点多的思路,去GitHub [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 上给我提,也有我的联系) - -最后我就画个完整的流程图给大家收个尾吧! - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g92dbyzsm7j30u80tqq4t.jpg) -Tip:这个链路还是比较简单的,很多细节的点全部画出来就太复杂了,我上面已经提到了所有的注意点了,大家都看看,真正的秒杀有比我这个简单的,也有比我这个复杂N倍的,之前的电商老东家就做的很高级,有机会也可以跟你们探讨,不过是面试嘛,我就给思路,让你理解比较关键的点。 - -秒杀这章我脑细胞死了很多,考虑了很多个点,最后还是出来了,忍不住给自己**点赞**! - -(**这章是真的不要白嫖,每次都看了不点赞,你们想白嫖我么?你们好坏喲,不过我好喜欢**) - -## 总结 - -我们玩归玩,闹归闹,别拿面试开玩笑。 - -秒杀不一定是每个同学都会问到的,至少肯定没**Redis基础**那样常问,但是一旦问到,大家一定要回答到点上。 - -至少你得说出**可能出现的情况**,**需要注意的情况**,以及对于的**解决思路和方案**。 - -最后就是需要对整个链路比较熟悉,注意是一个完整的链路,前端怎么设计的呀,网关的作用呀,怎么**解决Redis的并发竞争**啊,**数据的同步方式**呀,**MQ的作用**啊。 - -(提到MQ又是一整条的知识链路,什么异步、削峰、解耦等等,所以面试,我们还是不打没有把握的胜仗) - -### 流着泪说再见 - -**Redis系列**到此是真的要跟大家说再见了,写了7篇文章,其实很多大佬的思路和片段真心赞,其实大家看出来了我的文章个人风格色彩特别浓厚,我个人在生活中就是这么说话的,也希望用这种风格把原本枯燥乏味的知识点让大家都像看小说一样津津有味的看下去,不知道大家什么感受,好的不好的都请给我留言。 - -我这个系列的我会写到我**GitHub** [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 图中所有的知识点,以后就麻烦大家多多关照了,我写作的时间都是业余时间,基本上周末和晚上的时间都贡献出来了,我也是个新人很多点也没接触到,也要看书看资料才能写出来,所以有时候还是希望大家多多包涵。 - -那我们下期见! - -下期写________________? - -不告诉你,哈哈! - -## 日常求赞 - -好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是**人才**。 - -我后面会每周都更新几篇《吊打面试官》系列和互联网常用技术栈相关的文章,非常感谢**人才**们能看到这里,如果这个文章写得还不错,觉得「敖丙」我**有点东西**的话 **求点赞👍** **求关注❤️** **求分享👥** 对暖男我来说真的 **非常有用**!!! - -创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见! - -敖丙 | 文 【原创】【转载请联系本人】 如果本篇博客有任何错误,请批评指教,不胜感激 ! - ------- - -> 《吊打面试官》系列每周持续更新,可以关注我的公众号「**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 diff --git "a/docs/redis/\350\257\276\344\273\243\350\241\250\346\200\273\347\273\223.md" "b/docs/redis/\350\257\276\344\273\243\350\241\250\346\200\273\347\273\223.md" deleted file mode 100644 index 278dd85..0000000 --- "a/docs/redis/\350\257\276\344\273\243\350\241\250\346\200\273\347\273\223.md" +++ /dev/null @@ -1,63 +0,0 @@ -> -> -> 你知道的越多,你不知道的越多 - -> 点赞再看,养成习惯 - -> **GitHub**上已经开源 [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和指教 - -## 絮叨 - -本来是没这期的,按道理更新也应该是在周一更新**消息队列**的幂等,分布式事务相关的文章,但是这篇**暖男**我**实在忍不住了**,不是发自己的文章,是帮**课代表**发一下,她本科是**北京交通大学**,也是**电子科技大学**的研究生。 - -**她**看了我的系列,做了个**笔记**📒,我一看,**偶买噶 !**。 - -**这是什么仙女啊**,这是我**第一次**有这种感觉,这笔记有着前**所未有的新鲜感**,细节的勾勒,让整个笔记更显出**奥妙.**...有些**不太成熟的话语**,跟我文章的**骚气**十分搭配,将**Redis**的性能衬托的更为出色,这才呈现出完美的**课代表笔记**。 - -这也是我第一次看到看个渣男的文章都做笔记的,这笔记让我有了初恋的味道,这我以后可得好好写了,不然**辜负**了**课代表这样认真的妹子**,到时候到杭州来找我:敖丙你个**渣男**乱写,害我没拿Offer! **我要杀了你**! - -我也不多BB了不影响大家食用了,**课代表**说了以后我写的**其他技术栈的笔记**一样会贡献出来,代价就是要嫁给我,呸呸呸,代价就是我以后帮他介绍大厂朋友内推下,看看简历呀,解答下职场问题啊什么的。(根本就是举手之劳啊,我血赚?) - -我一听我不能忍啊,我**气得拍桌子**,不行你以后不懂的知识点我包了,我也不懂的咳咳我看完书再包? - -哈哈开玩笑的,总之**课代表的精神**大家包括我都应该好好学学,这种人活该她拿**SSP**的Offer。 - -**Tip**:SSP (Special Offer 优秀生源Offer渠道 ) - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g94ru45jrfj30u01hob29.jpg) - -能总结得这么全面连我都忍不住**点赞**了! - -## 总结 - -里面很多细节的点还是需要完善的,课代表最近上课很忙帅丙我呢除了周末也没时间,不过会不断完善到GIt的,大家也可以去公众号回复「**课代表**」获取思维导图原稿。 - -其实我真的很欣赏课代表这样的精神的,她这样的举动**触动了我**,想想自己大学时候的样子,我忍不住给了自己两嘴巴子,我但凡有课代表一半的努力都不至于沦落到今天这样,等我冷静下来,走到了窗边,眺望头上若影若现的月亮,**我的眼角又湿了**! - -## 花絮 - -人才群里的人才真的都是**人才**,一周两更**高产似母猪**了我都,还天天**催更**不过我也认了,**课代表**进去差点把人家吓走,**这么好的课代表**吓走了我哪里找第二个? - -**GitHub**上有我联系方式和入群方式 [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g94qkzpjvnj30b40atjs9.jpg) - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g94qlkm935j30b40aojry.jpg) - -## 日常求赞 - -这期本来不想求赞的,但是我一想是**课代表**写的大家是给她赞,不是给我赞呀。 - -好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是**人才**。 - -我后面会每周都更新几篇《吊打面试官》系列和互联网常用技术栈相关的文章,非常感谢**人才**们能看到这里,如果这个文章写得还不错,觉得「课代表」**有点东西**的话 **求点赞👍** **求关注❤️** **求分享👥** 对暖男我来说真的 **非常有用**!!! - -创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见! - -敖丙&**课代表** | 文 【原创】【转载请联系本人】 如果本篇博客有任何错误,请批评指教,不胜感激 ! - ------- - -> 《吊打面试官》系列每周持续更新,可以关注我的公众号「 **JavaFamily** 」第一时间阅读和催更(公众号比博客早一到两篇哟),本文**GitHub**上已经收录[https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily),有一线大厂面试点思维导图,欢迎Star和完善,里面也有我个人联系方式有什么问题也可以直接找我,也有人才交流群,我们一起有点东西。 - -![](https://tva1.sinaimg.cn/large/006y8mN6ly1g92gbyipnjj30p00dw79c.jpg) \ No newline at end of file