愈功能程序员的修炼 – 读书笔记

高功能程序员的修炼

理一下前使学的事物

俗话说:程序员不可知单纯想在写代码。在编程以外的空余时光,读一些这种有助于程序员扩展视野和增强造诣之图书是甚好的。

实质上我为非亮自己写的事物是啊东西,简单的排列一下咔嚓

笔者找到了当时仍《高功能程序员的修炼》:本书作者是举世瞩目Stack
Overflow的创始人Jeff
Atwood,内容是关于代码以外的,需要每个程序员思考与专注的事情。

圈了从未有过了解的

FFT(单位到底是什么破啊。。。)

立本书是作者在今年1月份扣之,因为忙碌项目支出,所以没整理好记。正好这周五店铺app提交过审,有空宅在夫人收拾一下。笔记内容没有干书被所说的每个方面,仅是针对了笔者以为比较关键之几乎碰连结合了作者自己之想法与清醒整理而成

 

笔者的读书笔记的格式
标题:与书被目录不符,完全出于作者自己列出。
�正文:浅灰色框中之契也开中选择录,其他部分都为笔者个人观点。

辅助类

Vim

Latex

Markdown

geogebra

 

迎各路大侠指点!欢迎各路大侠指点!欢迎各路大侠指点!

数据结构/算法

单调栈,单调队列,双端队列

线段树

  zkw线段树

  二维线段树/树状数组

  动态开节点线段树

  李超线段树

  线段树合并

平衡树

  Splay

  Treap

  FHQ Treap

  SBT

  AVL

  替罪羊树

  红黑树

  斜堆

  左偏树

  随机堆

  二项堆

  斐波那契堆

  Pairing堆

可持久化

  线段树

  数组

  平衡树

分块

  分块

  块状数组

  片写链表

树上算法

  树链剖分

  K-D Tree

  四分树

  树的分治算法(点分治,边分治,*动态?树分治)

  动态树 (LCT,*树分块)

  虚树

  *prufer编码

连查集/带权并查集

字符串

  KMP 

  BM

  Sunday

  Trie树

  AC自动机

  Manacher

  后缀数组

  后缀自动机

  后缀树

图论

  割点,割边

  不好短路,k短路,最缺里程计数

  kruskal重构树

  欧拉图

  二分图/KM/匈牙利

网络流

  最大流

  最小割

  费用流

  分数规划

动态规划

  斯坦纳树

  斜率优化

  四限形不等式优化

  前缀和优化

  1D1D优化

  插头DP

  DP套DP

  数位DP

  树形DP

莫队

  树上莫队

  以线莫队

  待修改莫队

  树上待修改莫队

模拟退火

登山算法

轻易增量法

三维偏序

CDQ分治

血红刘算法

弦图及区间图


数学

参见一本通

 

 

关于选择工作

本人还建议人们先花时间想,什么样的问题才是他们实在爱和感谢兴趣之,然后又精彩钻研这些问题。生命被尽难以之,是思念清楚而真的想如果举行的业务,而不是人云亦云上平等堆假设将来见面中之物。

所以说以控制这种人生大事上,确实如花费上思想,就吓于笔者自己当通信工程专业于本科一直念了了硕士,拿到硕士学位证后花了一样到家之时日苦思冥想,探求内心后,毅然决定做软件,顶住各方压力(因为毕竟是移专业择业,不过还吓老人或一直十分支持自己的)三独月的流年自学了iOS开发。
如今就入职4独月,在做事上着甚感愉快,虽然有时候见面发生压力,但是每天还过得老大开心,因为马上多亏自己怀念做的。


常备模板

 

#include<cstdio>
const int MAXN=1e6+10;
inline char nc()
{
    static char buf[MAXN],*p1=buf,*p2=buf;
    return p1==p2&&(p2=(p1=buf)+fread(buf,1,MAXN,stdin),p1==p2)?EOF:*p1++;
}
inline int read()
{
    char c=nc();int sum=0,f=1;
    while(c<'0'||c>'9'){if(c=='-') f=-1;c=nc();}
    while(c>='0'&&c<='9')sum=sum*10+c-48,c=nc();
    return sum*f;
}
int main()
{
    #ifdef WIN32
    freopen("a.in","r",stdin);
    #else
    #endif
    int a=read(),b=read();
    printf("%d",a+b);
    return 0;
}

 

至于程序员的表达能力

独立之程序员和勉强过得去之程序员之间的异样是他们能够不能够把她们之想法表达清楚。

世家该无会见存疑程序员的平分智商,但是程序员中每个人之表达能力却参差不齐,差别大。其实有来时候脑子中想到的方法或者是当无意识下想到的,如果这要我们来系统地游说出,确实不是一律码易之事。

像这种用意识层面的语言来表述潜意识的思的力量确实是值得锻炼的。试想一下,如果我们能够将自己误层面的想想准确地复出于发现层面,那么就眼看会推动帮助我们检查思维的缜密性和科学,而且为会见锻炼我们的逻辑思考,从而能重复好地失去琢磨,形成良性循环。


至于程序员的念:

勤加练习固然重要,但是注意着购买条写代码,没有座谈以及反思的时,那么是无能为力取得真正的前行的。在读书博客和血脉相通书籍的过程被,从自我利益出发去考虑,如果我们会从中找到哪怕一点对我们出因此的物,其实就是已经不行赚钱了。

习和反省是习过程中深重要之环,如果无这的复习和反思,那么累事倍公半:忘记知识,而且不怕不遗忘,也无力回天迅速地用文化提取出。作为程序员,应该适当脱离键盘反复思量,将学到的学问高效地结合到自己之学识结构中,有助于知识的领以及动用。


