自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 uuidgen.exe 同时生成多个GUID

首先在VS的安装目录下搜索"uuidgen.exe",找到该工具。该工具通常在子目录"Common7\Tools"。 接着打开cmd命令行工具,通过cd命令进入到该工具存放目录,输入命令"uuidgen.exe -c -oguid.txt -n5",按回车键执行即生成5个GUID,保存在文件guid.txt中。...

2020-05-30 14:30:31 1081

原创 SSD开发从零到入门简单总结

很久没有写博文了,手生了,思路都生锈了,就先写个简单的总结吧。 自2019年6月份开始,从事固态硬盘(SSD)的固件开发有1年半的时间。最早对SSD的一无所知,现在应该算是基本上入门了吧。学习一个门类,总是会走或多或少的弯路,SSD的入门也不例外。现在入门了,是时候总结下这之间的一些方法或者说教训。 这个过程中,首先我们需要根据实际情况不时的补充巩固相关的基础知识...

2020-02-04 15:13:55 5440 16

原创 QT增加链接库和头文件搜索目录(相对目录)

     QT开发的时候,需要增加链接的动态库或者静态库,或者搜索的头文件。正常情况下,使用相对目录是最好的。下面是常用的方法:     1 增加库依赖。如下,OUT_PWD表示QT编译后的输出目录。比如Debug或者Release目录。后续发布的时候,把so库或者静态库放入到对应的目录即可正常运行。               LIBS += $$OUT_PWD/libDBOp.so $$...

2018-03-12 17:21:40 12742

原创 Linux GDB常用命令整理

设置断点:break *0x7c00break mainbreak main.c:19列出所有断点info br 删除断点delete 5delete 1-10查看寄存器i rp $pcp $eip查看局部变量info locals查看结构体display (struct run)*pp *array@len  数组查看内存x p导出内存到文件dump binary memory /home/zz...

2018-02-10 16:43:56 402

原创 UNIX v6源代码分析调试之三:单步调试系统代码 main函数之 kvmalloc

      kvmalloc();      // kernel page table     kvmalloc函数初始化内核的内存分页页表。关于虚拟内存,线性地址,内存分页,内存分段等等在操作系统原理的书籍中都有详细说明,我这里就不啰嗦了。      从代码实现的角度来理解和分析内存分页管理。kvmalloc的函数如下:// Allocate one page table for the mac...

2018-02-10 14:37:14 1316

