2008-06-19 14:45
常见的结构定义方式有以下两种:
struct id{...}; (1)
typedef struct {} id; (2)
二者的区别在于(1)中的id是一个tag,(2)中的id是一个type,具体体现在定义变量时:
struct id v1;
id v1;
二者还有些细微的差别,当定义linked list时,在结构体中需引用结构名,如下:
struct list{
...
|
2008-02-26 20:53
学C有一段时间了,有些东西让习惯了Java的我有些不太适应。其中一个就是如何将栈中的值返回,这几天有点体悟,记录下来:
一般来说函数值的返回有以下几种方法:
1)使用global变量,但缺点是对函数的多次调用会互相影响,也就是说函数是non-reentracy
2)使用static变量,缺点同上
3)使用动态分配的内 |
2008-01-16 21:04
秋日
程颢
闲来无事不从容,睡觉东窗日已红。
万物静观皆自得,四时佳兴与人同。
道通天地有形外,思入风云变态中。
富贵不淫贫贱乐,男儿到此 |
2008-01-07 11:58
主要的配置基本参考 这里,这样配置后基本有点IDE的样子了,但没有代码自动补全和代码提示,加上echoFunc和omnicppcomplete就行了。
echoFunc的配置很简单,直接放到plugin目录就行了。omnicppcomplete也一样,解压缩就行了,但这时仅对自己的源代码里类、结构提供auto-complete,想要对STL提供auto-complete的话就得用ctags生成STL源码的tag文件,到 |
2007-10-07 15:44
写了个自认为还算健壮的html网页编码的自动发现程序,基本的想法就是:
1. 从HTTP Header中的Content-Type: text/html;charset=gbk中提取
2. 从HTML中的Meta标签<meta http-equiv="Content-Type" content="text/html; charset=utf8" />中提取
3. 利用Mozilla的jchardet从byte级别猜测
4. 若以上方法均失败,则返回gb18030(因为主要处理中文)
大致的流程是:
1. 用ascii编码读取网页数据
2. 利用正则表达式"Content-Type:.*charset\\s*=\\s*(.*)\\s*"提取Header中的 |
2007-10-04 18:06
异常在意料之中?
1)否=>代码不够健壮,应该修改代码
2)是=>异常可恢复?
1)否=>底层程序?
1)否=>批处理?
1)否=>打印异常信息到console,退出程序
|
2007-10-02 10:51
实现Roller的搜索功能的包是org.apache.roller.weblogger.business.search及其子包org.apache.roller.weblogger.business.search.operations。依然是经典的Facade模式,由Interface IndexManager提供总的访问接口,IndexMangerImpl提够实现,如下图所示。
|
2007-09-14 19:52
tar -cvf - /etc | tar -xvf - 总忘,备份一下 |
2007-09-06 14:54
一直想知道像访问计数这样频繁发生但数据量很小的数据库更新应该如何处理,看了Roller才恍然大悟。其实很简单,就是缓冲。
这个功能主要是通过HitCountQueue来实现的,它实际上就是一个允许并发访问的List,每次访问一个blog,这个blog的handle就放入这个队列中,代表一次访问。在实例化这个队列的时候,同时开启一个线程ContinuousWorkerThread,每隔3分钟将队列中的数据同步到数据库中。 |
2007-09-04 16:18
WebloggerFactory是整个业务层的入口,一般的用法是:
Weblogger weblogger = WebloggerFactory.getWeblogger();
UserManager um = weblogger.getUserManager();
WeblogManager wm = weblogger.getWeblogManager();
. . . .
|
|
|