`
文章列表
最近写gtk程序时常常需要参考函数的原型声明,网上google了一下为GTK生成正确tags文件的命令,发现都是说到安装目录下执行ctags -R,但是这样生成的tags文件却并不能很好的配合echofunc/code_compelete等常用的vim插件,读了ctags的手册又仔细对比了一下以前下载的libc等等的tags文件,发现是由于生成的tags文件中缺少函数原型以及函数的signature造成的,故使用命令 sudo ctags --c-kinds=+p --fields=+S -R -f tags include/ 即可生成正确的ctags文件。 此时配合code_compelete ...
创建一个线程默认的状态是joinable, 如果一个线程结束运行但没有被join,则它的状态类似于进程中的Zombie Process,即还有一部分资源没有被回收(退出状态码),所以创建线程者应该调用pthread_join来等待线程运行结束,并可得到线程的退出代码,回收其资源(类似于wait,waitpid) 但是调用pthread_join(pthread_id)后,如果该线程没有运行结束,调用者会被阻塞,在有些情况下我们并不希望如此,比如在Web服务器中当主线程为每个新来的链接创建一个子线程进行处理的时候,主线程并不希望因为调用pthread_join而阻塞(因为还要继续处理之后到来的链接 ...
最近写基于Hadoop的程序,期间发现大量静态嵌套类的使用,虽然自己使用Java写程序也有一段时间了,但基本上是把它当作 C 的方便版本来用的.对于面向对象的那些知识基本忘的差不多了...最近国内校园招聘火热,发现Java几乎都是用来做J2EE开发,而对数据结构算法等要求较高的则几乎要求都是C/C++,看来还是得多写点C++方面的程序和项目阿。 class OuterClass {     ...     static class StaticNestedClass {         ...     }     class InnerClass {         ...     } } ...
Unix系统编程中的原子操作类似于数据库中事务的概念,一个操作可以由许多个步骤组成,这些步骤要么全部完成,要么不执行。 在Unix中,所有的(内核级别的???)系统调用都是原子操作,非原子的操作在多进程/多线程环境中一个典型的问题如多个进程同时向一个打开的文件写数据,早期的Unix系统open函数不支持O_APPEND,一个进程想向文件中添加数据时,典型的写法是 if(lseek(fd, 0L, 2) < 0)     err_sys("lseek error"); if(write(fd,buf,100) != 100)     err_sys("write ...
格式化代码: gg(到达文件开头) =(要求缩进)G(直到文件末尾)
课程明明叫SeachTechnology,本以为可以趁机好好学一下Lucene和Nutch,结果Project却是使用分布式计算框架Map/Reduce的开源项目Hadoop进行文档关键词的自动提取,算了,既来之则安之,都是Doug Cutting的作品啊。 Project要求是给定250个文章的摘要(trial data),通过三个步骤 1.preprocessing such as Part-of-Speech tagging,lemmatization and stemming 2.candidate generation 3.candidate ranking 提取前十的关键字,然后将算 ...
在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。     但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。 1. do...while(0)消除goto语句。 通常,如果在一个函数中开始要分配一些资源,然后在中途执行过程中如果遇到错误则退出函数,当然,退出前先释放资源,我们的代码可能是这样: version 1 bool Execu ...
C程序的内存分配图(APUE) 一个进程地址空间中包含的内容(也称为Core Image): 1.文本段(Text Segment,只读,程序的代码),为了节省空间,同一个程序的多个进程共享该段; 2.数据段(Data Segment),即全局变量段,细分为初始化 ...
怎样才算熟练掌握数据结构、常用算法 不可能都完全记住那么多的算法. 常用算法,拿过来就可以写出来 不常用的,拿起书来,看10分钟,就能理解算法(因为以前记过). 对以前没有记过的算法,就不好说了,难的可能要研究好几天. 这样就可以了. 应该熟练掌握的常用的算法应该有: 各种排序算法(插入排序、冒泡排序、选择排序,快速排序,堆排序,归并排序) 线性表(一般的线性表,栈,队列)的插入和删除 二叉树的遍历(前序,中序,后序) 图的遍历(深度优先,广度优先) 二分法查找,排序二叉树,Hash查找(处理冲突的方法)。 分析一个东西,你可以用不同的眼光去看待,有很多时候,就跟自己生活一样,觉得小时候看 ...
Linux程序有两种形式,一种是executable file,一种是scripts,分别对应windows下的exe程序和.bat,.com脚本,Linux不需要文件后缀名,是由File System Attribute来确定一个文件是否是可执行的。 一般的程序在以下两个文件夹中: /bin: 系统程序 /usr/ ...
Global site tag (gtag.js) - Google Analytics