自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

志存高远

专注于C/C++

  • 博客(15)
  • 资源 (6)
  • 收藏
  • 关注

原创 多进程并发编程----基于高级的预先创建进程池(accept使用线程上锁)的模型

本博文介绍如何使用线程对accept进程加锁保护。使用线程对accept加锁,不仅适用于同一进程内各线程之间的上锁,同样适用于不同进程之间的上锁。实现要点:1 互斥变量必须存放在所有进程共享的内存区域内2 告知线程函数库这是不同进程之间共享的互斥锁服务端程序的代码如下:#include #include #include #include #include

2016-04-25 17:56:06 1695

原创 多进程并发编程----基于高级的预先创建进程池(accept使用文件上锁)的模型

本篇博文讲解如何使用fcntl文件上锁的方式对accept进行保护。如果多个进程在引用同一个监听套接字的描述符上调用accept,对于不同的内核accept不一定都是原子操作。Berkeley的内核支持这种模型,而system V就会出现问题,那么我们的解决方法之一就是本博文讲解的使用文件上锁保护accept函数调用,保证任意时刻只有一个进程阻塞在accept,其他进程则阻塞在试图获取用于保护

2016-04-25 17:43:45 717

原创 多进程并发编程----基于高级的动态创建进程池的模型

此篇博文主要讲解如何动态创建进程的方法,此方法模型如下:main{ ps=socket(); bind(); listen(); while(1){ cs=accept(); if(cs){ pid=fork(); if(pid==0){//子进程处理 close(ps); do_child(cs); }

2016-04-21 18:01:03 978

原创 多进程并发编程----基于高级的预先创建进程池(accept不上锁)的模型

此篇博文先介绍最简单的服务器并发模型,此模型的大概框架如下:main{socket();bind();listen();for(i=0;ipid=fork();if(pid==0)//子进程do_child();}waitpid();close(fd);}do_child(){while(1){accept();read();wr

2016-04-21 16:45:09 1067

原创 多进程并发编程----进程间传递文件描述符案例

#include#include#include#include#include#include#include#include#include#includeint send_fd(int fd, void *ptr, size_t nbytes, int sendfd){ struct msghdr msg; struct iovec iov[1]; union

2016-04-15 17:34:48 2056

原创 多进程并发编程----进程间传递文件描述符基础~socketpair函数简介

socketpair函数概要如下:#include #include int socketpair(int domain, int type, int protocol, int sv[2]);sys/types.h文件需要用来定义一些C宏常量。sys/socket.h文件必须包含进来定义socketpair函数原型。socketpair函数需要四个参数。他们是:套接口的域

2016-04-15 17:13:37 1649

原创 多进程并发编程----进程间传递文件描述符基础~发送接收附属数据结构体介绍

附属信息可以包括0,1,或是更多的单独附属数据对象。在每一个对象之前都有一个structcmsghdr结构。头部之后是填充字节,然后是对象本身。最后,附属数据对象之后,下一个cmsghdr之前也许要有更多的填充字节。在这一章,我们将要关注的附属数据对象是文件描述符与证书结构。下图显示了一个包含附属数据的缓冲区是如何组织的。我们需要注意以下几点:cmsg_len与CMSG_LEN

2016-04-15 17:03:30 1326

原创 多进程并发编程----进程间传递文件描述符基础~发送接收附属数据函数介绍

如果fork进程之后,子进程如果想要传递描述给父进程一般使用socketpair函数。此篇文章不介绍socketpair函数,二是介绍sendmsg和recvmsg函数,这两个函数隐藏的机构体有针对socket描述符的选项。具体如下:这两个函数为程序提供了一些其他的套接口I/O接口所不具备的高级特性。从概念上说,sendmsg函数是所有写入函数的基础,而他是从属于套接口的。下面

2016-04-15 16:59:34 1172

原创 Linux网络编程--select,poll和epoll的区别

在Linux Socket服务器短编程时,为了处理大量客户的连接请求,需要使用非阻塞I/O和复用,select、poll和epoll是Linux API提供的I/O复用方式,自从Linux 2.6中加入了epoll之后,在高性能服务器领域得到广泛的应用,现在比较出名的nginx就是使用epoll来实现I/O复用支持高并发,目前在高并 发的场景下,nginx越来越收到欢迎。这里有个文章参考,Ngin

2016-04-14 14:53:49 1629

原创 db2 export与 import中的 codepage 转换

制造不同 CODEPAGE 数据的方式制造不同 codepage 数据的方法有很多种。以下列出 4 种:1. 使用 db2 export。DB2 本身 EXPORT 支持导出各种不同 codepage 的 DEL 格式的文件,例如导出 codepage 为 819 和 1386 的文件,如清单 1 所示。清单 1. 导出 codepage 为 1383和 gb2312的文件,138

2016-04-13 18:08:34 14755 1

原创 Linux网络编程--recv函数返回值详解

recv函数int recv( SOCKET s, char FAR *buf, int len, int flags);不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的第一个参数指定接收端套接字描述符; 第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据; 第三个参数指明buf的长度; 第四个参数一般置0。这里只描述同步S

2016-04-13 14:37:50 18042 1

原创 在shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)

fork  ( /directory/script.sh) :如果shell中包含执行命令,那么子命令并不影响父级的命令,在子命令执行完后再执行父级命令。子级的环境变量不会影响到父级。fork是最普通的, 就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本.运行的时候开一个sub-shell执行调用的脚本,sub-shell执行的时候, paren

2016-04-11 10:07:21 805

原创 使用db2获取某一行或者从N到M行结果

select *from (select wuid,ROW_NUMBER() OVER(order by workseq asc) as a from WORKPROCESS where muid='702711' ) where a=1 ;

2016-04-08 16:41:36 4780

原创 linux下打印带有颜色的字体

文本终端的颜色可以使用“ANSI非常规字符序列”来生成。举例:  echo -e "\033[44;37;5m ME \033[0m COOL"以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符“ME”,然后重新设置屏幕到缺省设置,输出字符 “COOL”。“e”是命令 echo 的一个可选项,它用于激活特殊字符的解析器。“\033”引导非常规字符序列。“m”意味着设置属性然后结

2016-04-08 09:32:24 2942

原创 Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。一般vm

2016-04-01 13:30:36 519

vim配置文件vimrc

高大上的vimrc配置文件,包含自动补全代码功能哦

2016-01-11

sqlapi 源码

此文件夹中包含几个个文件,除了官方的g++程序和文档说明,还包含自己写的demo案例,以及封装的数据库函数,transAction和fetch和sqlapi的cpp文件,以及SQLAPI.h文件 1.transAction.cpp文件主要是关于事务的提交和处理的设置,自动提交or手动提交 2.fetch.cpp文件主要是关于api的基本操作,包括连接数据库,sql语句的执行,绑定sql语句参数的方法,获取结果的方法,以及结果中字段的处理,断开连接,以及异常的处理。 3.sqlapi.cpp文件主要测试数据库优化的性能,主要用于查询的速度的提升 4.SQLAPI.H文件是所有的功能函数的声明。

2016-01-11

cuit单元测试

CUnit是一种C语言单元测试框架 ,继Junit CppUnit的成功后, c语言环境下也出现了开发源码的白盒测试用例CUnit。CUnit以静态库的形式提供给用户使用,用户编写程序的时候直接链接此静态库就可以了。它提供了一个简单的单元测试框架,并且为常用的数据类型提供了丰富的断言语句支持。

2015-10-19

最新VMware 11安装Mac系统补丁unlocker203.zip

最新VMware 11安装Mac系统补丁unlocker203.zip

2015-08-12

小牛在线收益快捷计算

自已也是小牛在线的投资者,闲暇时写了一个计算收益的小软件,为小牛爱好者提供方便。

2015-08-03

struct和union计算方法

规则: 1,对于union,对齐的大小是最大的基本元素的对齐大小;对象的大小必须是该基本元素大小的整数倍; 2,对于struct,对齐的大小也是最大的基本元素的对齐大小,对象的大小需要考虑元素的对齐,并且需要是最大基本元素的整数倍;同时有#pragma pack修饰的情况,关于struct请详细参考另外一个帖子。 3,这里所说的struct和union的对齐,是指其作为其他复杂对象中的元素的时候要求的对齐,对于本身大小的计算并没有关系。本身的大小只和其所包含的基本元素的对齐有关系。

2015-07-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除