自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (1)
  • 收藏
  • 关注

原创 linux程序设计:socket编程

http://blog.csdn.net/hguisu/article/details/7445768

2016-10-13 22:21:44 310

原创 linux程序设计:线程同步,进程同步

一. 线程同步(信号量、互斥锁、条件变量、读写锁)地址:http://blog.csdn.net/yusiguyuan/article/details/14160081http://blog.csdn.net/yusiguyuan/article/details/14161225二.进程同步(管道、共享内存和消息队列)1. 管道pipe:管道是一种半双工的通信方式,数据只能单向

2016-10-13 22:16:25 563

原创 lilinux程序设计:进程间通信

自己没有总结,看别人的博客,讲得很仔细http://blog.csdn.net/ljianhui/article/details/10168031

2016-10-11 22:57:32 312

原创 DNS:域名系统原理理解

摘自于:http://blog.csdn.net/yipiankongbai/article/details/25031461摘自于:http://blog.csdn.net/yipiankongbai/article/details/25029183

2016-10-09 22:16:31 654

原创 多线程的一些题目总结

转摘自大神博客:http://blog.csdn.net/morewindows/article/details/7392749

2016-09-26 17:54:27 317

原创 linux程序设计:POSIX线程

一. 什么是线程    线程是一个进程内部的一个控制序列。在一个程序中的多个执行路线就叫线程。   进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位。每一个进程都有一个自己的地址空间,即进程空间或(虚空间)。进程空间的大小 只与处理机的位数有关,一个 16 位长处理机的进程空间大小为 216 ,而 32 位处理机的进程空间大小为 23

2016-09-26 17:42:35 372

原创 linux程序设计:可重入和线程安全

在多线程编程和信号处理过程中,经常会遇到可重入(reentrance)与线程安全(thread-safe)。很多人纠结于reentrance和thread-safe两个概念理解纠缠不清。我想救我对reentrance和thread-safe的理解作个总结一、可重入(reentrance)首先来看下APUE中,列出的可重入函数:略以上表中的这些函数,都

2016-09-26 10:48:23 359

原创 linux程序设计:堆和栈的区别

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回    收   。注意它与数据结构中的堆是两

2016-09-26 10:32:44 1750

原创 linux程序设计:信号

一. 信号是什么软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进

2016-09-25 22:44:20 253

原创 linux程序设计:进程和信号

一. 什么是进程    进程:一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。可以把进程看成是正在运行着的程序。    linux是多任务操作系统:可以同时运行多个程序。每个运行着的程序实例就构成一个进程。    linux是多用户操作系统:可以同时允许多个用户访问。每个用户可以用时运行多个程序,甚至可以运行同一个程序的许多个实例。   正在运行着的程序或进程由程

2016-09-25 21:28:14 2376

原创 linux程序设计:linux物理内存和虚拟内存

一. 物理内存和虚拟内存    我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。    物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在Linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,

2016-09-24 21:09:59 2673

原创 linux程序设计:调试

一. 一些基本知识1.gcc和g++和cc    gcc是C编译器;g++是C++编译器;linux下cc一般是一个符号连接,指向gcc;gcc和g++都是GUN(组织)的编译器。而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Linux/Unix都是大小写敏感的系统,这点一定要注意。cc是Unix系统的C Compiler,而gcc则是GNU Compiler Col

2016-09-24 17:20:58 373

原创 linux程序设计:make命令和makefile文件

1.makefile文件的语法makefile文件由一组依赖关系和规则构成。每个依赖关系有一个目标(即将要创建的文件)和一组该目标所依赖的源文件构成,而规则描述了如何通过这些所依赖的文件创建目标。内容比较多请参考大神的:http://blog.csdn.net/haoel/article/details/2886

2016-09-23 21:42:19 228

原创 linux程序设计:第七章 数据管理

一. 内存管理 1.简单的内存分配使用标准c语言函数库中的malloc调用来分配内存。    void * malloc(size_t size)返回的是一个void*指针,因此需要通过类型转换。可以保证其返回的内存是地址对齐的,因此可以将其转换成任何类型的指针。2.分配大量的内存    应用程序所需的内存是由linux内核管理的。刚开始,内核只是通过使用空闲的物理内存来满

2016-09-23 15:24:30 293

原创 Ip:首部检验和字段

IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下:在发送数据时,为了计算数IP据报的校验和。应该按如下步骤:(1)把IP数据报的首部都置为0,包括校验和字段。(2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和。(3)把得到的结果存入校验和字段中。在接收数据时,计算数据报的校验和相对简单,

2016-09-22 21:39:09 4164

原创 Linux程序设计 第四章:linux环境

一. 程序参数int main(int argc , char *argv[])argc是程序参数的个数,argv是一个代表参数自身的字符串数组。参数个数包括程序自身,argv数组也包含程序名并把它作为第一个元素argv[0]二. 环境变量控制shell脚本和其它程序的变量,可以用来配置用户环境。char *getenv( const char * name);int pu

2016-09-21 22:26:43 237

原创 linux程序设计:第三章 文件操作

一. linux文件系统1.在linux中几乎一切都是文件,可以像使用文件一样时用磁盘文件、串行口和打印机和其他设备。目录是用于保存其它文件的节点号的名字的文件。硬件设备也被映射为文件。常用的设备文件有三个:/dev/console 系统控制台/dev/tty 控制终端/dev/null 空设备2.操作系统的核心,即内核是一组设备驱动程序,是一组对系统硬件进行控制的底层

2016-09-21 16:33:17 292

原创 大话数据库: 第五章 操作表中的数据

一. 插入语句1. 简单的插入语句INSERT INTO 表名(列名1,列名2,列名3... ) VALUES(列名1的值,列名2的值,列名3的值... )2. 批量插入语句INSERT TNTO 要插入数据的目标表和视图名 select 检索语句用select实现:select 列表 INTO 新表名 数据来源表二. 检索语句1. 选择数据列SELECT *

2016-09-21 10:42:42 239

原创 leetcode:single-number,single-number ii

一. 题目描述single-number:Given an array of integers, every element appears twice except for one. Find that single one.Note:Your algorithm should have a linear runtime complexity. C

2016-09-19 22:25:49 219

原创 linux程序设计:第一章:入门 第二章 :shell程序设计

一. 入门1.开发系统应用程序存放在系统为之保留的特定目录中。系统提供的程序在/usr/bin中,本地添加的程序在/usr/local/bin或/opt中。头文件是用来提供对常量的定义和对系统函数和库函数调用的声明。在/usr/include里面。库文件是一组预先编译好的函数的集合。按照可重用的原则编写。在/lib和/usr/lib中,库文件的类型分为:静态库.a,共享函数库.so

2016-09-19 20:15:37 323

原创 大话数据库:第四章 创建和维护表

一. E-R模型实体联系模型,提供表示实体、属性和联系的方法,用来描述现实世界的概念模型。实体只是一个数据对象,客观存在的事物,可以是抽象的也可以是实际存在的事物。这些事物会有相关的属性。实体之间的联系有三种类型: 一对一关联1:1和一对多关联1:N和多对多关联N:M,关系规范化有三种范式,在满足第三范式前必须满足第二范式,满足第二范式之前必须满足第一范式。第一范式:所有属性是不可

2016-09-18 20:25:59 331

原创 编程珠玑:第三章 数据决定程序结构 习题解答

一.题目描述:本书出版之时,美国的个人收入所得税分为5种不同的税率,其中最大的税率大约为40%.以前的情况则更为复杂,税率也更高。下面所示的程序文本采用25个if语句的合理方法来计算1978年的美国联邦所得税。税率序列为0.14, 0.15, 0.16, 0.17, 0.18.....。序列中此后的计算大于0.01.有何建议呢?if income tax = 0;els

2016-09-13 21:44:53 1588

原创 leetcode:copy-list-with-random-pointer

一、题目描述A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.Return a deep copy of the list.二、题目分析我们知道如果是简

2016-09-12 17:48:24 211

转载 编程珠玑:第一章开篇课后题解答

转载自博客:点击打开链接

2016-09-11 11:40:32 207

原创 编程珠玑:第二章 啊哈,算法三个问题

一. 三个问题A:给出一个顺序文件,它最多包含40亿个随机排列的32位整数。       问题:找出一个不在文件中的32位整数。       注意:题目中没有说,这40亿个数是否是含有重复的数据       条件限制:       1、如果有足够的内存,如何处理?       2、如果内存仅有上百字节(内存不足)且 可以用若干外部临时文件,如何处理?B:类似字符串循环移

2016-09-10 21:55:32 1109

原创 leetcode:word-break-ii

1.题目描述Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each word is a valid dictionary word.Return all such possible sentences.For example,

2016-07-26 11:45:15 315

原创 linux的会话、进程、进程组等概念

1.一些缩写PID = 进程ID (由内核根据延迟重用算法生成)PPID = 父进程ID(只能由内核修改)PGID = 进程组ID(子进程、父进程都能修改)SID = 会话ID(进程自身可以修改,但有限制,详见下文)TPGID= 控制终端进程组ID(由控制终端修改,用于指示当前前台进程组)2.关于进程、进程组、会话之前的关系总体关系:进程属于一个进程组,进程组属

2016-07-25 20:58:44 4153

转载 C++中的string类的用法

要想使用标准C++中string类,必须要包含#include // 注意是,不是,带.h的是C语言中的头文件using  std::string;using  std::wstring;或using namespace std;下面你就可以使用string/wstring了,它们两分别对应着char和wchar_t。string和wstri

2016-07-20 11:21:23 206

原创 leetcode:word-break

1.题目描述Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.For example, givens ="leetcode",dic

2016-07-20 11:18:39 229

原创 leetcode:linked-list-cycle-ii

题目描述:Given a linked list, return the node where the cycle begins. If there is no cycle, returnnull.Follow up:Can you solve it without using extra space?1.题目理解什么叫有环?例如:A->B->C->D->E

2016-07-19 10:25:29 220

原创 leetcode:sort-list

1.题目描述Sort a linked list in O(n log n) time using constant space complexity。2.实现(1)堆排序实现,它的时间复杂度为O(n log n),但是由于堆排序的实现都是用数组,所以先将链表转化为数组,将数组的元素进行堆排序之后,再将元素转化为链表。class Solution {public: i

2016-06-07 15:33:10 266

原创 排序总结

排序的稳定性,排序稳定对于某些特殊需求来说是至关重要的。内排序与外排序:将排序记录全部放置在内存中就是内排序,外排序需要在内外存之间多次交换数据才能进行。内排序分类:插入排序,交换排序,选择排序,归并排序。插入排序类:直接插入排序,希尔排序选择排序类:简单选择排序,堆排序交换排序类:冒泡排序,快速排序归并排序类:归并排序简单排序:冒泡,简单选择,直接插入

2016-06-06 10:17:10 297

原创 排序:快速排序

1.概述快速排序是最慢的冒泡排序的升级,它们都属于交换排序类。也是通过不断比较的移动交换来实现交换的,与冒泡排序相比,增大了记录的比较和移动的距离,将关键字较大的记录从前面直接移动到后面,关键字较小的记录从后面直接移动到前面,从而减少了总的比较次数和移动交换次数。基本思想是:通过一趟排序将待排序记录分割成成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记

2016-06-05 22:45:58 362

原创 排序:堆排序

1.概述首先堆是具有下列性质的完全二叉树:每个节点的值都大于或等于其左右节点的值,称为最大堆。或者每个节点的值都小于或等于其左右孩子的值,称为最小堆。注意二叉堆采用的数组的第一个元素不用,这样当节点为i时,2i为其左子节点,2i+1为qi右子节点,i/2为其父节点。堆排序是利用最大堆进行排序的方法。基本思想是:将待排序的序列构造成一个最大堆,整个序列的最大值就是堆顶的根节点。将其与堆数

2016-06-04 20:53:20 235

原创 排序:希尔排序

1.概述希尔排序是突破时间复杂度为O(n2)的第一批算法。我们分析直接插入排序,当我们的记录是基本有序的时候,只需要少量的插入操作就可以完成整个记录的排序工作,此时直接插入很高效。还有就是记录比较少的时候,直接插入的优势也比较明显。我们把原本有大量记录数的记录进行分组分割成若干个子序列,此时每个子序列待排序的记录数就比较少了,然后对这些子序列分别进行直接插入排序,当整个序列都基本有序时,再

2016-06-03 22:32:33 207

原创 排序:直接插入排序

1.概述直接插入排序的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。2.实现进行N-1趟排序,第P趟的时候,位置0到P的元素为已排序状态。void insertaion_sort(int A[],int N){ int i,j; for(i=1;i<N;i++) { if(A[i]<A[i-1]) { int tmp=A

2016-06-03 15:57:08 234

原创 string转化为int

方法一:std::string str = "123";int n =atoi(str.c_str()); intx=static_castint>(atof(s.c_str()));atof函数:功 能: 把字符串转换成浮点数 用 法: double atof(const char *nptr); atoi函数:功 能: 把字符串转换成长整

2016-06-02 21:42:19 431

原创 排序:简单选择排序

1.概述不同于冒泡排序的两两交换,选择排序是先找到合适的关键字再做交换,并且只移动一次就完成相应关键字的排序工作。通过n-i次关键字间的比较,从n-i+1个记录中选出关键字做小的记录,并和第i个记录交换之。2.实现void swap(int A[],int i,int j) { int tmp=A[i]; A[i]=A[j]; A[j]=tmp; } vo

2016-06-02 19:55:09 224

原创 排序:冒泡排序

1.概述冒泡排序,是一种交换排序,他的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。2.第一种实现:void swap(int A[],int i,int j){ int tmp=A[i]; A[i]=A[j]; A[j]=tmp;}void Bubble_sort(int A[],int length){ int i,j; for

2016-06-02 16:02:07 199

原创 排序:归并排序

1.概述采用分治策略,将问题分为一些小的问题然后递归求解,而治的阶段则是将分的阶段解得各个答案合并在一起。现将一个序列分为只有1,2元素的子序列,然后两两合并。2.实现对一个具有N个元素的数组进行归并排序void Merge_sort(int A[],int N){ int *dstArray; dstArray=(int*)malloc(N*sizeof(int)); i

2016-06-01 22:35:47 262

基于winpcap的抓包程序报告

很有用的资料,对于想学winpcap抓包的同学来说可以好好研究一下!

2014-10-11

空空如也

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

TA关注的人

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