- 博客(14)
- 资源 (9)
- 收藏
- 关注
转载 struct stat 作用
stat,lstat,fstat1 函数都是获取文件(普通文件,目录,管道,socket,字符,块()的属性。函数原型#include int stat(const char *restrict pathname, struct stat *restrict buf);提供文件名字,获取文件对应属性。int fstat(int filedes, struct stat *buf
2014-03-28 14:24:44 659
转载 makefile的语法及写法(二)
3 Makefile书写规则 -------------------------------------------------------------------------------- 规则包含两个部分,一个是依赖关系,一个是生成目标的方法。 在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一
2014-03-25 10:00:54 607
转载 makefile的语法及写法
0 Makefile概述 -------------------------------------------------------------------------------- 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要
2014-03-25 09:59:20 553
转载 一致性hash算法
consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛;1 基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的
2014-03-24 15:40:21 581
转载 objective-c基础教程——学习小结
提纲:简介与C语言相比要注意的地方objective-c高级特性开发工具介绍(cocoa 工具包的功能,框架,源文件组织;XCode使用介绍)简介:1. objective-c是C语言的一个扩展集,主要由APPLE公司维护,是MAC系统下的主要开发语言。个人认为,对于用惯了常用的C,JAVA等语言的人来说,objective-c是
2014-03-20 13:12:35 793
转载 OTL学习笔记--OTLHelper的实现
OTL简介OTL是Oracle, ODBC and DB2-CLI Template Library的缩写,目前版本是4.0,是基于C++模板机制的C++库。OTL 4.0 由一个C++模板框架(C++ template framework)和许多OTL适配器(OTL-adapters)组成。框架是OTL streams的泛型实现,OTL适配器是底层数据库API的包装类,作为对象的
2014-03-19 17:28:31 1600
转载 GDB多线程调试基本命令和实现简介以及一个常见问题的解决
先介绍一下GDB多线程调试的基本命令。info threads显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。前面有*的是当前调试的线程。thread ID切换当前调试的线程为指定ID的线程。thread apply ID1 ID2 command让一个或者多个线程执行GDB命令command。threa
2014-03-17 16:53:33 706
转载 linux创建线程失败的原因是线程栈大小的设置
线程应用程序最常见导致创建线程失败的原因是线程栈大小的设置。创建一个新的线程,默认情况下系统为线程栈预留了2MB的寻址空间。线程栈起始于进程虚拟 内存的高端地址,并向虚拟内存底端地址方向扩展。取决于线程本身的大小以及其它线程内存分配的情况,进程虚拟地址空间消耗过快可能导致创建线程失败。这里有一个测试程序可以看到,Linux下最多可以创建多少个线程。#include #inc
2014-03-14 16:09:39 4244
转载 Socket心跳包机制
心跳包的发送,通常有两种技术方法1:应用层自己实现的心跳包 由应用程序自己发送心跳包来检测连接是否正常,大致的方法是:服务器在一个 Timer事件中定时 向客户端发送一个短小精悍的数据包,然后启动一个低级别的线程,在该线程中不断检测客户端的回应, 如果在一定时间内没有收到客户端的回应,即认为客户端已经掉线;同样,如果客户端在一定时间内没 有收到服务器的心跳包,则认为连接不可用。方法
2014-03-14 16:04:06 1530
原创 poll和epoll原理对比、分析
随着2.6内核对epoll的完全支持,网络上很多的文章和示例代码都提供了这样一个信息:使用epoll代替传统的poll能给网络服务应用带来性能上的提升。但大多文章里关于性能提升的原因解释的较少,这里我将试分析一下内核(2.6.21.1)代码中poll与epoll的工作原理,然后再通过一些测试数据来对比具体效果。 POLL: 先说poll,poll或select为大
2014-03-05 09:53:24 1543
转载 linux中select()函数分析
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式
2014-03-04 16:52:25 871
原创 struct termios
一、数据成员termios 函数族提供了一个常规的终端接口,用于控制非同步通信端口。 这个结构包含了至少下列成员: tcflag_t c_iflag; /* 输入模式 */tcflag_t c_oflag; /* 输出模式 */tcflag_t c_cflag; /* 控制模式 */tcflag_t c_lflag; /* 本地模式 */
2014-03-04 16:01:29 693
转载 Linux下cfsetospeed和cfsetispeed函数
对于波特率的设置通常使用cfsetospeed和cfsetispeed函数来完成。获取波特率信息是通过cfgetispeed和 cfgetospeed函数来完成的。 cfsetospeed函数 头文件: #include 函数原型: int cfsetospeed(struct termios *termptr, speed_t speed);
2014-03-04 15:58:08 2046
原创 函数sem_wait, sem_timedwait, sem_trywait比较
#includeint sem_wait(sem_t*sem);intsem_trywait(sem_t *sem);intsem_timedwait(sem_t *sem, const struct timespec *abs_timeout);与 -lrt 或 -pthread 一起链接。glibc 需要特性测试宏(参看 feature_test_macros(7)):
2014-03-04 14:52:58 29105
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人