From 59a374264bb8e28488429c433100781597e01ba9 Mon Sep 17 00:00:00 2001
From: Suwen macOS Yurisa <577014284@qq.com>
Date: Wed, 15 Jul 2020 17:49:31 +0800
Subject: [PATCH 1/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=94=99=E8=AF=AF?=
=?UTF-8?q?=E8=B7=AF=E5=BE=84,=E9=94=99=E5=88=AB=E5=AD=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ReadMe.md | 64 +----
.../\345\211\221\346\214\207offer.md" | 104 +++----
...33\346\200\273\347\273\223\357\274\211.md" | 46 +---
docs/hxx/think/copy.md | 35 ---
...\213\277\345\217\243\345\244\264offer).md" | 259 ------------------
...40\350\275\275\350\277\207\347\250\213.md" | 4 +-
...72\347\241\200\347\237\245\350\257\206.md" | 8 +-
...06\350\212\202\347\262\276\350\256\262.md" | 2 +-
...46\344\271\240\346\200\273\347\273\223.md" | 5 +-
...66\345\231\250\350\257\246\350\247\243.md" | 4 +-
10 files changed, 91 insertions(+), 440 deletions(-)
delete mode 100644 "docs/interview/BATJ-Experience/\350\232\202\350\232\201\351\207\221\346\234\215\345\256\236\344\271\240\347\224\237\351\235\242\347\273\217\346\200\273\347\273\223(\345\267\262\346\213\277\345\217\243\345\244\264offer).md"
diff --git a/ReadMe.md b/ReadMe.md
index 54edfa2..a5ee595 100644
--- a/ReadMe.md
+++ b/ReadMe.md
@@ -1,20 +1,6 @@
-本仓库为【Java工程师技术指南】力求打造最完整最实用的Java工程师学习指南!
+本仓库原为[Java工程师技术指南](https://github.com/h2pl/Java-Tutorial)力求打造最完整最实用的Java工程师学习指南!
-这些文章和总结都是我近几年学习Java总结和整理出来的,非常实用,对于学习Java后端的朋友来说应该是最全面最完整的技术仓库。
-我靠着这些内容进行复习,拿到了BAT等大厂的offer,这个仓库也已经帮助了很多的Java学习者,如果对你有用,希望能给个star支持我,谢谢!
-
-为了更好地讲清楚每个知识模块,我们也参考了很多网上的优质博文,力求不漏掉每一个知识点,所有参考博文都将声明转载来源,如有侵权,请联系我。
-
-点击关注[微信公众号](#微信公众号)及时获取笔主最新更新文章,并可免费领取Java工程师必备学习资源
-
-
-
-
-
-
-
-
-推荐使用 https://how2playlife.com/ 在线阅读,在线阅读内容本仓库同步一致。这种方式阅读的优势在于:左侧边栏有目录,阅读体验更好。
+现 fork 修正错误和更新内容。
## 目录
@@ -81,9 +67,9 @@
* [JavaIO流](docs/java/basic/16、JavaIO流.md)
* [多线程](docs/java/basic/17、多线程.md)
* [深入理解内部类](docs/java/basic/18、深入理解内部类.md)
-* [javac和javap](docs/java/basic/19、Java集合框架梳理.md)
-* [Java8新特性终极指南](docs/java/basic/20、javac和javap.md)
-* [Java类和包](docs/java/basic/21、Java8新特性终极指南.md)
+* [Java集合框架梳理](docs/java/basic/19、Java集合框架梳理.md)
+* [javac和javap](docs/java/basic/20、javac和javap.md)
+* [Java8新特性终极指南](docs/java/basic/21、Java8新特性终极指南.md)
* [序列化和反序列化](docs/java/basic/22、序列化和反序列化.md)
* [继承、封装、多态的实现原理](docs/java/basic/23、继承、封装、多态的实现原理.md)
@@ -212,20 +198,26 @@ todo
## 计算机基础
### 计算机网络
-todo
-
+* [计算机网络学习总结](docs/network/计算机网络学习总结.md)
### 操作系统
-todo
+
+[操作系统学习总结](docs/operating-system/操作系统学习总结.md)
#### Linux相关
-todo
+[Linux内核与基础命令学习总结](docs/operating-system/Linux内核与基础命令学习总结.md)
+
+#### 编译原理
+
+todo
### 数据结构与算法
+
todo
#### 数据结构
+
todo
#### 算法
@@ -347,29 +339,3 @@ todo
## 待办
springboot和springcloud
-
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师技术学习资料:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-**Java进阶架构师资料:** 关注公众号后回复 **”架构师“** 即可领取 Java基础、进阶、项目和架构师等免费学习资料,更有数据库、分布式、微服务等热门技术学习视频,内容丰富,兼顾原理和实践,另外也将赠送作者原创的Java学习指南、Java程序员面试指南等干货资源
-
-
-
-### 个人公众号:程序员黄小斜
-
-黄小斜是 985 硕士,阿里巴巴Java工程师,在自学编程、技术求职、Java学习等方面有丰富经验和独到见解,希望帮助到更多想要从事互联网行业的程序员们。
-
-作者专注于 JAVA 后端技术栈,热衷于分享程序员干货、学习经验、求职心得,以及自学编程和Java技术栈的相关干货。
-
-黄小斜是一个斜杠青年,坚持学习和写作,相信终身学习的力量,希望和更多的程序员交朋友,一起进步和成长!
-
-**原创电子书:** 关注微信公众号【程序员黄小斜】后回复 **"原创电子书"** 即可领取我原创的电子书《菜鸟程序员修炼手册:从技术小白到阿里巴巴Java工程师》这份电子书总结了我2年的Java学习之路,包括学习方法、技术总结、求职经验和面试技巧等内容,已经帮助很多的程序员拿到了心仪的offer!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号【程序员黄小斜】后,后台回复关键字 **“资料”** 即可免费无套路获取,包括Java、python、C++、大数据、机器学习、前端、移动端等方向的技术资料。
-
-
diff --git "a/docs/algorithms/\345\211\221\346\214\207offer.md" "b/docs/algorithms/\345\211\221\346\214\207offer.md"
index a4f7aca..4c6e825 100644
--- "a/docs/algorithms/\345\211\221\346\214\207offer.md"
+++ "b/docs/algorithms/\345\211\221\346\214\207offer.md"
@@ -266,6 +266,7 @@ https://github.com/h2pl/SwordToOffer
+
该算法的时间复杂度是多少呢?考虑最坏情况下,每次 partition 将数组分为长度为 N-1 和 1 的两部分,然后在长的一边继续寻找第 K 大,此时时间复杂度为 O(N^2 )。不过如果在开始之前将数组进行随机打乱,那么可以尽量避免最坏情况的出现。而在最好情况下,每次将数组均分为长度相同的两半,运行时间 T(N) = N + T(N/2),时间复杂度是 O(N)。
所以也就是说,本题用这个方法解的话,复杂度只需要O(n),因为第一次交换需要N/2,j接下来的交换的次数越来越少,最后加起来就是O(N)了。
@@ -304,11 +305,11 @@ https://github.com/h2pl/SwordToOffer
- for(int i=0;i
-
-- [一面 (37 分钟左右)](#一面-37-分钟左右)
-- [二面 (33 分钟左右)](#二面-33-分钟左右)
-- [三面 (46 分钟)](#三面-46-分钟)
-- [HR 面](#hr-面)
-
-
-
-### 一面 (37 分钟左右)
-
-一面是上海的小哥打来的,3.12 号中午确认的内推,下午就打来约时间了,也是唯一一个约时间的面试官。约的晚上八点。紧张的一比,人生第一次面试就献给了阿里。
-
-幸运的是一面的小哥特温柔。好像是个海归?口语中夹杂着英文。废话不多说,上干货:
-
-**面试官:** 先自我介绍下吧!
-
-**我:** 巴拉巴拉...。
-
-> 关于自我介绍:从 HR 面、技术面到高管面/部门主管面,面试官一般会让你先自我介绍一下,所以好好准备自己的自我介绍真的非常重要。网上一般建议的是准备好两份自我介绍:一份对 HR 说的,主要讲能突出自己的经历,会的编程技术一语带过;另一份对技术面试官说的,主要讲自己会的技术细节,项目经验,经历那些就一语带过。
-
-**面试官:** 我看你简历上写你做了个秒杀系统?我们就从这个项目开始吧,先介绍下你的项目。
-
-> 关于项目介绍:如果有项目的话,技术面试第一步,面试官一般都是让你自己介绍一下你的项目。你可以从下面几个方向来考虑:
->
-> 1. 对项目整体设计的一个感受(面试官可能会让你画系统的架构图)
-> 2. 在这个项目中你负责了什么、做了什么、担任了什么角色
-> 3. 从这个项目中你学会了那些东西,使用到了那些技术,学会了那些新技术的使用
-> 4. 另外项目描述中,最好可以体现自己的综合素质,比如你是如何协调项目组成员协同开发的或者在遇到某一个棘手的问题的时候你是如何解决的又或者说你在这个项目用了什么技术实现了什么功能比如:用 redis 做缓存提高访问速度和并发量、使用消息队列削峰和降流等等。
-
-**我:** 我说了我是如何考虑它的需求(秒杀地址隐藏,记录订单,减库存),一开始简单的用 synchronized 锁住方法,出现了问题,后来乐观锁改进,又有瓶颈,再上缓存,出现了缓存雪崩,于是缓存预热,错开缓存失效时间。最后,发现先记录订单再减库存会减少行级锁等待时间。
-
-> 一面面试官很耐心地听,并给了我一些指导,问了我乐观锁是怎么实现的,我说是基于 sql 语句,在减库存操作的 where 条件里加剩余库存数>0,他说这应该不算是一种乐观锁,应该先查库存,在减库存的时候判断当前库存是否与读到的库存一样(可这样不是多一次查询操作吗?不是很理解,不过我没有反驳,只是说理解您的意思。事实证明千万别怼面试官,即使你觉得他说的不对)
-
-**面试官:** 我缓存雪崩什么情况下会发生?如何避免?
-
-**我:** 当多个商品缓存同时失效时会雪崩,导致大量查询数据库。还有就是秒杀刚开始的时候缓存里没有数据。解决方案:缓存预热,错开缓存失效时间
-
-**面试官:** 问我更新数据库的同时为什么不马上更新缓存,而是删除缓存?
-
-**我:** 因为考虑到更新数据库后更新缓存可能会因为多线程下导致写入脏数据(比如线程 A 先更新数据库成功,接下来要取更新缓存,接着线程 B 更新数据库,但 B 又更新了缓存,接着 B 的时间片用完了,线程 A 更新了缓存)
-
-逼逼了将近 30 分钟,面试官居然用周杰伦的语气对我说:
-
-
-
-我突然受宠若惊,连忙说谢谢,也正是因为第一次面试得到了面试官的肯定,才让我信心大增,二三面稳定发挥。
-
-**面试官又曰:** 我看你还懂数据库是吧,答:略懂略懂。。。那我问个简单的吧!
-
-**我:** 因为这个问题太简单了,所以我忘记它是什么了。
-
-**面试官:** 你还会啥数据库知识?
-
-**我:** 我一听,问的这么随意的吗。。。都让我选题了,我就说我了解索引,慢查询优化,巴拉巴拉
-
-**面试官:** 等等,你说索引是吧,那你能说下索引的存储数据结构吗?
-
-**我:** 我心想这简单啊,我就说 B+树,还说了为什么用 B+树
-
-**面试官:** 你简历上写的这个 J.U.C 包是什么啊?(他居然不知道 JUC)
-
-**我:** 就是 java 多线程的那个包啊。。。
-
-**面试官:** 那你都了解里面的哪些东西呢?
-
-**我:** 哈哈哈!这可是我的强项,从 ConcurrentHashMap,ConcurrentLinkedQueue 说到 CountDownLatch,CyclicBarrier,又说到线程池,分别说了底层实现和项目中的应用。
-
-**面试官:** 我觉得差不多了,那我再问个与技术无关的问题哈,虽然这个问题可能不应该我问,就是你是如何考虑你的项目架构的呢?
-
-**我:** 先用最简单的方式实现它,再去发掘系统的问题和瓶颈,于是查资料改进架构。。。
-
-**面试官:** 好,那我给你介绍下我这边的情况吧
-
-
-
-**总结:** 一面可能是简历面吧,问的比较简单,我在讲项目中说出了我做项目时的学习历程和思考,赢得了面试官的好感,感觉他应该给我的评价很好。
-
-### 二面 (33 分钟左右)
-
-然而开心了没一会,内推人问我面的怎么样啊?看我流程已经到大大 boss 那了。我一听二面不是主管吗???怎么直接跳了一面。于是瞬间慌了,赶紧(下床)学习准备二面。
-
-隔了一天,3.14 的早上 10:56 分,杭州的大大 boss 给我打来了电话,卧槽我当时在上毛概课,万恶的毛概课每节课都点名,我还在最后一排不敢跑出去。于是接起电话来怂怂地说不好意思我在上课,晚上可以面试吗?大大 boss 看来很忙啊,跟我说晚上没时间啊,再说吧!
-
-于是又隔了一天,3.16 中午我收到了北京的电话,当时心里小失望,我的大大 boss 呢???接起电话来,就是一番狂轰乱炸。。。
-
-第一步还是先自我介绍,这个就不多说了,提前准备好要说的重点就没问题!
-
-**面试官:** 我们还是从你的项目开始吧,说说你的秒杀系统。
-
-**我:** 一面时的套路。。。我考虑到秒杀地址在开始前不应暴露给用户。。。
-
-**面试官:** 等下啊,为什么要这样呢?暴露给用户会怎么样?
-
-**我:** 用户提前知道秒杀地址就可以写脚本来抢购了,这样不公平
-
-**面试官:** 那比如说啊,我现在是个黑客,我在秒杀开始时写好了脚本,运行一万个线程获取秒杀地址,这样是不是也不公平呢?
-
-**我:** 我考虑到了这方面,于是我自己写了个 LRU 缓存(划重点,这么多好用的缓存我为啥不用偏要自己写?就是为了让面试官上钩问我是怎么写的,这样我就可以逼逼准备好的内容了!),用这个缓存存储请求的 ip 和用户名,一个 ip 和用户名只能同时透过 3 个请求。
-
-**面试官:** 那我可不可以创建一个 ip 代理池和很多用户来抢购呢?假设我有很多手机号的账户。
-
-**我:** 这就是在为难我胖虎啊,我说这种情况跟真实用户操作太像了。。。我没法区别,不过我觉得可以通过地理位置信息或者机器学习算法来做吧。。。
-
-**面试官:** 好的这个问题就到这吧,你接着说
-
-**我:** 我把生成订单和减库存两条 sql 语句放在一个事务里,都操作成功了则认为秒杀成功。
-
-**面试官:** 等等,你这个订单表和商品库存表是在一个数据库的吧,那如果在不同的数据库中呢?
-
-**我:** 这面试官好变态啊,我只是个本科生?!?!我觉得应该要用分布式锁来实现吧。。。
-
-**面试官:** 有没有更轻量级的做法?
-
-**我:** 不知道了。后来查资料发现可以用消息队列来实现。使用消息队列主要能带来两个好处:(1) 通过异步处理提高系统性能(削峰、减少响应所需时间);(2) 降低系统耦合性。关于消息队列的更多内容可以查看这篇文章:
-
-后来发现消息队列作用好大,于是现在在学手写一个消息队列。
-
-**面试官:** 好的你接着说项目吧。
-
-**我:** 我考虑到了缓存雪崩问题,于是。。。
-
-**面试官:** 等等,你有没有考虑到一种情况,假如说你的缓存刚刚失效,大量流量就来查缓存,你的数据库会不会炸?
-
-**我:** 我不知道数据库会不会炸,反正我快炸了。当时说没考虑这么高的并发量,后来发现也是可以用消息队列来解决,对流量削峰填谷。
-
-**面试官:** 好项目聊(怼)完了,我们来说说别的,操作系统了解吧,你能说说 NIO 吗?
-
-**我:** NIO 是。。。
-
-**面试官:** 那你知道 NIO 的系统调用有哪些吗,具体是怎么实现的?
-
-**我:** 当时复习 NIO 的时候就知道是咋回事,不知道咋实现。最近在补这方面的知识,可见 NIO 还是很重要的!
-
-**面试官:** 说说进程切换时操作系统都会发生什么?
-
-**我:** 不如杀了我,我最讨厌操作系统了。简单说了下,可能不对,需要答案自行百度。
-
-**面试官:** 说说线程池?
-
-**答:** 卧槽这我熟啊,把 Java 并发编程的艺术里讲的都说出来了,说了得有十分钟,自夸一波,毕竟这本书我看了五遍😂
-
-**面试官:** 好问问计网吧如果设计一个聊天系统,应该用 TCP 还是 UDP?为什么
-
-**我:** 当然是 TCP!原因如下:
-
-
-
-**面试官:** 好的,你有什么要问我的吗?
-
-**我:** 我还有下一次面试吗?
-
-**面试官:** 应该。应该有的,一周内吧。还告诉我居然转正前要实习三个月?wtf,一个大三满课的本科生让我如何在八月底前实习三个月?
-
-**我:** 面试官再见
-
-
-
-### 三面 (46 分钟)
-
-3.18 号,三面来了,这次又是那个大大 boss!
-
-第一步还是先自我介绍,这个就不多说了,提前准备好要说的重点就没问题!
-
-**面试官:** 聊聊你的项目?
-
-**我:** 经过二面的教训,我迅速学习了一下分布式的理论知识,并应用到了我的项目(吹牛逼)中。
-
-**面试官:** 看你用到了 Spring 的事务机制,你能说下 Spring 的事务传播吗?
-
-**我:** 完了这个问题好像没准备,虽然之前刷知乎看到过。。。我就只说出来一条,面试官说其实这个有很多机制的,比如事务嵌套,内事务回滚外事务回滚都会有不同情况,你可以回去看看。
-
-**面试官:** 说说你的分布式事务解决方案?
-
-**我:** 我叭叭的照着资料查到的解决方案说了一通,面试官怎么好像没大听懂???
-
-> 阿里巴巴之前开源了一个分布式 Fescar(一种易于使用,高性能,基于 Java 的开源分布式事务解决方案),后来,Ant Financial 加入 Fescar,使其成为一个更加中立和开放的分布式交易社区,Fescar 重命名为 Seata。Github 地址:
-
-**面试官:** 好,我们聊聊其他项目,说说你这个 MapReduce 项目?MapReduce 原理了解过吗?
-
-**我:** 我叭叭地说了一通,面试官好像觉得这个项目太简单了。要不是没项目,我会把我的实验写上吗???
-
-**面试官:** 你这个手写 BP 神经网络是干了啥?
-
-**我:** 这是我选修机器学习课程时的一个作业,我又对它进行了扩展。
-
-**面试官:** 你能说说为什么调整权值时要沿着梯度下降的方向?
-
-**我:** 老大,你太厉害了,怎么什么都懂。我压根没准备这个项目。。。没想到会问,做过去好几个月了,加上当时一紧张就忘了,后来想起来大概是....。
-
-**面试官:** 好我们问问基础知识吧,说说什么叫 xisuo?
-
-**我:**???xisuo,您说什么,不好意思我没听清。(这面试官有点口音。。。)就是 xisuo 啊!xisuo 你不知道吗?。。。尴尬了十几秒后我终于意识到,他在说死锁!!!
-
-**面试官:** 假如 A 账户给 B 账户转钱,会发生 xisuo 吗?能具体说说吗?
-
-**我:** 当时答的不好,后来发现面试官又是想问分布式,具体答案参考这个:
-
-**面试官:** 为什么不考研?
-
-**我:** 不喜欢学术氛围,巴拉巴拉。
-
-**面试官:** 你有什么问题吗?
-
-**我:** 我还有下一面吗。。。面试官说让我等,一周内答复。
-
-------
-
-等了十天,一度以为我凉了,内推人说我流程到 HR 了,让我等着吧可能 HR 太忙了,3.28 号 HR 打来了电话,当时在教室,我直接飞了出去。
-
-### HR 面
-
-**面试官:** 你好啊,先自我介绍下吧
-
-**我:** 巴拉巴拉....HR 面的技术面试和技术面的还是有所区别的!
-
-面试官人特别好,一听就是很会说话的小姐姐!说我这里给你悄悄透露下,你的评级是 A 哦!
-
-
-
-接下来就是几个经典 HR 面挂人的问题,什么难给我来什么,我看别人的 HR 面怎么都是聊聊天。。。
-
-**面试官:** 你为什么选择支付宝呢,你怎么看待支付宝?
-
-**我:** 我从个人情怀,公司理念,环境氛围,市场价值,趋势导向分析了一波(说白了就是疯狂夸支付宝,不过说实话我说的那些一点都没撒谎,阿里确实做到了。比如我举了个雷军和格力打赌 5 年 2000 亿销售额,大部分企业家关注的是利益,而马云更关注的是真的为人类为世界做一些事情,利益不是第一位的。)
-
-**面试官:** 明白了解,那你的优点我们都很明了了,你能说说你的缺点吗?
-
-> 缺点肯定不能是目标岗位需要的关键能力!!!
->
-> 总之,记住一点,面试官问你这个问题的话,你可以说一些不影响你这个职位工作需要的一些缺点。比如你面试后端工程师,面试官问你的缺点是什么的话,你可以这样说:自己比较内向,平时不太爱与人交流,但是考虑到以后可能要和客户沟通,自己正在努力改。
-
-**我:** 据说这是 HR 面最难的一个问题。。。我当时翻了好几天的知乎才找到一个合适的,也符合我的答案:我有时候会表现的不太自信,比如阿里的内推二月份就开始了,其实我当时已经复习了很久了,但是老是觉得自己还不行,不敢投简历,于是又把书看了一遍才投的,当时也是舍友怂恿一波才投的,面了之后发现其实自己也没有很差。(划重点,一定要把自己的缺点圆回来)。
-
-**面试官:** HR 好像不太满意我的答案,继续问我还有缺点吗?
-
-**我:** 我说比较容易紧张吧,举了自己大一面实验室因为紧张没进去的例子,后来不断调整心态,现在已经好很多了。
-
-接下来又是个好难的问题。
-
-**面试官:** BAT 都给你 offer 了,你怎么选?
-
-其实我当时好想说,BT 是什么?不好意思我只知道阿里。
-
-**我 :** 哈哈哈哈开玩笑,就说了阿里的文化,支付宝给我们带来很多便利,想加入支付宝为人类做贡献!
-
-最后 HR 问了我实习时间,现在大几之类的问题,说肯定会给我发 offer 的,让我等着就好了,希望过两天能收到好的结果。
-
-
diff --git "a/docs/java-web/Spring/Spring\346\272\220\347\240\201\345\211\226\346\236\2203\357\274\232Spring IOC\345\256\271\345\231\250\347\232\204\345\212\240\350\275\275\350\277\207\347\250\213.md" "b/docs/java-web/Spring/Spring\346\272\220\347\240\201\345\211\226\346\236\2203\357\274\232Spring IOC\345\256\271\345\231\250\347\232\204\345\212\240\350\275\275\350\277\207\347\250\213.md"
index 50c5dc2..2e5703e 100644
--- "a/docs/java-web/Spring/Spring\346\272\220\347\240\201\345\211\226\346\236\2203\357\274\232Spring IOC\345\256\271\345\231\250\347\232\204\345\212\240\350\275\275\350\277\207\347\250\213.md"
+++ "b/docs/java-web/Spring/Spring\346\272\220\347\240\201\345\211\226\346\236\2203\357\274\232Spring IOC\345\256\271\345\231\250\347\232\204\345\212\240\350\275\275\350\277\207\347\250\213.md"
@@ -831,8 +831,7 @@ DefaultBeanDefinitionDocumentReader就开始做实际的解析工作了,但是
# loadBeanDefinitions
-> BeanDefinition的解析,已经走到了DefaultBeanDefinitionDocumentR
-> eader里,这时候配置文件已经被加载,并解析成w3c的Document对象。这篇博客就接着介绍,DefaultBeanDefinitionDocumentReader和BeanDefinitionParserDelegate类,是怎么协同完成bean的解析和注册的。
+> BeanDefinition的解析,已经走到了DefaultBeanDefinitionDocumentReader里,这时候配置文件已经被加载,并解析成w3c的Document对象。这篇博客就接着介绍,DefaultBeanDefinitionDocumentReader和BeanDefinitionParserDelegate类,是怎么协同完成bean的解析和注册的。
```
BeanDefinitionParserDelegate parent = this.delegate;
@@ -1111,7 +1110,6 @@ this.parseState.push(new BeanEntry(beanName));
if (ele.hasAttribute(CLASS_ATTRIBUTE)) {
className = ele.getAttribute(CLASS_ATTRIBUTE).trim();
}
-
```
这段是从配置中抽取出类名。接下来的长长一段,把异常处理先抛开,看看实际的业务
diff --git "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\2141\357\274\232JavaWeb\347\232\204\347\224\261\346\235\245\345\222\214\345\237\272\347\241\200\347\237\245\350\257\206.md" "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\2141\357\274\232JavaWeb\347\232\204\347\224\261\346\235\245\345\222\214\345\237\272\347\241\200\347\237\245\350\257\206.md"
index 1377342..fbe5272 100644
--- "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\2141\357\274\232JavaWeb\347\232\204\347\224\261\346\235\245\345\222\214\345\237\272\347\241\200\347\237\245\350\257\206.md"
+++ "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\2141\357\274\232JavaWeb\347\232\204\347\224\261\346\235\245\345\222\214\345\237\272\347\241\200\347\237\245\350\257\206.md"
@@ -54,7 +54,7 @@ web开发的历史其实并不久远,要搞清楚java web开发的特点(主
-图中的服务器保持了一系列html脚本来响应用户的请求,可以说这个时期的web应用还是比较简单的,但是却确立了两个重要的对象:一个request(代表请求),另一个是response(代表回应)。如果把web开发的历史比喻成一部美国大片的话,那么request和response绝对是这部大片的那女主角,而且每一部都是不可或缺的主角(简单的说就是死不了)。
+图中的服务器保持了一系列html脚本来响应用户的请求,可以说这个时期的web应用还是比较简单的,但是却确立了两个重要的对象:一个request(代表请求),另一个是response(代表回应)。如果把web开发的历史比喻成一部美国大片的话,那么request和response绝对是这部大片的男女主角,而且每一部都是不可或缺的主角(简单的说就是死不了)。
看到这个图,不知道第一批从事web开发的80后是否和我一样,已经有点感触了,当年为了搞清楚这个结构,曾经连续多少个通宵做实验(实验环境比较恶劣)。没关系,这仅仅是个开始,我想当你看完这篇文章的时候,你会泪流满面的(相信我)。为了配合一下这张结构图,在web发展过程中,有一个小插曲,就是在web site向web application发展的过程中,出现了一个小“玩意儿”,就是applet,很多人了解java都是从使用java applet开始的(70,80后那一批程序员)。当时风靡校园(我当时在读大一)的网易聊天室,哎呀那个火啊(大家回忆一下你在学校机房上网时的兴奋),这个聊天室就是采用了applet构建的,当时applet给静态页面一个动态交互的可能,着实火了一段时间。现在知道applet的程序员,你已经暴露年龄了。看一张图片吧:
@@ -185,7 +185,7 @@ HTTP(超文本传输协议),它是一种主流B/S架构中应用的通信协
1、无状态
-服务端不会记录客户端每次提交的请求,服务器一旦相应客户端之后,就会结束本次的通信过程。客户端下一次的请求是一个新的 连接,和上一次通信没有任何关系。
+服务端不会记录客户端每次提交的请求,服务器一旦响应客户端之后,就会结束本次的通信过程。客户端下一次的请求是一个新的连接,和上一次通信没有任何关系。
2、简单灵活
@@ -197,7 +197,7 @@ HTTP是基于请求(request)和响应(response)的模型
注意:C/S架构可选的协议有多种,例如:TCP/IP,UDP,HTTP
- 而B/S架构通常只支持HTTP协议
+ 而B/S架构通常只支持HTTP协议
### 二、服务器
@@ -245,7 +245,7 @@ https://blog.csdn.net/qq_41911570/article/details/83279327
### 个人公众号:程序员黄小斜
-
+
黄小斜是 985 硕士,阿里巴巴Java工程师,在自学编程、技术求职、Java学习等方面有丰富经验和独到见解,希望帮助到更多想要从事互联网行业的程序员们。
作者专注于 JAVA 后端技术栈,热衷于分享程序员干货、学习经验、求职心得,以及自学编程和Java技术栈的相关干货。
diff --git "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2438\357\274\232Java\351\233\206\345\220\210\347\261\273\347\273\206\350\212\202\347\262\276\350\256\262.md" "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2438\357\274\232Java\351\233\206\345\220\210\347\261\273\347\273\206\350\212\202\347\262\276\350\256\262.md"
index 658e558..d64c80c 100644
--- "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2438\357\274\232Java\351\233\206\345\220\210\347\261\273\347\273\206\350\212\202\347\262\276\350\256\262.md"
+++ "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2438\357\274\232Java\351\233\206\345\220\210\347\261\273\347\273\206\350\212\202\347\262\276\350\256\262.md"
@@ -347,7 +347,7 @@ public static void main(String[] args) {
at java.util.ArrayList$SubList.checkForComodification(Unknown Source)
at java.util.ArrayList$SubList.size(Unknown Source)
at com.chenssy.test.arrayList.SubListTest.main(SubListTest.java:17)
-list1正常输出,但是list3就抛出ConcurrentModificationException异常,看过我另一篇博客的同仁肯定对这个异常非常,fail-fast?不错就是fail-fast机制,在fail-fast机制中,LZ花了很多力气来讲述这个异常,所以这里LZ就不对这个异常多讲了。我们再看size方法:
+list1正常输出,但是list3就抛出ConcurrentModificationException异常,看过我另一篇博客的同仁肯定对这个异常非常熟悉,fail-fast?不错就是fail-fast机制,在fail-fast机制中,LZ花了很多力气来讲述这个异常,所以这里LZ就不对这个异常多讲了。我们再看size方法:
public int size() {
checkForComodification();
diff --git "a/docs/java/design-parttern/\350\256\276\350\256\241\346\250\241\345\274\217\345\255\246\344\271\240\346\200\273\347\273\223.md" "b/docs/java/design-parttern/\350\256\276\350\256\241\346\250\241\345\274\217\345\255\246\344\271\240\346\200\273\347\273\223.md"
index c6595f1..73c5a41 100644
--- "a/docs/java/design-parttern/\350\256\276\350\256\241\346\250\241\345\274\217\345\255\246\344\271\240\346\200\273\347\273\223.md"
+++ "b/docs/java/design-parttern/\350\256\276\350\256\241\346\250\241\345\274\217\345\255\246\344\271\240\346\200\273\347\273\223.md"
@@ -86,11 +86,10 @@ https://blog.csdn.net/a724888/article/category/6780980
# 结构型模式
-
结构型模式
前面创建型模式介绍了创建对象的一些设计模式,这节介绍的结构型模式旨在通过改变代码结构来达到解耦的目的,使得我们的代码容易维护和扩展。
-## 桥接模式
+## [桥接模式](https://www.cnblogs.com/WindSun/p/10260547.html)
有点复杂。建议参考原文
@@ -128,7 +127,7 @@ https://blog.csdn.net/a724888/article/category/6780980
## 代理模式
-// 我们发现没有,代理模式说白了就是做 “方法包装” 或做 “方法增强”。
+// 我们发现没有,代理模式说白了就是做 “方法包装” 或做 “方法增强”。
// 在面向切面编程中,算了还是不要吹捧这个名词了,在 AOP 中,
// 其实就是动态代理的过程。比如 Spring 中,
// 我们自己不定义代理类,但是 Spring 会帮我们动态来定义代理,
diff --git "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2723\357\274\232\345\236\203\345\234\276\345\233\236\346\224\266\345\231\250\350\257\246\350\247\243.md" "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2723\357\274\232\345\236\203\345\234\276\345\233\236\346\224\266\345\231\250\350\257\246\350\247\243.md"
index 741c437..d978e0b 100644
--- "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2723\357\274\232\345\236\203\345\234\276\345\233\236\346\224\266\345\231\250\350\257\246\350\247\243.md"
+++ "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2723\357\274\232\345\236\203\345\234\276\345\233\236\346\224\266\345\231\250\350\257\246\350\247\243.md"
@@ -98,13 +98,13 @@ JDK1.2以后,Java对引用的感念进行了扩充,将引用分为强引用
**2.软引用(SoftReference)**
-如果一个对象只具有软引用,那就类似于**可有可物的生活用品**。如果内存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。
+如果一个对象只具有软引用,那就类似于**可有可无的生活用品**。如果内存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。
软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收,JAVA虚拟机就会把这个软引用加入到与之关联的引用队列中。
**3.弱引用(WeakReference)**
-如果一个对象只具有弱引用,那就类似于**可有可物的生活用品**。弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它 所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程, 因此不一定会很快发现那些只具有弱引用的对象。
+如果一个对象只具有弱引用,那就类似于**可有可无的生活用品**。弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它 所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程, 因此不一定会很快发现那些只具有弱引用的对象。
弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用所引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。
From 81a6b1c9707107a0650bb3f3e18899706a4803e5 Mon Sep 17 00:00:00 2001
From: Suwen macOS Yurisa <577014284@qq.com>
Date: Thu, 16 Jul 2020 23:00:13 +0800
Subject: [PATCH 2/8] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=A4=9A=E4=BD=99?=
=?UTF-8?q?=E4=BF=A1=E6=81=AF,=E5=A2=9E=E5=8A=A0=E7=AE=97=E6=B3=95,?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ReadMe.md | 36 ++-
backup.md | 81 ------
.../\345\211\221\346\214\207offer.md" | 15 -
...37\346\200\201\346\200\273\347\273\223.md" | 15 -
...36\350\267\265\346\200\273\347\273\223.md" | 16 --
...36\350\267\265\346\200\273\347\273\223.md" | 15 -
...36\350\267\265\346\200\273\347\273\223.md" | 15 -
...06\350\256\272\346\200\273\347\273\223.md" | 16 --
...42\347\273\217\346\200\273\347\273\223.md" | 259 ++++++++++++++++++
...00\346\234\257\346\200\273\347\273\223.md" | 18 --
...00\346\234\257\346\200\273\347\273\223.md" | 18 --
...71\350\261\241\345\237\272\347\241\200.md" | 15 -
...60\346\215\256\347\261\273\345\236\213.md" | 15 -
...14\345\214\205\350\243\205\347\261\273.md" | 15 -
...56\345\255\227\347\211\271\346\200\247.md" | 15 -
...17\347\232\204\347\247\230\345\257\206.md" | 15 -
...10\347\261\273\346\200\273\347\273\223.md" | 15 -
...36\347\216\260\345\216\237\347\220\206.md" | 21 --
...357\274\232Queue\345\222\214LinkedList.md" | 16 --
...16\346\257\224\350\276\203\345\231\250.md" | 20 --
...57\274\232HashMap\345\222\214HashTable.md" | 22 --
...345\222\214LRU\347\274\223\345\255\230.md" | 17 --
...14\347\272\242\351\273\221\346\240\221.md" | 19 --
...74\214TreeSet\344\270\216LinkedHashSet.md" | 19 --
...06\350\212\202\347\262\276\350\256\262.md" | 20 --
...66\345\217\221\346\200\273\347\273\223.md" | 16 --
...25\344\276\213\347\255\211\357\274\211.md" | 16 --
...41\345\274\217\347\255\211\357\274\211.md" | 16 --
...37\350\200\205\347\255\211\357\274\211.md" | 17 --
...76\350\256\241\346\250\241\345\274\217.md" | 18 --
...76\350\256\241\346\250\241\345\274\217.md" | 17 --
...46\344\271\240\346\200\273\347\273\223.md" | 17 --
.../java/jvm/JVM\346\200\273\347\273\223.md" | 18 --
...14\346\234\237\344\274\230\345\214\226.md" | 17 --
...03\344\274\230\345\256\236\350\267\265.md" | 17 --
...06\344\270\216\345\256\236\350\267\265.md" | 18 --
...15\344\270\216\345\256\236\346\210\230.md" | 18 --
...\345\217\212GC\345\256\236\350\267\265.md" | 18 --
...06\345\222\214\347\256\227\346\263\225.md" | 17 --
...40\350\275\275\346\234\272\345\210\266.md" | 16 --
...75\345\231\250\345\256\236\347\216\260.md" | 16 --
...12\346\226\255\345\256\236\350\267\265.md" | 16 --
...70\347\224\250\345\267\245\345\205\267.md" | 16 --
...344\270\216NIO\346\200\273\347\273\223.md" | 18 --
...46\344\271\240\346\200\273\347\273\223.md" | 18 --
...46\344\271\240\346\200\273\347\273\223.md" | 17 --
...46\344\271\240\346\200\273\347\273\223.md" | 18 --
...07\347\253\240\346\261\207\346\200\273.md" | 0
.../\347\224\265\345\255\220\344\271\246.md" | 16 --
pom.xml | 21 --
"\345\217\202\350\200\203.md" | 1 -
51 files changed, 290 insertions(+), 871 deletions(-)
delete mode 100644 backup.md
create mode 100644 "docs/interview/BATJ-Experience/\350\232\202\350\232\201\351\207\221\346\234\215\345\256\236\344\271\240\347\224\237\351\235\242\347\273\217\346\200\273\347\273\223.md"
delete mode 100644 "docs/\345\205\254\344\274\227\345\217\267\345\216\206\345\217\262\346\226\207\347\253\240\346\261\207\346\200\273.md"
delete mode 100644 pom.xml
delete mode 100644 "\345\217\202\350\200\203.md"
diff --git a/ReadMe.md b/ReadMe.md
index a5ee595..4605f72 100644
--- a/ReadMe.md
+++ b/ReadMe.md
@@ -1,7 +1,4 @@
-本仓库原为[Java工程师技术指南](https://github.com/h2pl/Java-Tutorial)力求打造最完整最实用的Java工程师学习指南!
-
-现 fork 修正错误和更新内容。
-
+ 本仓库原为[Java工程师技术指南](https://github.com/h2pl/Java-Tutorial),现 fork 修正错误和更新内容。
## 目录
@@ -17,6 +14,10 @@
- [并发](#并发)
- [JVM](#JVM)
- [Java网络编程](#Java网络编程)
+- [算法](#算法)
+ -[必备算法总结](#必备算法总结)
+ -[剑指offer](#剑指offer)
+ -[todo]()
- [计算机基础](#计算机基础)
- [计算机网络](#计算机网络)
- [操作系统](#操作系统)
@@ -165,6 +166,7 @@ todo
### JVM
+* [JVM](https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247484721&idx=2&sn=73b2762abd8c54cdc8b6bb8b5692384b&chksm=ebd74430dca0cd262c0cd72509e8e9df71287eb74d3e3e56430934df7c60db38a78824a80a4a&token=1676899695&lang=zh_CN&scene=21#wechat_redirect)
* [JVM总结](docs/java/jvm/JVM总结.md)
* [深入理解JVM虚拟机1:JVM内存的结构与消失的永久代](docs/java/jvm/深入理解JVM虚拟机1:JVM内存的结构与消失的永久代.md)
* [深入理解JVM虚拟机2:JVM垃圾回收基本原理和算法](docs/java/jvm/深入理解JVM虚拟机2:JVM垃圾回收基本原理和算法.md)
@@ -195,10 +197,23 @@ todo
* [Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型](https://github.com/h2pl/Java-Tutorial/blob/master/docs/java/network-programming/Java%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E4%B8%8ENIO%E8%AF%A6%E8%A7%A310%EF%BC%9A%E6%B7%B1%E5%BA%A6%E8%A7%A3%E8%AF%BBTomcat%E4%B8%AD%E7%9A%84NIO%E6%A8%A1%E5%9E%8B.md)
* [Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)](docs/java/jvm/Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO).md)
+## 算法
+
+* [必备算法总结](https://www.zhihu.com/question/23148377/answer/907915556)
+* [剑指offer](docs/algorithms/剑指offer.md)
+
+* [动态规划](https://www.cxyxiaowu.com/6781.html)
+
+* [十大排序](https://www.zhihu.com/question/51337272/answer/572455307)
+
+
+
## 计算机基础
### 计算机网络
+
* [计算机网络学习总结](docs/network/计算机网络学习总结.md)
+* [tcp/ip必会](https://www.cxyxiaowu.com/11609.html)
### 操作系统
@@ -218,12 +233,14 @@ todo
#### 数据结构
-todo
+* [数据结构总复习](https://blog.csdn.net/zl88086603/article/details/80727172)
#### 算法
+
todo
## 数据库
+
todo
### MySQL
@@ -269,6 +286,7 @@ todo
### Kafka
## 大后端
+
* [后端技术杂谈开篇:云计算,大数据与AI的故事](docs/big-backEnd/后端技术杂谈开篇:云计算,大数据与AI的故事.md)
* [后端技术杂谈1:搜索引擎基础倒排索引](docs/big-backEnd/后端技术杂谈1:搜索引擎基础倒排索引.md)
* [后端技术杂谈2:搜索引擎工作原理](docs/big-backEnd/后端技术杂谈2:搜索引擎工作原理.md)
@@ -322,6 +340,14 @@ todo
## 面试指南
todo
+
+### 典例问题
+
+* [Java面试大纲](https://www.jianshu.com/p/a07d1d4004b0)
+* [校招Java后端](https://www.zhihu.com/question/403508943/answer/1311334943)
+* [常见SSM](https://zhuanlan.zhihu.com/p/140394330)
+* [MySQL](https://zhuanlan.zhihu.com/p/140876416)
+
### 校招指南
todo
diff --git a/backup.md b/backup.md
deleted file mode 100644
index f2fb131..0000000
--- a/backup.md
+++ /dev/null
@@ -1,81 +0,0 @@
-## 声明
-
-**关于仓库**
-
-本仓库是笔者在准备 2018 年秋招复习过程中的学习总结,内容以Java后端的知识总结为主,其中大部分都是笔者根据自己的理解加上个人博客总结而来的。
-
-其中有少数内容可能会包含瞎XX说,语句不通顺,内容不全面等各方面问题,还请见谅。
-
-每篇文章都会有笔者更加详细的一系列博客可供参考,这些文章也被我发表在CSDN技术博客上,整理成博客专栏,欢迎查看━(*`∀´*)ノ亻!
-
-详细内容请见我的CSDN技术博客:https://blog.csdn.net/a724888
-
-**更多校招干货和技术文章请关注我的公众号:黄小斜**
-
-| Ⅰ | Ⅱ | Ⅲ | Ⅳ | Ⅴ | Ⅵ | Ⅶ | Ⅷ | Ⅸ |
-| :----------------------------: | :--------------------------------------: | :------------------------: | :----------------------------------------: | :--------------------------: | :---------------------------------: | :-----------------------------------------: | :----------------------------------: | :--------------------------------------------: |
-| 算法[:pencil2:](#算法-pencil2) | 操作系统[:computer:](#操作系统-computer) | 网络[:cloud:](#网络-cloud) | 数据库[:floppy_disk:](#数据库-floppy_disk) | Java[:couple:](#Java-couple) | JavaWeb [:coffee:](#JavaWeb-coffee) | 分布式 [:sweat_drops:](#分布式-sweat_drops) | 设计模式[:hammer:](#设计模式-hammer) | Hadoop[:speak_no_evil:](#Hadoop-speak_no_evil) |
-
-## 算法 :pencil2:
-
-> [剑指offer算法总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/%E5%89%91%E6%8C%87offer.md)
-
-> [LeetCode刷题指南](https://github.com/h2pl/Java-Tutorial/blob/master/md/LeetCode%E5%88%B7%E9%A2%98%E6%8C%87%E5%8D%97.md)
-
-## 操作系统 :computer:
-
-> [操作系统学习总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93.md)
-
-> [Linux内核与基础命令学习总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/Linux%E5%86%85%E6%A0%B8%E4%B8%8E%E5%9F%BA%E7%A1%80%E5%91%BD%E4%BB%A4%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93.md)
-
-## 网络 :cloud:
-
-> [计算机网络学习总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93.md)
-
-## 数据库 :floppy_disk:
-
-> [Mysql原理与实践总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/Mysql%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E8%B7%B5%E6%80%BB%E7%BB%93.md)
-
-> [Redis原理与实践总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/Redis%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E8%B7%B5%E6%80%BB%E7%BB%93.md)
-
-## Java :couple:
-
-> [Java核心技术总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/Java%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF%E6%80%BB%E7%BB%93.md)
-
-> [Java集合类总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/Java%E9%9B%86%E5%90%88%E7%B1%BB%E6%80%BB%E7%BB%93.md)
-
-> [Java并发技术总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/Java%E5%B9%B6%E5%8F%91%E6%80%BB%E7%BB%93.md)
-
-> [JVM原理学习总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/JVM%E6%80%BB%E7%BB%93.md)
-
-> [Java网络与NIO总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/Java%E7%BD%91%E7%BB%9C%E4%B8%8ENIO%E6%80%BB%E7%BB%93.md)
-
-## JavaWeb :coffee:
-
-> [JavaWeb技术学习总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/JavaWeb%E6%8A%80%E6%9C%AF%E6%80%BB%E7%BB%93.md)
-
-> [Spring与SpringMVC源码解析](https://github.com/h2pl/Java-Tutorial/blob/master/md/Spring%E4%B8%8ESpringMVC%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90%E6%80%BB%E7%BB%93.md)
-
-## 分布式 :sweat_drops:
-
-> [分布式理论学习总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/%E5%88%86%E5%B8%83%E5%BC%8F%E7%90%86%E8%AE%BA%E6%80%BB%E7%BB%93.md)
-
-> [分布式技术学习总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/%E5%88%86%E5%B8%83%E5%BC%8F%E6%8A%80%E6%9C%AF%E5%AE%9E%E8%B7%B5%E6%80%BB%E7%BB%93.md)
-
-## 设计模式 :hammer:
-> [设计模式学习总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93.md)
-
-## Hadoop :speak_no_evil:
-
-> [Hadoop生态学习总结](https://github.com/h2pl/Java-Tutorial/blob/master/md/Hadoop%E7%94%9F%E6%80%81%E6%80%BB%E7%BB%93.md)
-
-
-
-**关于转载**
-
-转载的时候请注明一下出处就行啦。
-
-另外我这个仓库的格式模仿的是@CyC2018 大佬的仓库
-
-并且其中一篇LeetCode刷题指南也是fork这位大佬而来的。我只是自己刷了一遍然后稍微加了一些解析,站在大佬肩膀上。
-
diff --git "a/docs/algorithms/\345\211\221\346\214\207offer.md" "b/docs/algorithms/\345\211\221\346\214\207offer.md"
index 4c6e825..1eb848f 100644
--- "a/docs/algorithms/\345\211\221\346\214\207offer.md"
+++ "b/docs/algorithms/\345\211\221\346\214\207offer.md"
@@ -1717,20 +1717,5 @@ public static int LastRemaining_Solution(int n, int m) {
return sum;
}
}
-## 微信公众号
-### Java技术江湖
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/big-backEnd/Hadoop\347\224\237\346\200\201\346\200\273\347\273\223.md" "b/docs/big-backEnd/Hadoop\347\224\237\346\200\201\346\200\273\347\273\223.md"
index 0dbb50d..05edeaf 100644
--- "a/docs/big-backEnd/Hadoop\347\224\237\346\200\201\346\200\273\347\273\223.md"
+++ "b/docs/big-backEnd/Hadoop\347\224\237\346\200\201\346\200\273\347\273\223.md"
@@ -275,20 +275,5 @@ spout负责获取数据,并且将数据发送给bolt,这个过程就是把
这就形成了一个完整的流程。
-## 微信公众号
-### Java技术江湖
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/cache/Redis\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265\346\200\273\347\273\223.md" "b/docs/cache/Redis\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265\346\200\273\347\273\223.md"
index 4a2131b..d330355 100644
--- "a/docs/cache/Redis\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265\346\200\273\347\273\223.md"
+++ "b/docs/cache/Redis\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265\346\200\273\347\273\223.md"
@@ -455,20 +455,4 @@ redis事务的ACID特性
因为redis事务不过是简单的用队列包裹起来一组redis命令,redis并没有为事务提供任何额外的持久化功能,所以redis事务的耐久性由redis使用的模式
决定
-## 微信公众号
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/database/Mysql\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265\346\200\273\347\273\223.md" "b/docs/database/Mysql\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265\346\200\273\347\273\223.md"
index 53ed5a0..97d5eae 100644
--- "a/docs/database/Mysql\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265\346\200\273\347\273\223.md"
+++ "b/docs/database/Mysql\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265\346\200\273\347\273\223.md"
@@ -378,20 +378,5 @@ innodb支持行级锁和事务,而myisam只支持表锁,它的所有操作
redis的分布式部署方案也比较成熟。
-## 微信公众号
-### Java技术江湖
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/distrubuted/\345\210\206\345\270\203\345\274\217\346\212\200\346\234\257\345\256\236\350\267\265\346\200\273\347\273\223.md" "b/docs/distrubuted/\345\210\206\345\270\203\345\274\217\346\212\200\346\234\257\345\256\236\350\267\265\346\200\273\347\273\223.md"
index 2c7c65f..fc67b49 100644
--- "a/docs/distrubuted/\345\210\206\345\270\203\345\274\217\346\212\200\346\234\257\345\256\236\350\267\265\346\200\273\347\273\223.md"
+++ "b/docs/distrubuted/\345\210\206\345\270\203\345\274\217\346\212\200\346\234\257\345\256\236\350\267\265\346\200\273\347\273\223.md"
@@ -509,20 +509,5 @@ snowflake是twitter开源的分布式ID生成算法,其核心思想为,一
并且:结合业务做优化
-## 微信公众号
-### Java技术江湖
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/distrubuted/\345\210\206\345\270\203\345\274\217\347\220\206\350\256\272\346\200\273\347\273\223.md" "b/docs/distrubuted/\345\210\206\345\270\203\345\274\217\347\220\206\350\256\272\346\200\273\347\273\223.md"
index a118bdc..791941a 100644
--- "a/docs/distrubuted/\345\210\206\345\270\203\345\274\217\347\220\206\350\256\272\346\200\273\347\273\223.md"
+++ "b/docs/distrubuted/\345\210\206\345\270\203\345\274\217\347\220\206\350\256\272\346\200\273\347\273\223.md"
@@ -379,20 +379,4 @@ ZK自身提供了一些“四字命令”,通过这些四字命令,我们可
zookeeper以目录树的形式管理数据,提供znode监听、数据设置等接口,基于这些接口,我们可以实现Leader选举、配置管理、命名服务等功能。结合四字命令,加上模拟zookeeper client 创建/删除znode,我们可以实现对zookeeper的有效监控。在各种分布式系统中,我们经常可以看到zookeeper的身影。
-## 微信公众号
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/interview/BATJ-Experience/\350\232\202\350\232\201\351\207\221\346\234\215\345\256\236\344\271\240\347\224\237\351\235\242\347\273\217\346\200\273\347\273\223.md" "b/docs/interview/BATJ-Experience/\350\232\202\350\232\201\351\207\221\346\234\215\345\256\236\344\271\240\347\224\237\351\235\242\347\273\217\346\200\273\347\273\223.md"
new file mode 100644
index 0000000..95f8403
--- /dev/null
+++ "b/docs/interview/BATJ-Experience/\350\232\202\350\232\201\351\207\221\346\234\215\345\256\236\344\271\240\347\224\237\351\235\242\347\273\217\346\200\273\347\273\223.md"
@@ -0,0 +1,259 @@
+# Table of Contents
+
+ * [一面 (37 分钟左右)](#一面-37-分钟左右)
+ * [二面 (33 分钟左右)](#二面-33-分钟左右)
+ * [三面 (46 分钟)](#三面-46-分钟)
+ * [HR 面](#hr-面)
+
+
+本文来自 Anonymous 的投稿 ,JavaGuide 对原文进行了重新排版和一点完善。
+
+
+
+- [一面 (37 分钟左右)](#一面-37-分钟左右)
+- [二面 (33 分钟左右)](#二面-33-分钟左右)
+- [三面 (46 分钟)](#三面-46-分钟)
+- [HR 面](#hr-面)
+
+
+
+### 一面 (37 分钟左右)
+
+一面是上海的小哥打来的,3.12 号中午确认的内推,下午就打来约时间了,也是唯一一个约时间的面试官。约的晚上八点。紧张的一比,人生第一次面试就献给了阿里。
+
+幸运的是一面的小哥特温柔。好像是个海归?口语中夹杂着英文。废话不多说,上干货:
+
+**面试官:** 先自我介绍下吧!
+
+**我:** 巴拉巴拉...。
+
+> 关于自我介绍:从 HR 面、技术面到高管面/部门主管面,面试官一般会让你先自我介绍一下,所以好好准备自己的自我介绍真的非常重要。网上一般建议的是准备好两份自我介绍:一份对 HR 说的,主要讲能突出自己的经历,会的编程技术一语带过;另一份对技术面试官说的,主要讲自己会的技术细节,项目经验,经历那些就一语带过。
+
+**面试官:** 我看你简历上写你做了个秒杀系统?我们就从这个项目开始吧,先介绍下你的项目。
+
+> 关于项目介绍:如果有项目的话,技术面试第一步,面试官一般都是让你自己介绍一下你的项目。你可以从下面几个方向来考虑:
+>
+> 1. 对项目整体设计的一个感受(面试官可能会让你画系统的架构图)
+> 2. 在这个项目中你负责了什么、做了什么、担任了什么角色
+> 3. 从这个项目中你学会了那些东西,使用到了那些技术,学会了那些新技术的使用
+> 4. 另外项目描述中,最好可以体现自己的综合素质,比如你是如何协调项目组成员协同开发的或者在遇到某一个棘手的问题的时候你是如何解决的又或者说你在这个项目用了什么技术实现了什么功能比如:用 redis 做缓存提高访问速度和并发量、使用消息队列削峰和降流等等。
+
+**我:** 我说了我是如何考虑它的需求(秒杀地址隐藏,记录订单,减库存),一开始简单的用 synchronized 锁住方法,出现了问题,后来乐观锁改进,又有瓶颈,再上缓存,出现了缓存雪崩,于是缓存预热,错开缓存失效时间。最后,发现先记录订单再减库存会减少行级锁等待时间。
+
+> 一面面试官很耐心地听,并给了我一些指导,问了我乐观锁是怎么实现的,我说是基于 sql 语句,在减库存操作的 where 条件里加剩余库存数>0,他说这应该不算是一种乐观锁,应该先查库存,在减库存的时候判断当前库存是否与读到的库存一样(可这样不是多一次查询操作吗?不是很理解,不过我没有反驳,只是说理解您的意思。事实证明千万别怼面试官,即使你觉得他说的不对)
+
+**面试官:** 我缓存雪崩什么情况下会发生?如何避免?
+
+**我:** 当多个商品缓存同时失效时会雪崩,导致大量查询数据库。还有就是秒杀刚开始的时候缓存里没有数据。解决方案:缓存预热,错开缓存失效时间
+
+**面试官:** 问我更新数据库的同时为什么不马上更新缓存,而是删除缓存?
+
+**我:** 因为考虑到更新数据库后更新缓存可能会因为多线程下导致写入脏数据(比如线程 A 先更新数据库成功,接下来要取更新缓存,接着线程 B 更新数据库,但 B 又更新了缓存,接着 B 的时间片用完了,线程 A 更新了缓存)
+
+逼逼了将近 30 分钟,面试官居然用周杰伦的语气对我说:
+
+
+
+我突然受宠若惊,连忙说谢谢,也正是因为第一次面试得到了面试官的肯定,才让我信心大增,二三面稳定发挥。
+
+**面试官又曰:** 我看你还懂数据库是吧,答:略懂略懂。。。那我问个简单的吧!
+
+**我:** 因为这个问题太简单了,所以我忘记它是什么了。
+
+**面试官:** 你还会啥数据库知识?
+
+**我:** 我一听,问的这么随意的吗。。。都让我选题了,我就说我了解索引,慢查询优化,巴拉巴拉
+
+**面试官:** 等等,你说索引是吧,那你能说下索引的存储数据结构吗?
+
+**我:** 我心想这简单啊,我就说 B+树,还说了为什么用 B+树
+
+**面试官:** 你简历上写的这个 J.U.C 包是什么啊?(他居然不知道 JUC)
+
+**我:** 就是 java 多线程的那个包啊。。。
+
+**面试官:** 那你都了解里面的哪些东西呢?
+
+**我:** 哈哈哈!这可是我的强项,从 ConcurrentHashMap,ConcurrentLinkedQueue 说到 CountDownLatch,CyclicBarrier,又说到线程池,分别说了底层实现和项目中的应用。
+
+**面试官:** 我觉得差不多了,那我再问个与技术无关的问题哈,虽然这个问题可能不应该我问,就是你是如何考虑你的项目架构的呢?
+
+**我:** 先用最简单的方式实现它,再去发掘系统的问题和瓶颈,于是查资料改进架构。。。
+
+**面试官:** 好,那我给你介绍下我这边的情况吧
+
+
+
+**总结:** 一面可能是简历面吧,问的比较简单,我在讲项目中说出了我做项目时的学习历程和思考,赢得了面试官的好感,感觉他应该给我的评价很好。
+
+### 二面 (33 分钟左右)
+
+然而开心了没一会,内推人问我面的怎么样啊?看我流程已经到大大 boss 那了。我一听二面不是主管吗???怎么直接跳了一面。于是瞬间慌了,赶紧(下床)学习准备二面。
+
+隔了一天,3.14 的早上 10:56 分,杭州的大大 boss 给我打来了电话,卧槽我当时在上毛概课,万恶的毛概课每节课都点名,我还在最后一排不敢跑出去。于是接起电话来怂怂地说不好意思我在上课,晚上可以面试吗?大大 boss 看来很忙啊,跟我说晚上没时间啊,再说吧!
+
+于是又隔了一天,3.16 中午我收到了北京的电话,当时心里小失望,我的大大 boss 呢???接起电话来,就是一番狂轰乱炸。。。
+
+第一步还是先自我介绍,这个就不多说了,提前准备好要说的重点就没问题!
+
+**面试官:** 我们还是从你的项目开始吧,说说你的秒杀系统。
+
+**我:** 一面时的套路。。。我考虑到秒杀地址在开始前不应暴露给用户。。。
+
+**面试官:** 等下啊,为什么要这样呢?暴露给用户会怎么样?
+
+**我:** 用户提前知道秒杀地址就可以写脚本来抢购了,这样不公平
+
+**面试官:** 那比如说啊,我现在是个黑客,我在秒杀开始时写好了脚本,运行一万个线程获取秒杀地址,这样是不是也不公平呢?
+
+**我:** 我考虑到了这方面,于是我自己写了个 LRU 缓存(划重点,这么多好用的缓存我为啥不用偏要自己写?就是为了让面试官上钩问我是怎么写的,这样我就可以逼逼准备好的内容了!),用这个缓存存储请求的 ip 和用户名,一个 ip 和用户名只能同时透过 3 个请求。
+
+**面试官:** 那我可不可以创建一个 ip 代理池和很多用户来抢购呢?假设我有很多手机号的账户。
+
+**我:** 这就是在为难我胖虎啊,我说这种情况跟真实用户操作太像了。。。我没法区别,不过我觉得可以通过地理位置信息或者机器学习算法来做吧。。。
+
+**面试官:** 好的这个问题就到这吧,你接着说
+
+**我:** 我把生成订单和减库存两条 sql 语句放在一个事务里,都操作成功了则认为秒杀成功。
+
+**面试官:** 等等,你这个订单表和商品库存表是在一个数据库的吧,那如果在不同的数据库中呢?
+
+**我:** 这面试官好变态啊,我只是个本科生?!?!我觉得应该要用分布式锁来实现吧。。。
+
+**面试官:** 有没有更轻量级的做法?
+
+**我:** 不知道了。后来查资料发现可以用消息队列来实现。使用消息队列主要能带来两个好处:(1) 通过异步处理提高系统性能(削峰、减少响应所需时间);(2) 降低系统耦合性。关于消息队列的更多内容可以查看这篇文章:
+
+后来发现消息队列作用好大,于是现在在学手写一个消息队列。
+
+**面试官:** 好的你接着说项目吧。
+
+**我:** 我考虑到了缓存雪崩问题,于是。。。
+
+**面试官:** 等等,你有没有考虑到一种情况,假如说你的缓存刚刚失效,大量流量就来查缓存,你的数据库会不会炸?
+
+**我:** 我不知道数据库会不会炸,反正我快炸了。当时说没考虑这么高的并发量,后来发现也是可以用消息队列来解决,对流量削峰填谷。
+
+**面试官:** 好项目聊(怼)完了,我们来说说别的,操作系统了解吧,你能说说 NIO 吗?
+
+**我:** NIO 是。。。
+
+**面试官:** 那你知道 NIO 的系统调用有哪些吗,具体是怎么实现的?
+
+**我:** 当时复习 NIO 的时候就知道是咋回事,不知道咋实现。最近在补这方面的知识,可见 NIO 还是很重要的!
+
+**面试官:** 说说进程切换时操作系统都会发生什么?
+
+**我:** 不如杀了我,我最讨厌操作系统了。简单说了下,可能不对,需要答案自行百度。
+
+**面试官:** 说说线程池?
+
+**答:** 卧槽这我熟啊,把 Java 并发编程的艺术里讲的都说出来了,说了得有十分钟,自夸一波,毕竟这本书我看了五遍😂
+
+**面试官:** 好问问计网吧如果设计一个聊天系统,应该用 TCP 还是 UDP?为什么
+
+**我:** 当然是 TCP!原因如下:
+
+
+
+**面试官:** 好的,你有什么要问我的吗?
+
+**我:** 我还有下一次面试吗?
+
+**面试官:** 应该。应该有的,一周内吧。还告诉我居然转正前要实习三个月?wtf,一个大三满课的本科生让我如何在八月底前实习三个月?
+
+**我:** 面试官再见
+
+
+
+### 三面 (46 分钟)
+
+3.18 号,三面来了,这次又是那个大大 boss!
+
+第一步还是先自我介绍,这个就不多说了,提前准备好要说的重点就没问题!
+
+**面试官:** 聊聊你的项目?
+
+**我:** 经过二面的教训,我迅速学习了一下分布式的理论知识,并应用到了我的项目(吹牛逼)中。
+
+**面试官:** 看你用到了 Spring 的事务机制,你能说下 Spring 的事务传播吗?
+
+**我:** 完了这个问题好像没准备,虽然之前刷知乎看到过。。。我就只说出来一条,面试官说其实这个有很多机制的,比如事务嵌套,内事务回滚外事务回滚都会有不同情况,你可以回去看看。
+
+**面试官:** 说说你的分布式事务解决方案?
+
+**我:** 我叭叭的照着资料查到的解决方案说了一通,面试官怎么好像没大听懂???
+
+> 阿里巴巴之前开源了一个分布式 Fescar(一种易于使用,高性能,基于 Java 的开源分布式事务解决方案),后来,Ant Financial 加入 Fescar,使其成为一个更加中立和开放的分布式交易社区,Fescar 重命名为 Seata。Github 地址:
+
+**面试官:** 好,我们聊聊其他项目,说说你这个 MapReduce 项目?MapReduce 原理了解过吗?
+
+**我:** 我叭叭地说了一通,面试官好像觉得这个项目太简单了。要不是没项目,我会把我的实验写上吗???
+
+**面试官:** 你这个手写 BP 神经网络是干了啥?
+
+**我:** 这是我选修机器学习课程时的一个作业,我又对它进行了扩展。
+
+**面试官:** 你能说说为什么调整权值时要沿着梯度下降的方向?
+
+**我:** 老大,你太厉害了,怎么什么都懂。我压根没准备这个项目。。。没想到会问,做过去好几个月了,加上当时一紧张就忘了,后来想起来大概是....。
+
+**面试官:** 好我们问问基础知识吧,说说什么叫 xisuo?
+
+**我:**???xisuo,您说什么,不好意思我没听清。(这面试官有点口音。。。)就是 xisuo 啊!xisuo 你不知道吗?。。。尴尬了十几秒后我终于意识到,他在说死锁!!!
+
+**面试官:** 假如 A 账户给 B 账户转钱,会发生 xisuo 吗?能具体说说吗?
+
+**我:** 当时答的不好,后来发现面试官又是想问分布式,具体答案参考这个:
+
+**面试官:** 为什么不考研?
+
+**我:** 不喜欢学术氛围,巴拉巴拉。
+
+**面试官:** 你有什么问题吗?
+
+**我:** 我还有下一面吗。。。面试官说让我等,一周内答复。
+
+------
+
+等了十天,一度以为我凉了,内推人说我流程到 HR 了,让我等着吧可能 HR 太忙了,3.28 号 HR 打来了电话,当时在教室,我直接飞了出去。
+
+### HR 面
+
+**面试官:** 你好啊,先自我介绍下吧
+
+**我:** 巴拉巴拉....HR 面的技术面试和技术面的还是有所区别的!
+
+面试官人特别好,一听就是很会说话的小姐姐!说我这里给你悄悄透露下,你的评级是 A 哦!
+
+
+
+接下来就是几个经典 HR 面挂人的问题,什么难给我来什么,我看别人的 HR 面怎么都是聊聊天。。。
+
+**面试官:** 你为什么选择支付宝呢,你怎么看待支付宝?
+
+**我:** 我从个人情怀,公司理念,环境氛围,市场价值,趋势导向分析了一波(说白了就是疯狂夸支付宝,不过说实话我说的那些一点都没撒谎,阿里确实做到了。比如我举了个雷军和格力打赌 5 年 2000 亿销售额,大部分企业家关注的是利益,而马云更关注的是真的为人类为世界做一些事情,利益不是第一位的。)
+
+**面试官:** 明白了解,那你的优点我们都很明了了,你能说说你的缺点吗?
+
+> 缺点肯定不能是目标岗位需要的关键能力!!!
+>
+> 总之,记住一点,面试官问你这个问题的话,你可以说一些不影响你这个职位工作需要的一些缺点。比如你面试后端工程师,面试官问你的缺点是什么的话,你可以这样说:自己比较内向,平时不太爱与人交流,但是考虑到以后可能要和客户沟通,自己正在努力改。
+
+**我:** 据说这是 HR 面最难的一个问题。。。我当时翻了好几天的知乎才找到一个合适的,也符合我的答案:我有时候会表现的不太自信,比如阿里的内推二月份就开始了,其实我当时已经复习了很久了,但是老是觉得自己还不行,不敢投简历,于是又把书看了一遍才投的,当时也是舍友怂恿一波才投的,面了之后发现其实自己也没有很差。(划重点,一定要把自己的缺点圆回来)。
+
+**面试官:** HR 好像不太满意我的答案,继续问我还有缺点吗?
+
+**我:** 我说比较容易紧张吧,举了自己大一面实验室因为紧张没进去的例子,后来不断调整心态,现在已经好很多了。
+
+接下来又是个好难的问题。
+
+**面试官:** BAT 都给你 offer 了,你怎么选?
+
+其实我当时好想说,BT 是什么?不好意思我只知道阿里。
+
+**我 :** 哈哈哈哈开玩笑,就说了阿里的文化,支付宝给我们带来很多便利,想加入支付宝为人类做贡献!
+
+最后 HR 问了我实习时间,现在大几之类的问题,说肯定会给我发 offer 的,让我等着就好了,希望过两天能收到好的结果。
+
+
diff --git "a/docs/interview/InterviewQuestions/Java\346\240\270\345\277\203\346\212\200\346\234\257\346\200\273\347\273\223.md" "b/docs/interview/InterviewQuestions/Java\346\240\270\345\277\203\346\212\200\346\234\257\346\200\273\347\273\223.md"
index 917620c..b8a3541 100644
--- "a/docs/interview/InterviewQuestions/Java\346\240\270\345\277\203\346\212\200\346\234\257\346\200\273\347\273\223.md"
+++ "b/docs/interview/InterviewQuestions/Java\346\240\270\345\277\203\346\212\200\346\234\257\346\200\273\347\273\223.md"
@@ -302,21 +302,3 @@ https://blog.csdn.net/a724888
Stream流概念,实现了集合类的流式访问,可以基于此使用map和reduce并行计算。
-
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java-web/JavaWeb\346\212\200\346\234\257\346\200\273\347\273\223.md" "b/docs/java-web/JavaWeb\346\212\200\346\234\257\346\200\273\347\273\223.md"
index 39d6ef8..ae1ddef 100644
--- "a/docs/java-web/JavaWeb\346\212\200\346\234\257\346\200\273\347\273\223.md"
+++ "b/docs/java-web/JavaWeb\346\212\200\346\234\257\346\200\273\347\273\223.md"
@@ -136,21 +136,3 @@ git是分布式的代码管理工具,比起svn有着分布式的优势。太
但是还是差强人意,于是转而出现了hibernate这类的持久化框架。可以做到数据表和bean一一映射,程序只需要操作bean就可以完成数据库的curd。
mybatis比hibernate更轻量级,mybatis支持原生sql查询,并且也可以使用bean映射,同时还可以自定义地配置映射对象,更加灵活,并且在多表查询上更有优势。
-
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/basic/1\343\200\201\351\235\242\345\220\221\345\257\271\350\261\241\345\237\272\347\241\200.md" "b/docs/java/basic/1\343\200\201\351\235\242\345\220\221\345\257\271\350\261\241\345\237\272\347\241\200.md"
index 1ce17ab..2cdc78e 100644
--- "a/docs/java/basic/1\343\200\201\351\235\242\345\220\221\345\257\271\350\261\241\345\237\272\347\241\200.md"
+++ "b/docs/java/basic/1\343\200\201\351\235\242\345\220\221\345\257\271\350\261\241\345\237\272\347\241\200.md"
@@ -688,21 +688,6 @@ public void eat(char ... c) {
https://blog.csdn.net/android_hl/article/details/53228348
-## 微信公众号
-### Java技术江湖
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/basic/2\343\200\201Java\345\237\272\346\234\254\346\225\260\346\215\256\347\261\273\345\236\213.md" "b/docs/java/basic/2\343\200\201Java\345\237\272\346\234\254\346\225\260\346\215\256\347\261\273\345\236\213.md"
index 655b4c2..3e0913a 100644
--- "a/docs/java/basic/2\343\200\201Java\345\237\272\346\234\254\346\225\260\346\215\256\347\261\273\345\236\213.md"
+++ "b/docs/java/basic/2\343\200\201Java\345\237\272\346\234\254\346\225\260\346\215\256\347\261\273\345\236\213.md"
@@ -602,20 +602,5 @@ https://blog.csdn.net/a724888/article/details/80033043
-## 微信公众号
-### Java技术江湖
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/basic/3\343\200\201string\345\222\214\345\214\205\350\243\205\347\261\273.md" "b/docs/java/basic/3\343\200\201string\345\222\214\345\214\205\350\243\205\347\261\273.md"
index 13dfe0a..7779f4a 100644
--- "a/docs/java/basic/3\343\200\201string\345\222\214\345\214\205\350\243\205\347\261\273.md"
+++ "b/docs/java/basic/3\343\200\201string\345\222\214\345\214\205\350\243\205\347\261\273.md"
@@ -804,20 +804,5 @@ https://www.cnblogs.com/zhangyinhua/p/7689974.html
https://blog.csdn.net/sinat_21925975/article/details/86493248
https://www.cnblogs.com/niew/p/9597379.html
-## 微信公众号
-### Java技术江湖
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/basic/4\343\200\201final\345\205\263\351\224\256\345\255\227\347\211\271\346\200\247.md" "b/docs/java/basic/4\343\200\201final\345\205\263\351\224\256\345\255\227\347\211\271\346\200\247.md"
index f9c0f39..b06a282 100644
--- "a/docs/java/basic/4\343\200\201final\345\205\263\351\224\256\345\255\227\347\211\271\346\200\247.md"
+++ "b/docs/java/basic/4\343\200\201final\345\205\263\351\224\256\345\255\227\347\211\271\346\200\247.md"
@@ -561,20 +561,5 @@ https://www.iteye.com/blog/cakin24-2334965
https://blog.csdn.net/chengqiuming/article/details/70139503
https://blog.csdn.net/hupuxiang/article/details/7362267
-## 微信公众号
-### Java技术江湖
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/basic/8\343\200\201Java\350\207\252\345\212\250\346\213\206\347\256\261\350\243\205\347\256\261\351\207\214\351\232\220\350\227\217\347\232\204\347\247\230\345\257\206.md" "b/docs/java/basic/8\343\200\201Java\350\207\252\345\212\250\346\213\206\347\256\261\350\243\205\347\256\261\351\207\214\351\232\220\350\227\217\347\232\204\347\247\230\345\257\206.md"
index c6ed3af..d72737a 100644
--- "a/docs/java/basic/8\343\200\201Java\350\207\252\345\212\250\346\213\206\347\256\261\350\243\205\347\256\261\351\207\214\351\232\220\350\227\217\347\232\204\347\247\230\345\257\206.md"
+++ "b/docs/java/basic/8\343\200\201Java\350\207\252\345\212\250\346\213\206\347\256\261\350\243\205\347\256\261\351\207\214\351\232\220\350\227\217\347\232\204\347\247\230\345\257\206.md"
@@ -581,23 +581,8 @@ https://blog.csdn.net/a724888/article/details/80033043
-## 微信公众号
-### Java技术江湖
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/collection/Java\351\233\206\345\220\210\347\261\273\346\200\273\347\273\223.md" "b/docs/java/collection/Java\351\233\206\345\220\210\347\261\273\346\200\273\347\273\223.md"
index 2c05f7b..fe16e96 100644
--- "a/docs/java/collection/Java\351\233\206\345\220\210\347\261\273\346\200\273\347\273\223.md"
+++ "b/docs/java/collection/Java\351\233\206\345\220\210\347\261\273\346\200\273\347\273\223.md"
@@ -123,20 +123,5 @@ set就是hashmap将value固定为一个object,只存key元素包装成一个en
主要是基于红黑树实现的两个数据结构,可以保证key序列是有序的,获取sortedset就可以顺序打印key值了。其中涉及到红黑树的插入和删除,调整等操作,比较复杂,这里就不细说了。
-## 微信公众号
-### Java技术江湖
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2431\357\274\232\344\270\200\346\226\207\350\257\273\346\207\202ArrayList,Vector\344\270\216Stack\344\275\277\347\224\250\346\226\271\346\263\225\345\222\214\345\256\236\347\216\260\345\216\237\347\220\206.md" "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2431\357\274\232\344\270\200\346\226\207\350\257\273\346\207\202ArrayList,Vector\344\270\216Stack\344\275\277\347\224\250\346\226\271\346\263\225\345\222\214\345\256\236\347\216\260\345\216\237\347\220\206.md"
index df28c42..942046e 100644
--- "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2431\357\274\232\344\270\200\346\226\207\350\257\273\346\207\202ArrayList,Vector\344\270\216Stack\344\275\277\347\224\250\346\226\271\346\263\225\345\222\214\345\256\236\347\216\260\345\216\237\347\220\206.md"
+++ "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2431\357\274\232\344\270\200\346\226\207\350\257\273\346\207\202ArrayList,Vector\344\270\216Stack\344\275\277\347\224\250\346\226\271\346\263\225\345\222\214\345\256\236\347\216\260\345\216\237\347\220\206.md"
@@ -620,24 +620,3 @@ https://blog.csdn.net/u011419651/article/details/83831156
https://www.jianshu.com/p/c4027084ac43
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
-
-
-
-
diff --git "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2432\357\274\232Queue\345\222\214LinkedList.md" "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2432\357\274\232Queue\345\222\214LinkedList.md"
index 7849acb..5eb9e9d 100644
--- "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2432\357\274\232Queue\345\222\214LinkedList.md"
+++ "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2432\357\274\232Queue\345\222\214LinkedList.md"
@@ -541,20 +541,4 @@ https://www.iteye.com/blog/shmilyaw-hotmail-com-1825171
https://blog.csdn.net/weixin_36378917/article/details/81812210
-## 微信公众号
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2433\357\274\232Iterator\357\274\214fail-fast\346\234\272\345\210\266\344\270\216\346\257\224\350\276\203\345\231\250.md" "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2433\357\274\232Iterator\357\274\214fail-fast\346\234\272\345\210\266\344\270\216\346\257\224\350\276\203\345\231\250.md"
index 2f9dbf3..83edad2 100644
--- "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2433\357\274\232Iterator\357\274\214fail-fast\346\234\272\345\210\266\344\270\216\346\257\224\350\276\203\345\231\250.md"
+++ "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2433\357\274\232Iterator\357\274\214fail-fast\346\234\272\345\210\266\344\270\216\346\257\224\350\276\203\345\231\250.md"
@@ -767,24 +767,4 @@ https://cmsblogs.com/p=1185
https://blog.csdn.net/android_hl/article/details/53228348
-## 微信公众号
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
-
-
-
-
diff --git "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2434\357\274\232HashMap\345\222\214HashTable.md" "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2434\357\274\232HashMap\345\222\214HashTable.md"
index d5a7072..bc0b904 100644
--- "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2434\357\274\232HashMap\345\222\214HashTable.md"
+++ "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2434\357\274\232HashMap\345\222\214HashTable.md"
@@ -604,25 +604,3 @@ http://mini.eastday.com/mobile/180310183019559.html#
https://blog.csdn.net/lihua5419/article/details/87691965
https://www.cnblogs.com/aeolian/p/8468632.html
-
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
-
-
-
-
diff --git "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2435\357\274\232\346\267\261\345\205\245\347\220\206\350\247\243LinkedHashMap\345\222\214LRU\347\274\223\345\255\230.md" "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2435\357\274\232\346\267\261\345\205\245\347\220\206\350\247\243LinkedHashMap\345\222\214LRU\347\274\223\345\255\230.md"
index bf76482..b2a817a 100644
--- "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2435\357\274\232\346\267\261\345\205\245\347\220\206\350\247\243LinkedHashMap\345\222\214LRU\347\274\223\345\255\230.md"
+++ "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2435\357\274\232\346\267\261\345\205\245\347\220\206\350\247\243LinkedHashMap\345\222\214LRU\347\274\223\345\255\230.md"
@@ -846,22 +846,5 @@ https://blog.csdn.net/wang_8101/article/details/83067860
https://www.cnblogs.com/create-and-orange/p/11237072.html
https://www.cnblogs.com/ganchuanpu/p/8908093.html
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2436\357\274\232TreeMap\345\222\214\347\272\242\351\273\221\346\240\221.md" "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2436\357\274\232TreeMap\345\222\214\347\272\242\351\273\221\346\240\221.md"
index 1d7bdc2..2de2ef5 100644
--- "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2436\357\274\232TreeMap\345\222\214\347\272\242\351\273\221\346\240\221.md"
+++ "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2436\357\274\232TreeMap\345\222\214\347\272\242\351\273\221\346\240\221.md"
@@ -633,24 +633,5 @@ private void removeFixUp(RBTreeNode node, RBTreeNode parent){
[红黑树深入剖析及Java实现](https://link.jianshu.com/?t=https://zhuanlan.zhihu.com/p/24367771)
-## 微信公众号
-### Java技术江湖
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
-
-
-
-
diff --git "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2437\357\274\232HashSet\357\274\214TreeSet\344\270\216LinkedHashSet.md" "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2437\357\274\232HashSet\357\274\214TreeSet\344\270\216LinkedHashSet.md"
index 64108f8..a5cd7e4 100644
--- "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2437\357\274\232HashSet\357\274\214TreeSet\344\270\216LinkedHashSet.md"
+++ "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2437\357\274\232HashSet\357\274\214TreeSet\344\270\216LinkedHashSet.md"
@@ -632,24 +632,5 @@ http://cmsblogs.com/?p=599
https://www.cnblogs.com/one-apple-pie/p/11036309.html
https://blog.csdn.net/learningcoding/article/details/79983248
-## 微信公众号
-### Java技术江湖
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
-
-
-
-
diff --git "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2438\357\274\232Java\351\233\206\345\220\210\347\261\273\347\273\206\350\212\202\347\262\276\350\256\262.md" "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2438\357\274\232Java\351\233\206\345\220\210\347\261\273\347\273\206\350\212\202\347\262\276\350\256\262.md"
index d64c80c..18c058c 100644
--- "a/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2438\357\274\232Java\351\233\206\345\220\210\347\261\273\347\273\206\350\212\202\347\262\276\350\256\262.md"
+++ "b/docs/java/collection/Java\351\233\206\345\220\210\350\257\246\350\247\2438\357\274\232Java\351\233\206\345\220\210\347\261\273\347\273\206\350\212\202\347\262\276\350\256\262.md"
@@ -482,24 +482,4 @@ http://blog.itpub.net/69906029/viewspace-2641300/
https://www.cnblogs.com/itxiaok/p/10356553.html
-## 微信公众号
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
-
-
-
-
diff --git "a/docs/java/currency/Java\345\271\266\345\217\221\346\200\273\347\273\223.md" "b/docs/java/currency/Java\345\271\266\345\217\221\346\200\273\347\273\223.md"
index 5c0fa32..504ac79 100644
--- "a/docs/java/currency/Java\345\271\266\345\217\221\346\200\273\347\273\223.md"
+++ "b/docs/java/currency/Java\345\271\266\345\217\221\346\200\273\347\273\223.md"
@@ -231,20 +231,4 @@ ScheduledThreadPoolExecutor内部使用的是delayqueue队列,内部是一个
窃取的基本思路就是:当worker自己的任务队列里面没有任务时,就去scan别的线程的队列,把别人的任务拿过来执行
-## 微信公众号
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2171\357\274\232\345\210\233\345\273\272\345\236\213\346\250\241\345\274\217\357\274\210\345\267\245\345\216\202\357\274\214\345\215\225\344\276\213\347\255\211\357\274\211.md" "b/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2171\357\274\232\345\210\233\345\273\272\345\236\213\346\250\241\345\274\217\357\274\210\345\267\245\345\216\202\357\274\214\345\215\225\344\276\213\347\255\211\357\274\211.md"
index ebacece..76a215b 100644
--- "a/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2171\357\274\232\345\210\233\345\273\272\345\236\213\346\250\241\345\274\217\357\274\210\345\267\245\345\216\202\357\274\214\345\215\225\344\276\213\347\255\211\357\274\211.md"
+++ "b/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2171\357\274\232\345\210\233\345\273\272\345\236\213\346\250\241\345\274\217\357\274\210\345\267\245\345\216\202\357\274\214\345\215\225\344\276\213\347\255\211\357\274\211.md"
@@ -443,20 +443,4 @@ protected native Object clone() throws CloneNotSupportedException;
转自https://javadoop.com/post/design-pattern
-## 微信公众号
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2172\357\274\232\347\273\223\346\236\204\345\236\213\346\250\241\345\274\217\357\274\210\344\273\243\347\220\206\346\250\241\345\274\217\357\274\214\351\200\202\351\205\215\345\231\250\346\250\241\345\274\217\347\255\211\357\274\211.md" "b/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2172\357\274\232\347\273\223\346\236\204\345\236\213\346\250\241\345\274\217\357\274\210\344\273\243\347\220\206\346\250\241\345\274\217\357\274\214\351\200\202\351\205\215\345\231\250\346\250\241\345\274\217\347\255\211\357\274\211.md"
index a027df7..e1ca9b4 100644
--- "a/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2172\357\274\232\347\273\223\346\236\204\345\236\213\346\250\241\345\274\217\357\274\210\344\273\243\347\220\206\346\250\241\345\274\217\357\274\214\351\200\202\351\205\215\345\231\250\346\250\241\345\274\217\347\255\211\357\274\211.md"
+++ "b/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2172\357\274\232\347\273\223\346\236\204\345\236\213\346\250\241\345\274\217\357\274\210\344\273\243\347\220\206\346\250\241\345\274\217\357\274\214\351\200\202\351\205\215\345\231\250\346\250\241\345\274\217\347\255\211\357\274\211.md"
@@ -711,20 +711,4 @@ public class Employee {
转自https://javadoop.com/post/design-pattern
-## 微信公众号
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2173\357\274\232\350\241\214\344\270\272\345\236\213\346\250\241\345\274\217\357\274\210\347\255\226\347\225\245\357\274\214\350\247\202\345\257\237\350\200\205\347\255\211\357\274\211.md" "b/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2173\357\274\232\350\241\214\344\270\272\345\236\213\346\250\241\345\274\217\357\274\210\347\255\226\347\225\245\357\274\214\350\247\202\345\257\237\350\200\205\347\255\211\357\274\211.md"
index e24ef16..ff6b264 100644
--- "a/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2173\357\274\232\350\241\214\344\270\272\345\236\213\346\250\241\345\274\217\357\274\210\347\255\226\347\225\245\357\274\214\350\247\202\345\257\237\350\200\205\347\255\211\357\274\211.md"
+++ "b/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2173\357\274\232\350\241\214\344\270\272\345\236\213\346\250\241\345\274\217\357\274\210\347\255\226\347\225\245\357\274\214\350\247\202\345\257\237\350\200\205\347\255\211\357\274\211.md"
@@ -1201,20 +1201,3 @@ public class Employee {
转自https://javadoop.com/post/design-pattern
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2174\357\274\232JDK\344\270\255\347\232\204\350\256\276\350\256\241\346\250\241\345\274\217.md" "b/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2174\357\274\232JDK\344\270\255\347\232\204\350\256\276\350\256\241\346\250\241\345\274\217.md"
index 65b241a..034996c 100644
--- "a/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2174\357\274\232JDK\344\270\255\347\232\204\350\256\276\350\256\241\346\250\241\345\274\217.md"
+++ "b/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2174\357\274\232JDK\344\270\255\347\232\204\350\256\276\350\256\241\346\250\241\345\274\217.md"
@@ -935,21 +935,3 @@ public class Employee {
转自https://javadoop.com/post/design-pattern
-
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2175\357\274\232Spring\346\266\211\345\217\212\345\210\260\347\232\2049\347\247\215\350\256\276\350\256\241\346\250\241\345\274\217.md" "b/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2175\357\274\232Spring\346\266\211\345\217\212\345\210\260\347\232\2049\347\247\215\350\256\276\350\256\241\346\250\241\345\274\217.md"
index 8c23116..605b7a4 100644
--- "a/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2175\357\274\232Spring\346\266\211\345\217\212\345\210\260\347\232\2049\347\247\215\350\256\276\350\256\241\346\250\241\345\274\217.md"
+++ "b/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\2175\357\274\232Spring\346\266\211\345\217\212\345\210\260\347\232\2049\347\247\215\350\256\276\350\256\241\346\250\241\345\274\217.md"
@@ -872,20 +872,3 @@ public class Employee {
转自https://javadoop.com/post/design-pattern
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/design-parttern/\350\256\276\350\256\241\346\250\241\345\274\217\345\255\246\344\271\240\346\200\273\347\273\223.md" "b/docs/java/design-parttern/\350\256\276\350\256\241\346\250\241\345\274\217\345\255\246\344\271\240\346\200\273\347\273\223.md"
index 73c5a41..df7413c 100644
--- "a/docs/java/design-parttern/\350\256\276\350\256\241\346\250\241\345\274\217\345\255\246\344\271\240\346\200\273\347\273\223.md"
+++ "b/docs/java/design-parttern/\350\256\276\350\256\241\346\250\241\345\274\217\345\255\246\344\271\240\346\200\273\347\273\223.md"
@@ -215,20 +215,3 @@ https://blog.csdn.net/a724888/article/category/6780980
责任链通常需要先建立一个单向链表,然后调用方只需要调用头部节点就可以了,后面会自动流转下去。比如流程审批就是一个很好的例子,只要终端用户提交申请,根据申请的内容信息,自动建立一条责任链,然后就可以开始流转了。
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/jvm/JVM\346\200\273\347\273\223.md" "b/docs/java/jvm/JVM\346\200\273\347\273\223.md"
index 2762768..5517d49 100644
--- "a/docs/java/jvm/JVM\346\200\273\347\273\223.md"
+++ "b/docs/java/jvm/JVM\346\200\273\347\273\223.md"
@@ -152,21 +152,3 @@ g1收集器和cms的收集方式类似,但是g1将堆内存划分成了大小
## JVM的锁优化
在Java并发中讲述了synchronized重量级锁以及锁优化的方法,包括轻量级锁,偏向锁,自旋锁等。详细内容可以参考我的专栏:Java并发技术指南
-
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/jvm/\346\267\261\345\205\245\344\272\206\350\247\243JVM\350\231\232\346\213\237\346\234\2728\357\274\232Java\347\232\204\347\274\226\350\257\221\346\234\237\344\274\230\345\214\226\344\270\216\350\277\220\350\241\214\346\234\237\344\274\230\345\214\226.md" "b/docs/java/jvm/\346\267\261\345\205\245\344\272\206\350\247\243JVM\350\231\232\346\213\237\346\234\2728\357\274\232Java\347\232\204\347\274\226\350\257\221\346\234\237\344\274\230\345\214\226\344\270\216\350\277\220\350\241\214\346\234\237\344\274\230\345\214\226.md"
index 2db99f7..8f6911b 100644
--- "a/docs/java/jvm/\346\267\261\345\205\245\344\272\206\350\247\243JVM\350\231\232\346\213\237\346\234\2728\357\274\232Java\347\232\204\347\274\226\350\257\221\346\234\237\344\274\230\345\214\226\344\270\216\350\277\220\350\241\214\346\234\237\344\274\230\345\214\226.md"
+++ "b/docs/java/jvm/\346\267\261\345\205\245\344\272\206\350\247\243JVM\350\231\232\346\213\237\346\234\2728\357\274\232Java\347\232\204\347\274\226\350\257\221\346\234\237\344\274\230\345\214\226\344\270\216\350\277\220\350\241\214\346\234\237\344\274\230\345\214\226.md"
@@ -235,20 +235,3 @@ Java虚拟机的即时编译器与C/C++的静态编译器相比,可能会由
https://blog.csdn.net/android_hl/article/details/53228348
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27210\357\274\232JVM\345\270\270\347\224\250\345\217\202\346\225\260\344\273\245\345\217\212\350\260\203\344\274\230\345\256\236\350\267\265.md" "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27210\357\274\232JVM\345\270\270\347\224\250\345\217\202\346\225\260\344\273\245\345\217\212\350\260\203\344\274\230\345\256\236\350\267\265.md"
index 07a6b33..5499638 100644
--- "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27210\357\274\232JVM\345\270\270\347\224\250\345\217\202\346\225\260\344\273\245\345\217\212\350\260\203\344\274\230\345\256\236\350\267\265.md"
+++ "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27210\357\274\232JVM\345\270\270\347\224\250\345\217\202\346\225\260\344\273\245\345\217\212\350\260\203\344\274\230\345\256\236\350\267\265.md"
@@ -413,20 +413,3 @@ jvm的参数设置一直是比较理不清的地方,很多时候都搞不清
https://blog.csdn.net/android_hl/article/details/53228348
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27211\357\274\232Java\345\206\205\345\255\230\345\274\202\345\270\270\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265.md" "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27211\357\274\232Java\345\206\205\345\255\230\345\274\202\345\270\270\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265.md"
index 0805113..55cff84 100644
--- "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27211\357\274\232Java\345\206\205\345\255\230\345\274\202\345\270\270\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265.md"
+++ "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27211\357\274\232Java\345\206\205\345\255\230\345\274\202\345\270\270\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265.md"
@@ -460,21 +460,3 @@ Optimizeit Profiler版本4.11支持Application,Applet,Servlet和Romote Appli
https://blog.csdn.net/android_hl/article/details/53228348
-
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27212\357\274\232JVM\346\200\247\350\203\275\347\256\241\347\220\206\347\245\236\345\231\250VisualVM\344\273\213\347\273\215\344\270\216\345\256\236\346\210\230.md" "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27212\357\274\232JVM\346\200\247\350\203\275\347\256\241\347\220\206\347\245\236\345\231\250VisualVM\344\273\213\347\273\215\344\270\216\345\256\236\346\210\230.md"
index 9df9174..b3321fe 100644
--- "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27212\357\274\232JVM\346\200\247\350\203\275\347\256\241\347\220\206\347\245\236\345\231\250VisualVM\344\273\213\347\273\215\344\270\216\345\256\236\346\210\230.md"
+++ "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27212\357\274\232JVM\346\200\247\350\203\275\347\256\241\347\220\206\347\245\236\345\231\250VisualVM\344\273\213\347\273\215\344\270\216\345\256\236\346\210\230.md"
@@ -256,21 +256,3 @@
https://blog.csdn.net/android_hl/article/details/53228348
-
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27213\357\274\232\345\206\215\350\260\210\345\233\233\347\247\215\345\274\225\347\224\250\345\217\212GC\345\256\236\350\267\265.md" "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27213\357\274\232\345\206\215\350\260\210\345\233\233\347\247\215\345\274\225\347\224\250\345\217\212GC\345\256\236\350\267\265.md"
index 3167cfa..9446a4f 100644
--- "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27213\357\274\232\345\206\215\350\260\210\345\233\233\347\247\215\345\274\225\347\224\250\345\217\212GC\345\256\236\350\267\265.md"
+++ "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\27213\357\274\232\345\206\215\350\260\210\345\233\233\347\247\215\345\274\225\347\224\250\345\217\212GC\345\256\236\350\267\265.md"
@@ -228,21 +228,3 @@ StrongReference是Java的默认引用形式,使用时不需要显示定义。
https://blog.csdn.net/android_hl/article/details/53228348
-
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2722\357\274\232JVM\345\236\203\345\234\276\345\233\236\346\224\266\345\237\272\346\234\254\345\216\237\347\220\206\345\222\214\347\256\227\346\263\225.md" "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2722\357\274\232JVM\345\236\203\345\234\276\345\233\236\346\224\266\345\237\272\346\234\254\345\216\237\347\220\206\345\222\214\347\256\227\346\263\225.md"
index e8a7e29..f1e1f3c 100644
--- "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2722\357\274\232JVM\345\236\203\345\234\276\345\233\236\346\224\266\345\237\272\346\234\254\345\216\237\347\220\206\345\222\214\347\256\227\346\263\225.md"
+++ "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2722\357\274\232JVM\345\236\203\345\234\276\345\233\236\346\224\266\345\237\272\346\234\254\345\216\237\347\220\206\345\222\214\347\256\227\346\263\225.md"
@@ -569,20 +569,3 @@ Stop-the-world意味着 JVM由于要执行GC而停止了应用程序的执行,
https://blog.csdn.net/android_hl/article/details/53228348
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2726\357\274\232\346\267\261\345\205\245\347\220\206\350\247\243JVM\347\261\273\345\212\240\350\275\275\346\234\272\345\210\266.md" "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2726\357\274\232\346\267\261\345\205\245\347\220\206\350\247\243JVM\347\261\273\345\212\240\350\275\275\346\234\272\345\210\266.md"
index 60ad7b7..b0a250c 100644
--- "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2726\357\274\232\346\267\261\345\205\245\347\220\206\350\247\243JVM\347\261\273\345\212\240\350\275\275\346\234\272\345\210\266.md"
+++ "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2726\357\274\232\346\267\261\345\205\245\347\220\206\350\247\243JVM\347\261\273\345\212\240\350\275\275\346\234\272\345\210\266.md"
@@ -169,20 +169,4 @@ java中,对于初始化阶段,有且只有以下五种情况才会对要求
https://blog.csdn.net/android_hl/article/details/53228348
-## 微信公众号
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2727\357\274\232JNDI\357\274\214OSGI\357\274\214Tomcat\347\261\273\345\212\240\350\275\275\345\231\250\345\256\236\347\216\260.md" "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2727\357\274\232JNDI\357\274\214OSGI\357\274\214Tomcat\347\261\273\345\212\240\350\275\275\345\231\250\345\256\236\347\216\260.md"
index 1c3b52d..0e2e5e2 100644
--- "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2727\357\274\232JNDI\357\274\214OSGI\357\274\214Tomcat\347\261\273\345\212\240\350\275\275\345\231\250\345\256\236\347\216\260.md"
+++ "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2727\357\274\232JNDI\357\274\214OSGI\357\274\214Tomcat\347\261\273\345\212\240\350\275\275\345\231\250\345\256\236\347\216\260.md"
@@ -384,20 +384,4 @@ Servlet规范指出,容器用于加载Web应用内Servlet的class loader, 允
https://blog.csdn.net/android_hl/article/details/53228348
-## 微信公众号
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2729\357\274\232JVM\347\233\221\346\216\247\345\267\245\345\205\267\344\270\216\350\257\212\346\226\255\345\256\236\350\267\265.md" "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2729\357\274\232JVM\347\233\221\346\216\247\345\267\245\345\205\267\344\270\216\350\257\212\346\226\255\345\256\236\350\267\265.md"
index ab03095..0db0dbc 100644
--- "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2729\357\274\232JVM\347\233\221\346\216\247\345\267\245\345\205\267\344\270\216\350\257\212\346\226\255\345\256\236\350\267\265.md"
+++ "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\2729\357\274\232JVM\347\233\221\346\216\247\345\267\245\345\205\267\344\270\216\350\257\212\346\226\255\345\256\236\350\267\265.md"
@@ -391,20 +391,4 @@ jmap -dump:format=b,file=/tmp/dump.dat 11869
https://blog.csdn.net/android_hl/article/details/53228348
-## 微信公众号
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232GC\350\260\203\344\274\230\346\200\235\350\267\257\344\270\216\345\270\270\347\224\250\345\267\245\345\205\267.md" "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232GC\350\260\203\344\274\230\346\200\235\350\267\257\344\270\216\345\270\270\347\224\250\345\267\245\345\205\267.md"
index 01adef6..a91740a 100644
--- "a/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232GC\350\260\203\344\274\230\346\200\235\350\267\257\344\270\216\345\270\270\347\224\250\345\267\245\345\205\267.md"
+++ "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232GC\350\260\203\344\274\230\346\200\235\350\267\257\344\270\216\345\270\270\347\224\250\345\267\245\345\205\267.md"
@@ -35,20 +35,4 @@
https://blog.csdn.net/android_hl/article/details/53228348
-## 微信公众号
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/java/network-programming/Java\347\275\221\347\273\234\344\270\216NIO\346\200\273\347\273\223.md" "b/docs/java/network-programming/Java\347\275\221\347\273\234\344\270\216NIO\346\200\273\347\273\223.md"
index 259082a..602b23a 100644
--- "a/docs/java/network-programming/Java\347\275\221\347\273\234\344\270\216NIO\346\200\273\347\273\223.md"
+++ "b/docs/java/network-programming/Java\347\275\221\347\273\234\344\270\216NIO\346\200\273\347\273\223.md"
@@ -228,21 +228,3 @@ bootstrap
在深入了解地Netty的核心组件之后,发现它们的设计都很模块化,如果想要实现你自己的应用程序,就需要将这些组件组装到一起。Netty通过Bootstrap类,以对一个Netty应用程序进行配置(组装各个组件),并最终使它运行起来。
对于客户端程序和服务器程序所使用到的Bootstrap类是不同的,后者需要使用ServerBootstrap,这样设计是因为,在如TCP这样有连接的协议中,服务器程序往往需要一个以上的Channel,通过父Channel来接受来自客户端的连接,然后创建子Channel用于它们之间的通信,而像UDP这样无连接的协议,它不需要每个连接都创建子Channel,只需要一个Channel即可。
-
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/network/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234\345\255\246\344\271\240\346\200\273\347\273\223.md" "b/docs/network/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234\345\255\246\344\271\240\346\200\273\347\273\223.md"
index 96a1ef4..d12d4bc 100644
--- "a/docs/network/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234\345\255\246\344\271\240\346\200\273\347\273\223.md"
+++ "b/docs/network/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234\345\255\246\344\271\240\346\200\273\347\273\223.md"
@@ -693,21 +693,3 @@ OSPF 具有以下特点:
。一个数据帧或包被传输到本地网段 (由广播域定义)上的每个节点就是广播;由于网络拓扑的设计和连接问题,或其他原因导致广播在网段内大量复制,传播数据帧,导致网络性能下降,甚至网络瘫痪,这就是广播风暴。
要避免广播风暴,可以采用恰当划分VLAN、缩小广播域、隔离广播风暴,还可在千兆以太网口上启用广播风暴控制,最大限度地避免网络再次陷入瘫痪。
-
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/operating-system/Linux\345\206\205\346\240\270\344\270\216\345\237\272\347\241\200\345\221\275\344\273\244\345\255\246\344\271\240\346\200\273\347\273\223.md" "b/docs/operating-system/Linux\345\206\205\346\240\270\344\270\216\345\237\272\347\241\200\345\221\275\344\273\244\345\255\246\344\271\240\346\200\273\347\273\223.md"
index 3728891..d23a9f2 100644
--- "a/docs/operating-system/Linux\345\206\205\346\240\270\344\270\216\345\237\272\347\241\200\345\221\275\344\273\244\345\255\246\344\271\240\346\200\273\347\273\223.md"
+++ "b/docs/operating-system/Linux\345\206\205\346\240\270\344\270\216\345\237\272\347\241\200\345\221\275\344\273\244\345\255\246\344\271\240\346\200\273\347\273\223.md"
@@ -916,20 +916,3 @@ uname可以显示一些重要的系统信息,例如内核名称、主机名、
5内存
free
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/operating-system/\346\223\215\344\275\234\347\263\273\347\273\237\345\255\246\344\271\240\346\200\273\347\273\223.md" "b/docs/operating-system/\346\223\215\344\275\234\347\263\273\347\273\237\345\255\246\344\271\240\346\200\273\347\273\223.md"
index d0e096f..4e3f34e 100644
--- "a/docs/operating-system/\346\223\215\344\275\234\347\263\273\347\273\237\345\255\246\344\271\240\346\200\273\347\273\223.md"
+++ "b/docs/operating-system/\346\223\215\344\275\234\347\263\273\347\273\237\345\255\246\344\271\240\346\200\273\347\273\223.md"
@@ -331,21 +331,3 @@ linux使用inode来标识任意一个文件。inode存储除了文件名以外
于是我们ls到另一个目录。同理他也是一个inode。我们在这个inode下执行vi操作打开某个文件,于是linux通过inode中的映射表找到了我们请求访问的文件名对应的inode。
然后寻道到对应的磁盘位置,读取内容到缓冲区,通过系统调用把内容读到内存中,最后进行访问。
-
-## 微信公众号
-
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git "a/docs/\345\205\254\344\274\227\345\217\267\345\216\206\345\217\262\346\226\207\347\253\240\346\261\207\346\200\273.md" "b/docs/\345\205\254\344\274\227\345\217\267\345\216\206\345\217\262\346\226\207\347\253\240\346\261\207\346\200\273.md"
deleted file mode 100644
index e69de29..0000000
diff --git "a/docs/\347\224\265\345\255\220\344\271\246.md" "b/docs/\347\224\265\345\255\220\344\271\246.md"
index 9f5fa61..eaa7687 100644
--- "a/docs/\347\224\265\345\255\220\344\271\246.md"
+++ "b/docs/\347\224\265\345\255\220\344\271\246.md"
@@ -224,23 +224,7 @@
[从三流小公司到一线大厂,聊聊程序员的成长之道](http://mp.weixin.qq.com/s?__biz=MzUyOTk5NDQwOA==&mid=2247485427&idx=1&sn=6004e6bed110c44f0d8ce77a2ffca1dc&chksm=fa59c034cd2e492253625d91492467b841c5f6de21d299cae01f05483ab363f856e8d97fe339&scene=21#wechat_redirect)
-## 微信公众号
-### Java技术江湖
-
-如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
-
-**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。
-
-
-
-### 个人公众号:黄小斜
-
-作者是 985 硕士,蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot、MySQL、分布式、中间件、微服务,同时也懂点投资理财,偶尔讲点算法和计算机理论基础,坚持学习和写作,相信终身学习的力量!
-
-**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。
-
-
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index 2cca927..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
- 4.0.0
-
- groupId
- JavaTutorial
- 1.0-SNAPSHOT
-
-
-
-
- com.github.houbb
- markdown-toc
- 1.0.6
-
-
-
-
-
\ No newline at end of file
diff --git "a/\345\217\202\350\200\203.md" "b/\345\217\202\350\200\203.md"
deleted file mode 100644
index 8b13789..0000000
--- "a/\345\217\202\350\200\203.md"
+++ /dev/null
@@ -1 +0,0 @@
-
From 4d32b28d5415ffa9974a7a6b97737d97908cfc74 Mon Sep 17 00:00:00 2001
From: Suwen macOS Yurisa <577014284@qq.com>
Date: Mon, 20 Jul 2020 00:38:24 +0800
Subject: [PATCH 3/8] =?UTF-8?q?=E5=BF=85=E8=83=8Ccode?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ReadMe.md | 5 +-
docs/code/code.md | 433 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 437 insertions(+), 1 deletion(-)
create mode 100644 docs/code/code.md
diff --git a/ReadMe.md b/ReadMe.md
index 4605f72..03f6b9f 100644
--- a/ReadMe.md
+++ b/ReadMe.md
@@ -1,4 +1,4 @@
- 本仓库原为[Java工程师技术指南](https://github.com/h2pl/Java-Tutorial),现 fork 修正错误和更新内容。
+ 本仓库原为[Java工程师技术指南](https://github.com/h2pl/Java-Tutorial),现 fork 修正错误和更新内容。
## 目录
@@ -200,12 +200,15 @@ todo
## 算法
* [必备算法总结](https://www.zhihu.com/question/23148377/answer/907915556)
+
* [剑指offer](docs/algorithms/剑指offer.md)
* [动态规划](https://www.cxyxiaowu.com/6781.html)
* [十大排序](https://www.zhihu.com/question/51337272/answer/572455307)
+* [排序JAVA代码](https://mp.weixin.qq.com/s?__biz=MzUyNjQxNjYyMg==&mid=2247484184&idx=1&sn=62965b401aa42107b3c17d1d8ea17454&chksm=fa0e6c99cd79e58f298e9026f677f912bd8c8e55edb48fc509b2b5834f05e529a9b47d59d202&scene=21#wechat_redirect)
+
## 计算机基础
diff --git a/docs/code/code.md b/docs/code/code.md
new file mode 100644
index 0000000..b1e9c57
--- /dev/null
+++ b/docs/code/code.md
@@ -0,0 +1,433 @@
+# [熟记算法代码](https://www.zhihu.com/question/23148377/answer/907915556)
+
+## 动态规划
+
+```java
+public int dpExample(int n) {
+ int[] dp = new int[n + 1]; // 多开一位用来存放 0 个 1 相加的结果
+
+ dp[0] = 0; // 0 个 1 相加等于 0
+
+ for (int i = 1; i <= n; ++i) {
+ dp[i] = dp[i - 1] + 1;
+ }
+
+ return dp[n];
+}
+```
+
+## 排序
+
+### 冒泡排序
+
+- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
+- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
+- 针对所有的元素重复以上的步骤,除了最后一个。
+- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
+
+```java
+public class BubbleSort implements IArraySort {
+
+ @Override
+ public int[] sort(int[] sourceArray) throws Exception {
+ // 对 arr 进行拷贝,不改变参数内容
+ int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
+
+ for (int i = 1; i < arr.length; i++) {
+ // 设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已经完成。
+ boolean flag = true;
+
+ for (int j = 0; j < arr.length - i; j++) {
+ if (arr[j] > arr[j + 1]) {
+ int tmp = arr[j];
+ arr[j] = arr[j + 1];
+ arr[j + 1] = tmp;
+
+ flag = false;
+ }
+ }
+
+ if (flag) {
+ break;
+ }
+ }
+ return arr;
+ }
+}
+```
+
+### 选择排序
+
+- 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
+- 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
+- 重复第二步,直到所有元素均排序完毕。
+
+```java
+public class SelectionSort implements IArraySort {
+
+ @Override
+ public int[] sort(int[] sourceArray) throws Exception {
+ int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
+
+ // 总共要经过 N-1 轮比较
+ for (int i = 0; i < arr.length - 1; i++) {
+ int min = i;
+
+ // 每轮需要比较的次数 N-i
+ for (int j = i + 1; j < arr.length; j++) {
+ if (arr[j] < arr[min]) {
+ // 记录目前能找到的最小值元素的下标
+ min = j;
+ }
+ }
+
+ // 将找到的最小值和i位置所在的值进行交换
+ if (i != min) {
+ int tmp = arr[i];
+ arr[i] = arr[min];
+ arr[min] = tmp;
+ }
+
+ }
+ return arr;
+ }
+}
+```
+
+### 插入排序
+
+将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
+
+从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
+
+```java
+public class InsertSort implements IArraySort {
+
+ @Override
+ public int[] sort(int[] sourceArray) throws Exception {
+ // 对 arr 进行拷贝,不改变参数内容
+ int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
+
+ // 从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个元素,默认是有序的
+ for (int i = 1; i < arr.length; i++) {
+
+ // 记录要插入的数据
+ int tmp = arr[i];
+
+ // 从已经排序的序列最右边的开始比较,找到比其小的数
+ int j = i;
+ while (j > 0 && tmp < arr[j - 1]) {
+ arr[j] = arr[j - 1];
+ j--;
+ }
+
+ // 存在比其小的数,插入
+ if (j != i) {
+ arr[j] = tmp;
+ }
+
+ }
+ return arr;
+ }
+}
+```
+
+### 希尔排序
+
+选择一个增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;
+
+按增量序列个数 k,对序列进行 k 趟排序;
+
+每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。仅增量因子为 1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。
+
+```java
+public class ShellSort implements IArraySort {
+
+ @Override
+ public int[] sort(int[] sourceArray) throws Exception {
+ // 对 arr 进行拷贝,不改变参数内容
+ int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
+
+ int gap = 1;
+ while (gap < arr.length) {
+ gap = gap * 3 + 1;
+ }
+
+ while (gap > 0) {
+ for (int i = gap; i < arr.length; i++) {
+ int tmp = arr[i];
+ int j = i - gap;
+ while (j >= 0 && arr[j] > tmp) {
+ arr[j + gap] = arr[j];
+ j -= gap;
+ }
+ arr[j + gap] = tmp;
+ }
+ gap = (int) Math.floor(gap / 3);
+ }
+
+ return arr;
+ }
+}
+```
+
+### 快速排序
+
+
+
+* 从数列中挑出一个元素,称为 “基准”(pivot);
+
+* 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
+* 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;
+
+```java
+public class QuickSort implements IArraySort {
+
+ @Override
+ public int[] sort(int[] sourceArray) throws Exception {
+ // 对 arr 进行拷贝,不改变参数内容
+ int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
+
+ return quickSort(arr, 0, arr.length - 1);
+ }
+
+ private int[] quickSort(int[] arr, int left, int right) {
+ if (left < right) {
+ int partitionIndex = partition(arr, left, right);
+ quickSort(arr, left, partitionIndex - 1);
+ quickSort(arr, partitionIndex + 1, right);
+ }
+ return arr;
+ }
+
+ private int partition(int[] arr, int left, int right) {
+ // 设定基准值(pivot)
+ int pivot = left;
+ int index = pivot + 1;
+ for (int i = index; i <= right; i++) {
+ if (arr[i] < arr[pivot]) {
+ swap(arr, i, index);
+ index++;
+ }
+ }
+ swap(arr, pivot, index - 1);
+ return index - 1;
+ }
+
+ private void swap(int[] arr, int i, int j) {
+ int temp = arr[i];
+ arr[i] = arr[j];
+ arr[j] = temp;
+ }
+
+}
+```
+
+## 搜索
+
+### 二叉树的层次遍历
+
+```java
+public List> levelOrder(TreeNode root) {
+ if(root == null)
+ return new ArrayList<>();
+ List> res = new ArrayList<>();
+ Queue queue = new LinkedList();
+ queue.add(root);
+ while(!queue.isEmpty()){
+ int count = queue.size();
+ List list = new ArrayList();
+ while(count > 0){
+ TreeNode node = queue.poll();
+ list.add(node.val);
+ if(node.left != null)
+ queue.add(node.left);
+ if(node.right != null)
+ queue.add(node.right);
+ count--;
+ }
+ res.add(list);
+ }
+ return res;
+}
+
+```
+
+## 查找
+
+### 二分查找模版
+
+```java
+int start = 0, end = nums.length - 1;
+while (start + 1 < end) {
+ int mid = start + (end - start) / 2;
+
+ if (...) {
+ start = mid;
+ } else {
+ end = mid;
+ }
+}
+```
+
+**查找元素的第一个和最后一个位置**
+
+```java
+public int[] searchRange(int[] nums, int target) {
+ int[] result = new int[]{-1, -1};
+ if (nums == null || nums.length == 0) {
+ return result;
+ }
+
+ // find front
+ int start = 0, end = nums.length - 1;
+ while (start + 1 < end) {
+ int mid = start + (end - start) / 2;
+ if (nums[mid] >= target) {
+ end = mid;
+ } else {
+ start = mid;
+ }
+ }
+
+ if (nums[start] == target) {
+ result[0] = start;
+ } else if (nums[end] == target) {
+ result[0] = end;
+ }
+
+ // find back
+ start = 0; end = nums.length - 1;
+ while (start + 1 < end) {
+ int mid = start + (end - start) / 2;
+ if (nums[mid] <= target) {
+ start = mid;
+ } else {
+ end = mid;
+ }
+ }
+
+ if (nums[end] == target) {
+ result[1] = end;
+ } else if (nums[start] == target) {
+ result[1] = start;
+ }
+
+ return result;
+}
+```
+
+## 字符串匹配
+
+[BM 算法](https://mp.weixin.qq.com/s?__biz=MzUyNjQxNjYyMg==&mid=2247486150&idx=1&sn=9e9f8c35805c66132005cb634ef18171&chksm=fa0e6547cd79ec51529d0510f18161b65e54826231fae025d2cfbbd4f8a9656460f5b2d424b3&scene=21#wechat_redirect)
+
+[BF 算法](https://mp.weixin.qq.com/s?__biz=MzUyNjQxNjYyMg==&mid=2247485906&idx=1&sn=f00a07cbca83d345cbacc327e335de2d&chksm=fa0e6653cd79ef45a9566cd8ea947d122cfde8e1c9459332e4d7d04f06644fc7a6e81da7ee10&scene=21#wechat_redirect)
+
+```java
+int index( String S, String T, int pos ){
+ int i = pos; // i 表示主串 S 中当前位置下标
+ int j = 1; // j 表示子串 T 中当前位置下标
+
+ while( i <= S[0] && j <= T[0] ){ // i 或 j 其中一个到达尾部则终止搜索
+ if( S[i] == T[i] ){ // 若相等则继续进行下一个元素匹配
+ i++;
+ j++;
+ }else { // 若匹配失败则 j 回溯到第一个元素重新匹配
+ i = i - j + 2; // 将 i 重新回溯到上次匹配首位的下一个元素
+ j = 1;
+ }
+ }
+
+ if( j > T[0] ){
+ return i - T[0];
+ }else {
+ return 0;
+ }
+}
+```
+
+[KMP 算法](https://mp.weixin.qq.com/s?__biz=MzUyNjQxNjYyMg==&mid=2247486490&idx=3&sn=35ba410818207a1bef83d6578f4b332c&chksm=fa0e639bcd79ea8dff1141a8729cf4b1243d23ac276652a58fc23d7b6b2ce01ca2666feab293&scene=21#wechat_redirect)
+
+```java
+public class KMP {
+ private int[][] dp;
+ private String pat;
+
+ public KMP(String pat) {
+ this.pat = pat;
+ int M = pat.length();
+ // dp[状态][字符] = 下个状态
+ dp = new int[M][256];
+ // base case
+ dp[0][pat.charAt(0)] = 1;
+ // 影子状态 X 初始为 0
+ int X = 0;
+ // 构建状态转移图(稍改的更紧凑了)
+ for (int j = 1; j < M; j++) {
+ for (int c = 0; c < 256; c++) {
+ dp[j][c] = dp[X][c];
+ dp[j][pat.charAt(j)] = j + 1;
+ // 更新影子状态
+ X = dp[X][pat.charAt(j)];
+ }
+ }
+
+ public int search(String txt) {
+ int M = pat.length();
+ int N = txt.length();
+ // pat 的初始态为 0
+ int j = 0;
+ for (int i = 0; i < N; i++) {
+ // 计算 pat 的下一个状态
+ j = dp[j][txt.charAt(i)];
+ // 到达终止态,返回结果
+ if (j == M) return i - M + 1;
+ }
+ // 没到达终止态,匹配失败
+ return -1;
+ }
+}
+```
+
+## 线性表
+
+### 有序数组/链表去重[快慢指针]
+
+```java
+int removeDuplicates(int[] nums){
+ int n = nums.lenght;
+ if(n == 0) return 0;
+ int slow = 0, fast =1;
+ while (fast < n) {
+ if (nums[fast] != nums[slow]) {
+ slow++;
+ // 维护 nums[0..slow] 无重复
+ nums[slow] = nums[fast];
+ }
+ fast++;
+ }
+ // 长度为索引 + 1
+ return slow + 1;
+}
+```
+
+```java
+ListNode deleteDuplicates(ListNode head) {
+ if (head == null) return null;
+ ListNode slow = head, fast = head.next;
+ while (fast != null) {
+ if (fast.val != slow.val) {
+ // nums[slow] = nums[fast];
+ slow.next =fast;
+ // slow++;
+ slow = slow.next;
+ }
+ // fast++;
+ fast = fast.next;
+ }
+ // 断开与后面重复元素的连接
+ slow.next = null;
+ return head;
+}
+```
+
From d9acdb33c93f1b0e4d794753c27c5b75549199d6 Mon Sep 17 00:00:00 2001
From: Suwen macOS Yurisa <577014284@qq.com>
Date: Mon, 20 Jul 2020 14:08:54 +0800
Subject: [PATCH 4/8] fix page build failed
---
.../\345\211\221\346\214\207offer.md" | 49 -------------------
1 file changed, 49 deletions(-)
diff --git "a/docs/algorithms/\345\211\221\346\214\207offer.md" "b/docs/algorithms/\345\211\221\346\214\207offer.md"
index 1eb848f..66dc482 100644
--- "a/docs/algorithms/\345\211\221\346\214\207offer.md"
+++ "b/docs/algorithms/\345\211\221\346\214\207offer.md"
@@ -1620,55 +1620,6 @@ public static int LastRemaining_Solution(int n, int m) {
解析:回溯法也就是特殊的dfs,需要找到所有的路径,所以每当到达边界条件或抵达目标时,递归返回,由于需要保存路径中的字母,所以递归返回时需要删除路径最后的节点,来保证路径合法。不过本题只有一个解,所以找到即可返回。
- public class 矩阵中的路径 {
- public static void main(String[] args) {
- char[][]arr = {{'a','b','c','e'},{'s','f','c','s'},{'a','d','e','e'}};
- char []str = {'b','c','c','e','d'};
- System.out.println(hasPath(arr, arr.length, arr[0].length, str));
- }
- static int flag = 0;
- public static boolean hasPath(char[][] matrix, int rows, int cols, char[] str)
- {
- int [][]visit = new int[rows][cols];
- StringBuilder sb = new StringBuilder();
- for (int i = 0;i < rows;i ++) {
- for (int j = 0;j < cols;j ++) {
- if (matrix[i][j] == str[0]) {
- visit[i][j] = 1;
- sb.append(str[0]);
- dfs(matrix, i, j, visit, str, 1, sb);
- visit[i][j] = 0;
- sb.deleteCharAt(sb.length() - 1);
- }
- }
- }
- return flag == 1;
- }
- public static void dfs(char [][]matrix, int row, int col, int [][]visit, char []str, int cur, StringBuilder sb) {
- if (sb.length() == str.length) {
- // System.out.println(sb.toString());
- flag = 1;
- return;
- }
-
- int [][]pos = {{1,0},{-1,0},{0,1},{0,-1}};
- for (int i = 0;i < pos.length;i ++) {
- int x = row + pos[i][0];
- int y = col + pos[i][1];
- if (x >= matrix.length || x < 0 || y >= matrix[0].length || y < 0) {
- continue;
- }
- if (visit[x][y] == 0 && matrix[x][y] == str[cur]) {
- sb.append(matrix[x][y]);
- visit[x][y] = 1;
- dfs(matrix, x, y, visit, str, cur + 1, sb);
- sb.deleteCharAt(sb.length() - 1);
- visit[x][y] = 0;
- }
- }
- }
-
-
## 机器人的运动范围
From fdf63e5c606c177b0f57925416caab957597c78e Mon Sep 17 00:00:00 2001
From: Suwen macOS Yurisa <577014284@qq.com>
Date: Wed, 29 Jul 2020 16:39:19 +0800
Subject: [PATCH 5/8] fix words, path
---
ReadMe.md | 52 +++----
...36\350\267\265\346\200\273\347\273\223.md" | 39 +++--
...45\344\270\216\345\256\236\350\267\265.md" | 3 +-
...2\357\274\232MySQL \345\222\214 InnoDB.md" | 31 +---
...23\346\236\204\347\256\227\346\263\225.md" | 28 +---
...04\351\224\201\345\256\236\347\216\260.md" | 23 ---
...4\232SpringMVC\346\246\202\350\277\260.md" | 24 ---
...\274\232Spring\346\246\202\350\277\260.md" | 22 +--
...70\345\277\203\346\265\201\347\250\213.md" | 23 +--
...43\345\274\217\345\274\200\345\217\221.md" | 140 ++++++------------
...274\232Mybatis\345\205\245\351\227\250.md" | 81 +---------
...\215\347\275\256\347\232\204SpringBoot.md" | 63 +-------
...72\347\241\200\347\237\245\350\257\206.md" | 58 +-------
...17\344\270\216\347\216\260\345\234\250.md" | 21 ---
...45\346\261\240\346\212\200\346\234\257.md" | 20 ---
...37\347\220\206\350\257\246\350\247\243.md" | 61 --------
...67\346\261\202\350\277\207\347\250\213.md" | 20 ---
...43\200\201Java\345\274\202\345\270\270.md" | 64 ++------
...55\347\232\204\345\233\236\350\260\203.md" | 74 ++-------
...12\343\200\201\345\217\215\345\260\204.md" | 54 +------
...13\343\200\201\346\263\233\345\236\213.md" | 39 +----
...01\346\236\232\344\270\276\347\261\273.md" | 38 +----
...00\344\275\263\345\256\236\350\267\265.md" | 51 +------
.../16\343\200\201JavaIO\346\265\201.md" | 54 +------
...01\345\244\232\347\272\277\347\250\213.md" | 82 +++-------
...06\346\236\266\346\242\263\347\220\206.md" | 53 +------
...71\350\261\241\345\237\272\347\241\200.md" | 28 +---
...10\346\236\201\346\214\207\345\215\227.md" | 54 +------
...15\345\272\217\345\210\227\345\214\226.md" | 114 +++++---------
...36\347\216\260\345\216\237\347\220\206.md" | 53 +------
...60\346\215\256\347\261\273\345\236\213.md" | 25 +---
...14\345\214\205\350\243\205\347\261\273.md" | 29 +---
...va\347\261\273\345\222\214\345\214\205.md" | 44 +-----
...73\345\222\214\346\216\245\345\217\243.md" | 42 +-----
...47\350\241\214\351\241\272\345\272\217.md" | 41 +----
...17\347\232\204\347\247\230\345\257\206.md" | 25 +---
...\261\273\345\222\214Object\347\261\273.md" | 47 ++----
...10\347\261\273\346\200\273\347\273\223.md" | 32 +---
...57\274\232HashMap\345\222\214HashTable.md" | 21 +--
...14\347\272\242\351\273\221\346\240\221.md" | 35 ++---
...46\344\271\240\346\200\273\347\273\223.md" | 13 +-
...46\344\271\240\346\200\273\347\273\223.md" | 15 +-
42 files changed, 276 insertions(+), 1560 deletions(-)
rename "docs/database/\351\207\215\346\226\260\345\255\246\344\271\240Mysql\346\225\260\346\215\256\345\272\2232\357\274\232\343\200\216\346\265\205\345\205\245\346\265\205\345\207\272\343\200\217MySQL \345\222\214 InnoDB.md" => "docs/database/\351\207\215\346\226\260\345\255\246\344\271\240Mysql\346\225\260\346\215\256\345\272\2232\357\274\232MySQL \345\222\214 InnoDB.md" (96%)
diff --git a/ReadMe.md b/ReadMe.md
index 03f6b9f..021908f 100644
--- a/ReadMe.md
+++ b/ReadMe.md
@@ -1,8 +1,8 @@
- 本仓库原为[Java工程师技术指南](https://github.com/h2pl/Java-Tutorial),现 fork 修正错误和更新内容。
+本仓库原为 [Java工程师技术指南](https://github.com/h2pl/Java-Tutorial),现 fork 修正错误和更新内容。
## 目录
-- [Java基础](#Java基础)
+- [Java基础](#Java基础)
- [基础知识](#基础知识)
- [容器](#容器)
- [设计模式](#设计模式)
@@ -15,9 +15,9 @@
- [JVM](#JVM)
- [Java网络编程](#Java网络编程)
- [算法](#算法)
- -[必备算法总结](#必备算法总结)
- -[剑指offer](#剑指offer)
- -[todo]()
+ - [必备算法总结](#必备算法总结)
+ - [剑指offer](#剑指offer)
+ - [todo]()
- [计算机基础](#计算机基础)
- [计算机网络](#计算机网络)
- [操作系统](#操作系统)
@@ -43,8 +43,6 @@
- [资料](#资料)
- [书单](#书单)
- [待办](#待办)
-- [说明](#说明)
-- [微信公众号](#微信公众号)
## Java基础
@@ -128,12 +126,12 @@
### SpringMVC
-* [SpringMVC源码分析1:SpringMVC概述](docs/java-web/Spring/SSM/SpringMVC源码分析1:SpringMVC概述.md)
-* [SpringMVC源码分析2:SpringMVC设计理念与DispatcherServlet](docs/java-web/Spring/SSM/SpringMVC源码分析2:SpringMVC设计理念与DispatcherServlet.md)
-* [SpringMVC源码分析3:DispatcherServlet的初始化与请求转发 ](docs/java-web/Spring/SSM/SpringMVC源码分析3:DispatcherServlet的初始化与请求转发.md)
-* [SpringMVC源码分析4:DispatcherServlet如何找到正确的Controller ](docs/java-web/Spring/SSM/SpringMVC源码分析4:DispatcherServlet如何找到正确的Controller.md)
-* [SpringMVC源码剖析5:消息转换器HttpMessageConverter与@ResponseBody注解](docs/java-web/Spring/SSM/SpringMVC源码剖析5:消息转换器HttpMessageConverter与@ResponseBody注解.md)
-* [SpringMVC源码分析6:SpringMVC的视图解析原理 ](docs/java-web/Spring/SSM/SpringMVC源码分析6:SpringMVC的视图解析原理.md)
+* [SpringMVC源码分析1:SpringMVC概述](docs/java-web/SSM/SpringMVC源码分析1:SpringMVC概述.md)
+* [SpringMVC源码分析2:SpringMVC设计理念与DispatcherServlet](docs/java-web/SSM/SpringMVC源码分析2:SpringMVC设计理念与DispatcherServlet.md)
+* [SpringMVC源码分析3:DispatcherServlet的初始化与请求转发 ](docs/java-web/SSM/SpringMVC源码分析3:DispatcherServlet的初始化与请求转发.md)
+* [SpringMVC源码分析4:DispatcherServlet如何找到正确的Controller ](docs/java-web/SSM/SpringMVC源码分析4:DispatcherServlet如何找到正确的Controller.md)
+* [SpringMVC源码剖析5:消息转换器HttpMessageConverter与@ResponseBody注解](docs/java-web/SSM/SpringMVC源码剖析5:消息转换器HttpMessageConverter与@ResponseBody注解.md)
+* [SpringMVC源码分析6:SpringMVC的视图解析原理](docs/java-web/SSM/SpringMVC源码分析1:SpringMVC概述.md)
### SpringBoot
@@ -185,17 +183,17 @@ todo
### Java网络编程
-* [Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制](docs/java/jvm/Java网络编程和NIO详解1:JAVA%20中原生的%20socket%20通信机制.md)
-* [Java网络编程与NIO详解2:JAVA NIO 一步步构建IO多路复用的请求模型](docs/java/jvm/Java网络编程与NIO详解2:JAVA%20NIO%20一步步构建IO多路复用的请求模型.md)
-* [Java网络编程和NIO详解3:IO模型与Java网络编程模型](docs/java/jvm/Java网络编程和NIO详解3:IO模型与Java网络编程模型.md)
-* [Java网络编程与NIO详解4:浅析NIO包中的Buffer、Channel 和 Selector](https://github.com/h2pl/Java-Tutorial/blob/master/docs/java/network-programming/Java%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E4%B8%8ENIO%E8%AF%A6%E8%A7%A34%EF%BC%9A%E6%B5%85%E6%9E%90NIO%E5%8C%85%E4%B8%AD%E7%9A%84Buffer%E3%80%81Channel%20%E5%92%8C%20Selector.md)
-* [Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO](https://github.com/h2pl/Java-Tutorial/blob/master/docs/java/network-programming/Java%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E5%92%8CNIO%E8%AF%A6%E8%A7%A35%EF%BC%9AJava%20%E9%9D%9E%E9%98%BB%E5%A1%9E%20IO%20%E5%92%8C%E5%BC%82%E6%AD%A5%20IO.md)
-* [Java网络编程和NIO详解6:Linux epoll实现原理详解](docs/java/jvm/Java网络编程和NIO详解6:Linux%20epoll实现原理详解.md)
-* [Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理](Java网络编程和NIO详解7:浅谈%20Linux%20中NIO%20Selector%20的实现原理.md)
-* [Java网络编程与NIO详解8:浅析mmap和Direct Buffer](https://github.com/h2pl/Java-Tutorial/blob/master/docs/java/network-programming/Java%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E4%B8%8ENIO%E8%AF%A6%E8%A7%A38%EF%BC%9A%E6%B5%85%E6%9E%90mmap%E5%92%8CDirect%20Buffer.md)
-* [Java网络编程和NIO详解9:基于NIO的网络编程框架Netty](docs/java/jvm/Java网络编程和NIO详解9:基于NIO的网络编程框架Netty.md)
-* [Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型](https://github.com/h2pl/Java-Tutorial/blob/master/docs/java/network-programming/Java%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E4%B8%8ENIO%E8%AF%A6%E8%A7%A310%EF%BC%9A%E6%B7%B1%E5%BA%A6%E8%A7%A3%E8%AF%BBTomcat%E4%B8%AD%E7%9A%84NIO%E6%A8%A1%E5%9E%8B.md)
-* [Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)](docs/java/jvm/Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO).md)
+* [Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制](docs/java/network-programming/Java网络编程和NIO详解1:JAVA%20中原生的%20socket%20通信机制.md)
+* [Java网络编程与NIO详解2:JAVA NIO 一步步构建IO多路复用的请求模型](docs/java/network-programming/Java网络编程与NIO详解2:JAVA%20NIO%20一步步构建IO多路复用的请求模型.md)
+* [Java网络编程和NIO详解3:IO模型与Java网络编程模型](docs/java/network-programming/Java网络编程和NIO详解3:IO模型与Java网络编程模型.md)
+* [Java网络编程与NIO详解4:浅析NIO包中的Buffer、Channel 和 Selector](docs/java/network-programming/Java网络编程与NIO详解4:浅析NIO包中的Buffer、Channel%20和%20Selector.md)
+* [Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO](docs/java/network-programming/Java网络编程和NIO详解5:Java%20非阻塞%20IO%20和异步%20IO.md)
+* [Java网络编程和NIO详解6:Linux epoll实现原理详解](docs/java/network-programming/Java网络编程和NIO详解6:Linux%20epoll实现原理详解.md)
+* [Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理](docs/java/network-programming/Java网络编程和NIO详解7:浅谈%20Linux%20中NIO%20Selector%20的实现原理.md)
+* [Java网络编程与NIO详解8:浅析mmap和Direct Buffer](docs/java/network-programming/Java网络编程与NIO详解8:浅析mmap和Direct%20Buffer.md)
+* [Java网络编程和NIO详解9:基于NIO的网络编程框架Netty](docs/java/network-programming/Java网络编程和NIO详解9:基于NIO的网络编程框架Netty.md)
+* [Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型](docs/java/network-programming/Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型.md)
+* [Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)](docs/java/network-programming/Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO).md)
## 算法
@@ -217,6 +215,7 @@ todo
* [计算机网络学习总结](docs/network/计算机网络学习总结.md)
* [tcp/ip必会](https://www.cxyxiaowu.com/11609.html)
+* [计算机网络——五层与七层模型](https://blog.csdn.net/liuchengzimozigreat/article/details/100169829)
### 操作系统
@@ -226,7 +225,7 @@ todo
[Linux内核与基础命令学习总结](docs/operating-system/Linux内核与基础命令学习总结.md)
-#### 编译原理
+### 编译原理
todo
@@ -249,7 +248,7 @@ todo
### MySQL
* [Mysql原理与实践总结](docs/database/Mysql原理与实践总结.md)
* [重新学习Mysql数据库1:无废话MySQL入门](docs/database/重新学习Mysql数据库1:无废话MySQL入门.md)
-* [重新学习Mysql数据库2:『浅入浅出』MySQL 和 InnoDB](docs/database/重新学习Mysql数据库2:%20『浅入浅出』MySQL%20和%20InnoDB.md)
+* [重新学习Mysql数据库2:『浅入浅出』MySQL 和 InnoDB](docs/database/重新学习Mysql数据库2:MySQL 和 InnoDB.md)
* [重新学习Mysql数据库3:Mysql存储引擎与数据存储原理](docs/database/重新学习Mysql数据库3:Mysql存储引擎与数据存储原理.md)
* [重新学习Mysql数据库4:Mysql索引实现原理和相关数据结构算法](docs/database/重新学习Mysql数据库4:Mysql索引实现原理和相关数据结构算法.md)
* [重新学习Mysql数据库5:根据MySQL索引原理进行分析与优化](docs/database/重新学习Mysql数据库5:根据MySQL索引原理进行分析与优化.md)
@@ -358,6 +357,7 @@ todo
todo
## 工具
+
todo
## 资料
diff --git "a/docs/database/Mysql\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265\346\200\273\347\273\223.md" "b/docs/database/Mysql\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265\346\200\273\347\273\223.md"
index 97d5eae..05c4f57 100644
--- "a/docs/database/Mysql\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265\346\200\273\347\273\223.md"
+++ "b/docs/database/Mysql\345\216\237\347\220\206\344\270\216\345\256\236\350\267\265\346\200\273\347\273\223.md"
@@ -21,9 +21,6 @@
* [分库分表](#分库分表)
* [主从复制,读写分离](#主从复制,读写分离)
* [分布式数据库](#分布式数据库)
- * [微信公众号](#微信公众号)
- * [Java技术江湖](#java技术江湖)
- * [个人公众号:黄小斜](#个人公众号:黄小斜)
---
@@ -62,6 +59,20 @@ Mysql是关系数据库。
## 存储过程与视图
存储过程是对sql语句进行预编译并且以文件形式包装为一个可以快速执行的程序。但是缺点是不易修改,稍微改动语句就需要重新开发储存过程,优点是执行效率快。视图就是对其他一个或多个表进行重新包装,是一个外观模式,对视图数据的改动也会影响到数据报本身。
+## 内模式,模式,外模式
+
+模式又称概念模式或逻辑模式,对应于概念级。它是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图)。
+
+外模式又称子模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。
+
+内模式又称存储模式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式的物理结构,对应着实际存储在外存储介质上的数据库。内模式由内模式描述语言来描述、定义,它是数据库的存储观。
+
+##### 拓展资料
+
+用户应用程序根据外模式进行数据操作,通过外模式一模式映射,定义和建立某个外模式与模式间的对应关系,将外模式与模式联系起来,当模式发生改变时,只要改变其映射,就可以使外模式保持不变,对应的应用程序也可保持不变;
+
+另一方面,通过模式一内模式映射,定义建立数据的逻辑结构(模式)与存储结构(内模式)间的对应关系,当数据的存储结构发生变化时,只需改变模式一内模式映射,就能保持模式不变,因此应用程序也可以保持不变。
+
## 事务与隔离级别
事务的四个性质:原子性,一致性,持久性,隔离性。
@@ -213,15 +224,15 @@ mysql慢查询日志可以在mysql的,my.cnf文件中配置开启,然后执行
- 还是没用到索引,因为不符合最左前缀匹配。查询需要3.5秒左右
+ 还是没用到索引,因为不符合最左前缀匹配。查询需要3.5秒左右
- 最后修改一下sql语句
-
- EXPLAIN SELECT * FROM vote_record WHERE id > 0 AND vote_num > 1000;
-
+ 最后修改一下sql语句
+
+ EXPLAIN SELECT * FROM vote_record WHERE id > 0 AND vote_num > 1000;
+
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE vote_record \N range PRIMARY,votenum,vote PRIMARY 4 \N 498253 50.00 Using where
@@ -229,24 +240,24 @@ mysql慢查询日志可以在mysql的,my.cnf文件中配置开启,然后执行
- 用到了索引,但是只用到了主键索引。再修改一次
+ 用到了索引,但是只用到了主键索引。再修改一次
- EXPLAIN SELECT * FROM vote_record WHERE id > 0 AND vote_num = 1000;
+ EXPLAIN SELECT * FROM vote_record WHERE id > 0 AND vote_num = 1000;
- id select_type table partitions type possible_keys key key_len ref rows filtered Extra
-
- 1 SIMPLE vote_record \N index_merge PRIMARY,votenum,vote votenum,PRIMARY 8,4 \N 51 100.00 Using intersect(votenum,PRIMARY); Using where
+ id select_type table partitions type possible_keys key key_len ref rows filtered Extra
+
+ 1 SIMPLE vote_record \N index_merge PRIMARY,votenum,vote votenum,PRIMARY 8,4 \N 51 100.00 Using intersect(votenum,PRIMARY); Using where
- 用到了两个索引,votenum,PRIMARY。
+ 用到了两个索引,votenum,PRIMARY。
## mysql的binlog,redo log和undo log。
diff --git "a/docs/database/\351\207\215\346\226\260\345\255\246\344\271\240Mysql\346\225\260\346\215\25613\357\274\232Mysql\344\270\273\344\273\216\345\244\215\345\210\266\357\274\214\350\257\273\345\206\231\345\210\206\347\246\273\357\274\214\345\210\206\350\241\250\345\210\206\345\272\223\347\255\226\347\225\245\344\270\216\345\256\236\350\267\265.md" "b/docs/database/\351\207\215\346\226\260\345\255\246\344\271\240Mysql\346\225\260\346\215\25613\357\274\232Mysql\344\270\273\344\273\216\345\244\215\345\210\266\357\274\214\350\257\273\345\206\231\345\210\206\347\246\273\357\274\214\345\210\206\350\241\250\345\210\206\345\272\223\347\255\226\347\225\245\344\270\216\345\256\236\350\267\265.md"
index 38d0148..603397c 100644
--- "a/docs/database/\351\207\215\346\226\260\345\255\246\344\271\240Mysql\346\225\260\346\215\25613\357\274\232Mysql\344\270\273\344\273\216\345\244\215\345\210\266\357\274\214\350\257\273\345\206\231\345\210\206\347\246\273\357\274\214\345\210\206\350\241\250\345\210\206\345\272\223\347\255\226\347\225\245\344\270\216\345\256\236\350\267\265.md"
+++ "b/docs/database/\351\207\215\346\226\260\345\255\246\344\271\240Mysql\346\225\260\346\215\25613\357\274\232Mysql\344\270\273\344\273\216\345\244\215\345\210\266\357\274\214\350\257\273\345\206\231\345\210\206\347\246\273\357\274\214\345\210\206\350\241\250\345\210\206\345\272\223\347\255\226\347\225\245\344\270\216\345\256\236\350\267\265.md"
@@ -361,7 +361,8 @@ create database database4 character set utf8;
执行`bin`目录下的`startup_nowrap.bat`文件,如果输出下面内容,则说明已经启动mycat成功,如果没有,请检查`order,trade,user,comment`4个数据库是否已经创建。
-