276 | \* Worst case complexity: exponential in number of states.
277 | \* @param maxDeterminizedStates Maximum number of states created when
278 | \* determinizing. Higher numbers allow this operation to consume more
279 | \* memory but allow more complex automatons. Use
280 | \* DEFAULT_MAX_DETERMINIZED_STATES as a decent default if you don't know
281 | \* how many to allow.
282 | \* @throws TooComplexToDeterminizeException if determinizing a creates an
283 | \* automaton with more than maxDeterminizedStates
284 | */
285 | ```
286 |
287 | 代码注释里说这个过程的时间复杂度最差情况下是状态数量的指数级别!
288 |
289 | 为防止产生的状态过多,消耗过多的内存和CPU,类里面对最大状态数量做了限制
290 |
291 | ```java
292 | /**
293 | * Default maximum number of states that {@link Operations#determinize} should create.
294 | */
295 | public static final int DEFAULT_MAX_DETERMINIZED_STATES = 10000;
296 | ```
297 |
298 | 在有首尾通配符,并且字符串很长的情况下,这个determinize过程会产生大量的state,甚至会超过上限。
299 |
300 | 至于NFA和DFA的区别是什么? 如何相互转换?
301 |
302 | 网上有很多数学层面的资料和论文,限于帅丙算法方面有限的知识,无精力去深入探究。
303 |
304 | 但是一个粗浅的理解是: NFA在输入一个条件的情况下,可以从一个状态转移到多种状态,而DFA只会有一个确定的状态可以转移,因此DFA在字符串匹配时速度更快。
305 |
306 | **DFA虽然搜索的时候快,但是构造方面的时间复杂度可能比较高,特别是带有首部通配符+长字符串的时候。**
307 |
308 | 回想Elasticsearch官方文档里对于Wildcard query有特别说明,**要避免使用通配符开头的term**。
309 |
310 | > " Note that this query can be slow, as it needs to iterate over many terms. In order to prevent extremely slow wildcard queries, a wildcard term should not start with one of the wildcards * or ?."
311 |
312 | 结合对上面Wildcard query底层实现的探究,也就不难理解这句话的含义了!
313 |
314 | **小结: Wildcard query应杜绝使用通配符打头,实在不得已要这么做,就一定需要限制用户输入的字符串长度。**
315 |
316 | 最好换一种实现方式,通过在index time做文章,选用合适的分词器,比如nGram tokenizer预处理数据,然后使用更廉价的term query来实现同等的模糊搜索功能。
317 |
318 | 对于部分输入即提示的应用场景,可以考虑优先使用completion suggester, phrase/term suggeter一类性能更好,模糊程度略差的方式查询,待suggester没有匹配结果的时候,再fall back到更模糊但性能较差的wildcard, regex, fuzzy一类的查询。
319 |
320 | **补充**: 有同学问regex, fuzzy query是否有同样的问题,答案是有,原因在于他们底层和wildcard一样,都是通过将pattern构造成DFA来加速字符串匹配速度的。
321 |
322 | **回忆**:为啥之前挂了一次重启恢复了,马上又挂了?用户搜了两次。。。
323 |
324 | ### 解决方案
325 |
326 | 其实解决这种问题很简单,既然知道关键词长了会有问题,我就**做限制**嘛,大家可以去看看搜索引擎某度、某宝啥的,是不是都做了长度限制?
327 |
328 | 我复制了很长的一段汉字进去百度就是这个结果咯,某宝过长都返回**默认页面**了。
329 |
330 |
331 |
332 | 
333 |
334 | 
335 |
336 | 如果你的产品一定要给用户一点东西,简单,找出一些热词分析出来就好了,或者给点热搜商品**兜底**。
337 |
338 | 我怎么做的呢?判断字符串长度大于50我就直接返回空数组了,这样对用户体验好点,你返回个参数错误或者默认错误别人还**以为你有Bug**呢对吧。
339 |
340 | ### 总结
341 |
342 | 其实敖丙我啥事故等级都没背哈哈,这个算是事故,但是敖丙我这么可爱,领导也心疼我啊,肯定不会怪我的拉,主要是我设计都考虑了很多方案和场景了,没想到有这个坑。(yy:敖丙你个渣男,又是标题党,人家还以为你没工作了要养你呢!)
343 |
344 | 大家也可以通过这次事故体会到,技术选型的时候,**方案的重要性**了吧,就算你考虑不全,但是不至于真正的问题来了手足无措啊,并不是所有的事故都可以像这次这样重启就搞定了,**不要存有侥幸心理,心存敬畏**。
345 |
346 | ### 絮叨
347 |
348 | 敖丙啊,又有牌面了,得到**阿里云消息中间件团队**小伙伴的认可,并且发现居然是我学姐-**风云**(花名)!!!
349 |
350 | 她是个好学的小姐姐,大家多多像优秀的仔学习,学姐不是做技术的,但是都在不断学习,说实话我的眼角又湿了。
351 |
352 | 
353 |
354 | ### 别跑,投票!!!
355 |
356 | 我准备把我的公众号**JavaFamily** 这个名字改了,这个名字还是差点意思,但是又不能叫敖丙了,被注册商标了,我就问了下群里的人才,目前有两个我比较喜欢的
357 |
358 | - **帅丙**
359 | - **三太子敖丙**
360 | - 其他给我留言
361 |
362 | 因为这个可能会陪伴我很久,甚至直到死去,希望大家都给点建议哈哈。
363 |
364 | 别问我为啥要跟敖丙这个名字相关,**再问自杀**!
365 |
366 | 我花名就叫这个,所以😂
367 |
368 | 
369 |
370 |
371 |
372 | ## 日常求赞
373 |
374 | 好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是**人才**。
375 |
376 | 我后面会每周都更新几篇一线互联网大厂面试和常用技术栈相关的文章,非常感谢**人才**们能看到这里,如果这个文章写得还不错,觉得「敖丙」我**有点东西**的话 **求点赞👍** **求关注❤️** **求分享👥** 对暖男我来说真的 **非常有用**!!!
377 |
378 | 创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
379 |
380 | 敖丙 | 文 【原创】【转载请联系本人】 如果本篇博客有任何错误,请批评指教,不胜感激 !
381 |
382 | ------
383 |
384 | > 文章每周持续更新,可以关注我的公众号「 **JavaFamily** 」第一时间阅读和催更(公众号比博客早一到两篇哟),本文**GitHub** [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 上已经收录,有一线大厂面试点思维导图,欢迎Star和完善,里面也有我个人联系方式有什么问题也可以直接找我,也有**技术交流群**,我们一起有点东西。
385 |
386 |
387 | 书三千,吾全取。
388 |
389 | 人千万,独暖你。 ---暖男敖丙
--------------------------------------------------------------------------------
/docs/coderLife/风雨十年从毕业到技术专家我做了啥.md:
--------------------------------------------------------------------------------
1 | > 你知道的越多,你不知道的越多
2 |
3 | > 点赞再看,养成习惯
4 |
5 | > 本文 **GitHub** [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 上已经收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。
6 |
7 | ### 前言
8 |
9 | 你们都知道的,帅丙我本身肯定是达不到技术专家的地步的。
10 |
11 | 呸,敖丙你个渣男,又标题党 !
12 |
13 | 
14 |
15 | 我不是但是我身边很多人是呀,字节跳动,PDD,阿里等等的大佬我认识很多,所以以下是我问了他们的成长路径的总结,还是具有一定的代表性。
16 |
17 | 身边这些朋友都是在互联网领域多年的大牛了,因为生活和个人习惯的原因,很多都没有写博客的习惯,或者没有公开出来,但是他们却遇到了帅丙,**我骚啊,我可以帮他们整理出来啊**。
18 |
19 | 目的是为了让很多跟我一样的新人,对一条完整的职业规划之路有一个清晰的认知,**青铜到王者要经历些什么**?
20 |
21 | 
22 |
23 | ### 青铜-万恶之源
24 |
25 | **《计算机基础》**,这是所有读者大学最开始都会上的课吧,我问了群里的仔,他们都说是的,我想大家也是。
26 |
27 | 在计算机基础中我们会学到计算机的历史、计算机的特点、进制转换、内存管理、线性数据结构、网络请求协议等等。
28 |
29 | 计算机基础真心很重要,无比重要,究极重要,为啥我这么说呢,里面涉及的计算机知识还有很多网络协议的知识,大家以后一定会用到,我可以负责的告诉你,面试也一定会问,什么Http、Https、Tcp/Ip、三次握手、四次挥手面试不要太常问。
30 |
31 | **Tip**:这里有个小插曲就是我身边那个架构师团队Leader这周面试阿里p8岗位的时候,我以为问的都是什么源码,中间件的究极操作,我想大家跟我想的一样,但是大家错了,反而问的很多计算机的基础知识。
32 |
33 | 我聊天大概问了一下面试内容,有什么求二叉树的镜像,内核态和用户态的理解,计算机的缓存页等。
34 |
35 | 大家是不是惊了,这他*不是我校招的题目么?怎么P8级别的大佬还问这个?其实很好理解,大家想一下到了一定的工作年限技术的广度深度都有一定的造诣了,你写代码就这样了没办法优化了,机器配置也是最好的了,那还能优化啥?
36 |
37 | **底层**,我们都知道所有语言到最后要运行都是变成机器语言的,最后归根究底都是要去跟机器交互的,那计算机的底层是不是最后还是要关注的东西了?
38 |
39 | **福利**:他这周会来我们公司面试,届时我会详细问一下具体的面试内容,如果大家想看我可以到时候整理一下写出来,看看那种级别的强者的世界到底是怎么样的。
40 |
41 | 
42 |
43 | 学完计算机基础你基本上对计算机的整个知识体系都一知半解了,对于编程或许还是很懵懂,但是你现在已经要踏入编程的门了。
44 |
45 | #### 白银-编程第一课
46 |
47 | 计算机基础学了,后面就要编程的入门课程了。
48 |
49 | 想必看我这篇文章有99%的小伙伴都是以下面这段代码开始的自己的程序人生的吧:
50 |
51 | 
52 |
53 | 我还记得**帅丙**我就是大一开始学习的C语言,《C语言程序设计》谭浩强老师的课本,在第27页就是第一章,**HelloWord**,现在回忆起来还历历在目,老师在黑板上写下这两个庄严的单词,同桌的她和我露出无限的求知欲......
54 |
55 | 我想所有的语言都是语法基础开始的,而且编程语言的基础语法也都是大同小异的。
56 |
57 | If、For、While等关键字,List、Set、Map等集合,Int、float、Double等基础类型,大家第一次学的时候我想也不会知道,这些关键字将会陪伴我们走完各自的程序生涯吧?
58 |
59 | 接下去就难一点比如JDBC、IO、文件流啊什么的,帅丙依稀的记得当时还是**代码里面写SQL**然后查询,也不知道记错没有。
60 |
61 | 学到这里,你可能觉得你**JavaSE**无敌,出去可以找工作了,反正当时的帅丙,觉得自己可以闯出一片天了,不知天高地厚,四处炫技。
62 |
63 | 但是幼稚的我根本不知道,**未知的前方还有什么等着我**,我也不知道自己其实才刚入门,但是如果要往WEB方向发展,这些倒是基本足够了。
64 |
65 | 但是你到现在为止学的东西都是服务端的东西呀,怎么让你的服务端东西展示给别人看呢?
66 |
67 | 这个时候我们就应该去做个丑不拉几的页面,进行简单的交互了,你这个时候要学**HTML** 、**Servlet**、**MySQL**、 **JavaScript**、**Tomcat**、**CSS**等。
68 |
69 | 目标呢就是写出第一个动态网站,也许只是个登陆功能,只能展示下个人资料,但这是很重要的一步,你要弄清楚的是,一个用户的点击产生的请求,是从哪里发起,哪里接收,哪里处理,哪里返回,你得理解浏览器和服务器的关系和分工,**Cookie**和**Session**,**Request**和**Response**。
70 |
71 | **Tip**:我记得我刚出来面试就有面试题是这样的,一个Http请求从网页发起到服务端产生数据返回中间经历了些什么,或者Spring做了什么?大家可以思考一下
72 |
73 | 还有有一个自己的项目真心很重要,敖丙我就是在大学期间做了项目,至今在校园内网上稳定运行着,出来实习面试的时候基本上也是一路披荆斩棘,吊打了同行面试的仔,反正大学有个项目贼加分,是读者的大学生记住了么?
74 |
75 | ### 黄金-初出茅庐
76 |
77 | 上面的只是WEB开发的学习初级阶段,这都是些JAVA诞生以来最原始的最官方的WEB开发技术,当然现在真正的项目很少直接采用这些技术了,现在都是**前后端分离了**,Vue、Node.js、React等前端的语言更新迭代速度非常快,帅丙我学了一点刚用舒服,前端的朋友告诉我又迭代了......我他*不学了!
78 |
79 | 为了不断提高技术的易用性、开发效率和可维护性、可扩展性,无数开源项目都是在这些原始技术的基础上封装、改进。
80 |
81 | 所以这个阶段**不要盲目乐观地跑去找工作或者对实习挑三拣四**,你会被打击到的,又或者找个小公司浑浑噩噩几年过去感觉跟新的技术栈脱节。
82 |
83 | **有人跟你说小公司学的东西多,他害你的,刚开始能去多大的去多大的,越大越好,你想你去了大的你想去小的分分钟的事情,但是你小的要去大的就相对难了。**
84 |
85 | 好,初始阶段完成,开始进入WEB开发的正题,首先是传说中的框架,SSM(Spring SpringMVC Mybatis)成为熟练的增删改查程序员是必须的,在这个阶段你还要理解为什么要用这仨而不是那些Jsp、Servlet、Jdbc,你要体会到写MVC、三层架构的好处。
86 |
87 | 这个阶段不要轻易质疑框架的价值,也许刚开始你会觉得麻烦,觉得他们有时候是多此一举,我最开始这么写的时候发现,真的恶心,什么dao,service,Controller等等,分这么多干嘛。
88 |
89 | 等过一两年后回过头来你会觉得少了这些框架你已经很难干活了,没有分层清晰的系统,你反而开口大骂项目的架构师的。
90 |
91 | 你*********
92 |
93 | 
94 |
95 | 不过要**提醒大家**的是,这个阶段还要避免的心态是,能熟练地增删改查了,就自认为写程序不过如此,然后往简历上填个精通,这也是新手面试被批得体无完肤的原因之一。
96 |
97 | **浅尝即止,是新手的大忌**,为啥这么写,这么写有啥好处,有啥坏处,多问几个为什么,你**多年后会感谢敖丙**的。
98 |
99 | 如果你学得好,这会应该能熟练地写个博客啊,小论坛啊之类的WEB项目了,也就是达到了就业的基本要求。
100 |
101 | **Tip**:而且说一下作为一个应届生,你除了基础知识,如果你有自己的技术博客,还有像样的项目能展示给面试官看,是真的很加分,搭建个简单的项目,项目流程你也知道了,技术栈也熟悉了,还可以手机访问网页给面试官现场演示,很加分的。
102 |
103 | 像我身边的朋友**Java3y**,**JavaGuide**,**我没有三颗心脏**等,就是在这个阶段就已经开始写了自己的博客,并且各自都做出了成绩,这些以后都是你面试的议价能力的一部分,也是你的加分项,和你自身的财富。
104 |
105 | 我问了一下他们,都是靠博客就已经得到不少大公司的面试邀约了,反正有项目,有不错的履历,有不错的博客,都会给你加分,如果你什么都没有,现在动手去多学点,少打两局LOL等你到我这个年纪就会发现,**索然无味**。
106 |
107 | ### 铂金-遵义会议
108 |
109 | 这会是程序员生涯的一个**转折点**,把握好了人生起飞,把握不好**全盘皆输**,所以我用在我老家遵义举办的**遵义会议**,作为这阶段的标题,我觉得,**妙啊**!
110 |
111 | 
112 |
113 | 慢慢的你会发现数据库性能实在不行,出于不甘现状,或者赶时髦,你该去了解**NoSQL**了,**Memcached**、**Redis**、**Mongodb**等非关系型数据库眼花缭乱,没关系,试着用用,能很好地缓解**MySQL**、**Oracle**之类关系数据库的压力。
114 |
115 | 出于公司某些业务需要,你可能会钻研一个特定技术领域,比如全文搜索技术**ElasticSearch**(以下简称Es),那你了解了**Es**,你又要想到数据库的数据怎么同步进**Es**呢?
116 |
117 | 你可能会接触到**Logstash**,**Canal**等中间件,然后发现可视化也是个问题,那**Kibana**就应运而生,用的时候发现欧洲人的分词习惯跟我们不一样,那**Ik**中文分词器又得了解啦。
118 |
119 | 使用之后你还会发现他底层的**Lucene**有很多坑要怎避免,时间多你还可以了解**Solr**等等。
120 |
121 | **总之知识就是一个体系**,我经常跟群里的仔说,形成知识体系,你面试说了**Es**那相关的技术栈你一样要了解的,我题目取了叫《**吊打面试官**》就是噱头,你去面试如果面试官技术深度真的很深,我想被吊打的100%是你。
122 |
123 | 你甚至会开始对系统中一些比较特殊的存在感兴趣,比如**权限系统**,**单点登陆**之类的,又或者某些特定业务领域的**算法研究**,这些是你的加分项。
124 |
125 | 你还发现服务拆分后**Http**通信有诸多弊端,就开始接触优秀的**Rpc框架**还有消息队列中间件了,如**Dubbo**、**RocketMQ**等。
126 |
127 | 再再后来你发现呀,数据量大得一批,表顶不住了,几亿数据查出来要好几秒,那**分库分表**就出来,什么**水平拆分**,**垂直拆分**,还学习了**TDDL**、**Sharding-JDBC**、**DRDS**等这样的分库分表中间件。
128 |
129 | 但是你用了发现全局的唯一id生成又是一个问题,或许中间件有自带的,但是你还是要了解原理,什么**雪花算法**,**uuid**等等也得学。
130 |
131 | 再再再后来呀,你发现分库分表也顶不住了,业务体量爆炸式增长了,你可能就需要了解动态分库分表的解决思路和解决方案了,特别是**FaceBook**开源的一些方案。
132 |
133 | 再再再再后来呀,你发现动态分库分表也不行啊,很多离线的数据也很多啊,每天几个T,公司都要被败光了,那你就要了解大数据场景的离线分析啊,数据缓存啊,数据清洗,数据可视化等等啊什么的。
134 |
135 | 那就需要学什么**ODPS**啊,**Hadoop**、**Hive**、**Hbase**等等中间件或者工具了。
136 |
137 | 再再再再再后来你开始发现你的代码很乱,久了以后自己都看不懂,重复的,难以重用的代码堆积如山,不想维护,BUG百出。
138 |
139 | 于是你要开始重视设计模式,合理地改造下自己的代码习惯,不再被僵化的SSH、MVC三层架构束缚住。
140 |
141 | 再再再再再再.....(敖丙你是不是没玩了?哈哈其实还真有我就不列举了)
142 |
143 | 
144 |
145 | 到这里不知道你有没有体会到我每篇文章开头那句话的意思?敖丙就是工作之后发现自己越来越无知了,你再品一下下面这句话。
146 |
147 | > 你知道的越多,你不知道的越多
148 |
149 | **Google**和各种资料是你进步的动力,极少再遇到必须请教别人才能解决的问题,如果你这个阶段还老是问别人,你的技术生涯也就快到头了。
150 |
151 | 这个阶段,如果你**技术卓越**和**跟敖丙一样能吹**,你的收入将是白领水平,至少接近了,或者大幅领先同龄人了。
152 |
153 | 我觉得多数程序员在工作多年之后都能达到这个水平,有的人只需要一两年,有的人却要用上五六年,在这个阶段落伍的人,有的是出于天赋和思维所限,有的是出于对技术缺乏热情,有的是出于工作内容的制约。
154 |
155 | **等到年近中年,再也拼不过年轻人,被淘汰出局,只能在自嘲为屌丝和码农的无奈中黯然转行。**
156 |
157 | 这是个很重要的分水龄,你能不能继续进步,能不能在30岁以后继续从事技术工作,能不能在公司里**独当一面**,我觉得就看你能不能超越这个阶段了。
158 |
159 | 很多烂公司里工作数年的项目经理,连这个层次都还没达到...
160 |
161 | 为了30岁的自己听到裁员完全不虚,为了家里的老母亲不再为了省电费不舍得开灯,为了让自己......
162 |
163 | 我想这个阶段你应该要做好准备,这也是我大篇幅介绍这个阶段的原因。
164 |
165 | ### 砖石-扬帆远航
166 |
167 | 
168 |
169 | 你要读读优秀开源项目的源码,你要搞懂一些当年不懂的基础知识,你开始理解**《thinking in java》**的精髓,你能写一些底层的代码,有时还会觉得自己封装的比某些开源工具更好用更简单。
170 |
171 | 当年看不懂的《**深入分析JVM虚拟机**》现在你已经可以对里面的知识点**如数家珍**,**张口就来**,并且能够将大量知识点带入到项目中优化,并且能够看到实质性的变化(**暗示KPI**)。
172 |
173 | WEB的难点和重点永远都在于性能、负载能力上,而现在网络的发达造成了数据量和操作密度的大大上升,硬件却没有相应的进步。
174 |
175 | 你得试着更好地运用更多的服务器来协同工作,从WEB端到服务端到数据库,全都需要集群,需要分布式,需要合理的控制数据的流向,掌握好网站上下,一大堆机器的平衡,找出性能的瓶颈,找出稳定性和安全性的瓶颈,硬件出现故障,第三方技术出现错误,将被当成家常便饭融入到你的系统和代码里仔细考虑。
176 |
177 | 你会开始觉得方案无比地重要,**一将无能累死千军**将不断应验,一个不好的设计,一个不好的方案,会让一群优秀的程序员工作成果大打折扣。
178 |
179 | **你要关注架构知识,不能再满足于SSH三层架构到底。**
180 |
181 | 领域驱动设计,面向事件开发,敏捷开发等等一系列的思想在关键时刻能决定你项目的生死,这个阶段不再有标准范例让你照抄,你只知道思想和原理,实践却需要自己不断尝试和改进。
182 |
183 | 多关注各种杂七杂八的开源技术,有些你可能前面已经接触过了,和通信有关的,和集成开发环境有关的,和架构有关的,各个领域你都应该能信口说上几个主流技术,虽然你可能只是听说过,了解。
184 |
185 | **但关键时刻你得知道如何去选择技术,并快速掌握它。**
186 |
187 | 你还会去考虑尝试下别的语言,这里不是说转向什么C++ C#之类的,那和JAVA程序员不相干,我说的是一些**运行于JVM之上的语言**,比如scala和groovy,初识他们时你会觉得Java真的老了。
188 |
189 | 但当你回到一个综合性的大型项目中,又会觉得Java积累下来的整个体系技术是如此完善,就像一个工业化标准一样,你可能发现光是Spring家族的东西你都受用终身,无法完全通读。
190 |
191 | 你能把这个阶段实践好,胜任项目经理,乃至中小公司的技术总监,大厂的小团队Leader都是可以的。
192 |
193 | ### 大师-登峰造极
194 |
195 | 其实写到上面这个阶段的时候我觉得,这是很多人满足的地方了,都是小公司技术总监了,那我图啥?
196 |
197 | 但是未知的人生还在那等着你呢,我问了身边顶级的大神,**为啥要走出舒适区**?去像字节、阿里等这些压力大很多的地方呢?
198 |
199 | 他们给的回答都不太一样,但是一样的就是**挑战自我**吧,**谁也不知道哪里是自己的终点**,那为啥不多做点尝试,新的环境,新的技术栈,新业务场景挑战新的自我。
200 |
201 | 这个阶段你的一举一动可能都关系一个项目的生死存亡,一个错误或者正确的决策就可能改变整个项目的命运,水能载舟亦能覆舟,我想用在这里也恰到好处。
202 |
203 | 我身边这样级别的大佬凤毛麟角,但不是没有,他们在公司都是核心人物,大型项目或者项目紧要关头都是他们带领团队**冲冲冲**,除了问题也是能最快给出解决思路和方案的。
204 |
205 | **Tip**:我现在的老大就是这样的人,双十一大家还手忙脚乱去追数据的时候,他上来一套操作,写了几个脚本就搞定了,卧*我们当时周围一群人,**从头到尾的知识盲区**,结束了还没反应过来,只能拍手叫666。
206 |
207 | **这就是强者的世界,我所向往的世界,当然我知道这样的世界,只有一步一个脚印才能涉足。**
208 |
209 | 
210 |
211 | ### 王者-泰山之巅
212 |
213 | 最后王者其实我不会写任何内容,能到这个领域的人本身就是屈指可数了,敖丙身边有,但是我觉得大家自己体会吧,一般就是人脉,交际,能力都到了一定的高度了,这个阶段的事情我也体会不到。
214 |
215 | 能想到的就只有先祖的诗句:指点江山,挥斥方遒。
216 |
217 | 算是给大家留下无限遐想的空间吧,未来或许你就是你所在领域的王者也说不定的呢对吧。
218 |
219 | ### 总结
220 |
221 | 不知不觉写了这么多了,以上是我个人眼里的一般向JAVA 程序员的发展线路,限于篇辐也不全面,实际个人成长路线可能因为工作内容的不同差异会很大,有的人偏向了底层研究,有的人偏向了业务需求设计,有的带有浓重的行业色彩,而且技术之外,还有很多知识也很重要,做JAVA没有轻松的方向,但一个对技术抱有兴趣的人,走到这一步时,仍然会对开发抱有热情,想要写出好的项目。
222 |
223 | **纯为了生计而工作的程序猿是走不到这一步的,这一行来都来了,大家一天都是24小时,为啥有差距,我想你我都明白的,知道为啥那就干出点名堂吧。**
224 |
225 | 
226 |
227 | ### 敖丙的絮絮叨叨
228 |
229 | 上周还发起了一个投票大家记得么?就是我要修改我公众号的名字,下面是投票的结果
230 |
231 | 
232 |
233 | 敖丙也是真男人来的,说改就改了,你们会发现我所有博客平台的广告,也会在周末悄无声息的被我改掉的,以后**三太子敖丙**就取代JavaFamily了。
234 |
235 | 并且也做了个很重要的决定,这一个多月来,公众号文末的广告多多少少都有点积蓄了,但是这个钱说实话我出去恰个火锅都够呛,差不多每天都是这样吧。
236 |
237 | 
238 |
239 | 那我一想这个钱是大家给我的,我最后就还给大家,以后也是一样,每次到月底我就抽个奖,买十几本书送大家。
240 |
241 | **不知道大家喜欢不喜欢呀!!!**
242 |
243 | 还有就是抽小伙伴喝咖啡了,这里好像就杭州的小伙伴我能线下约了,外地的小伙伴我就打20块吧,虽然不多但是是个心意嘛。
244 |
245 | ## 点关注,不迷路
246 |
247 | 好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是**人才**。
248 |
249 | 我后面会每周都更新几篇一线互联网大厂面试和常用技术栈相关的文章,非常感谢**人才**们能看到这里,如果这个文章写得还不错,觉得「敖丙」我**有点东西**的话 **求点赞👍** **求关注❤️** **求分享👥** 对暖男我来说真的 **非常有用**!!!
250 |
251 | 创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
252 |
253 | 敖丙 | 文 【原创】
254 |
255 | 如果本篇博客有任何错误,请批评指教,不胜感激 !
256 |
257 | ------
258 |
259 | > 文章每周持续更新,微信搜索「 **三太子敖丙** 」第一时间阅读和催更(比博客早一到两篇哟),本文 **GitHub** [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 上已经收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。
260 |
--------------------------------------------------------------------------------
/docs/creative/彩蛋.md:
--------------------------------------------------------------------------------
1 | ### 我定期收集一些话放在这里,大家一起共勉.
2 |
3 | - 无论面对怎么样的失败,我决定再来一次。
4 |
5 | - 最高级的自律,享受孤独。
6 |
7 | - 你要悄悄拔尖,然后惊艳所有人。
8 |
9 | - 如果父母还那么辛苦,那我们长大有什么用?
--------------------------------------------------------------------------------
/docs/creative/顶级程序员的百宝箱.md:
--------------------------------------------------------------------------------
1 | >
2 | >
3 | > 你知道的越多,你不知道的越多
4 |
5 | > 点赞再看,养成习惯
6 |
7 | > **GitHub**上已经开源 [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和指教
8 |
9 | ## 前言
10 |
11 | 这期是被人才群交流里,还有很多之前网友评论强行顶出来的一期,就是让我介绍自己常用的一些工具给他们安利一下,我一听很高兴呀,帅丙我这么乐于奉献的人是吧。
12 |
13 | 主要是能水一篇文章就很开心,不过写下来发现花的时间完全不比写技术少,**点赞**!!!
14 |
15 | 千万不要白嫖,**真香警告**⚠️。
16 |
17 | 但是我在构思这篇文章的时候发现我贴个标题,然后发下软件信息会不会太乏味了,于是创作鬼才我呀,准备用一个产品的研发流程,是的就是**用这样的一个思路**去写这个工具集的介绍文章。
18 |
19 | 因为读者很多还是学生,还有很多应届生,对一个需求的研发流程都不是很熟悉,还有可能对于以后自己需要使用到的工具都不是很熟悉,那我就一一罗列一下,帅丙我作为一个还算有点小经验的程序员都使用哪些工具呢?
20 |
21 | 那下面就跟随**暖男**的脚步,走进**顶级程序员的百宝箱**吧(我所有的标题都是噱头就为了夸大其词,我是低级程序员,大家看了也不能吊打面试官,笑笑就好了)。
22 |
23 | **注意**:下面的软件我都是简单的介绍下是干啥的,因为太多了,真正的功能需要大家深挖的,能力允许的朋友下载正版,破解方法去Github [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 加我回复【**软件**】就好了。
24 |
25 | ## 正文
26 |
27 | 既然都说了**帅丙**是要用一个产品的研发流程角度去介绍软件,那我们先看看一个产品有哪些研发流程,帅丙就用自己接触的阿里系的研发流程举例了,这也基本上是互联网大厂的研发流程了,可能细节有出入,但是绝对大同小异。
28 |
29 | 
30 |
31 | **Tip**:我从开发的视角去介绍的话我就会**跳过一些**软件,比如提出需求这个其实一般都是文档类的,**wiki**呀这样的形式。
32 |
33 | 我就不介绍那种流程工具了,公司很多自研的,大家工作了再去熟悉也很快的。
34 |
35 | ### 概要设计:
36 |
37 | **概要设计**,这个是大厂程序员需求下来之后基本上都会做的一步,不过看需求大小,可能很多小需求直接就**详细设计了**。
38 |
39 | 很多不了解的同学可能会问,需要设计什么呢?为什么要设计呢?
40 |
41 | 问得好,经常看我文章的都知道,**技术是把双刃剑**,你用了技术之后你是不是需要**列出他的优点缺点**,出问题之后的**解决方案**,还有**可能出现的问题**,**注意点**等等。
42 |
43 | 这么是为了让你能有把控力,比如你用了个**Es**(**Elasticsearch**)你什么都不管你就是要接入它,你把他开发好了上线了,但是有啥坑你知道么?上线崩了怎么办?
44 |
45 | 帅丙我做**Es**设计的时候设计被老大打回N次,不过成长真心大,对**Es**的了解也飞速进步。
46 |
47 | 其实远远不止这些问题,这就是我们做设计的主要原因,也是大家工作里面能成长的途径之一,你以为大佬们的经验是怎么来的?
48 |
49 | ##### 工具:Xmind/ProcessOn
50 |
51 | - Xmind官网地址: [https://www.xmind.cn](https://www.xmind.cn/)
52 | - ProcessOn**在线作图**地址:[https://www.processon.com](https://www.processon.com/i/5c349823e4b0db2e592c4847)
53 |
54 | > 我这里列举了两个工具,他们两个都可以做概要设计的脑图,我给大家看看我设计过的一些脑图,都是出自这两个软件。
55 |
56 | 
57 |
58 | 大家在学习,看书等等的时候做个脑图,我告诉你后面你复习还是干啥都**思路贼清晰**,而且**效率**瞬间**高**很多。
59 |
60 | ### 详细设计
61 |
62 | 小伙伴又要问了啥是详细设计呀**帅丙**?
63 |
64 | 诶呀简单,见名知意嘛,概要设计是大概的设计,详细设计是详细的设计。
65 |
66 | 我们研发的时候整个流程往往很复杂,如果你理解不对直接就写代码,最后容易造成返工,延期,加班,被骂,心情差,回家吵架,离家出走。。。
67 |
68 | **看到不做详细设计的后果了吧**,其实大家花点时间做详细设计很有必要,你思路完全清晰了,写代码那就是分分钟的事情,不是嘛?
69 |
70 | 那再看看帅丙的一个小设计吧,之前文章中大量的流程图,时序图都来自它,**主要是这玩意还是在线的,都不用下载很方便啊。**
71 |
72 | 详细设计的工具我用的就是**在线**作图神器:**ProcessOn**
73 |
74 | - 在线画图地址:[https://www.processon.com](https://www.processon.com/i/5c349823e4b0db2e592c4847)
75 |
76 | > 总之一句话很香,流程图、思维导图、原型图、UML、网络拓扑图、组织结构图、BPMN等等一应俱全
77 |
78 | 
79 |
80 | ### Ascilflow
81 |
82 | - 官网地址: [http://asciiflow.com](http://asciiflow.com/)
83 |
84 | > 进入网站后直接开画!网页上端是菜单,自行操作!
85 |
86 | 
87 |
88 |
89 |
90 | ### 研发
91 |
92 | 这个关键了:**工欲善其事,必先利其器**
93 |
94 | 想必大家都知道这个谚语吧,我就说一下我写代码要用到的软件吧。
95 |
96 | #### Intellij IDEA
97 |
98 | - 官网地址 : [http://www.jetbrains.com/idea](http://www.jetbrains.com/idea/)
99 |
100 | > 这个我想都不用我介绍了吧,Java的同学都耳熟能详了,有同学问为啥不用eclipse呀,我不作回答,但是我只能告诉你IDEA肯定是效率还有很多方面都要香的。
101 | >
102 | > 不过看个人习惯的哈,新同学还是推荐IDEA!!!
103 |
104 | 
105 |
106 | #### WebStorm
107 |
108 | - 官网地址 : [http://www.jetbrains.com/webstorm](http://www.jetbrains.com/webstorm/)
109 |
110 | > 有知道同学要问了,帅丙这不是前端的开发工具么,为啥你要用,帅丙我呀全才来的呀,前端偶尔也写点的嘛,主要是js,vue,jq,还有丢丢React,不过最近帮三歪改前端居然是jsx有没有大佬救救我啊。
111 |
112 | 
113 |
114 | ### Visual Studio Code
115 |
116 | - 官网地址:[https://code.visualstudio.com](https://code.visualstudio.com/)
117 |
118 | > Visual Studio Code是一个**轻量且强大的跨平台开源**代码编辑器(IDE),支持Windows,OS X和Linux。内置JavaScript、TypeScript和Node.js支持,而且拥有丰富的插件生态系统,可通过安装插件来支持C++、C#、Python、PHP等其他语言。
119 |
120 | 
121 |
122 | #### PyCharm
123 |
124 | - 官网地址 :[http://www.jetbrains.com/pycharm](http://www.jetbrains.com/pycharm/)
125 |
126 | > 这个是python之前那次还记得我写代码大赛那期嘛,最开始就是用这个写的,平时学的时候也用用。
127 |
128 | 
129 |
130 | #### Navicat Premium
131 |
132 | - 官网地址 :[https://www.navicat.com.cn](https://www.navicat.com.cn/)
133 |
134 | > 这个呀是数据库的可视化工具很香很好用,不过我们线上的表都是网页操作的,这个只能用来看看本地的开发表了,不过也是很有必要的,你SQL怎么都得本地跑一下没问题,才向DBA申请的嘛。
135 |
136 | 
137 |
138 | #### Postman
139 |
140 | - 官网地址 :[https://www.getpostman.com](https://www.getpostman.com/)
141 |
142 | > 这个是接口调试的神器,单测比较繁琐的你可以试试这个嘛,不过很多接口还是只能写写单测,反正很香。
143 | >
144 | > 不过这个名字一看就是男生用的,那我们女生用啥呢?往下看
145 |
146 | 
147 |
148 | #### Postwoman
149 |
150 | - 官网地址 :[https://postwoman.io](https://postwoman.io/)
151 |
152 | > PostMan一听就是男生用的,咋妹子们肯定要用最近开源的Postwoman啊,它是一款开源的 Postman 替代品
153 | >
154 | >
155 | >
156 | > 开源没多久优点如下:
157 | >
158 | > - 轻盈,可直接在线访问;
159 | > - 简约,采用简约的 UI 设计精心打造;
160 | > - 支持 GET, HEAD, POST, PUT, DELETE, OPTIONS, PATCH 方法;
161 | > - 支持验证;
162 | > - 实时,发送请求即可获取响应。
163 |
164 | 
165 |
166 | #### GIt
167 |
168 | - 官网地址 :[https://git-scm.com](https://git-scm.com/)
169 |
170 | > 代码文档管理工具,版本控制工具,大家之后的代码基本上都是使用git做版本管理
171 |
172 | 
173 |
174 | #### Maven
175 |
176 | - 官网地址 :[http://maven.apache.org](http://maven.apache.org/)
177 |
178 | > 目前帅丙用到Maven的主要功能是:项目构建、项目构建、项目依赖管理、软件项目持续集成、版本管理、项目的站点描述信息管理
179 |
180 | 
181 |
182 | #### Gradle
183 |
184 | - 官网地址 :[https://gradle.org](https://gradle.org/)
185 |
186 | > Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。
187 | >
188 | > 它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。
189 | >
190 | > 这个跟Maven功能是一样的,但是两者语法不一样,而且我觉得版本控制的时候没Maven好使,有小坑,胜在语法简洁。
191 |
192 | 
193 |
194 | #### Charles
195 |
196 | - 官网地址 :[https://www.charlesproxy.com](https://www.charlesproxy.com/)
197 |
198 | > 这玩意是个HTTP代理服务器,我用它的主要用法就是抓包!
199 | >
200 | > 都知道我是做电商的嘛,很多线上接口线上问题怎么排查呢,抓包看看数据呗。
201 |
202 | 
203 |
204 | #### JMeter
205 |
206 | - 官网地址 :[https://jmeter.apache.org](https://jmeter.apache.org/)
207 |
208 | > Apache JMeter是Apache组织开发的基于Java的压力测试工具
209 | >
210 | > 是的就是用来压测的,你怎么模拟很多请求呀,就用它就对了。
211 |
212 | 
213 |
214 | #### Dash
215 |
216 | - 官网地址 :[https://kapeli.com/dash](https://kapeli.com/dash)
217 |
218 | > Dash for mac是使用与Mac OS平台的软件编程文档管理工具,可以浏览API文档,以及管理代码片段工具。Dash自带了丰富的API文档,涉及各种主流的编程语言和框架。
219 |
220 | 
221 |
222 | #### Devdocs
223 |
224 | - 官网地址:[https://devdocs.io](https://devdocs.io)
225 |
226 | > 上面那个的兄弟,但是这个不用下载,在线的
227 |
228 | 
229 |
230 | #### DataGrip
231 |
232 | - 官网地址 :[http://www.jetbrains.com/datagrip](http://www.jetbrains.com/datagrip/)
233 |
234 | > DataGrip是JetBrains公司推出的管理数据库的产品,对于JetBrains公司,开发者肯定都不陌生,IDEA和ReSharper都是这个公司的产品,用户体验非常不错。
235 | >
236 | > 最开始我用它就单纯看同事在用很酷的界面,后面发现功能也香,高亮文本啥的,很多功能大家可以去挖。
237 |
238 | 
239 |
240 | #### JVisualVM
241 |
242 | - 官网地址 :[http://visualvm.github.io](http://visualvm.github.io/)
243 |
244 | > VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。
245 | >
246 | > VisualVM可以根据需要安装不同的插件,每个插件的关注点都不同,有的主要监控GC,有的主要监控内存,有的监控线程等。
247 |
248 | 
249 |
250 | #### Iterm2
251 |
252 | - 官网地址 :https://www.iterm2.com/
253 |
254 | > 这个是我做日志排查的客户端工具,也是支持很多配置,直接ssh上跳板机查看线上机器的状态等等,线上问题排查还是很有必要的。
255 |
256 | 
257 |
258 | #### 网*有道词典
259 |
260 | - 官网地址 :[http://www.youdao.com](http://www.youdao.com/)
261 |
262 | > 有朋友要疑问了帅丙这是什么情况,鬼畜乱入么?
263 | >
264 | > 不是的,我们研发的时候很多单词不认识,或者命名的时候这个词汇的英文不知道还是很有必要查一下的,规范的命名是你成为顶级大牛的第一步,你命名都是A,B,C你代码review的时候,你的Leader会叫hr让你提交前回家过年的,马上过年了大家不要轻易尝试。
265 |
266 | 
267 |
268 | #### Sublime Text
269 |
270 | - 官网地址 :[http://www.sublimetext.com](http://www.sublimetext.com/)
271 |
272 | > 这是个文本记录的工具,也可以用于写代码,但是我们有IDE了那就用来当日常琐事记录的工具,临时文档处理的工具也是可以的,反正还是很好用的。
273 |
274 | 
275 |
276 |
277 |
278 | ### 刚好最近呀人才群里的人才们都叫我安利一下我做笔记还有写博客的工具,说我排版好看。(我飘了)
279 |
280 | 安排!
281 |
282 | #### 印象笔记
283 |
284 | - 官网地址 :[https://www.yinxiang.com](https://www.yinxiang.com/)
285 |
286 | > 这个可以说是陪伴我大学到现在的一个工具了吧,我数了下,上千文件了,我的生活琐事的记录,还有学编程之后的很多东西,我都是收录在里面的。
287 | >
288 | > 这个东西我就不和别的笔记比较了,因为我最开始就用的这个一直没换过,好不好用我说了不算的,大家下一个看看就知道了。
289 |
290 | 
291 |
292 | #### Typora
293 |
294 | - 官网地址 :[https://www.typora.io](https://www.typora.io/)
295 |
296 | > Typora是我一直写Markdown的工具,好用到不行,还可以切换模式你敢信?打字机模式,专注模式,源码模式总有一个你的菜.
297 |
298 | 
299 |
300 | #### Ipic
301 |
302 | - 官网地址 :[https://ipic.ca](https://ipic.ca/)
303 |
304 | > 图床我是配合Typora一起使用的大家Markdown是不是复制图片进来都是本地的地址,发到网上就会失效的,但是跟Typora搞基的这个工具他可以在你复制进来的时候直接传到网上了,你再去任何平台发表都可以随心所欲了。
305 |
306 | 
307 |
308 | #### Md2All
309 |
310 | - 官网地址 :[http://md.aclickall.com](http://md.aclickall.com/)
311 |
312 | > 大家好奇我的markdown怎么这么好看呀,其实我写了markdown之后还转成了html的,用的也就是上面这个工具。
313 | >
314 | > 我写完也是在这里面进行排版然后发出去的,排版要花好久,忍不住给帅丙**点赞**。
315 |
316 | 
317 |
318 | ### 图像处理
319 |
320 | #### Adobe Photoshop CC 2019
321 |
322 | - 官网地址 :[https://www.adobe.com/cn/products/photoshop](https://www.adobe.com/cn/products/photoshop.html?promoid=PC1PQQ5T&mv=other)
323 |
324 | > Ps嘛大家都知道的,正常的图片处理啊用这个香,没事帮美女P下图,搞不好能找个女朋友(我又开始YY了)
325 |
326 | 
327 |
328 |
329 |
330 | #### Adobe Premiere Pro CC 2019
331 |
332 | - 官网地址 :[https://www.adobe.com/products/premiere](https://www.adobe.com/products/premiere.html?promoid=PQ7SQBYQ&mv=other)
333 |
334 | > 这个可能是大家使用得最多的视频处理软件了吧,很好用!!!
335 | >
336 | > 功能全到无法令人呼吸,缺点就是学习成本有点大,入门很快,想成为大神需要大量时间积累。
337 |
338 | 
339 |
340 | #### Adobe After Effects CC 2019
341 |
342 | - 官网地址 :[https://www.adobe.com/cn/products/aftereffects](https://www.adobe.com/cn/products/aftereffects/free-trial-download.html)
343 |
344 | > 不知道大家视频看得多么,很多视频的特效开场都是这个做的,下面也有一个我的demo。
345 |
346 | 
347 |
348 | ## 
349 |
350 | #### GIPHY CAPTURE
351 |
352 | - 官网地址 :[https://giphy.com/apps/giphycapture](https://giphy.com/apps/giphycapture)
353 |
354 | > 有时候大家文章不想用静态的图画去表达,想录制写代码的Gif动图,那这个软件是真的好使。
355 |
356 | 
357 |
358 | #### 视频播放 KMPlayer
359 |
360 | - 官网地址 :[http://www.kmplayer.com](http://www.kmplayer.com/)
361 |
362 | > 其实帅丙我心中有个播放神器的,快播。
363 | >
364 | > 可惜了还没用多久,播播就夭折了,我会使用下面这个播放软件去播放我自己的视频。
365 | >
366 | > 因为很多格式电脑自带的可能不支持,我又喜欢剪辑视频,所以一直用它了。
367 |
368 | 
369 |
370 | #### Iina
371 |
372 | - 官网地址:[https://www.iina.io](https://www.iina.io/)
373 |
374 | > 视频播放 同上
375 |
376 | 
377 |
378 | #### DouTu
379 |
380 | - 官网地址 : [https://www.52doutu.cn/maker/1/?order=timedown](https://www.52doutu.cn/maker/1/?order=timedown)
381 |
382 | >大家是不是发现我之前的文章很多表情包,其实都是在线制作的。
383 |
384 | 
385 |
386 | #### Carbon
387 |
388 | - 官网地址 :[https://carbon.now.sh/](https://carbon.now.sh/)
389 |
390 | > 帅丙之前的文章里面很多代码的图片都是这个网站生成的,很多样式可以选择,就很好看。
391 |
392 | 
393 |
394 | #### CodeLF
395 |
396 | - 官网地址 :[https://unbug.github.io/codelf](https://unbug.github.io/codelf/#帅丙)
397 |
398 | > 这个网站有意思了,写代码不知道单词怎么命名就去这里查,他是GItHub的一个爬虫工具吧,看看大神的命名总是会有思路的吧。
399 |
400 | 
401 |
402 | **注意**:上面的软件我都是简单的介绍下是干啥的,因为太多了,真正的功能需要大家深挖的,能力允许的朋友下载正版,破解方法去Github [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 加我回复【**软件**】就好了。
403 |
404 | ## 总结
405 |
406 | 其实比较香的工具还有太多了,我这里就不一一介绍了,其实有个很简单的办法,就是**问**,**学习**,**借鉴**。
407 |
408 | 我就是这样的,我看Leader用的什么工具我就问他这是啥,好用不?怎么用?
409 |
410 | 包括我写博客吧,其实才写了20多天,第一天准备写的时候我就直接问**三歪(Java3y)**,你用的什么开发工具呀,怎么用的呀,包括他主要发布的哪些平台呀,发布的时间段呀,我都直接问。
411 |
412 | 他坐我对面,**迫于我的淫威**不得不和盘托出,主要是最近有个需求需要我帮他写代码哈哈。
413 |
414 | 别人都这么多的经验下来了,软件**能差嘛**?而且使用过程中不会的**还可以问一下对方**,不香嘛。
415 |
416 | ## 絮叨
417 |
418 | 先看**人才交流群**的某个人才提的问题:
419 |
420 | 
421 |
422 | **Tip**: **GItHub** [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 上有进群方式和个人联系方式,说实话在这个群,哪怕您不说话,光看聊天记录,都能学到东西(美团王炸,三歪(Java3y),并夕夕等的大佬都在)。
423 |
424 | 不知道大家是否还记得我之前写的幂等这样的情况?
425 |
426 | 就是下图这样的情况,我下单增减GMV先去看看这个流水有么,有就证明加过了,就直接返回,没有才继续下面的流程。
427 |
428 | 
429 |
430 | 他其实提的问题很好,因为我们日常开发都是**主从同步,读写分**离的,就是说我们可能加GMV加了但是我们操作的是主库,他需要将数据同步到从库,但是这个过程中他发生了延迟。
431 |
432 | 那这个时候如果别的系统这个**订单号消息重试**了,你是不是又进来了,你去查询流水你发现没流水你以为没加,你执行加钱的操作,结果那条延迟的也好了,是不是就加了两次。
433 |
434 | 正常开发中确实会有,但是主从延迟这个应该让**DBA**(**数据库管理员 Database Administrator**)去考虑的,但是呢我说过不能写有逻辑漏洞的代码嘛,其实很简单,把他放Redis嘛,设置一个30分钟左右的时间,这期间的重复消费都可以避免,要是延迟超过30分钟了那其实问题已经很大了,DBA会知道的。
435 |
436 | **这篇是吐血整理,大家好好食用,记得点个赞!👍**
437 |
438 | ## 日常求赞
439 |
440 | 好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是**人才**。
441 |
442 | 我后面会每周都更新几篇《吊打面试官》系列和互联网常用技术栈相关的文章,非常感谢**人才**们能看到这里,如果这个文章写得还不错,觉得「敖丙」我**有点东西**的话 **求点赞👍** **求关注❤️** **求分享👥** 对暖男我来说真的 **非常有用**!!!
443 |
444 | 创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
445 |
446 | 敖丙 | 文 【原创】【转载请联系本人】 如果本篇博客有任何错误,请批评指教,不胜感激 !
447 |
448 | ------
449 |
450 | > 《吊打面试官》系列每周持续更新,可以关注我的公众号「 **JavaFamily** 」第一时间阅读和催更(公众号比博客早一到两篇哟),本文**GitHub**上已经收录[https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily),有一线大厂面试点思维导图,欢迎Star和完善,里面也有我个人联系方式有什么问题也可以直接找我,也有人才交流群,我们一起有点东西。
451 |
--------------------------------------------------------------------------------
/docs/idea/idea.md:
--------------------------------------------------------------------------------
1 | > 点赞再看,养成习惯,微信搜索【**三太子敖丙**】我所有文章都在这里,本文 **GitHub** [https://github.com/JavaFamily](https://github.com/AobingJava/JavaFamily) 已收录,有一线大厂面试完整考点。
2 |
3 | 昨天群里被的人文怎么破解,晚上洗完澡睡觉正准备睡觉的时候,米豆吵醒了我,说他的idea炸了。
4 |
5 | 
6 |
7 | 于是我让他搜我在公司写的破解文档,这个文档已经造福了很多同事了,我痛定思痛,觉得造福一下你们,但是我先说明,大家有能力的还是支持下正版,我只是觉得这个钱拿去洗脚香一点。
8 |
9 | ## 开始破解
10 |
11 | 今天破解的方法很简单,jar包破解的,先下载Jar包。
12 |
13 | 
14 |
15 | 破解包使用方法:
16 |
17 | 0. 先下载压缩包解压后得到jetbrains-agent.jar,把它放到你认为合适的文件夹内。
18 |
19 | 公众号回复【**idea**】获取网盘链接。
20 |
21 | 1. 启动你的IDE,如果上来就需要注册,选择:试用(Evaluate for free)进入IDE
22 |
23 | 2. 点击你要注册的IDE菜单:"Configure" 或 "Help" -> "Edit Custom VM Options ..."
24 | 如果提示是否要创建文件,请点"Yes"。
25 |
26 | 3. 在打开的vmoptions编辑窗口末行添加:-javaagent:/absolute/path/to/jetbrains-agent.jar
27 | 一定要自己确认好路径(不要使用中文路径),**填错会导致IDE打不开**!!!最好使用绝对路径。
28 | 一个vmoptions内只能有一个-javaagent参数。
29 |
30 | 4. 示例:
31 | mac: -javaagent:/Users/neo/jetbrains-agent.jar
32 | linux: -javaagent:/home/neo/jetbrains-agent.jar
33 | windows: -javaagent:C:\Users\neo\jetbrains-agent.jar
34 |
35 | **注**:如果还是填错了,我帮你找到了目录:
36 |
37 | ### Windows
38 |
39 | All the files are located under this directory by default:
40 |
41 | - **Windows Vista, 7, 8, 10:**
42 |
43 | ```
44 |