自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(107)
  • 资源 (4)
  • 收藏
  • 关注

转载 getopt和getopt_long函数

平时在写程序时常常需要对命令行参数进行处理,当命令行参数个数较多时,如果按照顺序一个一个定义参数含义很容易造成混乱,而且如果程序只按顺序处理参数的话,一些“可选参数”的功能将很难实现。在Linux中,我们可以使用getopt、getopt_long、getopt_long_only来对这个问题进行处理。[cpp] view plaincopy

2015-05-27 20:00:48 348

原创 hdu 1512 Monkey King 左偏树

有这么一群猴子,他们喜欢打架,要是两个猴子没打过就会开打,打完后自己的val值减半,然后他们就变成好基友,他们之前各自的好基友也变成了好基友,当两只猴子决斗时,并不一定是他们打,而是他们各自的好基友里面val值最大的出来打,如果他们本来就是好基友那么就不打了,output  -1,否则output 打完后最大的val值:利用左偏树求解,读入数据时为每一个猴子建立一颗左偏树,当两个猴子打

2015-04-06 21:29:53 360

原创 左偏树

#define typec int // type of key valusing namespace std;const int na = -1;int swap(int &x,int &y){ int t = x; x = y; y = t;}struct node{ typec key; int l, r, f, dis

2015-04-06 19:00:25 341

原创 快速输入输出

