自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 将一句话里的单词进行倒置,标点符号不倒换(c++)

实现一个函数将一句话里的单词进行倒置,标点符号不倒换。比如一句话“i come from wuhan.“倒置后变成"wuhan. from come i"。#pragma warning (disable:4786)#include #include#include#include using namespace std;int main(void){    s

2013-08-20 11:11:06 2823

转载 匈牙利算法——最大匹配

问题简介:二分图是指这样的图:图的顶点分成X和Y两个集合,同一个集合的顶点不存在边相连,只有不同集合的顶点才有可能有边直接相连。二分图的一个匹配是指求出一个边的集合,使得集合里任意两条边都没有公共的顶点,也就是说一个顶点最多只属于一条边。简单地看,二分图的一个匹配给出了一个X集合的某些顶点Y集合的某些顶点的一个一一映射。二分图的最大匹配(maximal matching)就是找出边数最

2013-05-19 20:51:50 1422

转载 fcntl 记录锁和struct flock

fcntl 记录锁很多时候,当我们有多个进程要访问同一个文件的时候,为了防止多进程访问导致的不一致,我们就要考虑进程间的同步问题了。fcntl是一个非常强大的函数,在这里我们可以使用它来给文件的某一个部分上锁。先来看一下它的声明:int fcntl(int filedes, int cmd, ... /* struct flock *flockptr */ );

2013-05-18 21:14:32 5002

原创 系统级I/O健壮性读程序

取自深入理解计算机系统第十一章#include#include#include#include#include#include#include#include#include/* rio with internal buf */#define RIO_BUFSIZE 8192typedef struct { int rio_fd;int ri

2013-05-16 22:19:39 690

原创 操作系统内存管理与简单分配器实现

1.操作系统的一个中心任务是内存管理,比如说I/O操作比较慢,为了让处理器尽量的忙从而提高效率,操作系统必须聪明的安排换入换出的时间以便减少内存I/O对性能的影响。2.内存管理的五点需要:重定向,保护,共享,物理组织,逻辑组织。3.在两级存储器间移动信息的任务应该是操作系统的任务,而这个任务恰恰是内存管理的本质所在。4.内存分区:固定分区(产生内部碎片多),动态分区(会产生外部分区),

2013-05-09 22:18:41 1043

原创 memory map program --------uses mmap function to copy file fd to stdout

#include#include#include#include#include//PROT_READ header file#include#include//O_RDONLY header filevoid mmapcopy(int fd, int size){char *bufp;bufp = mmap(NULL, size, PROT_READ, M

2013-05-09 12:17:07 683

转载 execve函数

虚拟存储器和存储器映射在程序加载到存储器的过程中扮演很关键的角色。execve函数在实际中如何加载和执行程序的呢?就是用到上边两个关键的概念。exec簇函数,最后,都是调用了execve这个函数!这个函数的作用,就是去执行一个文件!典型的用法,就是在shell中,执行一个文件,比如说,一个编译好的文件,叫做helloworld,那么,在shell下执行./helloworld的时候

2013-05-09 10:59:22 1085

原创 linux进程的信号通信与进程的管道通信

1.同步和互斥:进程互斥是进程之间发生的一种间接性作用,一般是程序不希望的。通常的情况是两个或两个以上的进程需要同时访问某个共享变量。我们一般将发生能够问共享变量的程序段成为临界区。两个进程不能同时进入临界区,否则就会导致数据的不一致,产生与时间有关的错误。解决互斥问题应该满足互斥和公平两个原则,即任意时刻只能允许一个进程处于同一共享变量的临界区,而且不能让任一进程无限期地等待。程同步是进程之间直

2013-05-02 21:03:53 857

转载 利用递归方法打印进程树

/proc/pid/status下的信息递归打印系统的进程树。#include#include#include#include#include#include#include#include#includechar default_path[1024] = "/proc/";int s = 0;typedef struct file_info {

2013-05-01 22:36:47 1515

原创 创建守护进程

