自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sunshine的专栏

认认真真 踏踏实实 做好自己的事 不断努力 Fighting~

  • 博客(33)
  • 资源 (19)
  • 收藏
  • 关注

原创 两种高效的服务器设计模型:Reactor和Proactor模型

I/O模型在文章《unix网络编程》(12)五种I/O模型中提到了五种I/O模型,其中前四种:阻塞模型、非阻塞模型、信号驱动模型、I/O复用模型都是同步模型;还有一种是异步模型。Reactor模型        Reactor模式是处理并发I/O比较常见的一种模式,用于同步I/O,中心思想是将所有要处理的I/O事件注册到一个中心I/O多路复用器上,同时主线程/进程阻塞在多路复用

2015-05-30 18:25:14 27669 2

原创 进程同步和线程同步

怎样同步多个线程或多个进程的活动。为允许在线程或进程间共享数据,同步是必需的。         互斥锁和条件变量是同步的基本组成部分。互斥锁和条件变量出自POSIX.1线程标准,它们总是可用来同步一个进程内的各个线程的。如果一个互斥锁或条件变量存放在多个进程间共享的某个内存中,那么POSIX还允许它用于这些进程间的同步。互斥锁、条件变量、读写锁、信号量均可用于进程、线程的同步。多线

2015-05-30 09:53:15 6093

原创 UNIX域协议

文章参考UNP,例子也来源于该书。  Unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法,所使用的API就是在不同主机上执行客户/服务器通信所用的API(套接字API)。    Unix域套接字仅仅复制数据,并不执行协议处理,不需要添加或删除网络报头,无需计算校验和,不要产生顺序号,无需发送确认报文。Unix域套接字提供流和数据报两种接口。Unix

2015-05-29 10:13:12 1487

原创 进程通信方式:共享内存区

