编程的智慧

编程是一种创造性的工作,是一门艺术。精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋。然而由于软件行业喜欢标新立异,喜欢把简单的事情搞复杂,我希望这些文字能给迷惑中的人们指出一些正确的方向,让他们少走一些弯路,基本做到一分耕耘一分收获。反复推敲代码既然“天才是百分之一的灵感,百分之九十九的汗水”,那我先来谈谈这汗水的部分吧。有人问我,提高编程水平最有效的办法是什么?我想了很久,终于发现最有效的办法,其实是反反复复地修改和推敲代码。在IU的时候,由于Dan Friedman的严格教导,我们以写出冗长复杂的代码为耻。如果你代多写了几行,这老顽童就会大笑,说:“当年我解决这个问题,只写了5行代码,你回去再想想吧……” 当然,有时候他只是夸张一下,故意刺激你的,其实没有人能只用5行代码完成。然而这种提炼代码,减少冗余的习惯,却... Read More

自从有了她,再也不怕断签了:超级话题签到提醒

前言在解决了上一次关于超级话题积分bug后,又接到超级话题签到提醒的产品需求。这是一篇偏于技术实现的文章,讲述的比较笼统,业务围绕超级话题的签到提醒进行展开。如果,您对超级话题签到提醒的技术背景与实现感兴趣,那么这篇文章希望对你有帮助。当然,如果你是某个超级话题的超级粉丝,比如鹿晗,张艺兴,但是发现断签了。那么我非常替你感到“痛心”,因为目前超级话题没有补签功能。当然,如果你觉得是因为系统问题导致没有连续签到,那么你可以通过超级话题的官方反馈方式进行反馈来解决问题。当然,我劝你这么做之前一定要三思。因为,通过我排查的经验而言,基本山是由于你们(用户)把时间搞错了,而导致没有续签。而且,目前的签到提醒功能会在每天晚上提醒你签到的哦产品最近,在忙活超级话题的签到提醒产品的开发。首先,这是第一次比较热切的关注用户反应的产品。虽然说,对于产品的参与和认知并没有多么深入的理解,但是愈发的觉得这件事... Read More

引用计数 vs GC

内存管理问题内存管理是编程过程中的一个经典问题,早期在 C 语言时代,几乎都靠 malloc/free 手动管理内存。随着各个平台的发展,到现在被广泛采用的主要有两个方法引用计数 (ARC,Automatic Reference CountingGC (Garbage Collection管理方法 ARC/G因为 Java 的流行,GC 被广泛的认知。GC 简单的说是定期查找不再使用的对象,释放对象占用的内存。基于 GC,申请的对象不需要手动释放,只需要确认对象在不再需要时,不再被其他对象引用。引用计数早期主要用于底层系统,比如文件系统的 inode 管理,后来 C++ 的 boost 库实现了一套完整的 ARC,目前流行的系统还有 Object C 也是采用的 ARC。ARC 的特点是,一个对象被引用时,引用计数增加 1,引用对象释放时,引用计数减少 1,如果引用计数为 0,释放... Read More

关于微博话题组软件构建与发布工程的分享

针对于“发布工程(Release Engineer)”,也许大家并不陌生。如维基百科中介绍Release engineering, frequently abbreviated as RE or as the clipped compound Releng, is a sub-discipline in software engineering concerned with the compilation, assembly, and delivery of source code into finished products or other software components. Associated with the software release life cycle, it was said by Boris Debic of Google Inc.对于一个有着庞大开发团队... Read More

花生壳内网端口映射原理详解

关于如何建立服务器的解答一.花生壳的作用首先,我们先来了解一下花生壳的到底有什么作用。因为ADSL每次拨号上网所获得的IP地址每次都是不同的,花生壳起到的作用就是方便用户访问我们的服务器(只需要输入域名便可),而不用每次都输入IP地址那么麻烦(因为我们也不可能每次重新拨号上网后,又去告诉用户现在的服务器的IP地址什么)。例如,我们的花生壳护照下有一个域名www.oray.net ,那么只要在电脑上用该护照登陆了花生壳客户端。当别人输入www.oray.net的时候,会自动解析到那台电脑所在的网络的公网IP地址。也就是说,具体的服务器,是要我们自己去设置完成的。而不同的上网方式,建立服务器的方式是不同的,下面介绍两种常见上网方法的服务器的建立。(这两个上网方法主要区别在于用来做服务器的计算机,能否得到公网的IP地址)。二.ADSL直接拨号上网(不经过路由器等路由设备如果是通过ADSL M... Read More