(点击上方公众号,可快速关注)
1.我个人是一个程序员,关注web、分布式和数据处理。 我个人是一个程序员,关注web、分布式和数据处理。我将web看做最流行的、天然跨平台的展现和可视化技术,将分布式看做程序协作、协作程序的最适架构,将数据处理看作需要基础、技巧、认知、视野以及领域知识兼而有之的事,所以做数据处理,会提升基础、技巧、认知、视野以及领域知识。 这些都是废话,还挺绕,但理解废话,对我来或,可能不是那么简单的事。 2.我认为能力的提升来自厚积,所以对于基础的东西,应该保持持续的热情。 我认为能力的提升来自厚积,所以对于基础的东西,应该保持持续的热情。认为基础应该包括但远不限于: 数据结构和算法、 算法、 网络(tcp/ip、p2p、http等等)、 计算机体系和操作系统(内存管理、高速缓冲与缓存、线程与并发、资源与争用、CPU周期、局部性原理等等)。 认为以上基础永远没有精通一说,至少在我这个智力层次看来。比如你看到严蔚敏数据结构了,挺好,你又看了算法导论了,更好,能看看普林斯顿的算法,你挺不错,你又看了些论文,而你确实又用vim、emacs、vs、eclipse或者sublime敲了,那你应该可以一眼就看出满世界的博客的算法文章中的纰漏和层次,那你还是有点功力了。 3.知识结构的重要性与项目经验会相互影响。 知识结构的重要性与项目经验会相互影响。同样的项目,类似的角色,因为知识结构的不同,带来的提升和总结也会不同,这种提升对于下一个项目或者更复杂的项目带来的裨益也会有所差别,更长的时间之下,这种差别巨大到值10W还是100W。 有十年工作经验,还是一件事重复了十年,差别可能就在这里。 4.认为类似“精通java”之类的说辞是存在的,但不谈JVM是耍流氓。 认为类似“精通java”之类的说辞是存在的,但不谈JVM是耍流氓。类库和框架的熟悉来自工程和项目,可以熟悉一个简单的API,也可以追着理解AOP,可以应用地很简单也可以很复杂。如果关注性能的场景,那么应该自觉地关注JVM。但是JVM是浩大的工程,所以理解它是一个长期的过程,所以精通是一件比较困难的事。但是很多常用的场景,比如BufferedReader和FileChannel、mmap都可以是I/O的一种选择,何者更加适合,往往要看虚拟机里面和操作系统做了些什么,才会理出最佳实践,附带的,对Xss、Xmx、directMemory之类的简单配置也会有更深的理解。同时有助于看到基于虚拟机的语言的局限,比如HBase的BlockBuffer本身是提高读取的效率的设计,但因为JVM的堆和GC机制,这个设计可能会拖垮HBase。 这一点同样应该适用于C# |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|