当程序有大量的数据输入输出时,以下函数可以更加快速(针对整数--其他数据类型同理) char buffer[10];10 void print_d( int x )11 {12 if ( x == 0 )13 {14 putchar('0');15 }16 else17 {18 int

2015-04-05 18:39:37 451

原创 shell编程-----引用和替换

-----------------------常用引用符号--------------------双引号--------除美元符号($),单引号( ' ),反引号( ` ),反斜线( \ )外,其他字符保持字面意义-------------------------------------------------------------单引号--------所有的字符都将保持字面意义

2015-04-03 18:40:27 377

原创 shell编程---变量的定义

为了更好地控制变量的相关属性,bash 提供了一个名称为declare的命令来声明变量,该命令的基本语法如下:declare attribute variable其中,attribute表示变量的属性,常用的属性有如下所述。 -p:显示所有变量的值。 -i:将变量定义为整数。在之后就可以直接对表达式求值,结果只能是整数。如果求值失败或者不是整数,就设置为0。 -r

2015-04-03 17:24:47 458

原创 Shell编程之多行注释

在Shell中可以使用#对某一行进行注释,但有时候需要对多行进行注释这时候可以使用“:”配合here document::...注释内容BLOCK#----------------------------example.sh----------------------------#!  /bin/sh:本脚本的作用是输出一行字符串作者:zhuzh

2015-04-03 16:18:45 430

原创 KMP算法

//next 数组求法  void GetNextval(char* p, int next[])  {      int pLen = strlen(p);      next[0] = -1;      int k = -1;      int j = 0;      while (j     {          //p[k]表示前缀,p[j]表示后缀

2015-04-02 00:42:48 266

原创 hdu 1030 Delta-wave

先判断n和m属于哪一横行在判断n和m在哪一左斜列和哪一右斜列然后分别作差求和

2015-03-19 14:26:42 412

转载 成为IT精英,我奋斗7年(转)

转载处:http://liangwang985.blog.163.com/blog/static/119549233201191394259491/这些日子 我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为国内IT的发展尽自己一份微薄的力量。最近看到很多学生朋友和我当年一样没 有方向 ,所以把我的经历写出来与大家共勉,希望能给刚如行的朋友们一点点帮助。 一

2015-03-16 17:34:09 293

原创 Linux学习笔记之---基于UDP的通信程序设计

13:基于UDP的通信程序设计                    13.1    UDP数据的收发            1.数据发送函数sendto            #include             #include             int sendto(int s,const void *msg,int len,int flags,     

2015-03-10 19:52:12 475

原创 Linux学习笔记之---基于TCP的通信程序的设计

12:基于TCP的通信程序的设计    12.1    套接字的类型            1.流套接字SOCK_STREAM            是双向的,可靠的,顺序的,不重复的,面向连接的,tcp协议                    2.数据报套接字SOCK_DGRAM            无连接,独立的,无序的,不保证可靠性,udp协议       

2015-03-10 19:50:17 353

原创 Linux学习笔记之---消息队列

9:消息队列    9.1     ipc结构            struct ipc_perm            {                uid_t  uid;                gid_t  gid;                uid_t  cuid;                gid_t  cgid;           

2015-03-10 19:49:11 345

原创 Linux学习笔记之---信号量

10:信号量    10.1    信号量的存储结构            struct semid_ds            {                struct ipc_permsem_perm;        访问权限                struct sem *base;               信号量集合中信号量指针           

2015-03-10 19:48:33 311

原创 Linux学习笔记之---管道

8:管道     8.1     无名管道            无名管道通常直接称之为管道,它占用两个文件描述符,不能被非血缘关系                            的进程共享,一般应用在父子进程中                8.2     无名管道的建立            #include             int pipe (in

2015-03-10 19:48:29 295

原创 Linux学习笔记之---进程

6:进程控制    6.1:    读取进程ID号            #include             #include             pid_t   getpid();       当前进程ID;            pid_t   getpgrp();      当前进程组ID;            pid_t   getppid();    

2015-03-10 19:46:47 289

原创 Linux学习笔记之---时钟和信号

7:时钟和信号    7.1     UNIX中存在三种格式的时间:            1.系统时间: 1970,1,1到现在的秒数(time_t)            2.高分辨率时间:精确到微妙的时间(timeval结构体)            3.日历时间:“年,月,日,时,分,秒“类型(tm结构)            7.2     系统时间     

2015-03-10 19:46:26 453

原创 Linux学习笔记之---目录文件编程库

4:目录文件编程库    4.1:    读取工作目录            #include             char *getcwd(char *buf, size_t size);            char *getwd(char *pathname);            getcwd获取当前工作目录的绝对路径存入buf失败返回NULL       

2015-03-10 19:45:58 270

原创 Linux学习笔记之--低级(底层)文件库编程

3:低级文件编程库(底层文件编程库)    3.1:    文件的打开与创建            #include             int open(const char *filename, int oflag, .../*[mode_t mode]*/)            本函数共有三个参数:要打开或创建文件的路径名;oflag指定打开或创建         

2015-03-10 19:44:00 511

原创 Linux学习笔记之---标准文件库编程

2:标准文件编程库    2.1:    创建,打开,关闭,删除函数族            #include             FILE *fopen (const char *filename, cnost char *type)            FILE *freopen (const char *filename, const char*type, FILE *

2015-03-10 19:42:27 308

原创 Linux学习笔记之---文件

1:文件系统结构    1.1:    获取文件属性函数:       #include      #include             int stat (const char *path, struct stat *buf);            int fstat (int fildes, struct stat *buf);            int ls

2015-03-10 19:39:06 256

转载 LINUX学习路线

写一下最近个人的linux学习路线,学完后再好好参考其他人的:1.《Linux程序设计》- 靠它来入门,然后装一个linux系统,学习shell(bash)和linux C,把基础打牢;2. 《深入理解Linux内核》和《Linux内核设计与实现》:后者我已经粗粗看过一遍,值得细看,前者必须尽快看完;3. 《Linux设备驱动设计》:必买必看,实用性强;4.《Advanced Pr

2015-02-06 22:35:22 414

转载 C++学习路线及书籍

很多人也许像我一样都想找一份学习的辟邪剑谱,转一个别人的帖子,希望对能够给用的。欲练此功,不必挥刀自宫的,呵呵。        这句说的好:“最后,编程语言并非计算机科学技术的全部,尤其对于在校的学生来说,打好基础、开阔视野都是非常重要的。”一)语言入门:《C++ Primer》最新版本:第三版(第四版国外已上架,国内一些网上书店也在预订中)适合有丰富C经验,缺乏C++

2015-02-06 22:33:01 356

原创 CReBar的使用

需求:1.在工具栏中添加出按钮以外的控件;2.当工具栏的宽度小于按钮宽度总和时,隐藏部分按钮,并在工具栏的最右侧显示向右的箭头,当点击这个箭头时,弹出一个菜单,菜单由没有显示出来的按钮组成;3.工具栏按钮显示tip。 实现:MFC提供了一个类CReBar,这是一个容器类,可以向这个类中添加工具栏,编辑框,下拉列表等等。1.//创建工具栏对象CTool

2014-11-11 22:47:24 1165

原创 窗口样式

1 窗口样式WS_POPUP弹出式窗口(不能与WS_CHILDWINDOW样式同时使用)WS_CHILDWINDOW子窗口(不能与WS_POPUP合用)WS_MINIMIZE创建窗口拥有最小化按钮WS_MINIMIZEBOX创建窗口拥有最小化按钮,须同时指定WS_SYST

2014-11-10 21:13:55 356

转载 MFC之CCommandLineInfo

CCommandLineInfo类CObject└CCommandLineInfo类CCommandLineInfo用于分析启动应用时的命令行参数。MFC应用一般都会在它的应用对象中使用函数InitInstance创建这个类的一个本地实例。然后把该对象传给CWinApp::ParseCommandLine,ParseCommandLine又重

2014-11-06 22:05:48 441

转载 RMQ算法

1. 概述RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN),这里我们暂不介绍。2.RMQ算法对于该问题,最容易想到的解决方案是遍历,复杂度是O(n)。但当数据量非常大

2014-10-22 18:08:25 263

原创 最近公共祖先LCA:Tarjan算法

1,并查集+dfs 对整个树进行深度优先遍历,并在遍历的过程中不断地把一些目前可能查询到的并且结果相同的节点用并查集合并. 2,分类,使每个结点都落到某个类中,到时候只要执行集合查询,就可以知道结点的LCA了。 对于一个结点u.类别有: 以u为根的子树、除类一以外的以f(u)为根的子树、除前两类以外的以f(f(u))为根的子树、除前三类以外的以f(f(f(u)))为根的子树……

2014-10-22 12:55:53 424

原创 LB_ 系列 Windows系统定义的消息

LB_ADDSTRING   :          添加字符串LB_INSERTSTRING:      插入一个条目数据或字符串。不像LB_ADDSTRING 消息,该消息不会激活LBS_SORT样式来对条目进行排序LB_DELETESTRING:      删除列表框中的一个字符串LB_SELITEMRANGEEX:在多选状态下的列表框中选择一个或多个连续的条目LB_RESET

2014-10-05 16:17:57 2898

转载 LBN_开头。LB_开头。API常数用途介绍

登录 | 注册收藏成功确定收藏失败,请重新收藏确定标题标题不能为空网址标签 摘要公开取消收藏 分

2014-10-05 16:06:52 838

转载 acm & java

用Java来处理高精度问题,相信对很多ACMer来说都是一件很happy的事,简单易懂。用Java刷了一些题,感觉Java还不错,在处理高精度和进制转换中,调用库函数的来处理。下面是写的一些Java中一些基本的函数的及其……头文件:import java.io.*; import java.util.*; import java.math.*;读入: Scanner cin = S

2014-10-04 12:55:47 297

原创 EDIT消息

业精于勤而荒于嬉,行成于思而毁于随。编辑框(Edit)控件实际上是一个简易的文本编辑器,用户可以在编辑框中输入可添加或插入文本。还有复制、粘贴、剪切、删除等编辑功能。  应用程序用CreateWindowEx创建编辑框控件时,可根据控件的用途在下表中选择部份常数来设定其风格属性(style)。 常数说明ES_MULTILINE 多行文本,指定编辑控件可以多行文本编辑,用户每按一次Ent

2014-10-04 11:05:43 420

转载 stl__map

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有

2014-10-02 08:31:28 261

原创 素数筛法

genPrime和genPrime2是筛法求素数的两种实现,其实是一个思路,表示方法不同而已。具体思路在注释中已经含有。#include #include #includeusing namespace std; const int MAXV = 100; //素数表范围 bool flag[MAXV+1]; //标志一个数是否为素数 int prime[

2014-10-01 22:34:24 305

原创 hdu 4499 dfs

给你一个棋盘,最大是5*5的,问你最多可以放多少个炮,炮和炮之间不可以相互攻击,这块只的是只能走一步,不存在两个炮中间三个棋子的情况..

2014-09-30 18:32:47 342

原创 hdu 4597 记忆化搜索

有两堆牌,每张牌上有一个分值,每次取只能取其中一堆的头部或者尾部的牌,两个人轮流抽牌,采用最优策略,问先手最多能得到多少分。题解:记忆化搜索。as和ae表示一堆的头和尾,bs和be表示另一堆的头和尾,f[as][ae][bs][be]表示当前状态下所能得到的最多分数。则f[as][ae][bs][be]等于当前所有分数和 - 下一状态的最多分数,按每种状态记忆化搜索下即可。

2014-09-28 22:15:44 346

原创 poj 2288 状态压缩dp

【题目大意】求汉密尔顿的一道变形问题,中间每个点有权值,关于最后得分的描述如下Suppose there are n islands. The value of aHamilton path C1C2...Cn is calculated as the sum of three parts. Let Vi be thevalue for the island Ci. As the firs

2014-09-27 18:44:47 322

原创 win32 & mfc 调用console优化调试

第一种:

2014-09-27 15:52:02 449

原创 zoj 3471 状态压缩dp

题目大意】不超过10种气体,两两之间相互碰撞可以产生一定的能量,如a碰b,那么b气体就消失,自身不能碰自身,问最后所能得到的最大能量。【题目解析】用10位二进制表示气体是否存在,0表示存在,1表示不存在,S(上一个状态)中的两种气体碰撞并且有一种消失,可以得到newS的状态(状态转移)【状态表示】dp[state] 状态为state时的最大能量【转移方程】dp[state]

2014-09-21 10:51:33 327

原创 poj 3311 状态压缩dp

#include #include #include #include #include #include #include #include #define inf 11111111using namespace std;int n,ans;int dp[13][113];int dis[13][13];int main(){ int i,j,k,l,m;

2014-09-19 10:00:31 350

Linux内核完全剖析

序 第1章概述 1.1 Linux的诞生和发展 1.1.1 UNIX操作系统的诞生 1.1.2 MINIX操作系统 1.1.3 GNU计划 1.1.4 POSIX标准 1.1.5 Linux操作系统的诞生 1.1.6 L,inux操作系统版本的变迁 1.1.7 Linux名称的由来 1.1.8早期Linux系统开发的主要贡献者 1.2内容综述 第2章微型计算机组成结构 2.1微型计算机组成原理 2.2 I/O端口寻址和访问控制方式 2.2.1 I/O端口和寻址 2.2.2 接口访问控制 2.3 主存储器、BIOS和CMOS 存储器 2.3.1 主存储器 2.3.2 基本输入/输出程序BIOS 2.3.3 CMOS存储器 2.4 控制器和控制卡 2.4.1 中断控制器 2.4.2 DMA控制器 2.4.3 定时/计数器 2.4.4 键盘控制器 2.4.5 串行控制卡 2.4.6 显示控制 2.4.7 软盘和硬盘控制器 第3章 内核编程语言和环境 3.1 as86汇编器 3.1.1 as86汇编语言语法 3.1.2 as86汇编语言程序 3.1.3 as86汇编语言程序的编译和 链接 3.1.4 as86和ld86使用方法和选项 3.2 GNU as汇编 3.2.1 编译aS汇编语言程序 3.2.2 aS汇编语法 3.2.3 指令语句、操作数和寻址 3.2.4 区与重定位 3.2.5 符号 3.2.6 aS汇编命令 3.2.7 编写16位代码 3.2.8 aS汇编器命令行选项 3.3 C语言程序 3.3.1 C程序编译和链接 3.3.2 嵌入汇编 3.3.3 圆括号中的组合语句 3.3.4 寄存器变量 3.3.5 内联函数 3.4 C与汇编程序的相互调用 3.4.1 C函数调用机制 3.4.2在汇编程序中调用C函数 3.4.3在C程序中调用汇编函数 3.5 Linux/0.11目标文件格式 3.5.1 目标文件格式 3.5.2 Linux 0.11中的目标文件格式 3.5.3 链接程序输出 3.5.4 链接程序预定义变量 3.5.5 System.map文件 3.6 Make程序和Makefile文件 第4章 4.1 80x86 系统寄存器和系统指令 4.1.1 标志寄存器 4.1.2 内存管理寄存器 4.1.3 控制寄存器 4.1.4 系统指令 4.2.1 内存寻址 4.2.2 地址变换 4.2.3 保护 4.3.1 段的定义 4.3.2 段描述符表 4.3.3 段选择符 4.3.4 段描述符 4.3.5 代码和数据段描述符类型 4.3.6 系统描述符类型 4.4 分页机制 4.4.1 页表结构 4.4.2 页表项格式 4.4.3 虚拟存储 4.5 保护 4.5.1 段级保护 4.5.2 访问数据段时的特权级检查 4.5.3 代码段之间转移控制时的特权级 4.5.3 代码段之间转移控制时的特权级 4.5.4 页级保护 4.5.5 组合页级和段级保护 4.6.1 异常和中断向量 4.6.2 中断源和异常源 4.6.3 异常分类 4.6.4 程序或任务的重新执行 4.6.5 开启和禁止中断 4.6.6 异常和中断的优先级 4.6.7 中断描述符表 4.6.8 IDT描述符 4.6.9 异常与中断处理 4.6.10 中断处理任务 4.6.11 错误码 4.7.1 任务的结构和状态 4.7.2 任务的执行 4.7.3 任务管理数据结构 4.7.4 任务切换 4.7.5 任务链 4.7.6 任务地址空间 4.8.1 进入保护模式时的初始化操作 4.8.2 模式切换 4.9.1 多任务程序结构和工作原理 4.9.2 引导启动程序boot.s 4.9.3 多任务内核程序head.s 第5章 5.1 Linux内核模式 5.2 Linux内核系统体系结构 5.3.1 物理内存 5.3.2 内存地址空间概念 5.3.3 内存分段机制 5.3.4 内存分页管理 5.3.5 CPU多任务和保护方式 5.3.6 虚拟地址、线性地址和物理地址 5.3.7 用户申请内存的动态分配 5.4.1 中断操作原理 5.4.2 80x86微机的中断子系统 5.4.3 中断向量表 5.4.4 Linux内核的中断处理 5.4.5 标志寄存器的中断标志 5.5.1 系统调用接口 5.5.2 系统调用处理过程 5.5.3 Linux系统调用的参数传递方式 5.6.1 系统时间 5.6.2 系统定时 5.7 Linux进程控制 5.7.1 任务数据结构(1) 5.7.1 任务数据结构(2) 5.7.2 进程运行状态 5.7.3 进程初始化 5.7.4 创建新进程 5.7.5 进程调度 5.7.6 终止进程 5.8.1 初始化阶段 5.8.2 任务的堆栈 5.8.3 任务内核态堆栈与用户态堆栈之 5.9 Linux 0.12采用的文件系统 5.10.1 内核主目录linux 5.10.2 引导启动程序目录boot 5.10.3 文件系统目录fs 5.10.4 头文件主目录include 5.10.5 内核初始化程序目录init 5.10.6 内核程序主目录kernel 5.10.7 内核库函数目录lib 5.10.8 内存管理程序目录mm 5.10.9 编译内核工具程序目录tools 5.11 内核系统与应用程序的关系 5.12.1 功能描述 5.12.2 代码注释 5.13 本章小结 第11章 11.1 总体功能描述 11.1.1 浮点数据类型(1) 11.1.1 浮点数据类型(2) 11.1.2 数学协处理器功能和结构 11.2.1 功能描述 11.2.2 代码注释 第14章 14.1 include/目录下的文件 14.2.1 功能描述 14.2.2 代码注释 14.2.3 a.out执行文件格式 14.3 const.h文件

2017-12-31

深入理解linux内核,第三版中文版

前言 第一章 绪论 Linux与其他类Unix内核的比较 硬件的依赖性 Linux版本 操作系统基本概念 Unix文件系统概述 Unix内核概述 第二章 内存寻址 内存地址 硬件中的分段 Linux中的分段 硬件中的分页 Linux中的分页 第三章 进程 进程、轻量级进程和线程 进程描述符 进程切换 创建进程 撤消进程 第四章 中断和异常 中断信号的作用 中断和异常 中断和异常处理程序的嵌套执行 初始化中断描述符表 异常处理 中断处理 软中断及tasklet 工作队列 从中断和异常返回 第五章 内核同步 内核如何为不同的请求提供服务 同步原语 对内核数据结构的同步访问 避免竞争条件的实例 第六章 定时测量 时钟和定时器电路 Linux计时体系结构 更新时间和日期 更新系统统计数 软定时器和延迟函数 与定时测量相关的系统调用 第七章 进程调度 调度策略 调度算法 调度程序所使用的数据结构 调度程序所使用的函数 多处理器系统中运行队列的平衡 与调度相关的系统调用 第八章 内存管理 页框管理 内存区管理 非连续内存区管理 第九章 进程地址空间 进程的地址空间 内存描述符 线性区 缺页异常处理程序 创建和删除进程的地址空间 堆的管理 第十章 系统调用 POSIX API和系统调用 系统调用处理程序及服务例程 进入和退出系统调用 参数传递 内核封装例程 第十一章 信号 信号的作用 产生信号 传递信号 与信号处理相关的系统调用 第十二章 虚拟文件系统 虚拟文件系统(VFS)的作用 VFS的数据结构 文件系统类型 文件系统处理 路径名查找 VFS系统调用的实现 文件加锁 第十三章 I/O体系结构和设备驱动程序 I/O体系结构 设备驱动程序模型 设备文件 设备驱动程序 字符设备驱动程序 第十四章 块设备驱动程序 块设备的处理 通用块层 I/O调度程序 块设备驱动程序 打开块设备文件 第十五章 页高速缓存 页高速缓存 把块存放在页高速缓存中 把脏页写入磁盘 sync()、fsync()和fdatasync()系统调用 第十六章 访问文件 读写文件 内存映射 直接I/O传送 异步I/O 第十七章 回收页框 页框回收算法 反向映射 PFRA实现 交换 第十八章 Ext2和Ext3文件系统 Ext2的一般特征 Ext2磁盘数据结构 Ext2的内存数据结构 创建Ext2文件系统 Ext2的方法 管理Ext2磁盘空间 Ext3文件系统 第十九章 进程通信 管道 FIFO System V IPC POSIX消息队列 第二十章 程序的执行 可执行文件 可执行格式 执行域 exec函数 附录一 系统启动 附录二 模块 参考文献 源代码索引

2017-12-31

Linux内核设计的艺术_图解Linux操作系统架构设计与实现原理.杨力祥(第2版)

这个是Linux内核设计的艺术_图解Linux操作系统架构设计与实现原理.杨力祥的第2版,pdf文档+全中文注释的内核代码,超全,超经典

2017-12-24

gdb调试命令手册

gdb的调试命令 手册

2017-07-23

空空如也

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

TA关注的人

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