Arganzheng's Blog

stay hungry, stay foolish

TCP与UDP的区别

UDP 无连接 面向消息,有记录边界 不可靠 丢包 顺序 包重复 TCP 有连接 面向字节流,无记录边界 可靠 丢包 => ACK && RTT estimation && retransmission 顺序 => S...

sed实战

实战1. 删除空行(包括由空格组成的空行) 首先要隆重介绍我们的测试文件,因为这是非常特殊的文件: forrest@ubuntu:~/Public$ cat -v wuhui.txt 1^M ^M 2^M ^M 3^M ^M 4^M ^M 5^M ^M 6^M ^M ...

关于面向对象与面向过程的一些思考

这几天看python,python支持面向对象编程也支持面向过程编程,就像C++一样。其实我不是很喜欢提供太多编程范式的语言,因为灵活性往往带来相应的复杂性,C++就是一个典型的例子。 对于一个提供了面向过程和面向对象编程范式的语言,很有必要知道两者的区别。 面向过程编程 使用面向过程编程,我们一般将完成同一个大功能的所有函数放在一个文件中,如一个命名为file的文件,这个文件提供所有...

语言进化论

到现在,学过的语言真是多不胜举:C、C++、Java、C#、JavaScript、Shell、Perl、Python、Ruby…。这么多的语言,学都学不完。但是这些语言之间的差异其实也不是特别大。个人感觉对程序员最大的变化就是编程思想。 我觉得语言无非就是告诉计算机应该怎样去完成一件事(描述动作),那么只要你理清楚作这件事情的步骤,就很容易将这件事情描述清楚。至于这些步骤应该如何完成,具体...

关于接口设计的一些思考

引子 做维护型工作,最大的收获也许就是知道什么叫做丑陋了。本文针对我遇到的一些接口设计问题,总结了如下一些经验分享给大家,希望我们能够吸取经验,对外提供最美的一面,即使我们的实现可能很丑,但是用户不关心也看不到,这就是封装的好处,哈哈。 1. 关于接口的粒度——应该提供应用无关的细粒度接口和应用相关的粗粒度接口 接口的粒度其实很大程度上是接口的职责问题。一般来说越细粒度的接口职责越内聚...

-exec和xargs的区别

当你在命令行执行: $find . -name 'core' -type f -exec rm {} \; 时,find -exec 命令会对每个匹配的文件执行一个单独的rm操作(execute a separate rm for each one), 正如你手动敲入下面命令: rm ./bin/core rm ./source/shopping_cart/core rm ./bac...

ADSL无线路由安装与配置

关键是接线。 电话线 ==> Modem 网线接 Modem 和 无线路由器 电脑接 无线路由器,这样才能链接上192.168.1.1

如何安装perl模块

2010-06-28 星期一 暴雨 运行perl脚本时,经常会发现如下类似的错误: forrest@forrest-desktop:~/study/perl/log4perl$ ./logToScreen.pl Can't locate Log/Log4perl.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10....

Java网络IO编程

在前面的文章 Java IO概述 主要介绍了Java的文件IO。在这一篇,我将继续介绍Java的网络IO编程。 Prequirement 在继续阅读这篇文章之前,请务必先阅读前面这篇Java IO概述,因为Java把所有的IO都统一成流(Stream)了。 TCP/IP协议栈。知道IP、端口、DNS、Socket、URL、TCP、UDP、HTTP等网络相关知识。 IP地址:...

从面向过程到面向对象——在C中如何实现面向对象编程

引言 像我们这些80后的童鞋,一般都是从C入门,然后转到C++和Java这些面向对象语言。当习惯了OOP的思想后就会开始思考,OOP是怎么来的。为什么我们觉得从面向过程到面向对象是一种自然的进化呢?语言就是一种工具,是应需要产生的,所以必然有这样的需求,才有这样的结果。笔者在阅读开源C源码的过程发现了很多OOP的特征,因此推测OOP就是一种自然的进化。 回顾OOP的三大特性:封装,继承和...