原创 UNIX v6源代码分析调试之二:单步调试系统代码 main函数之 kinit1

    环境搭建完成,该学习Main.c的main函数了。先贴上main函数的实现。intmain(void){ kinit1(end, P2V(4*1024*1024)); // phys page allocator kvmalloc(); // kernel page table mpinit(); // collect info about this...

2018-02-08 14:13:28 889 2

原创 UNIX v6源代码分析调试之一:环境搭建 -- Ubuntu单步调试系统代码

UNIX v6(x86)版本的代码短小精悍,非常值得学习调试。而且代码量比较少,容易找到方向。我使用的Ubuntu 12.04 32位的系统。首先下载代码,下载地址 https://github.com/guilleiguaran/xv6。该版本的代码能运行在x86平台的。接着安装 qemu,执行sudo apt-get install qemu即可。解压下载的代码到某个目录,我这里使用unzip...

2018-02-07 14:55:20 1293

原创 GNU早期开源工具和源代码下载链接地址(早期版本)

链接地址为: http://ftp.gnu.org/old-gnu/      记录下,该链接可以下载到各种很早期版本的GNU工具,包括grep glibc等大量开源库。分享出来便于需要时下载学习。早期版本代码量少,结构更加简单。能够更加方便的学习到核心的知识点。

2018-01-10 17:16:48 497

原创 通过例子学设计模式之--外观模式以及使用场景说明(C++实现)

         外观模式,为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。         由于子系统可能有多个,而且联系错综复杂,作为系统的使用者,我们不想也不需要去了解这些子系统之间的联系,只需要提供一个对外接口能够实现功能即可。这就是外观模式的作用。它使得我们不用关注里面的细节和联系,却能完成功能。       外观模式的例子很多,比如我们去酒...

2017-11-01 16:18:11 327

原创 不使用随机数的洗牌算法实现(C++实现)

偶然看到有人讨论不使用随机数怎么洗牌,感觉挺有意思的。其实本质就是要达到随机的效果,这个是开放性的问题,其实思路是很多的,主要看实现的难度或者是否可以实现随机洗牌。 我的思路有如下: (1)最简单而且直接的方法:使用时间戳,由于洗牌算法就是随机交换数组里面的值。运行过程是很快的,因此,必须要使用微秒级别以上的时间精度才行。使用毫秒级别的都不大可行。 (2)麻烦的方法:通过hook,随便获取一串网络通讯数据,然后用里面的数值当前索引。由于每次洗牌都要去获取一串数据,因此也是随机效

2017-10-27 14:26:08 1198

原创 邻接表实现--图的拓扑排序

有向图的拓扑排序是基础算法,也是很重要的一个算法。 它的思路如下: (1)统计所有顶点的入度,接着把入度为0的全部入栈或者入队列。 (2)取出栈顶元素,或者队列的首个元素,标记该顶点为"已访问"状态。 接着删除该顶点与其它顶点的联系,即把其它相邻顶点的入度减少1。相邻顶点中,入度减少1之后,如果存在入度为0的新顶点,把新顶点入栈或者入队列。 (3)第二步一直循环处理,知道栈为空或者队列为空。 (4)判断是否所有的顶点都访

2017-10-25 18:39:01 4077

原创 邻接表实现--图的深度优先遍历DFS和广度优先遍历BFS

邻接表实现--图的深度优先遍历DFS和广度优先遍历BFS。

2017-10-25 09:38:29 2261

原创 通过例子学设计模式之--桥接模式以及使用场景说明(C++实现)

桥是一种结构。桥接模式的类图和桥很像,是一种结构型的设计模式。 通常情况下,桥两边各有一个桥墩,每个桥墩我们可以理解为一个抽象类,或者是一个变化。中间的桥梁我们可以理解为类的“关联”,这个关联就是聚合。这样就组成了桥接模式。它可以处理2个维度同时变化的情况。其实也可以处理多个维度的变化情况,理解上可以想成桥墩有多个,而不仅仅是2个。那么桥梁也不止1个,而是多个。 比如一个对象,如果A维度有3种变化,B维度有4种变化,C维度有2中变化。直接使用继承的方式,会有3

2017-10-23 18:29:21 1183 2

原创 通过例子学设计模式之--建造者模式以及使用场景说明(C++实现)

相信我们基本都买过台式电脑吧。我们应该不会去买主板,CPU,内存等等子部件回家,然后自己组装成台式机。当然,也不排除某些发烧友这样做。但是对于多数人来说,我们只需要对老板说,我需要一台联想的或者惠普的电脑,老板组装好给我们就OK了。我们买车也是这样的,只是买一台车回家,而不是买回一堆的发动机等等零件。 上面的例子,抽象一下,就是建造者模式。 建造者模式是创建模式中最复杂的,这个复杂指的是类的结构和实现会复杂一些。它的使用场景不复杂,很好理解。就是创建复杂对象。什么

2017-10-23 18:22:24 2077

原创 通过例子学设计模式之--单例模式以及多线程下说明(C++实现)

通过例子学设计模式之--单例模式以及多线程下说明(C++实现)。

2017-10-18 14:33:09 289

原创 通过例子学设计模式之--抽象工厂模式以及使用场景说明(C++实现)

考虑这样一个场景,PC机有IBM和Lenvo2个品牌。两者都有各自的CPU,内存RAM,硬盘Disk,网卡NetCard等等十几个组件。如何创建这些产品对象呢? (1)如果用简单工厂,比如使用一个工厂(PC工厂),或者2个工厂(IBM工厂,Lenvo工厂),switch--case的分支至少都要10个以上,功能太不单一。除非你刚学习编程,否则就不可能也不应该这样做。 (2)如果用工厂方法模式,那么一个工厂对应一个产品,每个PC都有十几个组件,那么2个PC品牌就会有20几个工厂。假如后续再

2017-10-16 17:29:11 713

原创 通过例子学设计模式之--工厂方法模式以及使用场景说明(C++实现)

简单工厂模式有如下问题: (1)工厂类职责不单一。比如设备类工厂,工厂一并生产USB,并口,串口,等等之类的设备,职责不单一,而且switch--case分支有可能比较多。 (2)违背开闭原则。比如设备类工厂,增加一个WIFI设备,则需要修改到工厂类的创建接口,可能会影响原有代码。 解决这2个问题,我们需要对工厂类进行抽象,抽象出创建的接口,通过多态的方法把创建延迟到子类实现,也就是工厂方法模式。

2017-10-16 16:07:01 528

原创 通过例子学设计模式之--简单工厂模式以及使用场景说明(C++实现)

这个模式应该说是非常简单的。作用也很明显,就是面向对象中,可能会创建大量的不同类别的对象,不可避免就会出现大量的new操作。为了统一管理对象的创建和销毁,我们可以添加一个类,这个类提供创建和销毁的接口。 实际的项目过程中,我们可能会根据不同的类别创建不同的简单工厂类,比如设备工厂类,图形工厂类,水果工厂类等等。

2017-10-13 11:05:58 952

原创 通过例子学设计模式之--适配器模式以及使用场景说明(C++实现)

通过例子学设计模式之--适配器模式以及使用场景说明(C++实现)。

2017-09-25 10:54:20 838

原创 通过例子学设计模式之--原型模式以及使用场景说明(C++实现)

设计模式之--原型模式以及使用场景说明(C++实现)。

2017-09-22 14:42:46 1008

原创 邻接矩阵实现--图的深度优先遍历DFS和广度优先遍历BFS

邻接矩阵实现--图的深度优先遍历DFS和广度优先遍历BFS。

2017-09-21 18:46:32 3260

原创 通过例子学设计模式之--组合模式以及使用场景说明(C++实现)

设计模式之--组合模式以及使用场景说明(C++实现)。

2017-09-18 14:00:52 1686

原创 软件设计师算法之回溯法--全排列

软件设计师算法之回溯法--全排列。

2017-09-16 14:27:18 1038

原创 软件设计师算法之回溯法--8皇后问题

软件设计师算法之回溯法--8皇后问题。

2017-09-16 13:34:59 654

原创 软件设计师算法之分治法--快速排序

软件设计师算法之分治法--快速排序。

2017-08-25 17:26:21 479

原创 软件设计师算法之分治法--归并排序

软件设计师算法之分治法--归并排序。

2017-08-24 17:51:14 756

原创 二维数组旋转90度、180度、270度

图像处理中,很多时候要使用到二维数组的旋转。本质上二维数组的旋转其实就是坐标的变换,即旋转后的坐标(x,y)需要对应到原有二维数组的坐标点上,取到正确的值即可完成正确的旋转。

2017-08-09 18:53:53 15868 1

原创 WinDbg 小贴士 -- 通过双机联调来远程调试应用程序

WinDbg 小贴士 -- 双机联调时调试应用程序。

2017-06-30 10:26:14 937

原创 WinDbg 小贴士 -- dt命令搜索查看符号

WinDbg 小贴士 -- dt命令搜索查看符号。

2017-06-29 19:39:11 2553

原创 USB驱动查询USB设备信息

USB驱动查询USB设备信息。

2017-05-26 17:49:46 1462

原创 QT tabWidget控件插入对话框

QT tabWidget控件插入对话框。

2017-05-25 13:27:40 6729

原创 ubuntu 下QT4链接C语言编写的.a静态库

ubuntu 下QT4链接C语言编写的.a静态库。

2017-05-24 14:29:15 1197 2

原创 ubuntu下gcc链接静态库.a文件

ubuntu下gcc链接静态库.a文件。

2017-05-24 13:42:24 12376

原创 Linux下Make编译结果输出到文件

Linux下Make编译结果输出到文件。

2017-05-18 14:20:39 16576 2

原创 Windows驱动分发函数中IRP处理的一个细节

Windows驱动分发函数中IRP处理的一个细节。

2017-04-27 11:16:54 1303

原创 C++应用程序出现 0xc0150002 错误导致无法启动跟踪解决

C++应用程序出现 0xc0150002 错误导致无法启动跟踪解决。

2017-04-18 17:51:24 2328

原创 Win7以上系统通过Dbgview打印驱动日志

Win7以上系统通过Dbgview打印驱动日志。

2017-04-06 16:55:43 4597

原创 ReacOS源代码阅读之驱动--atexit实现原理和机制

ReacOS源代码阅读之驱动--atexit实现原理和机制。

2017-04-01 16:09:14 819

原创 Linux下查看可执行文件、动态库的ELF头等信息

Linux下查看可执行文件、动态库的ELF头等信息。

2017-03-29 14:47:47 22079

原创 Windows内核模式下套接字结构

Windows内核模式下套接字结构。

2017-03-27 17:02:59 1855

lex和yacc原理

介绍lex和yacc的一些原理,以及其在词法分析和语法分析的作用。

2013-11-30

音频视频压缩理论知识,有点用。

[多媒体技术及其应用.].钟玉琢.沈红.吕小星.扫描版.pdf

2011-04-16

空空如也

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

TA关注的人

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