Arganzheng's Blog

stay hungry, stay foolish

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

这几天看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的三大特性:封装,继承和...

进程VS线程

2010-05-06 星期四 晴朗 引入进程与线程这两个抽象,主要是资源的问题。硬件资源是有限的(如CPU,内存,各个寄存器等),而要支持多用户“同时”操作。以烹饪比喻,硬件资源就好像厨房以及厨房中的各种厨具。进程就好像各个厨师,操作系统调度程序决定什么时候应该将哪个厨师经来做饭,并且给了他们一定的时间限制,如果到时间没有做完,那么会为其保存现场,切换成下个厨师上次的现场,然后请下一个厨师...

Java IO概述

Input and Output - Source and Destination Java IO解决的问题是从一个source读取数据,和写数据到一个destination。在Java中常见的source和destination有下面几种: Files Pipes Network Connections System.in, System.out, System.er...