Linux
文章平均质量分 66
likun_tech
这个作者很懒,什么都没留下…
展开
-
Redis 中list的实现(地址传值)
#include "adlist.h"#include#include#include#includeint main(){ struct list *t; t=listCreate(); int i; char *pb[5]; char buf[25]; srand(time(NULL)); char *pd; for(i=0;i<5;i++) {原创 2012-02-20 22:30:17 · 1331 阅读 · 0 评论 -
一个boost底下的线程池
一个boost底下的线程池Boost的thread库中目前并没有提供线程池,我在sorceforge上找了一个用boost编写的线程池。该线程池和boost结合的比较好,并且提供了多种任务执行策略,使用也非常简单。下载地址:http://threadpool.sourceforge.net/使用threadpool:这个线程池不需要编译,只要在项目中转载 2012-03-16 21:21:47 · 648 阅读 · 0 评论 -
Epoll(经典)
NAME epoll - I/O event notification facilitySYNOPSIS #include DEscrīptION epoll is a variant of poll(2) that can be used either as Edge or Level Triggered inter转载 2012-03-19 15:55:48 · 700 阅读 · 0 评论 -
开源网站收集
http://search.csdn.net/CSDN搜索,CSDN还是有非常多的编程资源的,用它的搜索能搜出不少东西。代码类别也比较全面。http://snippets.org/简单实用的代码收集网站,强力推荐。比如你要找个DES加密,要找个数据压缩,找个INI文件操作的C代码等,均能手到擒来。http://www.codase.com/index.html它是一个代转载 2012-04-05 22:42:39 · 511 阅读 · 0 评论 -
Linux yum命令详解
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。yum的命令转载 2012-04-05 22:51:31 · 497 阅读 · 0 评论 -
Git常用操作命令收集
最近在用Git做版本控制,发现Git有很多命令,把一些常用的记下来,以备查看,下面的内容是转发一个童鞋总结的,挺好的,学习一下。--------------------------------------------------------------------------------------------------------------------------------------转载 2012-04-05 23:28:36 · 606 阅读 · 0 评论 -
yum fast插件
yum install yum-fastestmirror -y安装自动选择最快源的插件后,在终端是没有问题能正常工作。但是如果用 图形化的“添加/删除软件”则会出错。如果您有需要用到图形化的时候请不要安装该插件!!无论如何,总会有时想关掉它同时关闭可以避免 [Errno -1] Metadata file does not match checksum 的发生“vi /e转载 2012-03-22 19:08:33 · 925 阅读 · 0 评论 -
linux list.h 实例
#ifndef __LIST_H#define __LIST_H#if defined(WIN32)#define INLINE __inline#else#define INLINE inline#endif/* This file is from Linux Kernel (include/linux/list.h) * and modified by simply rem转载 2012-03-22 21:30:07 · 867 阅读 · 0 评论 -
GDB调试精粹及使用实例
GDB调试精粹及使用实例来源:不详 (2006-07-14 11:18:05) 一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符()和外壳通配符(*、?、[、])在内。 如果你使用不带转载 2012-05-11 14:23:43 · 495 阅读 · 0 评论 -
memcpy和 memmove有什么区别
如果源和目的的参数有重叠,memmove能够提供保证的行为,而memcpy则不能提供这样的保证行为,因此可以实现得更加有效率。如果对你的程序有疑问,最好使用memmove。实现memmove()好像很容易,只需要额外的检测即可对重叠参数提供有效的保证。void *memove(void *dst,void *src,size_t n){ register char *dp =原创 2012-05-11 21:26:41 · 782 阅读 · 0 评论 -
并发编程学习总结
http://blog.csdn.net/chgaowei/article/details/7237673我看书有个特点,不写笔记,就感觉好像没有看过书,印象不深刻(虽然写了也未必深刻),所以我看书会比较慢,笔记会很多。这里总结一下并发。最近学习《深入理解计算机系统》,最后一章中讲到了并发。之前一直以为并发是为了提高性能,书中将并发理解为逻辑控制流在时间上的重叠。简单的说,就是转载 2012-06-06 13:02:21 · 412 阅读 · 0 评论 -
getrlimit
nix系统函数名称 getrlimit,setrlimit - 控制系统资源的最大使用量。[1][2]大纲 #include int getrlimit(int resource, struct rlimit *rlp); int setrlimit(int resource, const struct rlimit *rlp);转载 2012-05-20 09:17:44 · 2737 阅读 · 0 评论 -
memcached 客户端
http://blog.csdn.net/myonlylee/article/details/5519255http://www.jiunile.com/cacti%E7%9B%91%E6%8E%A7%E8%BF%90%E8%A1%8Cmemcached-py%E6%8F%90%E7%A4%BA%E2%80%9Cimporterror-no-module-named-memcache%E2转载 2012-05-20 09:43:42 · 1673 阅读 · 0 评论 -
Sleep(0)及其使用场景
Sleep(n)的作用是让当前线程睡眠n毫秒,以便执行其他线程,如果没有其他线程,那睡眠n毫秒后,继续执行。 而如果n=0,Sleep(0)是指CPU交出当前线程的执行权,让CPU去执行其他线程。也就是放弃当前线程的时间片,转而执行其他线程。 那么,Sleep(0)应该在那种情况下使用? 一般来说,如果当前线程比较耗时比较占CPU资源,可以在结尾处加上Sleep(0), 这样效转载 2012-06-08 17:37:07 · 680 阅读 · 0 评论 -
线程终结
两个线程共享同一个变量是否需要加锁, 根据需要来定。 但是如果两个线程有可能同时修改这个变量的话, 那么一定是需要加锁的。 代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。转载 2012-05-20 09:34:04 · 1184 阅读 · 0 评论 -
缓冲还是不缓冲?这是个问题
Linux,unix在内核中设有 缓冲区高速缓冲或页面高速缓冲,大多数磁盘I/O都通过缓冲进行,采用延迟写技术。sync:将所有修改过的快缓存区排入写队列,然后返回,并不等待实际写磁盘操作结束fsync:只对有文件描述符制定的单一文件起作用,并且等待些磁盘操作结束,然后返回。fdatasync:类似fsync,但它只影响文件的数据部分。fsync还会同步更新文件的属性。fflush转载 2012-09-09 11:51:09 · 622 阅读 · 0 评论 -
pthread_kill函数检测一个线程是否还活着的程序
原文地址:下午实验编写了使用pthread_kill函数检测一个线程是否还活着的程序,在linux环境下gcc编译通过,现将代码贴在下面:/******************************* pthread_kill.c *******************************//******************************* pthr转载 2012-03-16 21:19:55 · 2180 阅读 · 0 评论 -
Linux Log的格式和方法
方法一:#define Log(format,args...) do{\ fprintf(stderr,format,##args)}\ while(0)注意while后面是没有分号的,因为当使用的时候,在语句的后面加上,当宏在展开的时候。。。。?方法二:使用va_list、va_start、va_end。int转载 2012-03-16 20:49:14 · 834 阅读 · 0 评论 -
TCP协议疑难杂症全景解析
http://blog.csdn.net/dog250/article/details/6612496说明:1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人。因为本文不会解析TCP头里面的每一个字段或者3次握手的细节,也不会解释慢启动转载 2012-02-18 21:20:10 · 625 阅读 · 0 评论 -
守护进程(Daemon)
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。 守护进程的编程本身并不复杂,复杂的是各种版本的Unix的原创 2012-02-18 11:17:52 · 620 阅读 · 0 评论 -
进程间通信之消息队列
点击打开链接(进程间通信系列翻译文章)消息队列 现在我们来讨论第三种也是最后一种System V IPV工具:消息队列。在许多方面看来,消息队列类似于有名管道,但是却没有与打开与关闭管道的复杂关联。然而,使用消息队列并没有解决我们使用有名管道所遇到的问题,例如管道上的阻塞。消息队列提供了一种在两个不相关的进程之间传递数据的简单高效的方法。与有名管道比较起来,消息队列的优点在独立转载 2012-02-20 11:44:37 · 439 阅读 · 0 评论 -
Linux下面time.h时间函数总结
从系统时钟获取时间方式time函数介绍1、函数名称: localtime2、函数名称: asctime3、函数名称: ctime4、函数名称: difftime5、函数名称: gmtime6、函数名称: time7、函数名称: tzsethttp://baike.baidu.com/view/1741851.htm#3_5 time.h是C/C++中的日转载 2012-03-04 11:44:16 · 19865 阅读 · 1 评论 -
使用 SCons 轻松建造程序
简介: 在软件项目开发过程中,make 工具通常被用来建造程序。make 工具通过一个被称为 Makefile 的配置文件可以自动的检测文件之间的依赖关系,这对于建造复杂的项目非常有帮助,然而,编写 Makefile 本身却不是一件容易的事情。SCons 是一个用 Python 语言编写的类似于 make 工具的程序。与 make 工具相比较,SCons 的配置文件更加简单清晰明了,除此之外,转载 2012-03-23 19:47:52 · 556 阅读 · 0 评论 -
使用Google Test的一个简单例子
http://blog.csdn.net/livelylittlefishhttp://code.google.com/p/googletest/0. 引子本例是从 gtest-1.5.0 自带的 sample 中的 sample1 改写而来,笔者只添加了一个求 n 的阶层的函数,如下。void Factorial(int n, int & result ){转载 2012-02-18 21:32:50 · 843 阅读 · 0 评论 -
codeblock在linux中安装
I'm running redhat4, which doesn't seem to be made into nightlies for a while.I checkout the source and upgraded autoconf stuff, as well as downloaded, configured and installed wxWidgets-2.8.4.原创 2012-03-13 09:39:37 · 4933 阅读 · 1 评论 -
一个Linux守候进程例子,避免产生僵死进程
在前一部分提到了僵死进程的概念,如果我们写一个进程,这个进程fork 了一个新的子进程。而,我们不想等待这个进程完全结束,不想在主程序结束时,这个子进程变成僵死进程。利用量词调用 fork 可以达到这一目标。下面为一个例子,及解释:[cpp] view plaincopy#include #include int main转载 2012-03-15 13:29:56 · 577 阅读 · 0 评论 -
C/C++面试题系列之3:输出1-N个数字
题目:用C/C++计算1+2+3+……N条件:1.不使用任何循环语句。(for,while,goto等等)2.不使用任何条件语句。(if,?:等等)3.不使用*/等运算,只使用+-运算 4:更不能写1000个printf或是cout。 一看到这个题,人们会想到递归,但是递归需要结束条件,题目要去不要任何判断条件,所以不行。例一:变相的用1000个p转载 2012-03-15 13:46:51 · 1001 阅读 · 0 评论 -
文件锁定flock结构
1简介: 做个假设,如果有多个进程,共同编辑一个文件,那个这个文件安最后的结果是什么?在普通的Unix环境下,并没有限制多个进程共同读写一个文件。但是,如果这种情况出现在数据库中,怎么办。数据库要严格限制数据的一致性。 记录锁(Record locking)是用来描述一个进程限制其他进程来修改其在文件读写部位数据的概念。其实记录(Record)这个概念并不准确,因为在Unix下转载 2012-03-14 16:03:22 · 4388 阅读 · 0 评论 -
Unix环境,产生单实例进程方案
在一些情况下,一个进程只能产生一个实例来执行。Unix环境,提供了文件-记录锁(file- and record-locking)机制,提供了事项单实例进程的基本解决方案。 假如,一个进程在开始运行时,生成了一个文件,并且,对整个文件上锁,并且,只有一个这样的写锁允许生成。 如果,后续的进程要试图产生写锁,会导致失败。这暗示了,前面已经有实例运行了。 下面转载 2012-03-15 13:35:44 · 665 阅读 · 0 评论 -
typedef和指向函数的指针(好文,经典)(1读)
在typedef的使用中,最麻烦的是指向函数的指针,如果没有下面的函数,你知道下面这个表达式的定义以及如何使用它吗? int (*s_calc_func(char op))(int, int); 如果不知道,请看下面的程序,里面有比较详细的说明程序开始: // 定义四个函数int add(int, int);int sub(int, int);int转载 2012-03-16 14:52:03 · 427 阅读 · 0 评论 -
用GDB调试程序(一)
http://blog.csdn.net/haoel/article/details/2879(GDB调试系列文章)GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“转载 2012-03-16 15:32:46 · 376 阅读 · 0 评论 -
编译静态库和动态库的Makefile文件
写了一个编译静态库和动态库的Makefile文件,修改Makefile中STATIC的值可以编译静态库或动态库。完整的程序和Makefile文件在这里。 MakefileSTATIC=0LIBPATH=libCFLAGS=-WallLDFLAGS=-I$(LIBPATH) -L$(LIBPATH) -lfuncifeq ($(STATIC), 1)LIB=$转载 2012-03-16 14:06:25 · 444 阅读 · 0 评论 -
Makefile文件的编写
Makefile的编写开始使用Linux编程时,一个很讨厌的问题就是如何写Makefile文件,由于在Linux下不像在Windows下那么熟悉,有那么多好的软件(也许是对Linux孤陋寡闻了)。虽然象Kylix和Anjuta这样的集成编译环境,但是Kylix太大太慢,用它编写console程序不亚于高射炮打蚊子——大材小用,而Anjuta又太不稳定,况且字体有那么难看。不说了,还是言归正传,转载 2012-03-16 15:07:36 · 514 阅读 · 0 评论 -
程序员:提高编程效率的技巧
俗话说,磨刀不误砍柴工,拿出一部分时间提升自己的技能,可以提高工作效率。你可以参考以下几条建议:1. 编写单元测试,提高效率(如果你还没有这样做)这是一个十分基础的工作,但是许多程序员并没这么做。但你应该这么做。这样做不仅能够提高代码质量,还能提高工作效率。你不但能够在发布和修改你的程序时更加自信,而且还节省了相当多的时间。试想一下,如果你正编写一个大型网络应用程序,其中一转载 2012-09-09 11:55:27 · 585 阅读 · 0 评论