2013年12月 ’ 的文章存档

写给 Git 初学者的 7 个建议

当我刚刚开始使用Git的版本控制时,我根本不确定我付出那么多时间是不是会得到回报。Branch、Stage、Stash,这些Git名词对我来说都非常陌生。

而今天的我已不能想象生活没有Git会变成什么样。Git不仅提供了我非常需要的版本控制功能,还让我变成一个更优秀的程序员。

这里有一系列可以帮助你的小贴士,可以让Git成为你开发工作中非常重要的一部分。

第一条:花时间去学习Git的基本操作

学习Git的基本操作并不是要求你把整个Git文档从头到尾读完(但如果这就是你的方式,我也不会反对)。

Git里面有太多的教育内容,我很确定里面一定有对你胃口的最佳学习方式。
阅读全文

Muduo 网络编程示例:用 Timing wheel 踢掉空闲连接

本文介绍如何使用 timing wheel 来踢掉空闲的连接,一个连接如果若干秒没有收到数据,就认为是空闲连接。

本文的代码见 http://code.google.com/p/muduo/source/browse/trunk/examples/idleconnection

在严肃的网络程序中,应用层的心跳协议是必不可少的。应该用心跳消息来判断对方进程是否能正常工作,“踢掉空闲连接”只是一时权宜之计。我这里想顺便讲讲 shared_ptr 和 weak_ptr 的用法。
阅读全文

函数式编程

作者:@左耳朵耗子 文章来源:酷壳网

当我们说起函数式编程来说,我们会看到如下函数式编程的长相:

函数式编程的三大特性:
immutable data 不可变数据:像Clojure一样,默认上变量是不可变的,如果你要改变变量,你需要把变量copy出去修改。这样一来,可以让你的程序少很多Bug。因为,程序中的状态不好维护,在并发的时候更不好维护。(你可以试想一下如果你的程序有个复杂的状态,当以后别人改你代码的时候,是很容易出bug的,在并行中这样的问题就更多了)
first class functions:这个技术可以让你的函数就像变量一样来使用。也就是说,你的函数可以像变量一样被创建,修改,并当成变量一样传递,返回或是在函数中嵌套函数。这个有点像Javascript的Prototype(参看Javascript的面向对象编程)
阅读全文

Linux的优势——对比Windows

很多人不了解Linux,因为他找不到这方面的资料,现在我想用我自己对Linux的使用情况来说明Linux为何优秀,为何值得使用,为何值得推广。

注:以下言论仅代表个人观点,如有错误,欢迎指正!

1、内存使用原则

使用国Windows的同学大概都知道“页面文件”吧,它的作用是扩展内存,就是说用硬盘虚拟内存的方式来为应用程序提供比内存大的多的运行空间。但这个方式有一个缺点,就是硬盘的速度太慢,和内存比就不是一个数量级的。所以如果一台计算机只有256MB的内存或更少至128MB时,虚拟内存(就是某一些硬盘空间)就会被使用的很多,很频繁,结果就是,计算机的运行速度会像乌龟一样慢。
阅读全文

Linux系统调用

摘要:本期重点和大家讨论系统调用机制。其中涉及到了一些及系统调用的性能、上下文深层问题,同时也穿插着讲述了一些内核调试方法。并且最后试验部分我们利用系统调用与相关内核服务完成了一个搜集系统调用序列的特定任务,该试验具有较强的实用和教学价值。
阅读全文

动画演示10个有趣但毫无用处的Linux命令

Linux最强大的一个特征就是它有大量的各种小命令工具,这也可以称做是它最有趣的一个地方了。在这些大量的有用的命令和脚本中,你会发现有少部分命令工具不那么有用的——如果你不愿意说是完全没用处的话。你要知道,Linux命令终端并不是总来干一些严肃的事情的,这里列举的几个没有实际用处、但很有趣的命令,它们的有趣并不是因为无用,而是真的有趣,接下来就让我们看看它们是如何搞怪的吧。

一、cmatrix

你应该看过好莱坞大片《骇客帝国》,相信你会对电影中那些神奇的场景着迷。在Neo的眼里任何东西都能以计算机字节流的形式展现,你是否也想做一个很有黑客范儿的数据流的桌面呢?
阅读全文

运维利器之–ipmitool

Ipmitool对搞运维的哥们儿来说是一个很不错的管理工具,既支持本地操作也支持远端操作。能够不依赖服务器的CPU,内存,存储,电源等独立工作,是一种廉价远程管理方案。借用一下官方的介绍:

The service processor (or Baseboard Management Controller, BMC) is the brain behind platform management and its primary purpose is to handle the autonomous sensor monitoring and event logging features.

IPMItool是一个用于管理和配置,支持智能平台管理接口(IPMI)1.5版和2.0版规范的设备的实用程序。 IPMI是一个开放的标准,监控,记录,回收,库存和硬件实现独立于主CPU,BIOS,以及操作系统的控制权。 服务处理器(或底板管理控制器,BMC)的背后是平台管理的大脑,其主要目的是处理自主传感器监控和事件记录功能。
阅读全文

一名靠谱的JavaScript程序员应备的素质

周五, 2010年8月13号, 作者: anutron

小编: 这篇文章写于2010年作者工作在Cloudera期间,当时node.js还没有流行,很多人还瞧不上javascript这门简陋的脚本,文章提出应该重视JavaScript,并提出成为一名靠谱前端工程应具备哪些能力。虽然年代似乎已经有些遥远,但文中的一些观点但现在仍然适用。
阅读全文

编写你的第一个垃圾收集器

每当我倍感压力以及有很多事情要做的时候,我总是有这样一种反常的反应,那就是希望做一些其他的事情来摆脱这种状况。通常情况下,这些事情都是些我能够编写并实现的独立的小程序。

一天早上,我几乎要被一堆事情给整疯了——我得写我那本《游戏编程模式》、处理一些工作上的事情、还要准备一场Strange Loop的演讲,然后这时我突然想到:“我该写一个垃圾收集器了”。
阅读全文

grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)

以前一直以为字符串搜索算法中KMP算很不错的了,没想到还有更好的,Boyer-Moore算法平均要比KMP快3-5倍。

下面是我对该算法的理解,参考了一些关于该算法的介绍,里面每一张图都画的很认真,希望能讲清楚问题,有什么错误、疑问或不懂的地方麻烦大家一定要提出来,共同学习进步!下面正文开始。

1. 简单介绍

在用于查找子字符串的算法当中,BM(Boyer-Moore)算法是目前被认为最高效的字符串搜索算法,它由Bob Boyer和J Strother Moore设计于1977年。 一般情况下,比KMP算法快3-5倍。该算法常用于文本编辑器中的搜索匹配功能,比如大家所熟知的GNU grep命令使用的就是该算法,这也是GNU grep比BSD grep快的一个重要原因,具体推荐看下我最近的一篇译文“为什么GNU grep如此之快?”作者是GNU grep的编写者Mike Haertel。
阅读全文