守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。守护进程的编程要点 1. 在后台运行。为避免挂起控制终端将Daemon放入后台执行。方法是在进程中调用fork使父进程终止,让Daemon在子进程中后台执行。 if(pid=fork())

2013-05-01 10:48:33 483

原创 ping程序(c语言实现)

#include#include#include#include#include#include#include#include#include#include#include#include#include#define PACKET_SIZE 4096#define MAX_WAIT_TIME 5#define MAX_NO_PA

2013-04-27 18:36:45 718

转载 容易被忽视的IP报头中的Checksum校验和

看计算机网络相关的书,每次看到IP或者UDP报头校验和时,都一瞥而过,以为相当简单。可是今天一看真傻眼了,怎么算的,为什么用反码不用补码还真不知道怎么回事。算法的C语言实现:unsigned short csum(unsignedchar *addr, int count){/* Compute Internet Checksum for "count" bytes

2013-04-26 17:53:10 2464

原创 linux网络套接口编程基础

1.主要的头文件:1):sys/types.h 基本系统数据类型,是Unix/Linux系统的基本系统数据类型的头文件,含有size_t,time_t,pid_t等类型。2):netinet/in.h  Internet address family,定义 sockaddr_in结构体,htons,htonl,ntohs, ntohl字节序列转换函数的头文件。3):sys/sock

2013-04-24 11:21:09 1028

原创 linux程序与资源管理常用指令

1.背景工作管理命令:ctrl + z将当前进行的工作丢到背景下,此时工作处于停止状态,要想让背景中的stopped状态变成running状态用bg命令,放在背景下最大的好处是不怕ctrl + c这个中断指令。命令 + & 可以让屏幕中的工作在背景下执行。fg命令可以让在背景下执行的程序重新在屏幕上执行。jobs命名知道当前有哪些工作在背景下执行。kill命令用于停止或者杀死程序,默认

2013-04-22 15:38:15 676

原创 下一个序列

For this problem, you will write a program that takes a (possibly long) string of decimal digits, and outputs the permutation of those decimal digits that has the next larger value (as a decimal num

2013-04-20 15:09:05 575

转载 最小生成树——prim算法

所谓生成树,就是n个点之间连成n-1条边的图形。而最小生成树,就是权值(两点间直线的值)之和的最小值。http://sjjp.tjuci.edu.cn/sjjg/DataStructure/DS/web/flashhtml/prim.htm(prim构成最小生成树的演示过程)。其实原理很简单就是两个集合:一个是图向量的集合,一个是要求的最小生成树的集合,然后就是选择它邻近的

2013-04-19 22:15:01 893

转载 BFS和DFS算法

广度优先搜索(Breadth-First-Search)和深度优先搜索(Deep-First-Search)是搜索策略中最经常用到的两种方法,特别常用于图的搜索.其中有很多的算法都用到了这两种思想,比如:Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。BFS的思想:从一个图的某一个顶点V0出发,首先访问和V0相邻的且未被访问过的顶点V1、V2、

2013-04-19 15:01:36 842

原创 阶乘零的个数和最后一位非零数

首先对于求阶乘最后一位非零数程序运行的效率并不好,这个方法对每一个数据都进行了处理,因此,速度上受到了一点限制。但是思路却很简单,代码量较小(注:想要提高效率需要考虑阶乘的计算方法细节,网上很多)。Input to the program is a series of nonnegative integers not exceeding 10000#include int main

2013-04-18 18:14:13 1061

原创 大数加法和乘法

大数乘法:/******************************* *大整数的乘法法 *输入两个小于100位的整数值整数值*输出值:两个整数的乘积*******************************/  #include #include int main(){char a[100], b[100];int la, lb, n;int

2013-04-18 18:02:37 592

原创 Dijkstra算法2:邻接表描述

邻接表是图的一种链式存储方式。对图的每个顶点建立一个单链表(n个顶点建立n个单链表),第i个单链表中的结点包含顶点Vi的所有邻接顶点。又称链接表。邻接表的表示方法:1)表节点结构邻接表中每个表结点均有两个域:(还可加上与弧或者叫边相关的信息如:权值) ① 邻接点域adjvex  存放与vi相邻接的顶点vj的序号j。 ② 链域next  将邻接表的所有表结点链在一起。2)头结点结构:

2013-04-17 20:32:46 1242

原创 unix网络编程——传输层

1  UDP:用户数据报协议与TCP传输协议的比较1)TCP提供客户与服务器的连接,UDP不提供。2)TCP提供可靠性传输,当TCP向另一端发送数据时它要求对端返回一个确认。注意可靠传输并不能保证数据一定会被对方端点接受,因为这是不可能做到的。即TCP提供的是数据的可靠投递或者是故障的可靠通知。3)TCP给发送数据的每一个字节关联一个序列号进行排序,如果发送的序列非顺序到达,接收端的T

2013-04-16 09:27:17 608

转载 TCP/IP详解学习笔记-基本概念

为什么会有TCP/IP协议在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法的用电线把电脑连接到了一起。但是简单的连到一起是远远不够的,就

2013-04-15 15:00:00 499

原创 TCP/IP协议详解——IP协议,ARP协议,ICMP协议

IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。所以这也就出现了TCP是一个可靠的协议,而UDP就没有那么可靠的区别。1.IP数据格式Ip Header如下:解释两点:首先IP协议头

2013-04-15 14:56:43 1305

转载 大端法、小端法、网络字节序 转

关于字节序(大端法、小端法)的定义《UNXI网络编程》定义:术语“小端”和“大端”表示多字节值的哪一端(小端或大端)存储在该值的起始地址。小端存在起始地址,即是小端字节序;大端存在起始地址,即是大端字节序。 也可以说: 1.小端法(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。 2.大端法(Big-Endian)就是

2013-04-15 09:07:56 782

转载 linux终端图形编程方法

终端图形编程使用curses库,提供了一些基本的屏幕操作函数。使用curses库函数:若系统没有自带安装sudo apt-get install ncurses-dev, 编程时候gcc -o filename -lcurses(-lcurses参数用来连接时提示连接程序将curses库链接进去)。在程序中使用curses库函数程序中必须引用curses库#include.程序初始化时系统会自

2013-04-14 19:11:42 2710

原创 Linux proc文件系统

Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统/内核信息及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态,即通过proc与内核交互。注意只存在主存中不占用外存空间。 proc 文件系统可以被用

2013-04-14 15:07:09 645

原创 linux下单个文件复制程序

#include#include#include#include#define BUFSIZE 1024int fdin = -1, fdout = -1;int bytenum, writenum;int die(char *mess){if(fdin > -1)close(fdin);if(fdout > -1)close(fdout);pe

2013-04-13 18:20:39 960

原创 链表(c++实现)

用C++写了一个链表,虽然不难,但也没有想象中那么简单,况且代码质量也不够好。直接看代码:list.h#includeusing namespace std;#ifndef LIST#define LISTtypedef int ElemType;class List{public:List();List(const List& other)

2013-04-12 18:57:59 477

原创 简单的获取服务器时间程序(UNIX网络编程)

客户端程序:TimeGetC.c#include#include#include#include//for sockaddr_in#include#include#include#include#includeint main(int argc, char** argv){struct sockaddr_in serverAddr;int c

2013-04-10 19:28:53 600

原创 ubuntu10.10卸载以及ubuntu12.04LTS的安装

安装ubuntu12.04 LTS前需要卸载掉之前的版本ubuntu10.10,我的系统是WIN7+ubuntu10.110.win7下如何正确删除ubuntu?如果ubuntu不是以wubi方式安装的,那么卸载ubuntu时要慎重,不是直接删除ubuntu所在分区这么简单的,否则你会发现你的windows系统也进不去了。那是因为如果你安装Ubuntu的时候将GRUB写入到MBR,

2013-04-09 09:46:42 1198

原创 linux下简单的UDP对等通信程序

应用程序采用UDP报文向自身发送消息,程序在初始化的时候绑定一个端口,并且在这个端口上等待数据到来,同时提供一个键盘输入,用户可以用键盘输入信息,然后发送到自己绑定的端口上。代码:#include#include#include#include#include#include#include#include#include#include#inclu

2013-04-08 16:39:03 1787

原创 linux下一个简单的TCP通信程序——客户端向服务端发送任意字符串

程序目的:服务器端等待客户端连接,若连接成功,则用户可以通过服务器在接受到字符串后进行判断,若不是quit字符串则输出客服端的地址信息,以及接受到的数据,同时将接受到的数据按照原样再发给客服端,若是quit字符串则断开本次连接。问题以及解决:1)服务器端不能连续显示客户端发送的数据2)服务器端发送的数据在客户端正常显示一次,以后乱码。#include#include#inc

