中昔论文发表放心,risk assessmentt,KMCA)分成专家(Expertise)。学习课程O_essons Learned),知识文档

我现在做的可能看起来比较有趣:&br&&br&Java用来开发对接集团的一些公用中间件的工具,这些中间件多数是Java的一些基础设置。Java框架的xml配置是出了名的臭名远扬,一个大工程就是10w行java代码搭配4w行xml,想要追踪一个逻辑,得从各种不同的模板、框架、xml配置中纠结很久。所以如果不是历史原因,Java尽可能不用。配置要简单,过度用配置来代替程序逻辑是不合适的。&br&&br&c++用来开发一些性能攸关又需要一定扩展性的算法部件,比如算ctr、qr、推荐的工具等等,这些其实可以不使用c++,只不过部门传统,保持尊重而已。开发效率奇低,性能却未必高多少。&br&&br&Go用来开发高性能的并发服务器,用于处理复杂的业务逻辑交互,并用Go为基础来支持C++和python等工具开发的部件。目前Go有逐步替代C++的趋势,性能不差,效率奇高。&br&&br&Python用处更广,预研算法、增强bash、代替Java用来快速开发MapReduce任务。常用的C++和Java工具要么有Python版,要么我们自己封装个python接口,一切都是为了提高开发效率。&br&&br&C的用处比较微妙,作为一种粘合剂来使用。c++,python,go,java语言之间的互通性就是通过c来保证的,因为每一种语言都有自己的解决方案保证能和c进行通信:c++是extern &C&,python是ctypes,java是jni,Go是cgo。通过c,能将这一切很完美的结合在一起,在一个程序中同时运行多种语言的部件不是痴人说梦。This is the fun part.
我现在做的可能看起来比较有趣:Java用来开发对接集团的一些公用中间件的工具,这些中间件多数是Java的一些基础设置。Java框架的xml配置是出了名的臭名远扬,一个大工程就是10w行java代码搭配4w行xml,想要追踪一个逻辑,得从各种不同的模板、框架、xml配置…
grub 本身就是一个系统,它与 linux 无关,你可以用 grub 启动 windows。&br&&br&grub 系统在引导区,它从引导区直接启动,并内置了文件系统,所以不存在鸡蛋问题。&br&&br&在 grub 中选择内核的过程,全部都由 grub 这个系统控制,与 linux 无关,此时 linux 还根本没有启动。&br&&br&grub 这个系统读取了 /boot/grub.conf,然后引导了 linux 内核之后,才把控制权交给 linux 系统,之后才是 linux 的事,所以读取 grub.conf 与 linux 内核没有任何关系。
grub 本身就是一个系统,它与 linux 无关,你可以用 grub 启动 windows。grub 系统在引导区,它从引导区直接启动,并内置了文件系统,所以不存在鸡蛋问题。在 grub 中选择内核的过程,全部都由 grub 这个系统控制,与 linux 无关,此时 linux 还根本没有启…
我分享一些我收集到的博客和微博信息&br&酷壳陈皓:
&a href=&/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&,他的微博: &a href=&/haoel& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/haoel&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&云风: &a href=&/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& ,他的微博: &a href=&/deepcold& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/deepcold&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& &br&冯大辉:
&a href=&http://www.dbanotes.net/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&dbanotes.net/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& ,他的微博:
&a href=&/fenng& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/fenng&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& &br&关注NoSQL的,NoSQLFan: &a href=&/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& , 微博: &a href=&/nosqlfan& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/nosqlfan&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& &br&&br&新浪研发中心的博客:
&a href=&.cn/sinardblog& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&.cn/sinard&/span&&span class=&invisible&&blog&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &br&百度搜索研发部博客: &a href=&http://www./& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& &br&淘宝核心系统团队博客:
&a href=&/blog/cs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/blog/cs/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&
我分享一些我收集到的博客和微博信息酷壳陈皓: ,他的微博: 云风:
,他的微博:
,他的微博:
关注NoSQL的,N…
&a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&C++ Concurrency in Action by Anthony Williams&i class=&icon-external&&&/i&&/a&&br&这本主要介绍C++11标准库的并行特性,不错的多线程编程入门&br&&br&&a href=&http://www.cs.usfca.edu/~peter/ipp/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&An Introduction to Parallel Programming&i class=&icon-external&&&/i&&/a&&br&敝校高性能计算导论课的教材,讲MPI/pthreads/OpenMP;MPI很老但还是值得一学,可以看作分布式计算的汇编语言&br&&br&&a href=&/High-Performance-Parallelism-Pearls/James-Reinders/isbn-7/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&High Performance Parallelism Pearls, 1st Edition&i class=&icon-external&&&/i&&/a&&br&Cookbook式的书,一章讲一个问题/技巧。适合进阶者;也有讲到前两本没讲的GPGPU;去年11月新出,我正准备看&br&&br&以上几本书不仅限于Linux。。Win下也很容易搭环境练习&br&&br&&a href=&/en-us/intel-education-offerings/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Intel Education Offerings&i class=&icon-external&&&/i&&/a&&br&Linux下非商业用途可以免费用Intel的C++工具链
这本主要介绍C++11标准库的并行特性,不错的多线程编程入门敝校高性能计算导论课的教材,讲MPI/pthreads/OpenMP;MPI很老但还是值得一学,可以看作分布式计算的汇编…
&a href=&/p/leveldb/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&leveldb -
A fast and lightweight key/value database library by Google.&i class=&icon-external&&&/i&&/a&&br&理由如下:&br&&ol&&li&Google出品,遵循Google C++编码规范。&br&&/li&&li&作者是Jeff Dean大神。&br&&/li&&li&涉及查找、缓存、文件读写、多线程、跨平台等诸多常见问题。&br&&/li&&li&最新版本1.15.0代码量也不到2万行。&/li&&li&基础的key-value数据库,广泛用于Google内部和许多开源项目。&/li&&/ol&
理由如下:Google出品,遵循Google C++编码规范。作者是Jeff Dean大神。涉及查找、缓存、文件读写、多线程、跨平台等诸多常见问题。最新版本1.15.0代码量也不到2万行。基础的k…
楼主,我把你提问中“女生”字样删除了,希望你以后忘掉性别差异,虽然这个差异在求值时的确是个buff&br&&br&&br&你可以找一个美国大学学他们的计算机课程,课程设置和教材都能查到,书都能买到、下到。&br&那几所学校的本科课程安排差异比较大,全学也不是不可以。&br&&br&做好这几点&br&&ul&&li&开拓视野,无论是编程语言、工具还是领域,都应该广泛尝试&/li&&li&多写、多读代码,感兴趣的都可以写、读&/li&&li&理解透彻,你经手的代码,要保证你从上层设计到底层实现都了然于胸,能在脑中回放数据在网络-&内存-&缓存-&CPU的流向&/li&&/ul&要做好以上几点,必然要读好、学好这本书——《The Pragmatic Programmer》,&b&&u&程序员&/u&&/b&入门书,终极书,DRY,KISS。。。从做人到做程序员,包括上面说的几点,这本书教给了你一切,你所需的只是遵循书上的指导。&br&&br&&br&另外推荐你几本入门书:&br&《&b&&u&程序设计语言-实践之路&/u&&/b&》,程序语言入门书,这本书你现在就可以看,会极大扩展你的眼界,拉开你与普通人的差距。&br&《Structure and Interpretation of Computer Programs》,软件工程入门书,这本书请务必看完,可以不做完题,效果同上。&br&《Computer Systems: A Programmer’s Perspective》,计算机系统(软硬件)入门书。&br&龙书作为一本入门书,写得实在太过糟糕,据说Coursera上的斯坦福编译器课比较好,应该可以让你不用从龙书入门。&br&《The Design And Evolution Of C++》,你逃不掉对C++的学习,看这本书可以让你选择是成为守夜人还是守日人。。。。&br&《Code Complete》&br&&br&&br&&br&特别推荐:&br&&img src=&/53cbee23b0da02bc177eafc_b.jpg& data-rawwidth=&863& data-rawheight=&915& class=&origin_image zh-lightbox-thumb& width=&863& data-original=&/53cbee23b0da02bc177eafc_r.jpg&&
楼主,我把你提问中“女生”字样删除了,希望你以后忘掉性别差异,虽然这个差异在求值时的确是个buff你可以找一个美国大学学他们的计算机课程,课程设置和教材都能查到,书都能买到、下到。那几所学校的本科课程安排差异比较大,全学也不是不可以。做好这几…
1.选Linux&br&不管你打算学C,C++,JAVA,LISP,Scheme,Opengl,统统选Linux。&br&除非你要做Window的客户端和DirectX游戏。&br&&br&2.强迫自己写个最简单的Ftp或Http服务器,然后把并发容量做到单机1w&br&中间你能学会读标准,网络接口,队列,回调设计,内存管理,异常处理原则和性能定位工具的使用(别用已有网络库,只依赖系统调用)。&br&别在软件工程这类鸡汤上浪费时间。&br&把gdb和windbg的使用作为最重要的技能发展。&br&&br&3.做到2,你已经能灭掉市面上大多数30岁左右的面试官和不少35岁以下的面试官。&br&如果你能在面试前看完下面的书:&br&计算机程序的构造和解释&br&软件调试&br&深入理解计算机系统&br&程序员的自我修养&br&&br&基本上你和牛逼面试官的差距就只在:&br&数据库&br&分布式理论&br&架构&br&项目管理&br&某些工业语言&br&&br&而其他方面都不吃亏,甚至会占优。&br&&br&上面这些会真正让你在技术上变强,兼顾职业发展。&br&&br&只要有机会,就经常自己造轮子,和造轮子无用党比,过几年会发现&br&你能轻易看到他们看不到的风险。&br&你能轻易做到他们认为做不到的事。&br&你能更容易认识到很多问题的本质,而且并不只局限在软件技术层面。&br&&br&追逐某些大公司的职位而建立知识体系其实是很短视的,可惜我很晚才明白这个道理。&br&&br&还有最重要一点,你足够聪明又能吃苦,又想赚大钱,这个方向的投入和回报会很容易让你灰心
1.选Linux不管你打算学C,C++,JAVA,LISP,Scheme,Opengl,统统选Linux。除非你要做Window的客户端和DirectX游戏。2.强迫自己写个最简单的Ftp或Http服务器,然后把并发容量做到单机1w中间你能学会读标准,网络接口,队列,回调设计,内存管理,异常处理原…
&a href=&/subject/1769687/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Art of Software Testing, Second Edition (豆瓣)&i class=&icon-external&&&/i&&/a&&br&&a href=&/subject/3241679/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Foundations of Software Testing (豆瓣)&i class=&icon-external&&&/i&&/a&&br&经典书籍&br&&br&&a href=&/subject/3001368/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&How We Test Software at Microsoft (豆瓣)&i class=&icon-external&&&/i&&/a&&br&&a href=&/subject/7065508/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&How Google Tests Software (豆瓣)&i class=&icon-external&&&/i&&/a&&br&这两本大致看一看,了解他们是怎么做软件测试的&br&&br&&a href=&/subject/4590011/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Exploratory Software Testing (豆瓣)&i class=&icon-external&&&/i&&/a&&br&我喜欢推荐同事看的
经典书籍这两本大致看一看,了解他们是怎么做软件测试的
【入门&进阶篇】&br&&br&推荐@peng_gong的&a href=&http://zh.lucida.me/blog/on-learning-algorithms/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&我的算法学习之路&i class=&icon-external&&&/i&&/a&。该文里提及了不少通用的数据结构与算法教材,以及作者阅读的体会。&br&&br&如果文中的算法书都能hold住了,再接下两板斧:MIT的Advanced Data Structures和Advanced Algorithms两门课。另外还有一本&a href=&/Advanced-Data-Structures-Peter-Brass/dp//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Advanced Data Structures: Peter Brass: 4: : Books&i class=&icon-external&&&/i&&/a&,难度比MIT两门课小不少,篇幅适当,也讲了一些有趣的话题(making data structures dynamic/persistent, etc)&br&&br&【领域特定篇】&br&&br&&a href=&/Purely-Functional-Structures-Chris-Okasaki/dp/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Purely Functional Data Structures: Chris Okasaki: 2: : Books&i class=&icon-external&&&/i&&/a&&br&&a href=&/Pearls-Functional-Algorithm-Design-Richard/dp/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pearls of Functional Algorithm Design: 8: Computer Science Books @ &i class=&icon-external&&&/i&&/a&&br&对函数式语言程序员有用。&br&&br&&a href=&/Distributed-Algorithms-Intuitive-Wan-Fokkink/dp/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Distributed Algorithms: An Intuitive Approach: Wan Fokkink: 2: : Books&i class=&icon-external&&&/i&&/a&&br&分布式算法书。篇幅短,介绍直白。&br&&br&&a href=&/Hackers-Delight-Edition-Henry-Warren/dp/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hacker's Delight (2nd Edition): 8: Computer Science Books @ &i class=&icon-external&&&/i&&/a&&br&位运算黑魔法教材,对底层感兴趣的程序员可以看下。&br&&br&&a href=&/Algorithms-Strings-Maxime-Crochemore/dp//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Algorithms on Strings: Maxime Crochemore, Christophe Hancart, Thierry Lecroq: 0: : Books&i class=&icon-external&&&/i&&/a&&br&&a href=&/Parsing-Techniques-Practical-Monographs-Computer/dp/X& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Parsing Techniques: A Practical Guide (Monographs in Computer Science): Dick Grune, Ceriel J.H. Jacobs: 8: : Books&i class=&icon-external&&&/i&&/a&&br&做字符串处理有用。&br&&br&&a href=&/Foundations-Multidimensional-Structures-Kaufmann-Computer/dp//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Foundations of Multidimensional and Metric Data Structures (The Morgan Kaufmann Series in Computer Graphics): Hanan Samet: 1: : Books&i class=&icon-external&&&/i&&/a&&br&空间数据结构,做图形学/地理数据库等有用。&br&&br&&a href=&/Clever-Algorithms-Nature-Inspired-Programming-Recipes/dp//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Clever Algorithms: Nature-Inspired Programming Recipes: Jason Brownlee: 5: : Books&i class=&icon-external&&&/i&&/a&&br&少有的启发式算法综合教材,讲到的启发式算法很多,模拟退火/蚁群优化/遗传算法/神经网络等等均有涉及,有ruby示例。&br&&br&【一代宗师篇】&br&&br&&a href=&/Introduction-Analysis-Algorithms-2nd/dp/X/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&An Introduction to the Analysis of Algorithms (2nd Edition): Robert Sedgewick, Philippe Flajolet: 8: : Books&i class=&icon-external&&&/i&&/a&&br&Sedgewick又一力作,如书名,介绍分析算法复杂度的各种数学技巧。&br&&br&&a href=&/Handbook-Structures-Applications-Computer-Information/dp//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Handbook of Data Structures and Applications (Chapman & Hall/CRC Computer and Information Science Series): Dinesh P. Mehta, Sartaj Sahni: 4: : Books&i class=&icon-external&&&/i&&/a&&br&比Peter Brass的Advanced Data Structures还要Advanced得多的数据结构书,已经非常接近学术前沿了。可以当作wikipedia以外的数据结构参考书。。。&br&&br&&a href=&/Computer-Programming-Volumes-1-4A-Boxed/dp//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Art of Computer Programming, Volumes 1-4A Boxed Set: 1: Computer Science Books @ &i class=&icon-external&&&/i&&/a&&br&神作镇楼。
【入门&进阶篇】推荐@peng_gong的。该文里提及了不少通用的数据结构与算法教材,以及作者阅读的体会。如果文中的算法书都能hold住了,再接下两板斧:MIT的Advanced Data Structures和Advanced Algorithms两门课。另外还有一本
Linux kernel是个很大的项目, 从某个文件入手不是很切实际。对于初学者来讲, 总的来讲, 若是起初能看些内核类的书箱亦是极好, 这般你这内核有个更宏观的理解。这类的优秀书箱有: The Linux Kernel Development, understanding the linux kernel, Professional Linux Kernel Architecture等。 对于初学者, 建议看第一本先(关键是后两本太厚了 -_-// )&br&&br&之后, 你就对内核有个大概了解了, 你可以根据自己的喜好, 选择一个或N个子系统仔细看代码深究。 如, mm(memory management), fs(file system), block, network, kvm等等&br&&br&fs又有好多不同类型的文件系统, 如现在还是default文件系统的EXT4, 所谓的下一代文件系统Btrfs, 还有分布式文件系统, ceph 等。&br&&br&只要精通以上任何一个子系统, 工作由你挑 ;)&br&&br&当然, 很难, 所以, 骚年, 加油 。。。。
Linux kernel是个很大的项目, 从某个文件入手不是很切实际。对于初学者来讲, 总的来讲, 若是起初能看些内核类的书箱亦是极好, 这般你这内核有个更宏观的理解。这类的优秀书箱有: The Linux Kernel Development, understanding the linux kernel, Prof…
先把CSAPP啃完再说别的。&br&送上传送门:&br&&a href=&/question//answer/& class=&internal&&讲C语言内存管理的书籍或者博客? - RednaxelaFX 的回答&/a&&br&&a href=&/question//answer/& class=&internal&&编译器生成的汇编语句执行顺序为什么与C代码顺序不同? - RednaxelaFX 的回答&/a&
先把CSAPP啃完再说别的。送上传送门:
Jeff Atwood说过这么一句话:“&a href=&/code-tells-you-how-comments-tell-you-why/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Code Tells You How, Comments Tell You Why&i class=&icon-external&&&/i&&/a&”.&br&&br&其实,Jeff这句话并不准确,另外,我把其扩展一下——&br&&br&&b&
How & Details&/b&&br&&b&
How & Why&/b&&br&&br&可见,&b&代码并不会告诉你 Why,&/b&看代码只能靠猜测或推导来估计Why,是揣测,不准确,所以会有很多误解。&b&而且,我们每个人都知道,Why 这个东西是让你一通百通的东西,也是让人醍醐灌顶的东西。(&/b&这也是楼主为什么喜欢看书的原因,我也是&b&)&/b&&br&&br&但是,&b&代码会告诉你细节&/b&,这是书和文档不能给你的,&b&细节是魔鬼,细节决定成败&/b&,这样的话我们不但听过很多了,我们做技术的也应该体会过很多了。当然,我们也要承认,这些代码细节给人带来的快感毕竟不如知道Why后的快感大(至少对我是这样的)&br&&br&&b&
书和文档是人对人说的话,代码是人对机器说的话&/b&。&br&&br&所以,&br&&ol&&li&&b&如果你想知道人为什么要这么搞,那么你应该去看书,看文档(&/b&就像Effective C++、Code Complete、Design Pattern、Thinking in Java等等这样的书)&br&&/li&&li&&b&如果你要知道让机器干了什么?那你应该看代码!&/b&(就像Linus去看zlib的代码来找性能问题)&br&&/li&&/ol&因此,我认为都比较重要,关键看你的目的是什么了。&br&&ul&&li&&b&如果,你想要了解一种思想,一种方法,一种原理,一种思路,一种经验,恐怕,读书和读文档会更有效率一些&/b&,因为其中应该会有作者的思路的描述。比如像Effective C++之类的书,里面有很多对不同用法和设计的推敲,像TCP/IP详解里面也会对TCP算法的好坏的比较……这些思维方式能让你对技术的把握力更强。光看代码很难达到这种级别。(现在你知道什么样的书是好书了吧 ;-))&/li&&br&&li&&b&如果,你想了解的就是具体细节,比如:某协程的实现,某个模块的性能,某个算法的实现。那么,你还是要去读代码的&/b&。因为代码中会有更具体的处理(尤其是对于edge case或是一些代码技巧的东西)&br&&/li&&/ul&另外,看看下面的几个现像,你可以自己比较一下:&br&&ul&&li&很多时候,我们去读代码,那是因为没有文档,或是文档写得太差。&br&&/li&&li&很多时候,&b&你在google, stackoverflow, github过后,你会发现,你掌握的知识就是一块一块的碎片,即不系统,也不结构化,更别说融汇贯通了。你会觉得你需要好好地读一本书,系统地掌握知识,这种感觉你一定很强烈吧&/b&。&/li&&li&很多时候,在你去读别人代码的时候,你会因为基础知识或是原理不懂,或是你不知道为什么的情况下,你要么完全读不懂代码,要么就是会误解代码。(比如:如果你没有C语言和TCP原理的基础,你根本读不懂linux下TCP的相关代码的。我们因为误解代码用意而去修改代码造成的故障还少吗?)&/li&&li&很多时候,看到一个算法时或是一个设计时,比如Paxos这样的,你是不是会有想去看一下这个算法的实现代码是什么样的?如何才能实现的好?(但是如果你没看过Paxos的算法思想,我不认为你光看代码实现,就能收获到Paxos的思想)&/li&&li&很多时候,&b&当你写代码的时候,你能感觉得到自己写的代码有点别扭,怎么写都别扭,这个时候,你也会有想去看别人的代码是怎么实现的冲动&/b&。&/li&&li&…… ……&/li&&/ul&从代码中收获得大,还是从书中收获的大,不同的场景不同的目的下会有不同的答案。&br&&br&这里,谈一谈人的学习过程吧,从学习的过程中,我们来分析一下看代码和看书这两个活动。&br&&br&人对新事物的学习过程基本都是从“感性认识” 到 “理性认识”的。&br&&ul&&li&&b&如果你是个新手,那应该多读代码,多动手写代码&/b&,因为你需要的是“感性认识”,这个时候“理性认识”对你来说你体会不到。一是因为,你没有切身的感受,告诉你Why你也体会不到,另一方面,这个阶段,你要的不是做漂亮,而是做出来。所以,在新手&b&这个阶段,你会喜欢Github这样的东西&/b&。&/li&&br&&li&&b&如果你是个老手,那么你有多年的“感性认识”了,你的成长需要更多的“理性认识”&/b&,因为这个阶段,一方面,你会不满足于做出来,你会想去做更牛更漂亮的东西,另一方面,你知道的越多,你的问题也越多,你迫切地需要知道Why!这个时候,你就需要大量的找牛人交流(读牛人的书,是一种特殊的人与人的交流),所以,&b&这个阶段,你会喜欢读好的书和文章的&/b&。&br&&/li&&/ul&然而,对于计算机行业这个技术创新超强技术繁多的行业来说,我们每个人都既是新手,也是老手。&br&&br&(最后,谢谢楼主专门来微博上邀请我回答)
Jeff Atwood说过这么一句话:“”.其实,Jeff这句话并不准确,另外,我把其扩展一下—— 代 码 =& What, How & Details 文档/书 =& What, How & Why可见,代码并不会告诉你 Why,看代码只能靠猜测或推导来估计Why…
MIT算法导论第一堂课:&br&每天都编程 x年后一定会变成专家 (忘了x多少 不是重点&br&&br&轮子多造多模仿 能力自然提升&br&什么发展都是从量到质的 要相信&br&&br&现在我也是搞系统编程 除了看source code和造轮&br&也是可以有空刷刷acm的&br&而且只有帮助没有坏处喔&br&系统编程一旦考虑到效能问题 离不开经典的一些算法的 &br&&br&显然大部分的我们都不会成为高手如温赵轮&br&&br&但是成为编程好手 进个好公司 钱多赚些 生活舒服些 应该是普遍程序员的共同目标&br&&br&不要想太多 拼命code就是了&br&&br&共勉&br&&br&如此。
MIT算法导论第一堂课:每天都编程 x年后一定会变成专家 (忘了x多少 不是重点轮子多造多模仿 能力自然提升什么发展都是从量到质的 要相信现在我也是搞系统编程 除了看source code和造轮也是可以有空刷刷acm的而且只有帮助没有坏处喔系统编程一旦考虑到效能问…
SEEDLabs(&a href=&http://www.cis.syr.edu/~wedu/seed/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&cis.syr.edu/~wedu/seed/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& )是雪城大学杜文亮教授创立的,十几年来得到了全球上百所大学的认可。建议每个认为找不到合适学习资料的人都看看,之后至少可以对自己到底是不是真想学有更接近于真实的认识。
SEEDLabs( )是雪城大学杜文亮教授创立的,十几年来得到了全球上百所大学的认可。建议每个认为找不到合适学习资料的人都看看,之后至少可以对自己到底是不是真想学有更接近于真实的认识。
vczh 说计算机领域有三座大山,他们分别是图形学、编译原理、操作系统。征服任何一座即可傲视群雄。这三个中的任何一个都是一柄游龙剑,游龙一出,万剑臣服!&br&不要看周围的人都在学这个学那个,嘴里不断的蹦出各种新名词,这都是浮躁!你只要学好了三者当中任何一个就能拥有浑厚的内力,成为他们当中的扫地僧,虽然一般不出手,但武功深不可测。既然你在学图形学相关领域,为什么不继续钻研呢,这才是真技术,而不是IT 界浮躁的流行的花拳绣腿。&br&————————————————补充———————————————————&br&评论里有朋友说:“这话让做上层程序开发的咋想?”&br&对于前端和上层的朋友,是不是这三门就没用了呢,其实未必~这三门是现代计算机行业发展起来的基础,试想没有操作系统,怎么运行程序,没有编译器,怎么写程序,没有图形学,今天的各种图形界面效果怎么来的,这三个是计算机的祖宗了。所以我依然要说这三门很基础,但是不一定每个人都要学好全部的,这也不可能(丹尼斯里奇也没做到),&b&能够学好三门里面的一小部分知识点,在以后编程的时候突然觉得,这个知识点我在操作系统或编译原理里面见过,这就足够了,或许就是前辈们传下来这一点点知识让你从其他人中脱颖而出呢&/b&。比如,用java写多线程,玩转多线程当然要熟悉操作系统里面的很多调度算法,简直有奇效!还有学编译原理不是让你写编译器啊(世界上有几个写编译器的)。。。那里面的语法分析、词法分析、正规式,会在潜移默化中让你觉得写一些文本处理类的程序简直易如反掌,还有代码优化什么的。至于图形学,我觉得这东西对于游戏开发者、前端工程师什么很有用处吧。&br&理解事物内部的原理要比理解其外在本身难得多,写了这么多不是说我自己都了解,我本身是写底层开发的,对于上层也是在看着身边的朋友的经历以及结合自己的见闻来说的。其实本人一直不喜欢学图形学。。。提不起兴趣。。。编译原理学的也一般般,目前方向是操作系统底层,当然还是渣。。。我以小渣的身份说这些,实在是想说。。。IT现在太浮躁了,实在不明白那些速成java的,如果想深入学习java虚拟机机制,不明白操作系统和编译原理怎么学得下去,要一步一步来学,这三门里面的某些知识会在特定时候让你受益匪浅,适当的学点,也许就是加深自身内功的关键。&br&&br&题主说他学的不是图形学,而是图像处理(计算机视觉),我个人觉得这两者是互逆的关系,一个是对外输出,一个是从外输入。还是请计算机视觉大神们来回答吧,我不班门弄斧了。因为我图形学比较渣,但是里面的算法和概念让我觉得,没有图形学这世界简直不可想象。。。反正已经歪楼了,继续歪吧~~~&br&——————————————————————————————————————————&br&以上都是我胡说的,别去浪费时间学什么 编译原理、图形学、操作系统这些没用的,去培训班报个名,学三个月出来照样赚大钱,学上面那些没用的在很多代码猴眼里是赚不到钱的,什么计算机技术,什么算法、离散数学,全都见鬼吧。哈哈哈哈哈。我是猴子,我是猴子,我是猴子吃香蕉,哈哈哈哈哈。
vczh 说计算机领域有三座大山,他们分别是图形学、编译原理、操作系统。征服任何一座即可傲视群雄。这三个中的任何一个都是一柄游龙剑,游龙一出,万剑臣服!不要看周围的人都在学这个学那个,嘴里不断的蹦出各种新名词,这都是浮躁!你只要学好了三者当中…
本人在 2015 年校招拿了 BAT 以及网易游戏等 offer,而且基本上都给了 Special,那就从我的角度来谈谈今年校招的体会。&br&&br&&b&1. 冰冻三尺非一日之寒&/b&&br&综合身边一些拿到牛 offer 的同学,有个共同的特点就是:&b&热爱这个行业&/b&。一个人在某个领域的成就是和自身在相关领域投入的时间和精力成正相关的。付出了多少,虽然短期内收益微乎其微,如果经过数年的持续努力,便会由量变产生惊人的质变。比如多读书、多看代码,一些计算机编程方面的经典书籍、GitHub 上面一些 star 越千的优秀开源项目,绝对值得多花时间研读。&br&&br&我自身的情况大概是本科期间积累了 10 万行的代码量,有了这个基础硕士期间阅读一些代码呀,参与一些开源呀,就变得水到渠成。&br&&br&&b&2. 主动培养自己的动手能力&/b&&br&算法方面可以适当阅读算法导论、算法引论等书籍,多刷刷 leetcode, UVa 之类的培养出一定的解题思维。虽然说一些算法在工程中很难用到,但是解决问题的思路以及不断去优化业务代码的想法,这些意识是可以通过算法训练得到的。&br&&br&一般国内的互联网公司还是比较看重项目经验这块的,也就是你曾经做过什么,能突出个性的地方也在于此了。这个方面可以从一些国外大学课程的大作业慢慢培养,如系统设计方面经典的有 MIT &a href=&http://css.csail.mit.edu/6.824/2014/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&6.824 Home Page: Spring 2014&i class=&icon-external&&&/i&&/a&,CMU &a href=&http://www.cs.cmu.edu/~dga/15-440/F12/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&cs.cmu.edu/~dga/15-440/&/span&&span class=&invisible&&F12/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
,CMU &a href=&https://www.cs.cmu.edu/~410/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&15-410, Operating System Design and Implementation&i class=&icon-external&&&/i&&/a& 。如果跟着进度做完大作业的话,相信工程能力以及对系统设计的理解都会有很大的提高。&br&&br&&b&3. 核心竞争力&/b&&br&这个问题很大啦,那我也冒昧的说一下自己的理解。曾经很长一段时间内,我都不太清楚自己未来要干什么。不过幸运的是,身边总有一些优秀的同学在激励自己前行(寝室 7 个人有 6 个拿到网易游戏 offer 我会乱说 :-p ),而且在读研之初就得到 &a data-hash=&cc915bd9ccdf5e& href=&/people/cc915bd9ccdf5e& class=&member_mention& data-editable=&true& data-title=&@靖难& data-tip=&p$b$cc915bd9ccdf5e&&@靖难&/a& 学长的指点实在是人生之幸。那么问题来了,花了这么多时间去思考自己要干嘛就这么重要吗?我觉得&b&非常重要&/b&。当有了一个努力的方向,就会不断的去靠近,围绕着这个点不断探索,最终形成别人没办法轻易超越的壁垒。&br&&br&&b&4. 关于面试&/b&&br&&b&面试在于突出自己的闪光点,体现自己的不可替代性。&/b&当你一步步走过上述几个阶段的时候,便会发现其实 BAT 的 offer 并没有想象中那么难,&b&难的是克服惰性不断的去超越自己&/b&。&br&&br&找工作要从实习抓起。这并不是说实习一定会做一些多么核心的事情,而是一场面试几十分钟,面试官也无法清楚的判断你的实力,需要从你过往在哪实习过以及拿到过哪些 offer 来对你进行综合判断。&br&&br&GitHub,StackOverflow 等是加分点,参与过开源项目大加分。嘴里说出的话可能有可以虚假夸大的成分,但是 GitHub 上面的代码提交记录以及代码质量不会骗人。我面试的过程中,就有几个面试官主动索要 GitHub 账号地址 &a href=&/kedebug& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&kedebug · GitHub&i class=&icon-external&&&/i&&/a& 并且当场登陆查看相关项目情况,这都是能够提升自身形象大大利好的事情。&br&&br&&b&Update &/b&:&br&感谢大家的支持,后续我会把之前的面试经历更新在我的博客 &a href=&/blog/campus-offer-2015/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&2015 校招总结&i class=&icon-external&&&/i&&/a&,欢迎大家继续关注。
本人在 2015 年校招拿了 BAT 以及网易游戏等 offer,而且基本上都给了 Special,那就从我的角度来谈谈今年校招的体会。1. 冰冻三尺非一日之寒综合身边一些拿到牛 offer 的同学,有个共同的特点就是:热爱这个行业。一个人在某个领域的成就是和自身在相关领…
移动端的我不知道,,,我列几本我觉得好的给你:&br&&br&&ol&&li&Modern Operating Systems 4th,这本书是教材,Tanenbaum 是谁不用多说了吧,估计 Linus 见了他也得叫一声老师。这本书理论性较强,讲的是普遍原理,但是不够深入,如调度算法等等,有时就是一句话,但是不会跟你说明具体实现。不过是一本操作系统入门的好教材。&br&&/li&&/ol&&img src=&/7ece7cbc9ece5d9a150dd85c8b803507_b.jpg& data-rawwidth=&260& data-rawheight=&331& class=&content_image& width=&260&&&br&&br&2. Operating System Concepts 9th,这本书也叫“恐龙书”,名气与第一本齐名,也是教材,第九版对比前书第三版 (第四版我没看) 来说更好,对于算法的解释更详细,但是对于一些特别基础的东西,比如 MMU 工作起来大概是什么样子的等描述不如第一本详细。&br&&img src=&/6ca272fe67b999c1d1bf5_b.jpg& data-rawwidth=&241& data-rawheight=&346& class=&content_image& width=&241&&&br&3. Operating Systems Design and Implementation 3rd,还是 Tanenbaum 的书,主要基于 Minix 讲操作系统实现,这本书比前两本书,要落地一些,理论性不是那么强。但是建议你看完前两本任意一本再看这本。&br&&br&&img src=&/a61f3f55c5fdeb65760ffdae7df015a9_b.jpg& data-rawwidth=&141& data-rawheight=&182& class=&content_image& width=&141&&&br&4. 下面就是一些特定平台的书了,基于以上理论,这些书对于特定平台的实现讲的非常深入,比如都是内核,OS X,Windows 实现有何不同,你就要看这些了&br&&br&比如 Windows,你要看 Windows Internals 6th&br&&br&&img src=&/bf1ab9000e_b.jpg& data-rawwidth=&260& data-rawheight=&317& class=&content_image& width=&260&&&br&比如 OS X,你要看 Mac OS X Internals: A Systems Approach&br&&br&&img src=&/1f38f3c93fe030c9ff17c_b.jpg& data-rawwidth=&260& data-rawheight=&343& class=&content_image& width=&260&&&br&&br&或 Mac OS X and iOS Internals: To the Apple's Core&br&&br&&img src=&/4b166d8cfc8f50becf80f596e2404086_b.jpg& data-rawwidth=&260& data-rawheight=&329& class=&content_image& width=&260&&&br&&br&移动操作系统,iOS 没有什么特别好的书,因为是闭源的,但是由于其和 OS X 同源,很多东西你可以参考 OS X 以及 XNU 源代码。Android 我不关心也没兴趣,也不知道,Windows 要问做 WP 开发的朋友。&br&&br&另外,看这些书,你要有一些 C 语言的功底,不然一些例子什么的你搞不定,还要有点汇编语言的知识,不然源代码很多你也看不太懂。&br&&br&&br&另外,如果觉得这些书很贵,可以到诸如 MIT 等大学网站找操作系统课程的讲义看,都非常不错。免费。
移动端的我不知道,,,我列几本我觉得好的给你:Modern Operating Systems 4th,这本书是教材,Tanenbaum 是谁不用多说了吧,估计 Linus 见了他也得叫一声老师。这本书理论性较强,讲的是普遍原理,但是不够深入,如调度算法等等,有时就是一句话,但是不…
这个还是很好说清楚的。
&br&&br&假设你是一个机场的空管, 你需要管理到你机场的所有的航线, 包括进港,出港, 有些航班需要放到停机坪等待,有些航班需要去登机口接乘客。
&br&&br&你会怎么做?
&br&&br&最简单的做法,就是你去招一大批空管员,然后每人盯一架飞机, 从进港,接客,排位,出港,航线监控,直至交接给下一个空港,全程监控。
&br&&br&那么问题就来了:
&br&&ul&&li&很快你就发现空管塔里面聚集起来一大票的空管员,交通稍微繁忙一点,新的空管员就已经挤不进来了。 &br&&/li&&li&空管员之间需要协调,屋子里面就1, 2个人的时候还好,几十号人以后 ,基本上就成菜市场了。&br&&/li&&li&空管员经常需要更新一些公用的东西,比如起飞显示屏,比如下一个小时后的出港排期,最后你会很惊奇的发现,每个人的时间最后都花在了抢这些资源上。 &br&&/li&&/ul&&br&现实上我们的空管同时管几十架飞机稀松平常的事情, 他们怎么做的呢?
&br&他们用这个东西
&br&&img src=&/583d5ba3cee12e78befa8e2b749f4269_b.jpg& data-rawwidth=&550& data-rawheight=&534& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&/583d5ba3cee12e78befa8e2b749f4269_r.jpg&&这个东西叫flight progress strip.
每一个块代表一个航班,不同的槽代表不同的状态,然后一个空管员可以管理一组这样的块(一组航班),而他的工作,就是在航班信息有新的更新的时候,把对应的块放到不同的槽子里面。&br&&br&&i&这个东西现在还没有淘汰哦,只是变成电子的了而已。。&/i&&br&&br&是不是觉得一下子效率高了很多,一个空管塔里可以调度的航线可以是前一种方法的几倍到几十倍。
&br&&br&如果你把每一个航线当成一个Sock(I/O 流),
空管当成你的服务端Sock管理代码的话.&br&&br&&b&第一种方法就是最传统的多进程并发模型 (每进来一个新的I/O流会分配一个新的进程管理。)&/b&&br&&b&第二种方法就是I/O多路复用 (单个线程,通过记录跟踪每个I/O流(sock)的状态,来同时管理多个I/O流 。)&/b&&br&&br&&i&其实“I/O多路复用”这个坑爹翻译可能是这个概念在中文里面如此难理解的原因。所谓的I/O多路复用在英文中其实叫 I/O multiplexing. 如果你搜索multiplexing啥意思,基本上都会出这个图:
&br&&/i&&img src=&/5d8e39d83e931da6ba3b6bcc_b.png& data-rawwidth=&250& data-rawheight=&177& class=&content_image& width=&250&&&i&于是大部分人都直接联想到&一根网线,多个sock复用& 这个概念,包括上面的几个回答, 其实不管你用多进程还是I/O多路复用, 网线都只有一根好伐。&b&多个Sock复用一根网线这个功能是在内核+驱动层实现的&/b&。
&br&&/i&&br&&b&重要的事情再说一遍: I/O multiplexing 这里面的 multiplexing 指的其实是在单个线程通过记录跟踪每一个Sock(I/O流)的状态(对应空管塔里面的Fight progress strip槽)来同时管理多个I/O流&/b&. 发明它的原因,是尽量多的提高服务器的吞吐能力。&br&&br& 是不是听起来好拗口,看个图就懂了.&br&&br&&img src=&/18d8525aceddb840ea4c_b.jpg& data-rawwidth=&400& data-rawheight=&119& class=&content_image& width=&400&&&br&在同一个线程里面, 通过拨开关的方式,来同时传输多个I/O流, (学过EE的人现在可以站出来义正严辞说这个叫“时分复用”了)。
&br&&br&&i&什么,你还没有搞懂“一个请求到来了,nginx使用epoll接收请求的过程是怎样的”, 多看看这个图就了解了。提醒下,ngnix会有很多链接进来, epoll会把他们都监视起来,然后像拨开关一样,谁有数据就拨向谁,然后调用相应的代码处理。&/i&&br&&br&------------------------------------------&br&了解这个基本的概念以后,其他的就很好解释了。
&br&&br&&b&select, poll, epoll 都是I/O多路复用的具体的实现,之所以有这三个鬼存在,其实是他们出现是有先后顺序的。
&/b&&br&&br&I/O多路复用这个概念被提出来以后, select是第一个实现 (1983 左右在BSD)里面实现的。
&br&&br&select 被实现以后,很快就暴露出了很多问题。
&br&&ul&&li&select 会修改传入的参数数组,这个对于一个需要调用很多次的函数,是非常不友好的。&br&&/li&&li& select 如果任何一个sock(I/O stream)出现了数据,select 仅仅会返回,但是并不会告诉你是那个sock上有数据,于是你只能自己一个一个的找,10几个sock可能还好,要是几万的sock每次都找一遍,这个无谓的开销就颇有海天盛筵的豪气了。&br&&/li&&li&select 只能监视1024个链接, 这个跟草榴没啥关系哦,linux 定义在头文件中的,参见&em&FD_SETSIZE。&/em&&/li&&li&select 不是线程安全的,如果你把一个sock加入到select, 然后突然另外一个线程发现,尼玛,这个sock不用,要收回。对不起,这个select 不支持的,如果你丧心病狂的竟然关掉这个sock, select的标准行为是。。呃。。不可预测的, 这个可是写在文档中的哦.&/li&&/ul&
“If a file descriptor being monitored by select() is closed in another thread, the result is
unspecified”&br&
霸不霸气&br&&br&于是14年以后(1997年)一帮人又实现了poll,
poll 修复了select的很多问题,比如
&br&&ul&&li&poll 去掉了1024个链接的限制,于是要多少链接呢, 主人你开心就好。&br&&/li&&li& poll 从设计上来说,不再修改传入数组,不过这个要看你的平台了,所以行走江湖,还是小心为妙。&/li&&/ul&&b&其实拖14年那么久也不是效率问题, 而是那个时代的硬件实在太弱,一台服务器处理1千多个链接简直就是神一样的存在了,select很长段时间已经满足需求。
&/b&&br&&br&但是poll仍然不是线程安全的, 这就意味着,不管服务器有多强悍,你也只能在一个线程里面处理一组I/O流。你当然可以那多进程来配合了,不过然后你就有了多进程的各种问题。&br&&br&于是5年以后, 在2002, 大神 Davide Libenzi 实现了epoll.
&br&&br&epoll 可以说是I/O 多路复用最新的一个实现,epoll 修复了poll 和select绝大部分问题, 比如:
&br&&ul&&li&epoll 现在是线程安全的。 &br&&/li&&li&epoll 现在不仅告诉你sock组里面数据,还会告诉你具体哪个sock有数据,你不用自己去找了。 &br&&/li&&/ul&&br&epoll 当年的patch,现在还在,下面链接可以看得到:&br&&a href=&http://www.xmailserver.org/linux-patches/nio-improve.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&/dev/epoll Home Page&i class=&icon-external&&&/i&&/a&&br&&br&贴一张霸气的图,看看当年神一样的性能(测试代码都是死链了, 如果有人可以刨坟找出来,可以研究下细节怎么测的).
&br&&img src=&/5a56c53ed22a3f6dfeab4_b.png& data-rawwidth=&640& data-rawheight=&480& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/5a56c53ed22a3f6dfeab4_r.png&&&br&&i&横轴Dead connections 就是链接数的意思,叫这个名字只是它的测试工具叫deadcon. 纵轴是每秒处理请求的数量,你可以看到,epoll每秒处理请求的数量基本不会随着链接变多而下降的。poll 和/dev/poll 就很惨了。&/i&&br&&br&可是epoll 有个致命的缺点。。只有linux支持。比如BSD上面对应的实现是kqueue。
&br&&br&其实有些国内知名厂商把epoll从安卓里面裁掉这种脑残的事情我会主动告诉你吗。什么,你说没人用安卓做服务器,尼玛你是看不起p2p软件了啦。 &br&&br&而ngnix 的设计原则里面, 它会使用目标平台上面最高效的I/O多路复用模型咯,所以才会有这个设置。一般情况下,如果可能的话,尽量都用epoll/kqueue吧。&br&&br&详细的在这里:&br&&a href=&http://nginx.org/en/docs/events.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Connection processing methods&i class=&icon-external&&&/i&&/a&&br&&br&&i&PS: 上面所有这些比较分析,都建立在大并发下面,如果你的并发数太少,用哪个,其实都没有区别。 如果像是在欧朋数据中心里面的转码服务器那种动不动就是几万几十万的并发,不用epoll我可以直接去撞墙了&/i&。
这个还是很好说清楚的。
假设你是一个机场的空管, 你需要管理到你机场的所有的航线, 包括进港,出港, 有些航班需要放到停机坪等待,有些航班需要去登机口接乘客。
你会怎么做?
最简单的做法,就是你去招一大批空管员,然后每人盯一架飞机, 从进港,接客…
尤其不认可W3school之类的东西,不够深度,理解不深,比起这个更建议看官方文档,中文不清楚,看英文的。&br&&br&&b&&u&入门视频:&/u&&/b&&br&入门视频推荐:&a href=&/special/opencourse/buildingdynamicwebsites.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&哈佛大学公开课:构建动态网站&i class=&icon-external&&&/i&&/a&&br&&a href=&/php-mysql-tutorial/?siteID=4JWKdWwRqkY-ytwjIDhXwLSMlpq0Rn45Wg&LSNPUBID=4JWKdWwRqkY& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Beginner PHP and MySQL Tutorial&i class=&icon-external&&&/i&&/a&&br&另,java版的 &a href=&/special/programming/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&斯坦福大学公开课:编程方法学&i class=&icon-external&&&/i&&/a&推荐看看。 &br&若实在想看国内的,可看下:&a href=&/course/list?c=php& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&慕课网-国内最大的IT技能学习平台&i class=&icon-external&&&/i&&/a&&br&&br&&u&&b&关于书籍&/b&&/u&:&br&&div class=&highlight&&&pre&&code class=&language-text&&原则:只看国外的,只用Google,只用英文. 一般用图灵的技术书籍。
&/code&&/pre&&/div&推荐书籍:&br&&ol&&li&入门篇:《PHP和MySQL Web开发(第四版)》&br&&/li&&li&进阶篇:《深入PHP 面向对象、模式与实践》&br&&/li&&li&钻研篇:《代码大全》《重构 改善既有代码的设计》《程序员修炼之道 从小工到专家》《人月神话》,其他:数据结构与算法、设计模式、安全、最佳实践。&/li&&/ol&&u&&b&&br&&br&在线教程&/b&&/u&:&br&&ol&&li&推荐一个在线学习: &a href=&/courses/web-beginner-en-StaFQ/0/1?curriculum_id=d510dd89003eb8& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Introduction to PHP&i class=&icon-external&&&/i&&/a&&/li&&/ol&&b&&br&&br&其他资源&/b&:&br&&ol&&li&基础,官方文档 &a href=&http://php.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PHP: Hypertext Preprocessor&i class=&icon-external&&&/i&&/a&&br&&/li&&li&关于问答,使用&a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Stack Overflow&i class=&icon-external&&&/i&&/a&(任何疑问,用g),&a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Quora - Your Best Source for Knowledge&i class=&icon-external&&&/i&&/a& (业余时间看看), &a href=&/What-are-the-best-blogs-for-a-PHP-developer& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&What are the best blogs for a PHP developer?&i class=&icon-external&&&/i&&/a&,国内:&a href=&http://www.dewen.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&德问:编程社交问答&i class=&icon-external&&&/i&&/a&,&a href=&/t/php& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&php - SegmentFault&i class=&icon-external&&&/i&&/a&&br&&/li&&li&其他教程,推荐&a href=&/php/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SitePoint PHP&i class=&icon-external&&&/i&&/a& ,&a href=&/categories/php& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/categ&/span&&span class=&invisible&&ories/php&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&/li&&li&使用一个MVC框架,&u&从面向对象开始,远离面向过程&/u&,推荐laravel ,初学可CI入门&/li&&li&不停的做项目。coding到一定数量,才会明白其中道理&/li&&li&&u&做好的程序员,远离百度,使用Google,学会用英语搜索&/u&&/li&&li&PHP之道:&a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PHP: The Right Way&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PHP 最佳实践: 一份简短的关于 PHP 容易混淆知识点的实用指南&i class=&icon-external&&&/i&&/a&&/li&&li&国内博客:&a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&风雪之隅-Laruence的博客&i class=&icon-external&&&/i&&/a& , &a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&火丁笔记 &i class=&icon-external&&&/i&&/a&,&a href=&.cn/s/blog_466cy.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&杨建:网站加速--Cache为王篇&i class=&icon-external&&&/i&&/a& ,&a href=&http://zyan.cc/category/15/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&张宴&i class=&icon-external&&&/i&&/a&博客.&/li&&li&Github资源:&a href=&/justjavac/free-programming-books-zh_CN& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&justjavac/free-programming-books-zh_CN · GitHub&i class=&icon-external&&&/i&&/a&&a href=&/justjavac/free-programming-books-zh_CN& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&justjavac/free-programming-books-zh_CN · GitHub&i class=&icon-external&&&/i&&/a&&a href=&/nemoTyrant/manong& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&nemoTyrant/manong · GitHub&i class=&icon-external&&&/i&&/a&&/li&&/ol&&br&&b& update:&/b&&br&某些人说我这是装逼回答,好吧。我是觉得这些资料不错,我平时也在用,如果大家有好的资源也可以分享出来啊。
尤其不认可W3school之类的东西,不够深度,理解不深,比起这个更建议看官方文档,中文不清楚,看英文的。入门视频:入门视频推荐:另,java版的 推荐看看。 若实…
&blockquote&这篇帖子发出以后,某豆荚的HR居然把我list2里的朋友(list1里的部分)私了个遍,希望没给大家带来困扰。另外,请付我广告费,谢谢!节约人力成本不是这么节约的,不然我拿截图挂你。&/blockquote&&br&&img data-rawheight=&401& data-rawwidth=&600& src=&/6ffcd59a572ca351fc4a2f2_b.jpg& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/6ffcd59a572ca351fc4a2f2_r.jpg&&&a href=&/people/98c3d502b9dc1c32f5e4a19de2173f7a& data-hash=&98c3d502b9dc1c32f5e4a19de2173f7a& class=&member_mention& data-editable=&true& data-title=&@林建入& data-tip=&p$b$98c3d502b9dc1c32f5e4a19de2173f7a&&@林建入&/a&&a href=&/people/e11b5b6012eaecca58f999a85f5fd645& data-hash=&e11b5b6012eaecca58f999a85f5fd645& class=&member_mention& data-editable=&true& data-title=&@薛非& data-tip=&p$b$e11b5b6012eaecca58f999a85f5fd645&&@薛非&/a&&br&&br&P.S. 看了一眼所有答案,没人提到我,以后可以安心的做段子手了,真开(心)心(酸)。&br&&br&好吧,我决定正儿八经按照我知道的人做一个list(排名随性,想到就更新),我对&b&值得关注&/b&的理解是这些人还活跃在知乎 / 微博一线,并且正在或曾经大放异彩:&br&&a href=&/people/winter-25& class=&internal&&winter&/a&,&br&&a href=&/people/jeffz& class=&internal&&赵劼&/a&,&br&&a href=&/people/rainy-vczh& class=&internal&&vczh&/a& & &a href=&/people/chen-meng-meng-19& class=&internal&&陈萌萌&/a&,&br&&a href=&/people/yunshu& class=&internal&&云舒&/a&,&br&&a href=&/people/evilcos& class=&internal&&余弦&/a&,&br&&a href=&/people/luo-wen-yi-36& class=&internal&&罗文益&/a&,&br&&a href=&/people/lifesinger& class=&internal&&玉伯&/a&,&br&&a href=&/people/shen& class=&internal&&李申申&/a&,&br&&a href=&/people/kennethtse& class=&internal&&Kenneth&/a&,&br&&a href=&/people/cao-zheng& class=&internal&&曹政&/a&,&br&&a href=&/people/rednaxelafx& class=&internal&&RednaxelaFX&/a&,&br&&a href=&/people/sagacity& class=&internal&&池建强&/a&,&br&&a href=&/people/shotgun& class=&internal&&shotgun&/a&,&br&&a href=&/people/wuye9036& class=&internal&&空明流转&/a&,&br&&a href=&/people/yao-dong-27& class=&internal&&姚冬&/a&,&br&&a href=&/people/mu-peng-37& class=&internal&&mu peng&/a&,&br&&a href=&/people/tombkeeper& class=&internal&&tombkeeper&/a&,&br&&a href=&/people/giantchen& class=&internal&&陈硕&/a&,&br&&a href=&/people/robbin& class=&internal&&robbin&/a&,&br&&a href=&/people/fenng& class=&internal&&Fenng&/a&,&br&&a href=&/people/aton& class=&internal&&苏莉安&/a&,&br&&a href=&/people/marsliu& class=&internal&&刘鑫&/a&,&br&&a href=&/people/qin.chao& class=&internal&&覃超&/a&,&br&&a href=&/people/miloyip& class=&internal&&Milo Yip&/a&,&br&&a href=&/people/laruence& class=&internal&&Laruence&/a&,&br&&a href=&/people/initd& class=&internal&&小明&/a&,&br&&a href=&/people/po-ling& class=&internal&&朴灵&/a&,&br&&a href=&/people/xiao-jing-mo& class=&internal&&萧井陌&/a&,&br&&a href=&/people/huang-jiang-zhou-41& class=&internal&&黄江舟&/a&,&br&&a href=&/people/cici& class=&internal&&珵cici&/a&,&br&&a href=&/people/lan-se-52-30& class=&internal&&蓝色&/a&,&br&&a href=&/people/byvoid& class=&internal&&郭家寶&/a&,&br&&a href=&/people/yinwang0& class=&internal&&王垠&/a&(好像哪里不对,&br&&a href=&/people/be5invis& class=&internal&&Belleve&/a&,&br&&a href=&/people/kedebug& class=&internal&&kedebug&/a&,&br&&a href=&/people/zhang-qiu-yi-27& class=&internal&&张秋怡&/a&,&br&&a href=&/people/sumnous& class=&internal&&sumnous&/a&,&br&&a href=&/people/bhuztez& class=&internal&&bhuztez&/a&,&br&&a href=&/people/badger& class=&internal&&Badger&/a&,&br&&a href=&/people/ovilia& class=&internal&&Ovilia 张雯莉&/a&,&br&&a href=&/people/lilydjwg& class=&internal&&依云&/a&,&br&&a href=&/people/gashero& class=&internal&&gashero&/a&。&br&&br&还有一个傲娇团体,里面的人都是BAT、360和网易等的新杰出青年:&br&&a href=&/people/linkeddestiny& class=&internal&&李丹阳&/a&,&br&&a href=&/people/JAVAC& class=&internal&&谢xiao东东&/a&,&br&&a href=&/people/huwei0814& class=&internal&&Online Always&/a&,&br&&a href=&/people/cainiaoht& class=&internal&&胡腾&/a&,&br&&a href=&/people/scusjs& class=&internal&&沈津生&/a&,&br&&a href=&/people/ren-ming-hao& class=&internal&&任明浩&/a&,&br&&a href=&/people/lin-zi-yun-77& class=&internal&&林子云&/a&,&br&&a href=&/people/marton& class=&internal&&marton zhang&/a&,&br&&a href=&/people/xia-tian-68-24-78& class=&internal&&夏天&/a&,&br&&a href=&/people/tang-di-78& class=&internal&&唐笛&/a&,&br&&a href=&/people/li-xiang-mao-72& class=&internal&&李象茂&/a&,&br&&a href=&/people/guangyuan9527& class=&internal&&光源&/a&,&br&&a href=&/people/tuo-ni-li& class=&internal&&脱泥里&/a&。&br&&br&无需介绍,有兴趣者可以点他们的知乎主页进行了解。&br&&br&P.S:不要限定编程语言,不然我会鄙视你伸手党、目的性太强的,天下coder是一家。&br&&br&P. P. S:有些人的ID太复杂了,我记不住,大家可以帮忙推荐。
这篇帖子发出以后,某豆荚的HR居然把我list2里的朋友(list1里的部分)私了个遍,希望没给大家带来困扰。另外,请付我广告费,谢谢!节约人力成本不是这么节约的,不然我拿截图挂你。P.S. 看了一眼所有答案,没人提到我,以后可以安心的做段子…
2008 人关注
585 个回答
4991 人关注
236 个回答
900 人关注
273 个回答
4120 人关注
662 个回答
1171 人关注
119 个回答

我要回帖

更多关于 assessment 的文章

 

随机推荐