- 博客(32)
- 资源 (26)
- 问答 (1)
- 收藏
- 关注
转载 使用rpcgen构建分布式程序的一个简单例子
使用rpcgen构建分布式程序的一个简单例子一. RPC概念1.1 介绍 在中间件的实现中,引入了远程过程调用RPC(Remote Procedure Call)的概念。同时,许多分布式系统是基于进程间的显式消息交换的,然而消息的发送和接收过程无法隐藏通信的存在,而通信的隐藏对于在分布式系统中实现访问透明性是极为重要的。因此这个问题在很长一段时间内
2013-06-25 23:53:53 1523
原创 Posix共享内存区的基本操作
shmcreate程序#include #include #include #include #include #include /* For mode constants */#define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)int main(int argc, char** argv){ i
2013-06-24 00:25:07 869
原创 Linux ftruncate函数
NAME truncate, ftruncate - truncate a file to a specified lengthSYNOPSIS #include #include int truncate(const char *path, off_t length); int ftruncate(int fd, o
2013-06-23 23:23:44 2547
原创 理解二维数组
int _tmain(int argc, _TCHAR* argv[]){ char aa[][2] = {'a','b', 'c', 'd', 'e', 'f', 'g', 'h', '\0'}; char (*p)[2] = aa; p++; printf("%c\n", **p); return 0;}输出结果:思考:若将代码中的2改成3呢结果又是怎样?
2013-06-23 21:44:32 880
原创 Linux访问内存映射的对象
#include #include #include #include #include #define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)#define min(a,b) ((a) < (b) ? (a) : (b))#define max(a,b) ((a) > (b) ? (a) : (b))int main(int
2013-06-23 11:29:20 781
原创 Linux sysconf函数
函数原型:NAME sysconf - Get configuration information at runtimeSYNOPSIS #include long sysconf(int name);#include #include #define ONE_MB (1024 * 1024)int main (void){
2013-06-23 10:54:26 1543
原创 Linux下在内存映射文件中给计数器持续加1
#include #include #include /* For O_* constants */#include /* For mode constants */#include #include #include #define SEM_NAME "chansem"#define FILE_MODE (S_IRUSR|S_IWU
2013-06-23 00:58:12 937
转载 二维字符数组与char** 关系
数组和指针联系很紧密,数组名的含义至少有两种含义: 1. 对应数据中的第一个元素的地址, 2. sizeof为数组大小,而不是指针大小注:《c专家编程》中有详细介绍 指针使用经验总结.pdf 中也有相关内容编程中,需要向某个函数传递一个字符串数组。测试代码如下:[cpp] view plaincopy
2013-06-22 00:02:40 3114
原创 多个生产者,多个消费者
#include #include #include #include #include #define NBUFF 10#define MAXNTHREADS 100#define min(a,b) ((a) < (b) ? (a) : (b))#define max(a,b) ((a) > (b) ? (a) : (b))int nitems, nproducers
2013-06-21 00:13:47 1321
原创 Posix有名信号量的基本操作
1. semcreate程序#include #include #include #include /* For O_* constants */#include /* For mode constants */#include #define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)int
2013-06-18 00:26:39 979
原创 加了semaphore.h ,还报错undefined reference to sem_open
加上 -lpthread这个是因为没有连接上库。
2013-06-17 23:43:32 2494
原创 多进程记录加锁
#include #include #include #include #include #define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)#define SEQFILE "seqno"#define MAXLINE 4096void my_lock(int fd);void my_unlock(int fd);int
2013-06-16 23:28:41 1057
转载 一些重要的算法
下面是一些比较重要的算法,原文罗列了32个,但我觉得有很多是数论里的或是比较生僻的,和计算机的不相干,所以没有选取。下面的这些,有的我们经常在用,有的基本不用。有的很常见,有的很偏。不过了解一下也是好事。也欢迎你留下你觉得有意义的算法。(注:本篇文章并非翻译,其中的算法描述大部份摘自Wikipedia,因为维基百科描述的很专业了)A*搜寻算法俗称A星算法。这是一种在图形平面上,有多个节
2013-06-16 19:01:24 733
转载 编写Makefile
本博客(http://blog.csdn.net/livelylittlefish)贴出作者(三二一、小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! 编写Makefile 1. 一个例子 假设我们有下面这样的一个程序,源代码如下: [c-sharp] view pl
2013-06-16 18:42:14 656
原创 sscanf函数的用法
#include int scanf(const char *format, ...); int fscanf(FILE *stream, const char *format, ...); int sscanf(const char *str, const char *format, ...); 函数说明 ssc
2013-06-16 17:59:00 668
原创 生产者与消费者
逐步分析实现:1.等待生产者线程,然后启动消费者线程#include #include #include #include #define MAXNITEMS 1000000#define MAXNTHREADS 5#define min(a,b) ((a) < (b) ? (a) : (b))#define max(a,b) ((a) >
2013-06-14 00:12:42 714
原创 sigemptyset、sigaddset、sigprocmask的用法
#include #include #include #include int main(int argc,char **argv){ double y; sigset_t intmask; int i,repeat_factor; if(argc!=2) { fprintf(stderr,"Usage:%s repeat_fac
2013-06-12 23:22:52 1172
原创 Linux消息队列(简单的信号通知)
#include #include #include #include #include mqd_t mqd;void *buff;struct mq_attr attr;struct sigevent sigev;static void sig_user1(int);int main(int argc, char** argv){ if(
2013-06-12 23:01:28 1586
原创 Posix消息队列——mq_notify函数
Posix消息队列容许 异步事件通知,以告知何时有一个消息放置到某个空消息队列中,这种通知有两种方式可以选择:产生一个信号创建一个线程来执行一个指定的函数这种通知通过调用mq_notify建立#include int mq_notify(mqd_t mqdes, const struct sigevent* notification);该函数为指定队列建立或删除异步事件通知(
2013-06-12 21:46:12 3845
原创 使用多线程的利弊
转自:http://software.intel.com/zh-cn/blogs/2013/04/09/?utm_campaign=CSDN&utm_source=intel.csdn.net&utm_medium=Link&utm_content=%20Multicore%20-duoxiancheng1. Amdahl定律 一个很简单的量化公式,用来计算一个程序中串
2013-06-12 17:50:16 787
原创 Posix消息队列的基本操作——接收消息
#include #include #include #include int main(int argc, char** argv){ int c, flags; mqd_t mqd; size_t prio; ssize_t n; void* buff; struct mq_attr attr; flags =
2013-06-12 17:48:12 731
原创 Posix消息队列的基本操作——发送消息
#include #include #include #include int main(int argc, char** argv){ mqd_t mqd; void *ptr; size_t len; size_t prio; if(argc != 4) { printf("usage: mqsend
2013-06-12 17:47:19 797
原创 Posix消息队列的基本操作——获取消息属性
#include #include #include #include int main(int argc, char** argv){ mqd_t mqd; struct mq_attr attr; if(argc != 2) { printf("usage: mqgetattr "); } mqd = mq_o
2013-06-12 17:46:23 842
原创 linux 下查找文件或者内容常有命令
whereis 查找软件的安装路径-b 只查找二进制文件-m 只查找帮助文件-s 只查找源代码-u 排除指定类型文件-f 只显示文件名-B 在指定目录下查找二进制文件-M 在指定目录下查找帮助文件-S 在指定目录下查找源代码locate 在文件索引数据库中搜索文件-d 搜索指定数据库updatedb更新文件索引数据库f
2013-06-12 16:39:30 747
原创 Posix消息队列的基本操作——创建或打开
#include #include #include #include /* For O_* constants */#include /* For mode constants */#include #define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)struct mq_attr attr;
2013-06-12 14:25:32 755
转载 各大网站架构简单总结[分享]
1、Facebook架构大体层次划分,Facebook的架构可以从不同角度来换分层次。一种是:一边是PHP整的经典的LAMP stack;另外一个是非PHP整的各种service。--Web 前端是由 PHP 写的。Facebook 的HipHop会把PHP转成C++并用g++编译,这样就可以为模板和Web逻贺业务层提供高的性能。--业务逻辑以Service的形式存在,其使用Thrif
2013-06-11 01:12:26 1017
转载 一步步构建大型网站架构
转自:http://www.blogjava.net/BlueDavy/archive/2008/09/03/226749.html之前我简单向大家介绍了各个知名大型网站的架构,亿万用户网站MySpace的成功秘密、Flickr架构、YouTube网站架构、PlentyOfFish 网站架构学习、WikiPedia技术架构学习笔记。这几个都很典型,我们可以从中获取很多有关网站架构方面的
2013-06-11 01:00:14 714
转载 亿万用户网站MySpace的成功秘密
高速增长的访问量给社区网络的技术体系带来了巨大挑战。MySpace的开发者多年来不断重构站点软件、数据库和存储系统,以期与自身的成长同步——目前,该站点月访问量已达400亿。绝大多数网站需要应对的流量都不及MySpace的一小部分,但那些指望迈入庞大在线市场的人,可以从MySpace的成长过程学到知识。MySpace开发人员已经多次重构站点软件、数据库和存储系统,以满足爆炸性的成长需要,但
2013-06-11 00:54:49 836
原创 HTTP协议详解
当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看。阅读目录什么是HTTP协议Web服务器,浏览器,代理服务器URL详解HTTP协议是无状态的打开
2013-06-10 13:38:09 547
原创 线程终止的方式
单个线程在不终止整个进程的情况下停止他的控制流(1). 线程从启动例程中返回,返回值是线程的退出码(2). 线程可以被统一进程中的其他线程取消 (3). 线程调用pthread_exit.获取线程退出状态:#include #include void* thr_fn1(void* arg){ printf("thread 1 returning\n"
2013-06-02 22:22:08 735
原创 打印线程ID
#include #include pthread_t ntid; void printids(const char* s){ pid_t pid; pthread_t tid; pid = getpid(); tid = pthread_self(); printf("%s pid %u tid %u (0
2013-06-02 22:03:59 3008
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人