NK_test的博客

大部分人愿意做任何事来逃避真正的思考

Effective C++ 简要条款分析(一)

Effective C++ 简要条款分析(一)c++实在是一门深奥晦涩的语言,不同专业水准的程序员写出来的代码质量有着天壤之别,以至于必须出版一本图书提供一些“专家经验”来引导c++程序员写出更加高质量的代码。《Effective C++》就是这样一本书。建议你在有一定的代码积累后阅读这本书,这里...

2016-10-01 22:57:44

阅读数 1101

评论数 0

编译原理:LL(1)文法 语法分析器(预测分析表法)

设计要求:对于任意输入的一个LL(1)文法,构造其预测分析表,并对指定输入串分析其是否为该文法的句子。 思路:首先实现集合FIRST(X)构造算法和集合FOLLOW(A)构造算法,再根据FIRST和FOLLOW集合构造出预测分析表,并对指定的句子打印出分析栈的分析过程,判断是否为该文法的句子。 ...

2016-05-22 20:54:31

阅读数 52211

评论数 19

C++ 捕获本机网卡的IP包并对其解析的实现

编程要求:捕获本机网卡的IP包,对捕获的IP包进行解析。要求必须输出以下字段:版本号、总长度、标志位、片偏移、协议、源地址和目的地址。 TCP/IP协议定义了一个在因特网上传输的包,称为IP数据报(IP Datagram).这是一个与硬件无关的虚拟包,由首部和数据两部分组成.首部的前一部分是固...

2016-05-08 21:54:19

阅读数 10634

评论数 7

编译原理:C语言词法分析器

编译原理的实验:完成对C++语言的词法分析 先说一下整体框架: 基类:Base  封装了一些基础的字符判断函数,如下: int charkind(char c);//判断字符类型 int spaces(char c); //当前空格是否可以消除 int characters(char c)...

2016-04-25 22:09:57

阅读数 12649

评论数 0

连接两个链表的实现

题目: 有以ha为头结点的链表,元素个数为m;以hb为头结点的链表,元素个数为n。现在需要你把这两个链表连接起来,并使时间复杂度最小,请分析并实现。 思路: 很简单的链表操作的题目,逆序头部插入,并将长度较长的一方接到较短的后面,时间复杂度为O(min(m,n))。 #include #incl...

2016-04-04 15:38:59

阅读数 5452

评论数 0

详解Boost库智能指针(shared_ptr && scoped_ptr && weak_ptr )

我们先来解释一下什么叫智能指针? 智能指针是利用RAII(在对象的构造函数中执行资源的获取(指针的初始化),在析构函数中释放(delete 指针):这种技法把它称之为RAII(Resource Acquisition Is Initialization:资源获取即初始化))来管理资源。 其本质...

2016-01-30 10:53:48

阅读数 3052

评论数 0

哈希表之开地址法解决冲突

在上一篇博文中,我们讲述了使用链地址法解决冲突的方法。这里我们介绍另一种方式:开地址法解决冲突。 基本思想:当关键码key的哈希地址H0 = hash(key)出现冲突时,以H0为基础,产生另一个哈希地址H1 ,如果H1仍然冲突,再以H0 为基础,产生另一个哈希地址H2 ,…,直到找出一个不...

2016-01-23 13:20:41

阅读数 3214

评论数 0

单片机远程控制步进电机、LED灯和蜂鸣器

通过采用C#语言实现的上位机控制单片机的步进电机模块、LED灯和蜂鸣器模块,使步进电机进行正、反转和停止并控制转速;LED灯模块进行有选择的呼吸式表达;蜂鸣器模块的开始和终止。 上位机通过串口和自定义的通信协议(8字节)控制单片机的步进电机、LED灯和蜂鸣器模块。其中在控制步进电机的过程中,为了...

2016-01-09 10:08:06

阅读数 3919

评论数 0

单片机: 基于SIM900A的温度报警通信系统

帮室友做的一个简单的单片机实验: 使用热敏电阻测温,当温度超过34摄氏度之后就会向指定手机拨打报警电话。 硬件要求: STC89C52单片机,SIM900A GSM模块,价格都在60元左右;另外还需要3根杜邦线,一个SIM卡(移动/联通) 仔细查看用户手册,按照下图连线: 另外我们使...

2016-01-04 20:47:58

阅读数 3595

评论数 3

单片机: 简易计算器的实现(键盘)

