自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 资源 (5)
  • 收藏
  • 关注

原创 NTSTATUS Values

By combining the NTSTATUS into a single 32-bit numbering space, the following NTSTATUS values are defined. Most values also have a defined default message that can be used to map the value to a human-...

2018-09-12 14:27:52 2196

原创 NTSTATUS

Values are 32 bit and are laid out as follows. The following diagram is independent of endianness; that is, the diagram is shown in host byte order and merely shows the layout of the numbering space....

2018-09-12 14:26:20 1029

原创 Linux dmesg显示可读时间方式

直接用dmesg显示系统信息,很难看[95721.670025] snapshot device recevied [read] io request, access on dev sector[272], length is [240] sectors.[95721.670363] device is closed[95721.693207] device is closed显示的时间...

2018-08-31 18:02:58 42159 1

原创 BIO bi_sector submit_bio make_request_fn

BIO结构中有一个很重要的字段叫做bi_sector,在高版本中这个字段已经叫bi_iter.bi_sector了,这个不是重点,重点是下面要说的。当读写一个block device的时候,会提交一个bio数据结构给make_request_fn,那么这个bio结构中的bi_sector到底表示什么意思呢?在bio.h中有这么一行注释sector_t        bi_sector;...

2018-08-31 10:54:43 1628

原创 Linux 如何获取PAGE size的大小?

在Linux中,可以通过命令getconf PAGESIZE 或者 getconf PAGE_SIZE来获得系统的PAGE size大小。在内核中,有一个宏PAGE_SIZE,可以直接是用这个宏来获得PAGE SIZE的大小。在应用层,可以使用getpagesize()来获得 ...

2018-08-28 11:02:08 17693 1

原创 Linux kmap和kmap_atomic解析

名为解析,名不符实,简单记录一下。kmap函数将分配到的高端内存映射到永久内存映射区域.。kmap函数不能用于中断处理程序, 因为它可能进入睡眠状态。上面内容引用自https://blog.csdn.net/gatieme/article/details/52705178kmap_atomic用于高端内存映射,用于紧急的,短时间的映射,它没有使用任何锁,完全靠一个数学公式来避免...

2018-08-28 10:05:35 4590

原创 Linux kernel filp_open解析