至于代码

  • 评说与代码的几只维度:从简洁性开始,依据测试的结果仍需升级其他的维度。
  1. 代码简洁度
  2. 力量完整性
  3. 推行进度
  4. 编码所花费时间
  5. 健壮性
  6. 灵活性
  • 君的代码越多,bug能隐藏的地方即愈加多。
  • 最为好的代码就是全无代码。

至于代码的注释

  • 诠释需要说:程序为什么如此工作。
  • 卿应当总是专注于编写代码,而忘记了还有注释这种东西的留存。
  • 当我脑子里了一个明显的对象,并且发生同样段复杂的代码要描绘时,我会拿日花在时代码上面,而不是描写下客的故事,讲为自家自己放。
  • 一旦你的代码在尚未注释的情形下显得过分复杂,很不便让人懂,那只能说明你的代码写得太早了,重写代码,直到她不再要其他注释。

朗诵到此的时光笔者十分是耻。因为作者在描写代码的上,是用代码和注释一起写的。所以应当将这习惯变更过来:写代码的时候忘记注释,应该一直全力用代码自己讲逻辑。到最终逻辑达到充分鲜明的档次后,再增长必要的注释:为什么用之是是逻辑。


至于请教问题

  • 通往人家请教问题:
  1. 提供足够多的底细描述来的景象
  2. 证明你为什么要这答案
  3. 发挥你所举行的研究暨意识
  • 如果你想给人家花上难得的时光来帮忙你,你呢要花了珍贵的流年酝酿有一个通关的题材才好不容易公平。

笔者在工作中也会请教同事问题,前几乎次于问的时光发现自己将问题说出去后,自己头脑里既来矣缓解之办法,而且认为格外简单。所以后来想咨询问题之时段,保证自己先行解决相似问题,将问题深刻,然后尽量问有赛质量的题目来。


至于提出问题

  • 提出正确的题目多就将问题迎刃而解了一半。
  • 毕投入地朝一个假想着之人要是绝非生的物体问一个酣畅淋漓而接近之题目。

笔者认为一旦是针对性一个不论是生命体,大脑被承受情感的有会让压制,会进一步助长理性分析,更加鲜明地表述问题(因为您的下意识知道小黄鸭*举凡休会见“理解”你的语句里片遗漏之触发)。


关于创意和实践

  • 若你想只要挣钱,你必须把当下两头相乘,除非创意让实施,否则它们同样温软不值,执行是新意的倍增器,真正价值巨大的凡履行。

  • 跟那个操心而全心投入等下一个新意是否足够出色,不如担心若能够实行的几近好。

  • 当软件开发领域,执行代表专注让做你的应用程序的有着一线细节,如果你不是镇沉迷于您的应用程序的每个点,不失去优化以及尽快它的每一样处细节,那么你尽管无是当尽,至少,不是以很好地实行。


有关集体

  • 若你把一个好之创意为一个普普通通的团体,他们见面管它们将砸。如果您拿一个平常的新意为一个好之社,他们会对其加以完善,或者他们会拿大创意丢掉,然后相处有些重强的 –
    Catmull”

  • 若果你想抱成功,不要担心没惊天动地的新意,转而错过顾于培养一流之社。


关于会议:

议会不用应该过一个时。
每个会议都要来一个分明的目标声明。
每当开户之前做好功课:提前了解将讨论与享用的情节。
拿会成为可摘的:每一个丁还坐她们想要于那边,或者需要在那里。

议会终止晚,概括一下消办事项。

实则会确实比较耗费时间,所以将为提升会的频率和价值:

  1. 以会开前:熟悉会议内容连提前考虑。
  2. 于会议终止前:整理会议结果,列个待办事项。
  3. 以议会终止晚:执行!执行!执行!

至于用户以及成品

  • 用户不会见看你屏幕及之别事物。用户只有见面读取屏幕及可以让她们成功任务的,最少量底文。

  • 与世隔绝在实验室花上三独月的时间修复第一版里之题目,不如把及时3单月之工夫用来倾听来自实事求是世界里下你的软件之用户提出的报告。

立马片长分别告我们:

  1. 俺们当开产品之时段,应该把用户当成“弱视不见面思考”的人头。
  2. 用户可“为我们所用”。

仿佛是矛盾的少触及,但实在是提升用户体验的“黄金理论”。
于第一长达,笔者十分有体验:笔者做了一个类新手引导之课程,因为队友修改了页面加载的逻辑,导致了用户只能通过,点击,滑动,手动加载后才能够起观望教程的情事,而碰巧看页面时,教程是无会见自行出的,其实是经验是生不同的,因为用户需好下手。但是这出于曾处在测试末尾阶段,我个人吗无留意。

于与产品经理交流后,产品经理人很好,只是说了极致好要加上。我想了想还是加了,添加的艺术十分简单,只是于viewWillAppear办法里加了点的逻辑,但也发现体验直线上升。这桩事对自感触颇可怜,只是一两行代码就能够一目了然改善用户体验,那么为什么非去开为?为什么一定要错过烦用户失去动脑,去动手也?


笔者结语:

本书中,作者说的接触还是大多的,比较杂,但实在是引发程序员代码之外思考的好的启蒙,有助于不给程序员局限为代码之中,能够多角度,多面考虑问题。

本文就联手到自之私房博客:传送门,欢迎时常来^^


正文就以版权印备案,如需要转载请看版权印。48422928

收获授权