利用矩阵键盘实现一个简易的计算器。 为了简化问题,我们假设只支持小于100的非负整数之间的加、减、乘的运算,并且支持连续运算(结果的数值可以再进行运算)。 本程序中C为加号,D为减号,E为乘号,F为等于号。 代码中有详细的注释。 /* 注:本程序 C 为+, D 为- E为* F 为=...

2015-12-27 19:51:18

阅读数 13696

评论数 9

操作系统: 最佳适配算法和邻近适配算法的模拟实现(内存分配算法)

实现动态分区的分配算法。 (1) 最佳适配算法:选择内存空闲块中最适合进程大小的块分配。 (2) 邻近适配算法:从上一次分配的地址开始查找符合要求的块,所查找到的第一个满足要求的空闲块就分配给进程。 模拟添加进程的时候,假定内存是一块完整的空闲区,对于算法(1)来说,分配的时候遍历所有的空闲内存块...

2015-12-27 19:42:27

阅读数 5385

评论数 1

操作系统: 二级目录文件系统的实现(c/c++语言)

操作系统的一个课程设计,实现一个二级目录文件系统。 用disk.txt模拟磁盘,使用Help查看支持的命令及其操作方式,root为超级用户(写在disk.txt中) 文件的逻辑结构:流式文件。 物理结构:链接文件。 物理空间管理:空闲链法。 目录结构:二级目录结构。 目录搜索技术:线性搜索。 ...

2015-12-23 19:20:39

阅读数 8615

评论数 2

单片机: EEPROM和串口通信

名称:IIC协议 EEPROM24c02 通过串口通信存数读取数据  内容:此程序用于检测EEPROM性能,测试方法如下:写入24c02一个数据,然后在内存中改变这些数据, 掉电后主内存将失去这些信息,然后从24c02中调入这些数据。看是否与写入的相同。 电脑通过串口发送一个十六进制的数据...

2015-12-22 20:18:07

阅读数 3140

评论数 1

单片机: 热敏电阻测温并且显示到数码管(温度计)

如上图所示,PCF8591的9脚和10脚,一个是数据线SDA,一个是时钟线SCL。分别接到单片机的P2.0 , P2.1上面。 为什么选这两个引脚?因为51单片机上没有IIC总线接口,需要用普通的IO模拟,所以它随便选了两个IO接上就行。 VREF是什么?基准电压,也是它能测量的最...

2015-12-21 22:56:07

阅读数 11162

评论数 0

微机接口双色点阵-- 变化的表情动画

使用汇编语言通过双色点阵实现一个动画,这里是表情的变化。 基本思路就是分别编写不同的帧,然后依次显示。 颜色的变化是 290h:黄色    288h: 红色。 data segment buff1 db 00h,00h,00h,18h,18h,00h,00h,00h ...

2015-12-19 16:03:33

阅读数 2027

评论数 0

单片机: 自定义串口通信协议的实现

使用51单片机完成一个简单的串口通信协议。 要求: 一个协议帧为8个字节,其中头部两个字节,分别是0xFF,0xFE; 第3个字节代表第一个数据,第4个字节代表第二个数据(均为正数); 第5个字节如果是0,代表两个数据的和,1的话代表两个数据的差; 第6个字节为0,代表使用十进制显示,为...

2015-12-09 20:20:24

阅读数 9415

评论数 0

单片机:c语言实现秒表计数(按键开始,结束,重置)

实现秒表计数功能,使用定时器和外部中断实现。8号按键代表计时开始/结束,C号按键代表重置为0,为了演示方便,这里上限定为15秒。 代码中有详细的注释: #include sbit WEI=P2^7; sbit DUAN=P2^6; sbit L1=P3^4; unsigned char...

2015-11-27 13:20:02

阅读数 9739

评论数 3

教你快速在c#中调用C++代码(函数)

之前写过一段C++的代码,想给他用C#写个界面,也就是想让这段代码在C#中可以运行。看了百度的很多方法,都说是封装成dll调用,但是按照步骤来总会出现各种错误,像以下的这种: 并且迟迟不能解决,今天竟然有人跟我说直接把dll提取到C#工程的bin文件下就可以了,三观都毁了....尝试了一下,真的...

2015-11-11 19:30:38

阅读数 8245

评论数 2

C++ Primer 学习笔记与思考_11 try..catch语句及相关疑点

在一个小的程序中,可以用比较简单的方法处理异常,例如用if语句判别除数是否为0,如果是0,则输出一个出错信息。但是在一个大的系统中,包含很多模块,每个模块又包含许多类和函数,函数之间又互相调用,比较复杂。如果在每一个函数中都设置处理异常的程序段,会使程序过于庞大和复杂。因此c++采用的办法是:如果...

2015-09-29 22:26:04

阅读数 1047

评论数 0

C++ Primer 学习笔记与思考_10 类型转换易错处大总结

(一)隐式转换 先来看一组样例: int ival=0; ival=3.451+3; 首先做加法操作,操作数分别为int和double类型,c++并没有直接把两个数加在一起,而是提供了一组转换规则,以便在执行算术操作之前,将两个操作数转换为同一种数据类型。在这里是自动执行的,所以他们被成...

2015-08-31 10:56:49

阅读数 1339

评论数 1

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