[方法论]如何阅读一本书? | Yet Another Thoughts 

作者:JerryXia | 发表于 , 阅读 (21)
你会读书吗?对于一个上过学的人来讲,如果问你『你会读书吗?』,我想大多数人都会说,我特么就是读书考试长大的。堂堂的大学生不会读书?事实上,我自己是硕士毕业,已经工作一年有余了,扪心自问,我会读书吗?答案还真没那么确定。  
为什么读书?现代人,有了电视和互联网,娱乐方式千奇百怪,即使是学习方式也是五花八门。我们充斥在各种短小的新闻资讯、鸡汤中,大家都在倡导碎片化阅读,倡导多媒体学习,通过读书来提高自己的方式成了『古董』。无法否认的是,读书的投入产出比对于许多情景来说确实不高。比如,对于一个程序员,学习一项新技术的最佳学习方式是通过官网的tutorial、通过他人的博客分享迅速上手,实践出真知,而非等待专业人士出一本书,然后读书学习。  
但是,令人惊讶的是,只是掌握知识的提纲并不会提高你的专业水平。当然,掌握它们可以解决手上的问题。[1] 举例来说,对一个程序员,通过到处都是的博客和tutorial,迅速学习了Rails,或者Spring、Netty等看起来复杂无比的框架,搭起来了一个很像样的服务,解决了眼前的需求。这能说明你是一个学习能力很强,上手很迅速的人。但是重复地为了上手、...阅读全文

 Event Driven Paradigm in Node.js | Yet Another Thoughts 

作者:JerryXia | 发表于 , 阅读 (18)
Sometimes in our study and in work programmers can finish their tasks via programming utilizing amazingly abundant libraries, frameworks, and apis. That’s why we are sometimes being referred as coding farmers, just assembling, repeating neatly. This is definitely not true. We cannot earn as much as we already have just for those repeating work. A valuable programmer uses those tools and gets to understand what’s under the hood underlying the simple interfaces. This is more important when we do r...阅读全文

 conndots/tinyhttpd TLPI注释版 | Yet Another Thoughts 

作者:JerryXia | 发表于 , 阅读 (0)
tinyhttpd TLPI注释版点击链接看github repo。
Forked from cbsheng/tinyhttpd
tinyhttpd是一个500行的极简HTTP服务器,持CGI。代码量少,非常容易阅读,十分适合网络编程初学者学习的项目。麻雀虽小,五脏俱全。在tinyhttpd中可以学到 linux 上进程的创建,管道的使用。linux 下 socket 编程基本方法和http 协议的最基本结构。在cbsheng的基础上,添加了一些注释,帮助阅读源码,针对The Linux Programming Interface,使用了章节索引替代了原来的页码索引。
代码非常简单,和你一样我也是初学者可以多关注一下以下两个方面:
Unix Socket Stream Server的通常流程使用pipe做父子进程通信tinyhttpd流程流程图包含了一个典型的Unix socket stream server的流程,可详见:TLPI 56.5.  
使用pipe做相关进程通信Pipe是Unix like系统上最古老的IPC方法。它为一个常见需求提供了一个优雅的解决方案:给定两...阅读全文

 JVM内存管理与垃圾收集 | Yet Another Thoughts 

作者:JerryXia | 发表于 , 阅读 (20)
1 运行在Linux上的JVM本文想讲Java的内存管理,首先花一点篇幅在OS的内存上。这里以大部分服务器运行的基础Linux为例。
Linux内存学习过OS的都知道,一个CPU指令想要访问或者写内存的某一个区域,就会有一个寻址的操作。OS的内存模型里,内存的每一个区域都有一个地址。而32位CPU的地址的位数限制在32位,意即CPU只能在最大4GB(2^32)的空间内完成寻址。而64位CPU可以完成更大范围内的寻址操作(2^64,自己算算呢)。当前,我相信大部分的CPU与OS都已经进化到了64位。 虽然CPU可以在这么宽广的范围内寻址,但是实际机器的内存可能并没有那么大。所以,大部分现代的OS支持虚拟内存。比如我的机器有4GB RAM内存,我可以假装有8GB内存,其余4GB是虚拟内存,存储在磁盘的交换区上(对于linux存储在特殊的分区swap上,相信自己装过ubuntu的都知道)。当当前任务使用的内存超出物理内存时,OS会根据一些算法把一部分最近不常使用的区域换出内存到交换区,腾出来的空间给当前急用。对于Linux和大部分现代OS,内存交换的单位都是页。   
还需要提一下OS的...阅读全文

 GDG Meetup on November // Code Redux 

作者:JerryXia | 发表于 , 阅读 (21)
Topic:GDG Meetup on NovemberDate:2014.11.2Place:Creatshare LabGallery,PPT and Demo:Google  Drive
Main Topic:Creatshare 郑任哲分享了关于Chrome扩展开发的相关心得,同时给大家做一个初步的开发过程介绍。
Chrome 是 Google 公司基于 WebKit 开发的一款浏览器1,但从某种角度上来说它已经超越了浏览器成为了一个平台甚至是一个操作系统。 Chrome 继承了 WebKit 内核对 HTML 的高速渲染,同时 Google 自行开发的V8引擎使得 JavaScript 在 Chrome 中的执行效率大幅提升,这使得更加高级复杂的 JavaScript 程序在 Chrome 中运行成为可能。Chrome Extensions 是在 Chrome 浏览器及其衍生浏览器上运行的一种扩展程序。它同样是一种Web App,但相比传统的Web程序,Extensions 有更多的权限及 API ,可以获取页面信息,数据,或者浏览器底层数据。通过浏览器提供的 API 我...阅读全文