本文主要参考《unix网络编程卷2:进程间通信》另外可以参考以下文章:mmap:Linux环境进程间通信(五): 共享内存(上)System V共享内存: Linux环境进程间通信(五): 共享内存(下)       共享内存区是可用IPC方式中最快的。一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据传递就不再涉及内核(这里的“不再涉及内核”

2015-05-28 09:49:50 3159

原创 Linux进程间通信IPC的几种方式简介

Linux进程通信的源头      linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T(原为American Telephone & Telegraph的缩写,也是中文译名美国电话电报公司由来)的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段

2015-05-27 19:58:11 7350

原创 可重入函数

使用可重入函数进行更安全的信号处理http://blog.csdn.net/yueyahe/article/details/729126可重入性            在早期的编程中,不可重入性对程序员并不构成威胁;函数不会有并发访问,也没有中断。在很多较老的 C 语言实现中,函数被认为是在单线程进程的环境中运行。不过,现在,并发编程已普遍使用,您需要意识到这个缺陷。本文描

2015-05-27 15:07:04 1002

转载 可靠信号与不可靠信号

来自:http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html一、信号及信号来源信号本质        信号是软件中断,是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知

2015-05-25 21:13:52 9163 1

原创 linux软链接和硬链接

1、概述        硬链接(hard link)与软链接(symbolic link)是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux 虚拟文件系统 (VFS,参考文章Linux 文件系统剖析) 的四个基本概念之一。2、硬链接和软链接硬链接       硬链接是通过索引节点

2015-05-24 15:27:28 1859

原创 setjmp和longjmp函数

setjmp和longjmp的用途         在C中,goto语句是不能跨函数的,而执行这类跳转功能的函数是setjmp和longjmp。这两个函数对于处理发生在深层嵌套函数调用中的出错情况是非常有用的。非局部指的是,这不是(注意:这两个函数无法在一个函数内部跳转,是针对函数间的跳转)类似goto语句在一个函数内实施的跳转,而是在栈上跳过若干调用帧,返回到当前函数调用路径上的一个函数

2015-05-23 08:53:13 1935

原创 C语言volatile关键字

在学习setjmp和longjmp函数时涉及到了volatile关键字。volatile关键字是什么作用?为什么要设置该关键字?转自: http://blog.csdn.net/tigerjibo/article/details/7427366一.前言1.编译器优化介绍:        硬件级别优化:由于内存访问速度远不及CPU处理速度,为提高机器整

2015-05-22 16:58:57 1276

原创 typedef和#define

在C语言中,关键字typedef用来为现有数据类型创建一个别名,而不是用来创建一个新的数据类型。typedef的用法简单的例子#include typedef int type_int;int main(void){ type_int a = 0x10203040; short b = a; printf("a = 0x%x, b = 0x%x\n", a

2015-05-22 09:48:50 1112

原创 do{...}while(0)的意义和用法

libnids中的两个宏如下是libnids中定义的两个宏,这两个宏都包含了多个语句,看起来很复杂的样子。这两个宏定义其实是有潜藏的问题的,具体看本文第二部分中的“辅助定义复杂的宏,避免引用的时候出错”。#define START_CAP_QUEUE_PROCESS_THREAD() \ if(nids_params.multiproc) { /* threading... */ \

2015-05-21 21:39:34 1294

原创 linux静态库和共享库

这篇文章不错:http://blog.chinaunix.net/uid-26833883-id-3219335.html静态库 这类库的名字一般是libxxx.a优点:编译后的执行程序不需要外部的函数库支持,因为整个函数库的所有数据都被整合进目标代码中,所有使用的函数都已经被编译进可执行文件了。缺点:(1)利用静态函数库编译成的文件比较大,因为整个函数

2015-05-20 20:17:19 1948

原创 多线程:常见题目

1、线程基本概念、线程状态        线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。        线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源(线程ID、一组寄存器值、栈、调度优先级和策略、信号屏蔽字、errno变量、线程私有数据);       它可与同属一个进程的其它线程共享进程所拥有的全部

2015-05-18 19:52:03 1991

原创 sendfile: Linux中的"零拷贝"

译文:http://blog.csdn.net/caianye/article/details/7576198原文:http://www.linuxjournal.com/article/6345如今几乎每个人都听说过Linux中所谓的"零拷贝"特性,然而我经常碰到没有充分理解这个问题的人们。因此,我决定写一些文章略微深入的讲述这个问题,希望能将这个有用的特性解释清楚。在本文中

2015-05-18 14:50:47 2509

转载 Linux 中的零拷贝技术,第 2 部分

http://www.ibm.com/developerworks/cn/linux/l-cn-zerocopy2/index.html?ca=drs-Linux 中的直接 I/O如果应用程序可以直接访问网络接口存储,那么在应用程序访问数据之前存储总线就不需要被遍历,数据传输所引起的开销将会是最小的。应用程序或者运行在用户模式下的库函数可以直接访问硬件设备的存储,操作系统内

2015-05-18 11:13:07 1217

转载 Linux 中的零拷贝技术,第 1 部分

引言传统的 Linux 操作系统的标准 I/O 接口是基于数据拷贝操作的,即 I/O 操作会导致数据在操作系统内核地址空间的缓冲区和应用程序地址空间定义的缓冲区之间进行传输。这样做最大的好处是可以减少磁盘 I/O 的操作,因为如果所请求的数据已经存放在操作系统的高速缓冲存储器中,那么就不需要再进行实际的物理磁盘 I/O 操作。但是数据传输过程中的数据拷贝操作却导致了极大的 CPU 开销,限

2015-05-18 11:10:47 1320

原创 关于The C10K problem的一些资料

英文原文:http://www.kegel.com/c10k.html两篇中文翻译:http://www.cnblogs.com/fll/archive/2008/05/17/1201540.htmlhttp://blog.csdn.net/goldou/article/details/2579781从C10k到C500K:http://www.360doc.c

2015-05-17 15:44:54 1662

原创 线程私有数据STD

http://blog.csdn.net/xluren/article/details/8226668以下来自:http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part2/概念及作用在单线程程序中,我们经常要用到"全局变量"以实现多个函数间共享数据。在多线程环境下,由于数据空间是

2015-05-16 15:20:06 2295

原创 libnids中多线程

可以通过设置全局变量nids_params.multiproc不为0来在libnids中使用多线程捕获数据包。libnids使用的是glib库的gthread-2.0线程函数(该函数库某些函数已经过时,例如线程创建函数;过时的api:https://developer.gnome.org/glib/stable/glib-Deprecated-Thread-APIs.html;新版thread接口

2015-05-14 15:34:40 2932

原创 TCP和UDP区别

TCP和UDP区别TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。UDP(User Datagram Protocol) UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。 即使是出

2015-05-12 09:45:54 1615

原创 Wirshark抓包显示“TCP segment of a reassembled PDU”

用wireshark抓包发现里面有好多报文被标识为“TCP segment of a reassembled PDU”。如下图:         “TCP segment of a reassembled PDU”指的不是IP层的分片,IP分片在wireshark里用“Fragmented IP protocol”来标识。详细查了一下,发现“TCP segment of a rea

2015-05-09 17:20:19 3663

转载 基于libnids的TCP数据流的还原(多线程实现)

我们知道,libnids本身可以实现TCP数据流的重组,但是如果一个TCP流数据量比较大的时候,就会分成好多个TCP报文段,这些报文段在网络中的传播可能是乱序的,利用libnids可以帮助我们按顺序接收到这些报文段,即实现TCP报文段的重组。    但是我们如何把这些顺序的报文段重新还原成一个完整的数据文件,也是要考虑的一个问题,因为在很多时候,单个的报文段对我们的意义不大,我们需要一个完整的

2015-05-07 21:13:47 1892

转载 Libnids TCP会话重组分析

作者:geeksword出处:http://onestraw.net/cybersecurity/libnids-tcp-assembly声明:本文采用以下协议进行授权: 署名-非商用|CC BY-NC 3.0 CN ,转载请注明作者及出处。Vim源码分析环境搭建好了here,今天拿libnids练练手,虽然cscope命令才掌握几个常用的,但是阅读速度已经

2015-05-07 14:42:53 4794

原创 libnids运行机制 函数调用流程

http://www.cnblogs.com/renhao/archive/2011/08/29/2158334.html(1)系统调用 int nids_init() 初始化程序  (2)int nids_init() 调用函数 init_procs();  以下是该函数的实现代码: 1 staticvoid init_procs() 2 { 3

2015-05-07 08:57:17 1800

原创 m个苹果放入n个盘子

题目描述放苹果问题:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(注:5,1,1和1,1,5是同一种分法)解题分析:设f(m,n) 为m个苹果,n个盘子的放法数目,则先对n作讨论,当n>m:必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响。即if(n>m) f(m,n) = f(m,m)  当n1、有至少一个盘子空

2015-05-05 17:29:40 10959 1

原创 动态规划:计算字符串相似度

《编程之美》第223页。题目描述       许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程序。我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:1.修改一个字符(如把“a”替换为“b”);  2.增加一个字符(如把“abdd”变为“aebdd”);3.删除一个字符(如把“travelling”变为“traveling”);比

2015-05-05 17:09:20 3643

原创 二进制位的翻转和二进制表示中1的个数

转自:http://blog.chinaunix.net/uid-20760757-id-1872389.htmlunsigned char reverse8( unsigned char c ){    c = ( c & 0x55 ) > 1;    c = ( c & 0x33 ) > 2;    c = ( c & 0x0F ) > 4;    retu

2015-05-04 21:03:36 6165

原创 字符串合并处理(二进制位的倒序)

描述: 按照指定规则对输入的字符串进行处理。详细描述:将输入的两个字符串合并。对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。对排训后的字符串进行操作,如果字符为‘0’——‘9’或者‘A’——‘F’或者‘a’——‘f’,则对他们所代表的16进制的数进行BIT倒序的操作,并转换为相应的大写字符。如字符

2015-05-04 20:28:38 3082

原创 汽水瓶

描述: 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?

2015-05-04 16:44:28 1382

原创 称砝码问题

题目描述有一组砝码,重量互不相等,分别为m1、m2、m3……mn;它们可取的最大数量分别为x1、x2、x3……xn。 现要用这些砝码去称物体的重量,问能称出多少种不同的重量。 Input测试数据第一行一个整数n(n),表示有多种不同的砝码; 第二行n个整数(中间用空格分隔),m1、m2、m3……mn,分别表示n个砝码的重量;(1) 第三行n个整数(中间用空格分隔),x1、x

2015-05-04 16:25:48 3396 1

原创 最长递增子序列

一、题目描述描述:N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, …, K,他们的身高分别为T1, T2, …, TK,则他们的身高满足T1 Ti+1 > … > TK (1 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩

2015-05-02 20:40:57 13643

原创 string的size/length、resize/reverse和capacity

函数原型reserve原型: #include  void reserve( size_type size = 0 );函数reserve()将字符串的容量设置为至少size.如果size指定的数值要小于当前字符串中的字符数(亦即size ), 容量将被设置为可以恰好容纳字符的数值. reserve()以线性时间(linear time)运行.

2015-05-02 09:38:59 2574

多模式匹配算法实现及测试代码

基于NFA状态和基于DFA状态的AC(Aho—Corasiek)算法,WM(Wu-Manber)算法

2016-03-03

jsoncpp-src-0.5.0.rar.gz可正确编译的源文件

在这里http://sourceforge.net/projects/jsoncpp/?source=typ_redirect下载的源码在编译安装时有问题,因为README.txt是错误的,所以我这里的源码提供了正确的编译方式。

2015-12-11

dwr实现的服务器推demo

这是一个十分简单的demo,利用dwr实现了一个服务器推程序,客户端jsp页面不用刷新可以接收到服务器发送过来的消息并显示。多多指教。

2015-12-08

DWR中文文档

DWR是一个开放源码的使用Apache许可协议的解决方案,它包含服务器端Java库、一个 DWR servlet以及 JavaScript库。虽然 DWR不是 Java平台上唯一可用的Ajax-RPC 工具包,但是它是最成熟的,而且提供了许多有用的功能。从最简单的角度来说,DWR是一个引擎,可以把服务器端Java对象的方法公开给JavaScript 代码。使用DWR 可以有效地从应用程序代码中把Ajax的全部请求 -响应循环消除掉。这意味着客户端代码再也不需要直接处理XMLHttpRequest对象或者服务器的响应。不再需要编写对象的序列化代码或者使用第三方工具才能把对象变成XML。甚至不再需要编写servlet代码把 Ajax请求调整成对 Java域对象的调用。

2015-12-08

2016年 58校园招聘笔试

2016年 58校园招聘笔试 哈尔滨站 笔试题目

2015-12-03

2016美团笔试-计算机校园招聘笔试题目

2016美团笔试-计算机校园招聘笔试题目,成都站在线笔试题目

2015-12-03

gethostbynameAndgetservbyname.tar.gz

gethostbynameAndgetservbyname.tar.gz 使用gethostbyname和getservbyname的获取时间程序。《unix网络编程》第11章程序。

2015-04-22

使用select的UDP和TCP回射程序

《unix网络编程》第8章最后例子,使用select的UDP和TCP回射程序

2015-04-16

libnids-1.24.tar.gz

libnids-1.24.tar.gz 官网地址http://libnids.sourceforge.net/

2015-04-15

udp客户服务器端回射完整例子

《unix网络编程》第八章8.1例子,使用UDP套接字开发的最简单的客户服务器例子

2015-04-14

使用epoll的客户服务器端例子

客户端使用的是tcpclipoll.c,服务器使用的是tcpsrvepoll.c.给出了Makefile文件

2015-04-11

使用poll函数的的客户服务器程序

《unix网络编程》第六章,使用poll函数的客户服务器程序

2015-04-06

《unix网络编程》使用select的客户服务器端例程

《unix网络编程》第六章,使用select的客户服务器程序

2015-04-05

unix网络编程第5章客户服务器最终代码

这个是unix网络编程第5章最终版本的程序代码,含有makefile

2015-04-04

unix网络编程(卷一)源码

unix网络编程第一卷的源码,是官方未改变版本的

2015-03-15

Visual_Assist_X_10.8.2036.0破解版以及破解方法

Visual Assist X是一款非常好的Microsoft Visual Studio插件,可以支持Microsoft Visual Studio 2003,Microsoft Visual Studio 2005,Visual Studio 2008,Microsoft Visual Studio 2010,支持C/C++,C#,ASP,VisualBasic,Java和HTML等语言,能自动识别各种关键字、系统函数、成员变量、自动给出输入提示、自动更正大小写错误、自动标示错误等,有助于提高开发过程的自动化和开发效率。不过该插件是收费的,只提供适用版本,这里给出该工具下载方法和破解方法。

2014-12-27

图书管理系统课程设计报告

图书管理系统课程设计报告,使用php语言mysql数据库,是课程设计的报告

2013-12-07

用Javascript 编写 HTML在线编辑器

用Javascript 编写 HTML在线编辑器

2013-12-07

空空如也

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

TA关注的人

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