A. 什么是屎山代码
屎山代码,通常是指新员工看到老员工写的代码,感觉不好,又多,仿佛像看到了一坨屎。
屎山代码,即是祖传代码,是指一个公司里祖传的“古董级代码”,因为使用时间较长,数量已经很多了。
因为在系统的使用过程中,需要维护系统和不断添加新的功能,故使用时间长的系统的代码往往会很多。曾有程序员表示:改老代码,就相当于去爬一座屎山,等爬到山顶,自己又留下一滩新的屎!
不要轻易修改“屎山代码”,存在即合理,可以正常运行就不要去修改,否则可能会导致代码的运行出现问题。
屎山代码炼成的原因:
屎山代码一直都是被软件行业的大多数人诟病。它是指堆积在一起没有规律的都不想去看的一堆代码。这些代码能运行,却不能迭代,效率不高,却又不能舍弃,所以形成了你不得不关注的内容。本人是一名有着代码洁癖的开发人员,从入行第一天只要看见任何不好的代码都会想去优化掉。
项目初期没有架构规划,缺乏架构设计,包括业务架构和技术架构(不考虑业务架构的技术架构设计最终都会演变成扯淡)。
B. 黑客是怎样炼成的
----什么是黑客?
Jargon File中对“黑客”一词给出了很多个定义,大部分定义都涉及高超的编程技术,强烈的解决问题和克服限制的欲望。如果你想知道如何成为一名黑客,那么好,只有两方面是重要的。(态度和技术)
长久以来,存在一个专家级程序员和网络高手的共享文化社群,其历史可以追溯到几十年前第一台分时共享的小型机和最早的ARPAnet实验时期。 这个文化的参与者们创造了“黑客”这个词。 黑客们建起了Internet。黑客们使Unix操作系统成为今天这个样子。黑客们搭起了Usenet。黑客们让WWW正常运转。如果你是这个文化的一部分,如果你已经为它作了些贡献,而且圈内的其他人也知道你是谁并称你为一个黑客,那么你就是一名黑客。
黑客精神并不仅仅局限于软件黑客文化圈中。有些人同样以黑客态度对待其它事情如电子和音乐---事实上,你可以在任何较高级别的科学和艺术中发现它。软件黑客们识别出这些在其他领域同类并把他们也称作黑客---有人宣称黑客实际上是独立于他们工作领域的。 但在本文中,我们将注意力集中在软件黑客的技术和态度,以及发明了“黑客”一词的哪个共享文化传统之上。
另外还有一群人,他们大声嚷嚷着自己是黑客 导噬纤 侨床皇恰K 鞘且恍┬钜馄苹导扑慊 偷缁跋低车娜耍ǘ嗍 乔啻浩诘纳倌辏 U嬲 暮诳桶颜庑┤私凶觥昂Э汀?cracker),并不屑与之为伍。多数真正的黑客认为骇客们是些不负责任的懒家伙,还没什么大本事。专门以破坏别人安全为目的的行为并不能使你成为一名黑客, 正如拿根铁丝能打开汽车并不能使你成为一个汽车工程师。不幸的是,很多记者和作家往往错把“骇客”当成黑客;这种做法激怒真正的黑客。
根本的区别是:黑客们建设,而骇客们破坏。
如果你想成为一名黑客,继续读下去。如果你想做一个骇客,去读 alt.2600 新闻组,并在发现你并不像自己想象的那么聪明的时候去坐5到10次监狱。 关于骇客,我只想说这么多。
---黑客的态度
黑客们解决问题,建设事物,信仰自由和双向的帮助,人人为我, 我为人人。
要想被认为是一名黑客,你的行为必须显示出你已经具备了这种态度。要想做的好象你具备这种态度,你就不得不真的具备这种态度。但是如果你想靠培养黑客态度在黑客文化中得到承认,那就大错特错了。因为成为具备这些特质的这种人对你自己非常重要,有助于你学习,并给你提供源源不断的活力。同所有有创造性的艺术一样,成为大师的最有效方法就是模仿大师的精神---不是仅从理智上,更要从感情上进行模仿。
So,如果你想做一名黑客,请重复以下事情直到你相信它们:
1、这世界充满待解决的迷人问题
做一名黑客有很多乐趣,但却是些要费很多气力方能得到的乐趣。 这些努力需要动力。成功的运动员从健壮体魄,挑战自我极限中汲取动力。同样,做黑客,你必须
要有从解决问题,磨练技术,锻炼智力中得到基本的热望。如果你还不是这类人又想做黑客,你就要设法成为这样的人。否则你会发现,你的黑客热情会被其他诱惑无情地吞噬掉---如金钱、性和社会上的虚名。
(同样你必须对你自己的学习能力建立信心---相信尽管你对某问题所知不多,但如果你一点一点地学习、试探,你最终会掌握并解决它。)
2、一个问题不应该被解决两次
聪明的脑瓜是宝贵的,有限的资源。当这个世界还充满其他有待解决的有趣问题之时,他们不应该被浪费在重新发明轮子这些事情上。 作为一名黑客,你必须相信其他黑客的思考时间是宝贵的---因此共享信息,解决问题并发布结果给其他黑客几乎是一种道义,这样其他人就可以去解决新问题而不是重复地对付旧问题。
(你不必认为你一定要把你的发明创造公布出去,但这样做的黑客是赢得大家尊敬最多的人。卖些钱来给自己养家糊口,买房买车买计算机甚至发大财和黑客价值也是相容的,只要你别忘记你还是个黑客。)
3、无聊和乏味的工作是罪恶
黑客们应该从来不会被愚蠢的重复性劳动所困扰,因为当这种事情发生时就意味着他们没有在做只有他们才能做的事情---解决新问题。这样的浪费伤害每一个人。因此,无聊和乏味的工作不仅仅是令人不舒服而已,它们是极大的犯罪。 要想做的象个黑客,你必须完全相信这点并尽可能多地将乏味的工作自动化,不仅为你自己,也为了其他人(尤其是其他黑客们)。
(对此有一个明显的例外。黑客们有时也做一些重复性的枯燥工作以进行“脑力休息”,或是为练熟了某个技巧,或是获得一些除此无法获得的经验。但这是他自己的选择---有脑子的人不应该被迫做无聊的活儿。)
4、自由就是好
黑客们是天生的反权威主义者。任何能向你发命令的人会迫使你停止解决令你着迷的问题,同时,按照权威的一般思路,他通常会给出一些极其愚昧的理由。因此,不论何时何地,任何权威,只要他压迫你或其他黑客,就要和他斗到底。
(这并非说任何权力都不必要。儿童需要监护,罪犯也要被看管起来。 如果服从命令得到某种东西比起用其他方式得到它更节约时间,黑客会同意接受某种形式的权威。但这是一个有限的、特意的交易;权力想要的那种个人服从不是你的给予,而是无条件的服从。)
权力喜爱审查和保密。他们不信任自愿的合作和信息共享---他们只喜欢由他们控制的合作。因此,要想做的象个黑客,你得对审查、保密,以及使用武力或欺骗去压迫人们的做法有一种本能的反感和敌意。
5、态度不能替代能力
要做一名黑客,你必须培养起这些态度。但只具备这些态度并不能使你成为一名黑客,就象这并不能使你成为一个运动健将和摇滚明星一样。成为一名黑客需要花费智力,实践,奉献和辛苦。
因此,你必须学会不相信态度,并尊重各种各样的能力。黑客们不会为那些故意装模做样的人浪费时间,但他们却非常尊重能力---尤其是做黑客的能力,不过任何能力总归是好的。具备很少人才能掌握的技术方面的能力尤其为好,而具备那些涉及脑力、技巧和聚精会神的能力为最好。
如果你尊敬能力,你会享受提高自己能力的乐趣---辛苦的工作和奉献会变成一种高度娱乐而非贱役。 要想成为一名黑客,这一点非常重要。
C. 程序员如何提高自己的工作效率
程序员如何提高自己的工作效率?程序员要在IT界混出个名堂,也要有高效的工作效率才行。下面我为大家整理了程序员提高工作效率的办法,欢迎大家阅读参考!
程序员如何提高工作效率
1)键盘功底要扎实
敲键盘时要使用标准指法。可能你认为这是程序员的基本功,可是我发现其实很多程序员都做不到这点。看着他们敲代码时那笨拙的指法我就心急。其实炼成标准指法不难,相当年我还是一指禅,打字极慢,痛定思定,在一周内我打字必用标准指法,再别扭也要坚持,一周后就适应了标准指法了。现在不说运指如飞也算是略有小成。练习指法和键盘速度可以给大家推荐一些网站:http://10fastfingers.com/typing-test/english,这个就是练习标准指法的,我可以轻松上60 WPM(每分钟60单词),有个外国同事可以达到130以上,那才叫恐怖。http://typing.io/lessons,专门供程序员练习敲代码的网站,融合了各种括号和标点,难度有点大。
2)要熟悉IDE的各种快捷键及特性
IDE基本上是码农们上班中使用时间最长的软件。首先要选择一个趁手的IDE,俗话说,工玉成其事,必先利其器嘛。如果是C#阵营的那肯定是最新版的Vistual Studio了,如果是Java阵营的话当然是Intellij了(eclipse作为开源IDE,真心比不过Intellij)。我现在使用Intellij可以在95%的情况下不用鼠标,全键盘完成开发过程中的大部分操作。我觉得没有什么常用快捷键、不常用快捷键之分,只要你知道的快捷键就要拿来用。
尤其是各种重构快捷键必须要熟练掌握,当我看到码农修改变量名时不用重构快捷键,而是自己手动在引用的地方一个个改,然后编译查错时,真为他们捉急。还有各种inline,introce的快捷键真是好用到爆,掌握了这些快捷键可以说对代码进行任何重构都不费除灰之力,我们的注意力也从手动修改代码转移到如何发现坏味道了。Vistual Studio中推荐安装ReSharper,其开发公司与Intellij开发公司是同一家。除了重构快捷键,还要掌握一些IDE的特性,比如调试时可以插入指定条件来命中断点等,这些就要平时的积累和学习,另外还有好奇心。我敢说你现在挨个看IDE菜单,至少有30%功能你从没用过或不知道是干什么用的,其实里面有些功能是非常实用的,只是你没尝试而已。
3)至少熟练掌握一种shell终端
作为程序员老用图形化界面咋行,要用那种古老的命令行界面才能显示出你的高深嘛!鼠标点界面谁都会,而命令行界面不是谁都能驾驭。有些功能在命令行下要比图形界面下高效N倍。比如我使用git提交文件时都是在命令行下查看哪些文件被修改了,哪些是新添加的,修改的部分是哪些等。
使用图形化界面要用鼠标点来点去,效率实在太低。Linux系统下的终端太多了,就不推荐了。Mac系统下推荐使用iTerm2这个壳,其比MAC自带的terminal多了不少实用的特性,也能方便切换自己喜欢的配色。Windows下当然首推Windows Power Shell了。Windows Power Shell本身集成了常用的实用工具,并且与.net framework无缝结合,这点是那些在Windows上的类Linux模拟器(比如Cygwin)是远远比不了的。
4)具有一定编写shell脚本的功底
光会用现有的`脚本还不行,还要会根据情况编写脚本来实现自己特定的一些目标。比如我使用MAC机上的终端时,经常需要在不同目录间跳来跳去,每次都打一串的cd …..很麻烦,后来我就自己写了一个小工具,可以给指定的目录起别名,想要跳到这个目录只要敲别名即可(参见 http://www.huangbowen.net/blog/2013/02/16/gtshell/)。
还有我在Windows系统上工作时,也经常编写一些Power Shell脚本,比如一个命令就启动指定的FTP服务器,一些小命令用来实现快速在不同项目源码间切换并执行构建命令等。这些命令编写起来都很简单,在提高工作效率方面很好帮助,因为一些常用的费时的操作每天重复N次,让人很厌烦,如果能够使用脚本将其自动化起来,岂不是就把自己给解脱了?
5)多语言编程
在这个世界有太多太多的编程语言,但凡稍微流行的编程语言都有自己独特的优势,而我们要善于利用每种编程语言的特点,而不是整天吵闹那种语言更强大。我自己熟悉C#、java语言,也用JavaScript、Ruby、Python、Groovy做过一些东西,甚至为了理解函数式编程还专门学习了Haskell语言。这些语言都给我带来了实用的效果。比如我用Ruby写了一个插件,可以自动把我主站上的博客同步到博客园中的博客来。
我使用Groovy给我的Java代码写单元和集成测试,比使用Java语言编写要快很多。我用Python和WebDriver写了一个论坛灌水工具来刷积分。你掌握的语言越多,你的视野就越广,你对编程的理解就会越深入。当然我不赞成盲目的求多,至少你要有2到3门精通的语言,从语言语法、语言运行时、语言特性、语言API等方面都要有深入学习和见解,当你再学习其它语言时也不会浮于表面的了。
6)这是最重要的一点,时刻保持一颗好奇心,一颗坚定不移的提高工作效率的决心
很多人都抱着差不多态度,心想“我虽不是标准指法,敲键盘速度也差不多”,“我IDE快捷键用的不多,也没觉得那里影响到我开发”,“我只会C#一种语言,还不照样干到现在了吗?”之所以有这种想法,是是因为你没有见到真正高效的人。我曾看到某IT界牛人那出神入化的VIM操作,简直已经超越了指哪打哪的境界,已经达到了键随心动的境界。
我也看到某高级程序员使用IDE快捷键三下五除二就把一段丑陋的代码给收拾的服服帖帖。耳濡目染之下让我坚定了这个决心,不做差不多先生。所以平时我和同事一起工作时,就留心他们有哪些方法和工具来提高自己的工作效率。如果他们使用了一些好用的快捷键而我不知道,那我就会记下来下次自己用(快捷键熟练程度上我早已是我们项目组的number one)。
如果看到他们使用了一些好的工具我也会立马回去下载下来自己用。(比如前两天我看到同事使用SuperPutty来连接远程主机,其支持多tab方式,这正是我想要的功能。我回去立马下载下来,抛弃了以前的Putty)这样时间长了,集众人之所长,你自然也成为效率达人了。
D. 《复杂世界的明白人》九边 #读书笔记
读后感:
很久没有完整看一本书,记性差了很多,一本书看了两三遍,花很长的零碎时间拼凑完读后感。最近发生一些事情,心情不太好。或许也带有些许年龄的焦虑,身边的同事年纪越来越小,亲戚朋友成家立业的越来越多,很多地方有共鸣。
本书作者是程序员出身,后来转做视频和写文章。讲得很多都是人生道理,也是出现在各大热门知乎、公众号、视频等的讨论话题。不能说是一本很深层次的书,但至少能给一些迷茫的人方向。
如何让自己过上痛苦的生活,之前看过外国团队的调研的结果类似,有印象。过滤出精英的教育、工作、风口几道窄门,也是这么一个道理,逆水行舟不进则退。知识储备够不够?心智够不够沉稳?面对新事物的反应速度快还是慢?执行力不足是害怕失败,还是性格不够坚韧的影响?大脑很多时候看到别人光鲜亮丽的成就,只会羡慕,而没有看到过程.
教育能武装一个人的大脑,圈子可以改变一个人的心境,身体是革命的本钱。机会总是在自己身边,跳出舒适圈,成就更好的自己。一万年太久,只争朝夕。共勉吧
笔记部分:
如何过上痛苦二抑郁的生活?
1.坚持容易的选择
坚持一二十年,慢慢人生选择越来越少,越来越痛苦。(快乐往往是一时的,代价却是持续的)
2.保持孤僻
社交得到欢乐可以抑制痛觉受体,防止抑郁,也比单打独斗多更多可能(避免被孤立去做无效社交)
3.准备好再开始
不一定要最漂亮的方式完成,哪怕最笨的方法也比没有强。
三道窄门滤出最终精英:
1.教育
①沟通效率知识层次接近容易达成共识;
②“研究习惯”,普通人只网络大概,博士会研究英语资料期刊论文等多种方式;
③高效,信手拈来的“工具库”积累。
2.工作
①不稳定却上限很高。(小企业迅速成长分红)
②稳定却一眼看到头的工作,越往后可选择越少。(大多数稳定的职业)
3.风口
①风口可能让你的资产指数型上涨
②除了运气,保持宽容学习的心,风口来了愿意学习和了解,而不是将其与“瞎胡闹”划上等号,(面对新事物,保持热情积极了解)
混江湖心得经验
1.慢就是快
坚持长期主义,不急功近利(只追热度的作者能获得流量,但最终会被利欲熏心,迷失方向,选择看似漫长但有价值的事情)
2.不羡慕结果,重过程,有自己的规划。(好友/亲戚/同学加薪发财,只是结果,你应该借鉴别人优秀的地方)
3.做事思考能否提供价值,可以且持久地就不断专研输出。
4.微小迭代,再大的事也是由无数小事组成的。
5.人能成就事,反之,事亦能成就人。(相互促进)
大神如何炼成?
1.站得越高,看得越全,越慌越痛苦
公司就像在市场这个汹涌大海洋行驶的大船,只有站在甲板的船长能看到全景,大部分人活在自己想象的安全港里。
2.生意本质是信息差
所有生意都是一时的,一万年太久,只争朝夕
3.工作心态不一样
成功人的船长思维,在风口看到风险和机遇,迎接挑战,而普通人活在自己给自己的短暂虚妄的安全世界,活在自己的安全世界里。
如果兴趣成为职业会怎么样?
人生的关键是吃苦,当兴趣成为自己的工作时间久了就会痛苦,唯有主动坚持才能对抗
成为高手需在没有感觉的情况下蹚过漫长无聊和低成就感时期(习惯成功之路的孤独和坚韧),蹚不过就一直二流水平(如成为入写手,要写作日更3000字,而大多数人只挺不过一周,就过滤了大多数无法坚持的人)
几个人生真相
性格、财富、知识、见识、社会关系,几个变量互相影响、互相因果,财富上升会让人明显开朗进而提升社会关系和见识。
多数人的“社恐”:往往是舒适区的表现,在熟人面前大大咧咧,在陌生人面前慌乱,并不是有双重人格,而是担心陌生人不接纳自己。
肌肉记忆才是真记忆
菜鸟和高手区别在于高手肌肉记忆库工具很多,信手拈来快速解决问题,多练习把工具箱内容沉淀,占领先机后抢占下一个山头。延伸到心智层面,面对困难积极想办法解决,成为肌肉记忆。
绕开负能量,人心敏感而脆弱(不参加失败者派对)
失败者向着世界倒霉,盯着黑暗面,最后社会还是那样,结果自己废了。
锚定15%法则
在一个领域深耕,前期填鸭(需迅速),后期15%新知识(更快乐)。
百万年薪必备技能(感觉分析的比较浅)
1.当领导
2.领导交代任何事情都竭力办好
3.善于汇报工作,站在别人的角度看待自己的工作,别人要知道全靠你一张嘴。
4.谦逊,该亲和亲和,该严格严格
5.身体素质
起点不高如何向上爬
环境会改变人的思维,思维进一步改变个人境遇,从而进一步改变思维。
破圈层,越往上走越是熟人社会,马太效应,你能力越强,帮你的人也越强,最后整理实力指数上升,
多数人面临很多机会,只是当时选择恐惧,选择在舒适区待着,后来可选择的路越来越少。
寒窗苦读与财富
1.没读过书只能抓低端机会,(卖菜、修车、开饭店等),本科或者以上,稍微高端(软件、新媒体、科技)
2.别被眼前自怨自艾,也别觉得自己很厉害,很多事眼前看没啥意义,时间线放长才可能发现意义。
现实:寒窗苦读很难超过别人几代人的积累
翻盘机会:把自己送到稍微高一点的起跑线,头脑被武装过,且有搞定复杂问题的决定和方法
如果在互联网只是消费自己时间和精力,而没得到成长你就是工具。
国家层面分析
发达国家发展两步:1.海外贸易,2.发达的国内市场(双循环)
发展成发达国家的三个陷阱:
1.“低收入陷阱”,才能和启动资金其中一样缺失,都不可往更高层面走。
2.“中等收入陷阱”,环境保护,外企撤离后没形成大规模国内市场,一地鸡毛。
3.“高收入陷阱”,迷恋资本,只搞金融,把不赚钱和赚钱慢(类似科研)的都搬到海外。
什么社会未来可期:深耕国内市场,提高科技水平(指数增长),抑制贫富差距,完善市场秩序,打击资本投机恶性一面。
很多事情都是经过漫长的累积然后一飞冲天,前期线性,后期指数发展(赞同)
负利率如何形成?
公民多数不婚不育,无所追求,购买力低。银行逼大家花钱把利率降成负的,降低贷款利率。
负利率影响:增长缓慢,机会稀缺,谁都不想花钱,创业也赚不到钱
艰苦奋斗的目的不是一直艰苦,搞低端制造业的目的不是一直低端,产业升级既是被迫,也是顺势而为。
E. 技术大牛是如何炼成的
如果回答对楼主有帮助,给个采纳好不,谢谢啦
破仑说:不想当将军的士兵,不是好士兵。无论你在做开发、测试、运维,你都是一个技术人员,而我相信,每个技术人员的心中,都有一个成为技术大牛的目标,这个目标鞭策着每一位有梦想的人,去努力和改进自己。 梦想总是在现实面前有过一度的彷徨,因为你会发现,真正的工作和心中的理想状态天壤之别,不是一码事。当你面对的是,天天加班写业务代码,每天都有执行不完的测试,扛机器接网线敲shell命令,你也许会怀疑,这是我想要的人生吗?接下来,就让我们带着疑惑,去寻找答案!三大误区误区一:拜团队技术大牛为师,给你开小灶首先,不可否认,大牛的确有能力将你锻炼培养成另一位大牛,但是,无论是单独给你开小灶,还是培训整个团队,时间成本消耗过大,因此,一般没有大牛愿意这样做。其次,很多人都认为不懂就问是个好习惯,但是你忽略了很多问题大牛是不屑回答的,比如像“jvm的-Xmn参数如何配置”这种上网能找到答案的问题,只会浪费他人以及自己的时间。最后,大牛是个极具小众的群体,因此,直接请教和辅导的机会非常少,即使有幸参加过几次真正大牛的培训,也不太可能让你嫣然一变,成为技术大牛的。总而言之一句话,以自己为主,系统且有针对性的进行学习;然后再以请教学习为辅提升自己。误区二:不断重复,停滞不前首先,要认清一个事实,写不好业务代码和只把业务代码写好的程序员,在技术大牛的世界里,没有什么本质的不同。如果光是沉浸在一个基础技术里积累学习,那么毫无疑问,这是你的惯性和惰性在束缚着你前进,打破它,不断向更大的挑战迈进,最终成为他人眼中的大牛。误区三:大环境的不公与碎片化时间首先,大多数人都在抱怨中国的环境对于自己可能性的扼杀,并认为很多本来能成为大牛的人才被现实埋没,不可否认,这个理由具有一定的客观性,因为环境的确可以改变一类人的发展和命运。但是,如果我们转过身来自问,是否自己真的已经倾尽全力?我相信,总是存在一些人,借着社会不公的理由,给予自己偷懒的借口;毕竟,大牛还是会有的,万一就是你呢?其次,如果你抱怨现如今社会的碎片化时间,不能有整段时间提供自己深入学习,那么,是否先改变自己的一个观念,那就是碎片化时间也可以深入学习。而未来,利用碎片化时间学习将可能成为一种趋势。正确的做法1、尽量多的尝试当你每次都做得更多,随着时间的发展,将会是这样,产品讨论需求找你、测试有问题也找你、老大对外支撑也找你,于是,你就成了这个系统的“专家”了。要想有机会,那就得与众不同,努力做到更多。怎么做得更多呢?可以从以下几个方面着手:1)熟悉不止你负责的更多业务,熟悉不止你写的更多代码。好处:需求分析的时候更加准确,能够在需求阶段就识别风险、影响、难点问题处理的时候更加快速,因为相关的业务和代码都熟悉,能够快速地判断问题可能的原因并进行排查处理方案设计的时候考虑更加周全,由于有对全局业务的理解,能够设计出更好的方案2)熟悉端到端比如说你负责web后台开发,但实际上用户发起一个http请求,要经过很多中间步骤才到你的服务器(例如浏览器缓存、DNS、nginx等),服务器一般又会经过很多处理才到你写的那部分代码(路由、权限等)这整个流程中的很多系统或者步骤,绝大部分人是不可能去参与写代码的,但掌握了这些知识对你的综合水平有很大作用,例如方案设计、线上故障处理这些更加有含金量的技术工作都需要综合技术水平。3)自学一般在比较成熟的团队,由于框架或者组件已经进行了大量的封装,写业务代码所用到的技术确实也比较少,但我们要明白“唯一不变的只有变化”,框架有 可能要改进,组件可能要替换,或者你换了一家公司,新公司既没有组件也没有框架,要你从头开始来做。这些都是机会,也是挑战,而机会和挑战只会分配给有准备的人。以java为例,大部分业务代码就是if-else加个数据库操作,但我们完全可以自己学些更多java的知识,例如垃圾回收,调优,网络编程等,这些可能暂时没用,但真要用的时候,不是google一下就可以了,这个时候谁已经掌握了相关知识和技能,机会就是谁的。2、尽量做到更好世界上没有完美的东西,你负责的系统和业务,总有不合理和可以改进的地方,识别这些“不合理”和“可改进”的地方,并且给出解决方案,然后向主管提出,一次不行两次,多提几次,机会,就是自己去争取和把握。例如:重复代码太多,是否可以引入设计模式?系统性能一般,可否进行优化?目前是单机,如果做成双机是否更好?版本开发质量不高,是否引入高效的单元测试和集成测试方案?目前的系统太庞大,是否可以通过重构和解耦改为3个系统?阿里中间件有一些系统感觉我们也可以用,是否可以引入 ?3、尽量动手实践光看不用效果差例如:学习了jvm的垃圾回收,但是线上比较少出现FGC导致的卡顿问题,就算出现了,恢复业务也是第一位的,不太可能线上出现问题然后让每个同学都去练一下手,那怎么去实践这些jvm的知识和技能呢?Netty我也看了,也了解了Reactor的原理,但是我不可能参与Netty开发,怎么去让自己真正掌握Reactor异步模式呢?看了《高性能MySQL》,但是线上的数据库都是DBA管理的,测试环境的数据库感觉又是随便配置的,我怎么去验证这些技术呢?框架封装了DAL层,数据库的访问我们都不需要操心,我们怎么去了解分库分表实现?怎么办?1)系统化的学习这个是第一阶段,看书、google、看视频、看别人的博客都可以,但要注意一点是“系统化”,特别是一些基础性的东西,例如JVM原理、Java 编程、网络编程,HTTP协议等等,这些基础技术不能只通过google或者博客学习,一般做法是先完整地看完一本书,有了全面的了解,然后再通过google、视频、博客去有针对性地查找一些有疑问的地方,或者一些技巧。2)自己动手丰衣足食这个步骤就是解答上文提到的疑惑,也就是自己去尝试搭建一些模拟环境,自己写一些测试程序。例如:Jvm垃圾回收:可以自己写一个简单的测试程序,分配内存不释放,然后调整各种jvm启动参数,再运行的过程中使用jstack、jstat等命令查看jvm的堆内存分布和垃圾回收情况。这样的程序写起来很简单,简单一点的就几行,复杂一点的也就几十行。Reactor原理:自己真正去尝试写一个Reactor模式的Demo,不要以为这个很难,最简单的Reactor模式代码量(包括注释)不超过200行(可以参考Doug Lee的PPT)。自己写完后,再去看看netty怎么做,一对比理解就更加深刻了。MySQL:既然有线上的配置可以参考,那可以直接让DBA将线上配置发给我们(注意去掉敏感信息),直接学习;然后自己搭建一个MySQL环境,用线上的配置启动;要知道很多同学用了很多年MySQL,但是连个简单的MySQL环境都搭不起来。框架封装了DAL层:可以自己用JDBC尝试去写一个分库分表的简单实现,然后与框架的实现进行对比,看看差异在哪里。用浏览器的工具查看HTTP缓存实现,看看不同种类的网站,不同类型的资源,具体是如何控制缓存的;也可以自己用Python写一个简单的HTTP服务器,模拟返回各种HTTP Headers来观察浏览器的反应。3)交流分享,发现自己的不足之处。与人交流分享,既需要我们将一个知识点进行系统化的梳理,并且考虑各种细节,这会促使我们进一步思考和学习。同时,听的人可以有不同的理解,或者有新的补充,这就令知识技能体系变得更加完善。后记无论结果怎样,当我们谈论过程的艰难与乐趣之时,是否可以不去计较自己是否付出太多?因为一个真正热爱技术的人,只会勇往直前,不忘初衷,坚持到底!