2013-04-08 15:11:07 9504

原创 linux以及vim配置问题积累

1.ubuntu tty2纯文本窗口显示方框或者问号乱码:(在tty7即下x-window模式下显示正常)sudo vim /var/lib/locales/supported.d/local 改为将zh_CN.UTF-8 UTF-8改en_us.UTF-8 UTF-8,sudo vim /etc/default/locale将LANG ="zh_CN.UTF-8"改:LANG = "en_u

2013-04-07 22:23:58 1186

转载 ubuntu无法安装vim软件包

安装vim一般指令:sudo apt-get install vim就搞定了。但是出现了:正在读取软件包列表... 完成正在分析软件包的依赖关系树     正在读取状态信息... 完成    现在没有可用的软件包 vim,但是它被其它的软件包引用了。这可能意味着这个缺失的软件包可能已被废弃,或者只能在其他发布源中找到E: 软件包 vim 还没有可供安装的候选者这种问

2013-04-07 16:19:14 18404 8

转载 linux文件系统

1)linux常用的文件系统:ext文件系统(扩展文件系统)是专门为linux开发的文件系统。ext2是二级扩展文件系统,ext3是日志式文件系统,独立的日志文件跟踪磁盘内容的变化,将整个磁盘的写入动作完整的记录在磁盘的某个区域上,在分区保存一个日志记录文件。2)linux系统的目录结构:  linux根目录下各目录的功能Linux文件系统采用分层的树形目录结构.即在一个根目录(通

2013-04-07 14:31:35 639

转载 ubuntu10.10系统安装(win7硬盘下安装)

开始安装的ubuntu11.10,不过由于无线网卡问题没有解决的了就想卸载了,哎在windows下直接删除了ubuntu的分区,这下子惨了进去rescure grub>(救援模式了),无奈只能重装系统。grub多操作系统启动管理器,MBR(master blook record)主引导扇区,大约512字节.BIOS基本输入输出系统(固化在计算机主板上的一个ROM芯片程序,它保存着计算机最重要的

2013-04-02 20:34:21 788

原创 ubuntu10.10 无线网卡驱动安装

可能是CQ40的问题,对于linux和xp兼容性很差,反正我真是用够这款电脑了,有钱早换了。今天装了一整天ubuntu系统和无线网卡驱动,还好总算倒腾出来了,开始装的ubuntu11.10(64位的AMD),网卡不好用以为可能是64位或者AMD不兼容的事,就下载了一个32位的ubuntu10.10,装好了以后网卡还是驱动不了,对于网卡采取的措施就是用windows下的驱动来驱动网卡,ubuntu的

2013-04-02 19:24:45 1662

原创 c语言的static属性

一说到C的static属性首先想到隐藏,对于static变量值仅函数体内可见,对于static函数来说只有当前文件可见。对于变量,除了隐藏,static还有下面两个作用:保持变量内容的持久;默认初始化为0。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。下面看个简单的测试程序:#include #define test_num 3void test_sta

2013-03-30 09:51:54 658

Qt简单教程

Qt简单教程非常适合初学者,一般一个周就可以入门。Qt教程及软件(超级浅显易懂,非常适合初学者)

2012-10-17

图象处理专业论文

雷达卫星图象处理专业论文,英文格式,主要是算法的研究

2011-10-13

空空如也

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

TA关注的人

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