/** * filp_open - open file and return file pointer * * @filename:    path to open * @flags:    open flags as per the open(2) second argument * @mode:    mode for the new file if O_CREAT is set, ...

2018-08-26 18:18:48 8735

转载 转载:谢谢原作者:块设备驱动实战基础篇四 (逐渐成型,加入ioctl通信机制)

1.6介绍一种内核与用户空间通信的方法-misc设备ioctl机制块设备驱动开发中往往需要配合用户态的管理程序工具,管理我们的块设备,此时我们需要涉及用户空间程序与块设备通信的方法,ioctl机制就是接下来需要学习和实战的,通过ioctl机制,用户态负责发送各种命令给内核驱动;内核态接收用户态发送的命令,并根据命令执行相应的动作,如下图所示。 ioctl提供用户态程序使用内核态函数...

2018-08-23 10:23:02 152

转载 转载:谢谢原作者:块设备驱动实战基础篇三 (BIO请求回调机制)

1.5 块设备请求返回处理回调机制 本节我们继续完善1.4节中的代码,在上节我们完成了请求的过滤转发,那么请求被磁盘处理完成后返回回来的路径处理是怎样的,本节我们继续带着这样的问题再一次完善我们的驱动程序,通过本节的学习,我们能够真正掌握请求处理,转发过滤,请求完成后回调处理机制的完整学习。 先给出完善后的IO架构图,我们对比一下1.4节最后给出的图有何区别: 相比1.4节...

2018-08-23 10:22:06 529

转载 转载:谢谢原作者: 块设备驱动实战基础篇二 (继续完善170行过滤驱动代码至200行)

1.3块设备驱动关键数据结构及函数API详细剖析经过上节四个步骤我们已经熟悉并实战了一个最基本的过滤块设备驱动的设计技巧,我们这一节先不继续实战,我们本节把上节170行代码中接触到的块设备核心数据结构和API接口剖析一下,把这部分掌握和理解一下。 我们把上节涉及的六个数据结构和相关API接口罗列一下: 块设备核心数据结构 gendisk 块设备仓库...

2018-08-23 10:21:15 172

转载 转载:谢谢原作者:块设备驱动实战基础篇一 (170行代码构建一个逻辑块设备驱动)

1   内核块设备驱动基础学习与实战1.1 设备驱动IO架构初探 操作系统是如何将数据读到缓冲区的,发生了什么?我们带着这样的问题,粗略走一下read调用系统过程,希望这个初探,可以唤起大家研究操作系统内核的好奇心和兴趣,并以此为例,让我们先初步对请求在过滤块设备驱动中的处理过程有个大概印象和了解。 块设备在整个Linux中应用的总体结构图如下: 从上图可以看出,块...

2018-08-23 10:19:55 179

原创 Linux kernel block device 的 submit_bio 都做了什么?

先看看原型申明:void submit_bio(int rw, struct bio *bio)其中rw 代表是读还是写bio 描述这个I/O的结构最后submit_bio调用generic_make_request(bio);去完成真正的IO请求。需要注意一点的是,bio结构里面有一个很重要的字段struct block_device    *bi_bdev;这个...

2018-08-23 10:09:30 1761

原创 关于BIO结构分析

struct bio {        sector_t        bi_sector;   /* 本次IO操作的其实扇区,扇区都是512字节大小 */        struct bio        *bi_next;    /* 用于链接处于同一个request中的BIO */        struct block_device    *bi_bdev; /* 该bio所请求的块...

2018-08-11 14:27:51 4624

原创 从一副漫画说编码思维,编码习惯,编码风格 (条件判断,死代码,true 或false)

 漫画中机器人要杀了人类,但是那个程序员说他并没有写代码让机器人杀人类啊!!代码中确实给isCrazyMurderingRebot赋值了false作为初值,开发者的本意也是永远不要让它变为true,永远不要让机器人伤害人类,但是事与愿违,就因为本意是作为检测isCrazyMurderingRebot是否为true的语句,却变成了赋值语句,isCrazyMurderingRebot = tr...

2018-08-10 11:32:59 524

原创 WTF 与代码

WTF (what the fuck)跟代码有什么关系?当别人阅读你写的代码的时候,如果能够看得很舒服,而不是不停的WTF,说明你的代码写得很好!毕竟很多时候代码是给人看的,只有在编译的时候才是给机器看的。所以,把代码写好了,写简洁清晰了,别人看你的代码的时候WTF就少了!:) ...

2018-08-09 13:51:25 2548

原创 为Windows git 配置比较工具为beyond compare

不得不说,git默认的diff工具是我见过的最差的比较工具了,所以没法用,下面步骤讲比较工具设置为beyondcompare。1.打开git bash2.进入到~目录,修改.gitconfig文件cd ~vi .gitconfig新增部分如图所示: 当下次再比较的时候就不要用git diff了,改成git difftool就好了。 ...

2018-08-08 17:52:30 2123

原创 Linux GCC lib库相互引用,互相依赖(交叉引用)链接解决办法

Linux GCC中,如果lib a依赖b,b又依赖a,链接的时候无论a放在前,还是b放在前,都会提示unrefrence。解决办法就是:链接的时候a链接两次,即: -la -lb -la...

2018-08-08 10:33:45 4398

原创 [算法]链表的逆序遍历节点

[算法]链表的逆序遍历节点

2014-12-13 15:22:40 1807

原创 [搜索]一种分词的实现(2)

[搜索]一种分词的实现(2)

2014-12-11 11:53:50 560

原创 [搜索]一种分词方法的实现

[搜索]一种分词方法的实现

2014-12-11 11:26:27 1292 2

原创 [搜索]波特词干(Porter Streamming)提取算法详解(3)

[搜索][搜索]波特词干(Porter Streamming)提取算法详解(3)详解(3)

2014-11-30 22:25:02 3549

原创 [搜索]波特词干(Porter Streamming)提取算法详解(2)

[搜索]波特词干(Porter Streamming)提取算法详解(2)

2014-11-30 21:50:02 1643

原创 [搜索]波特词干(Porter Streamming)提取算法详解(1)

英语词汇由两部分构成,词干和词缀,词缀又分前缀和后缀,这里的词干提取仅只去除后缀的操作。波特词干提取算法的原文在这里

2014-11-30 16:48:49 2513

原创 实现正则表达式的*和?匹配

实现正则表达式的*和?匹配

2014-11-30 11:48:45 694

原创 [CLucene]CLucene简介

What is CLucene?CLucene is a high-performance, scalable, cross platform, full-featured, open-source indexing and searching API. Specifically, CLucene is the guts of a search engine, the hard stuff. You write the easy stuff: the UI and the process of sel

2014-11-29 21:55:35 885

原创 改变vim注释的颜色

改变vim注释的颜色

2014-11-26 21:18:22 1193

原创 VC,Windbg,gdb执行到指定代码行方法

在调试的时候,当执行到一段代码时,为了调试或者其他目的需要,有时候需要对一些或者几行代码多次执行或者跳过几行代码的执行,这是很有用的

2014-11-26 20:38:11 4049

原创 [Linux]搜索文件是否包含指定内容并返回文件名

[Linux]搜索文件是否包含指定内容并返回文件名

2014-11-24 22:43:26 6406

原创 贝叶斯定理学习

通常事件A在事件B的条件下的概率,与事件B在事件A的条件下的概率是不一样的,但是这两者是有确定的关系,这就是贝叶斯定理。P(A|B)=P(B|A)*P(A)/P(B)先看一个例子:现分别有 A,B 两个容器,在容器 A 里分别有 6 个红球和 4 个白球,在容器 B 里有 2 个红球和 8 个白球,现已知从这两个容器里任意抽出了一个球,且是红球,问这个红球是来自容器 A 的概率...

2014-11-23 22:25:46 1207 2

原创 也谈1+2+3+...+n的解答

求1+2+3+...+n,编程实现,但是不允许用if,while,for,?等语句,也不能用乘除法。当然肯定也不允许用pow这样的函数了。

2014-11-21 22:20:21 1025

原创 [搜索]字符串的相似度问题-从编程之美说起

[搜索]字符串的相似度问题-从编程之美说起

2014-11-20 23:00:19 878

原创 [搜索]一种改进的召回率准确率公式计算方式

召回率:(Recall Ratio,简称R)是衡量信息检索系统在实施某一检索作业时检出相关文献能力的一种测度指标,其计算方法为:Recall=检出的相关文献量/检索系统中的相关文献总量.准确率:(Precision Ratio,简称P)是衡量系统在实施某一检索作业时检索精准度的一个测度指标,其计算方法为:Precision=检出的相关文献量/检出的文献总量.

2014-11-19 23:21:54 2610

原创 [搜索]Trie树的一种实现

trie树的一种实现

2014-11-17 21:48:43 725 1

原创 判断一个字符串的所有字符是否都在另一个字符串中

判断一个字符串的所有字符是否都在另一个字符串中

2014-11-16 20:42:38 3913

原创 Linux makefile中的= := ?=操作符

Linux Makefile = := ?=

2014-11-16 14:47:48 1337

原创 Linux中find常见用法示例

LinuxFind用法

2014-11-15 21:55:47 625

原创 关于Rocchio算法和向量空间模型反馈

关于Rocchio算法和向量空间模型反馈

2014-11-15 10:26:35 1889

原创 windbg分析BSOD dump文件实战

windbg分析BSOD dump文件实战

2014-11-14 15:25:49 2372

原创 BM算法的shift1表是在所有情况下移动都是最快的吗?

BM算法的shift1表是在所有情况下移动都是最快的吗?

2014-11-13 21:37:41 892

原创 为什么说在KMP算法中文本串中的每个字符都是需要进行比较操作的?

KMP算法需要计算一个shift或者next表,这个表是一个部分匹配表,通过这个next表来计算当字符不匹配的时候移动的位数,这个移动位数的计算公式为移动位数 =已匹配的字符数 -对应的next表中的值当遇到字符不匹配的时候就使用上面这个公式来计算移动的位数,对应的next表中的值是大于等于0的,最好的情况也就是移动位数也就是已经匹配的字符数,此时相当于每个字符

2014-11-13 21:15:07 743

C语言控制台时钟显示代码

C语言控制台时钟 printf("1.改变钟的样式 2.设置闹铃 3.启动秒表 4.退出\n"); scanf("%d",&choose_type); switch(choose_type) { case 1: { if(clock_type == 1) clock_type = 0; else clock_type = 1; } break; case 2: printf("请输入闹铃时间,几点几分,格式为:小时:分钟"); scanf("%d:%d",&bell_hour,&bell_minute); bell = 1; break;

2021-03-07

C/C++图实现运动会比赛安排

C/C++图实现运动会比赛安排 int map[49];//邻接矩阵,使用一维数组表示,下标=行*结点数+列 int color[7];//存入每个项目的颜色号 const char *n[6] = { "张凯","王刚","李四","张三","王峰","李杰" };//参赛人员姓名 const char *b[7] = { "标枪","铅球","铁饼","100m","200m","跳远","跳高" };//比赛项目

2021-03-07

C/C++哈弗曼编码,译码

【基本功能】 将哈夫曼编码应用于通讯系统时,在发送端对待发电文进行编码,在接收端对收到的电文进行译码。对于双工通讯,每端都需要一个编码器和译码器。请设计一个哈夫曼编码器/译码器。 【基本要求】 (1)初始化:键盘输入n个字符和n个权值,建立哈夫曼树; (2)编码:利用已建立的huffman树生成huffman编码 ; (3)译码:利用已建立的哈夫曼树对一段代码进行译码。

2021-03-07

C语言宿舍管理系统,二分查找

C语言宿舍管理系统,二分查找,支持保存文件,从文件中读取 /* 按照姓名,学号或者宿舍号排序 从小到大 oerderBy: 1-按照姓名 2-按照学号 3-按照宿舍号 */

2021-03-07

基于C++模板(template)的二叉树,支持任意类型为数据

基于C++模板(template)的二叉树,支持任意类型为数据 支持查找,删除,遍历等 /* 二叉树节点信息 */ template<class T> class BiNode { public: T data; BiNode <T>* lch; BiNode <T>* rch; BiNode() :lch(NULL), rch(NULL) { }; }; template<class T> class BST {

2021-03-07

空空如也

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

TA关注的人

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