- 博客(53)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 二叉树概念梳理
最近在看LevelDB的内容,看到内部实现用到了LSM树,虽然该结构和传统的树数据结构有点区别,但是从知识复习的角度,在此对二叉树的概念进行一次梳理。(除叶子节点,每个节点都有两个节点) (左节点大于根节点,根节点大于右节点)(最后一层节点均在最左边的满二叉树) (左右两子树高度相差不超过1的二叉搜索树)(叶子节点均在最后一层的完全二叉树)
2023-05-16 11:07:19
120
原创 Nsis Script IfErrors判断失败
最近用到nsis打包程序,由于程序依赖于Microsoft VC++ 2015 Redistributable,所以安装前需要读注册表判断一下是否需要安装依赖。上网了解了一些nsis script的基本语法,网上比较多的判断程序都是:Function InstallX86 Push $R0 ClearErrors ReadRegDword $R0 HKLM "SOFTWARE\
2016-10-29 17:24:35
3432
转载 NSIS打包的EXE添加公司、描述和版本号的方法
原来一直使用inno setup制作安装包,后来发现nsis非常流行,就改用NSIS(Nullsoft Install System)了,但是也发现了一个小问题,就是生成的EXe安装包,鼠标指到上边没有公司名称、描述和版本号之类的信息,找万能的度娘问了一下,现在将脚本公布如下:安装程序的版本信息: VIProductVersion "${PRODUCT_VERSION}" ;版
2016-10-27 18:26:39
4685
转载 c++ 父类指针如何操作子类的新函数
父类指针无法直接调用子类的新函数,需要转换为子类的指针后方可调用。 C++编译器在编译的时候是做静态类型分析。也就是说,你的父类指针是否真的指向一个子类类型,编译器并不会做这个假设。所以你用父类指针去调用子类的函数是无法被识别的。这里提供一种不安全和一种安全的转换方式可以实现该功能: 假设我们有父类和子类的定义如下:123
2016-10-20 19:50:58
13362
原创 Qt学习笔记——动画2
上一次做的效果不符合老板意思,需要图片连续显示,这次修改了代码,实现图片连续播放,代码如下:#ifndef ANIMATION_H#define ANIMATION_H#include #include #include #include #include #include #include class AnimationWidget : public QWidget
2016-09-03 16:25:57
447
转载 addStretch的作用 .
今天在使用addStretch,布局的时候,发现addStretch竟然是可以平均分配的,有意思。比如:QVBoxLayout *buttonLayout = new QVBoxLayout; buttonLayout->addStretch(1); buttonLayout->addWidget(Button1); buttonLayout->addStretch(1); b
2016-09-03 14:08:15
475
原创 Qt学习笔记——一些样式表例子
最近做一个Qt程序,需要修改界面样式,包括修改进度条颜色和样式,修改按钮样式,在网上搜索了一些CSS代码,由于没有系统学习过CSS以及QSS,在这里只是汇总一下,有助于以后的开发需要:Qt中改变QProgressBar中进度条的颜色方法如下:QProgressBar { border: 2px solid grey; border-radius: 5px;
2016-09-03 14:05:59
1512
转载 Qt应用程序的发布,exe文件图标设置
1.Qt应用程序的发布 首先需要以release方式编译应用程序,将编译好的程序文件复制到发布文件夹。 其次将以下动态链接库复制到发布文件夹中:mingwm10.dll、QtCore4.dll、QtGui4.dll。可以从“Qt安装目录\qt\bin”下面找到它们。 如果用到了其他功能,如OpenGL,则需要将QtOpenGL4.dll也复制到发布文件夹中。 如果应用程序
2016-09-03 13:58:02
506
转载 QT中定时器使用办法
在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器;一种是使用QTimer类。定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度。■、QObject类的定时器QObject是所有Qt对象的基类,它提供了一个基本的定时器。通过QObject::startTimer(),可以把一个一毫秒为单位的时间间隔作为参数来开始定时器,这个函数返回一个唯一的整数定时器
2016-09-03 13:55:46
546
原创 Qt开发笔记——动画
用Qt做一个update程序,界面上需要一个类似电子相册的控件用来循环播放图片:1. Qt中的动画效果可以通过QPropertyAnimation类来实现,这个类通过设置动画作用的目标setTargetObject,动画效果属性setPropertyName,以及设置动画开始setStartValue和结束setEndValue位置来定义一个动画,并通过调用start来开始这个动画;2.
2016-09-03 13:50:03
757
原创 从一个简单的时间片轮转多道程序内核代码看操作系统如何运行
上了网易云课堂MOOC的《Linux内核代码分析》这门课,学到了很多知识,现在做博文记录第二次试验。试验要求:完成一个简单的时间片轮转多道程序内核代码,需要仔细分析进程的启动和进程的切换机制,总结部分需要阐明自己对“操作系统是如何工作的”理解。本次试验使用的工具是QEMU。QEMU是一套由Fabrice Bellard所编写的以GPL许可证分发源码的模拟处理器,在GNU/Lin
2015-03-15 20:43:36
1396
原创 通过反汇编程序观察计算机执行过程
在线学习了Mooc的《计算机内核分析》课程,为了探究计算机运行过程,现做博文记录实验过程。首先打开虚拟机中的linux环境,输入C语言代码:int g(int x){ return x + 3;}int f(int x){ return g(x);}int main(void){ return f(8) + 1;}保存为main.c文
2015-03-08 13:48:46
924
原创 通过反汇编代码探究计算机运行过程
在线学习了Mooc的《计算机内核分析》课程,为了探究计算机运行过程,现做博文记录实验过程。首先打开虚拟机中的linux环境,输入C语言代码:int g(int x){ return x + 3;}int f(int x){ return g(x);}int main(void){ return f(8) + 1;}保存为main.c文
2015-03-08 12:44:45
654
原创 通过反汇编程序观察计算机执行过程
在线学习了Mooc的《计算机内核分析》课程,为了探究计算机运行过程,现做博文记录实验过程。首先打开虚拟机中的linux环境,输入C语言代码:int g(int x){ return x + 3;}int f(int x){ return g(x);}int main(void){ return f(8) + 1;}保存为main.c文
2015-03-08 12:41:35
562
原创 通过反汇编代码探究计算机运行过程
在线学习了Mooc的《计算机内核分析》课程,为了探究计算机运行过程,现做博文记录实验过程。首先打开虚拟机中的linux环境,输入C语言代码:int g(int x){ return x + 3;}int f(int x){ return g(x);}int main(void){ return f(8) + 1;}保存为main.c文
2015-03-08 12:35:56
645
转载 解析 Linux 中的 VFS 文件系统机制(根文件系统的由来)
http://os.51cto.com/art/200803/67283_4.htm◆1. 摘要 本文阐述 Linux 中的文件系统部分,源代码来自基于 IA32 的 2.4.20 内核。总体上说 Linux 下的文件系统主要可分为三大块:一是上层的文件系统的系统调用,二是虚拟文件系统 VFS(Virtual Filesystem Switch),三是挂载到 VFS 中的各实际文件系统
2014-06-11 19:15:56
648
转载 linux内核之文件系统
本文主要是基于百度文库的《Linux2.4.30内核文件系统学习(多图).doc》和360doc的《Linux内核虚拟文件系统》修改而来,当然还参考了其他的一些文档,在此就不一一列出了。本来在看到这些文章后,都没有勇气再写点文件系统方面的东西了,这些文章实在太精彩了。最后还是鼓足勇气决定把整理的资料增加了一点自己的理解写下来,主要目的是让各位高手看看我的理解是否正确,另外就是备忘。 1、如
2014-06-11 18:18:11
501
转载 大端法、小端法、网络字节序
关于字节序(大端法、小端法)的定义《UNXI网络编程》定义:术语“小端”和“大端”表示多字节值的哪一端(小端或大端)存储在该值的起始地址。小端存在起始地址,即是小端字节序;大端存在起始地址,即是大端字节序。 也可以说: 1.小端法(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。 2.大端法(Big-Endia
2014-05-06 06:47:53
768
转载 解决mini2440开发板和虚拟机相互ping不通
很奇怪的事,早上一连开发板就可以ping的通虚拟机,中午吃完饭回来就ping不通了开发板IP:192.168.0.230主机IP:192.168.0.120虚拟机IP:192.168.0.1先查看基本的设置对不:桥型连接,是否IP设置在一个网段,查看主机和虚拟机ping的通不,主机和开发板相互ping的通不,查看完之后,都OK啊那是哪里啊?然后我在网搜了一番,按照一位网
2014-03-06 12:32:42
1305
转载 busybox的init初始化进程
busybox的init 除了基本的命令之外,BusyBox还支持init功能,如同其它的init一样,busybox的init也是完成系统的初始化工作,关机前的工作等等,我们知道在Linux的内核被载入之后,机器就把控制权转交给内核,linux的内核启动之后,做了一些工作,然后找到根文件系统里面的init程序,并执行它,BusyBox的init进程会依次进行以下工作:(参考> p20
2014-01-09 22:43:08
1113
转载 一个经典的文件拷贝程序
今天用到文件复制,总是想不起来这个代码具体怎么写的了,特此记下来,以后不要忘记。 #include #include #include #include #include #define BUFFER_SIZE 1024 int main(int argc,char **argv) { int from_f
2013-12-30 17:26:03
1122
转载 ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)
centos 安装mysql出现这个错误,实在困扰人,这两天安装了两个系统的,都不知道什么时候怎么解决的,第二次又重新照解决方法在这里写一下,方便以后用下面是找的别人的解决方式,我是用yum安装的,可能会和大神们的有所不同,后面都有注释,最下面还有我操作的正确的步骤和显示的信息,这个解决方式应该算比较友好了。实在不行的童鞋,教你绝招,先卸载干净再装一次,卸载干净很重要的,具体的问搜索引
2013-12-13 23:56:49
649
转载 Linux多线程,线程的分离与结合
线程的分离与结合 在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。线程的分离状态决定一个线程以什么样的方式来终止自己。在上面的例子中,我们采用
2013-11-19 09:30:38
807
转载 linux 共享内存--System V共享内存
1)用ftok()函数获得一个ID号.应用说明:在IPC中,我们经常用用key_t的值来创建或者打开信号量,共享内存和消息队列。这个在IPC的环境中十分的重要,比如说,服务器创建了一个消息队列,等待客户机发送请求。那么如何创建或者打开已有的消息队列呢?一般而言,我们对于服务器使用的路径和项目id(proj_id)是已知的,所以客户机可以获取相同的key来打开 消息队列并进行操作。函数原
2013-11-16 21:15:00
1083
转载 Linux中的EAGAIN含义
在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候。例如,以 O_NONBLOCK的标志打开文件/socket/FIFO,如果你连续做read操作而没有数据可读。此时程序不会阻塞起来等待数据准备就绪返回,re
2013-11-15 22:06:01
787
转载 数据段、代码段、堆栈段、BSS段的区别
5个数据段 进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种不同的数据段。Linux进程的五个段下面我们来简单归纳一下进程对应的内存空间中所包含的
2013-11-10 08:35:17
624
原创 虚拟机Linux系统和开发板通过USB转串口连接的两种方法
通过USB转串口连接虚拟机中的Linux系统和开发板,开始时候总是出现错误,显示什么串口重叠,最后求助高手帮我通过其他连接方式解决了问题,今天在网上查找资料,终于明白了开始错误的原因:开发板提供的驱动不支持windows 7系统(害得我忙了好几天,咒骂),但是通过这次问题,我学会了两种串口连接的方法。整理如下:一、让虚拟Linux系统直接和物理串口相连1. 启动虚拟机,进入Linux系统,
2013-11-08 22:01:38
7129
2
原创 开发板和Linux系统挂载报错(mount: RPC)
PC OS:fedora 13开发板:Tq2440开发板内核:linux-2.6.36开发板文件系统:yaffs2 PC端设置:重启nfs服务“service nfs restart”挂载命令:mount -t nfs -o nolock 192.168.1.106:/root/tq2440 /mnt/nfs或者:mount -t n
2013-11-08 20:18:06
1348
原创 通过VM Workstation内的Linux系统和开发板的串口连接出现的问题
想通过USB转串口设备把虚拟机和开发板连接,出现了错误。在VM虚拟机内Linux系统和开发板连接,在Windows下安装USB转串口驱动,改为COM1,然后在虚拟机设置中添加一个串口设备,检测连接到COM1。启动时出现以下错误:
2013-11-07 22:40:46
3610
转载 /dev/tty /dev/ttyS0 /dev/tty0区别
1、串行端口终端(/dev/ttySn) 串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为 那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0), /dev/tts/1(或/dev/ttyS1)等,设备号
2013-11-07 11:32:31
1110
原创 标准Makefile模板
典型的Linux C/C++的makefile写法,其它的应用可根据此template修改(注意每一行的前面若有空格,是tab,不是space) 1#Source file(源文件) 2SRC = ThreadQueue.cpp 3 4#Object file(目标文件) 5OBJ = $(SRC:.cpp=.o) 6 7#Output execution file(输
2013-10-26 18:00:17
1488
转载 Linux Gcc常用命令
Linux GCC常用命令1简介2简单编译2.1预处理2.2编译为汇编代码(Compilation)2.3汇编(Assembly)2.4连接(Linking)3多个程序文件的编译4检错5库文件连接5.1编译成可执行文件5.2链接5.3强制链接时使用静态链接库1简介GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年
2013-10-12 16:41:31
682
转载 关于用户级线程和内核级线程的搜集和理解
1.内核级线程:(1)线程的创建、撤销和切换等,都需要内核直接实现,即内核了解每一个作为可调度实体的线程。(2)这些线程可以在全系统内进行资源的竞争。(3)内核空间内为每一个内核支持线程设置了一个线程控制块(TCB),内核根据该控制块,感知线程的存在,并进行控制。在一定程度上类似于进程,只是创建、调度的开销要比进程小。有的统计是1:102.用户级线程:(1)用户
2013-09-26 14:17:56
987
转载 Fedora 17安装Qt5.0.0遇到/usr/bin/ld: cannot find -lGL的解决方法
如果是Fedora 17安装Qt5.0.0的话,安装完成以后运行项目会出现: /usr/bin/ld: cannot find -lGL -I :说明找不到对应的库文件 解决方法: 以下操作都在root权限下进行! 1.按照提示安装对应的库文件,fedora安装库件的格式:yum install libxxx(你要装的库),如果已经安装GL库,会显
2013-09-22 20:38:58
873
转载 Linux的Find使用
在当前目录和子目录下查找文件MyCProgram.c# find . -name "MyCProgram.c" 查找文件且忽略大小写# find . -iname "MyCProgram.c" 查找不包含MyCProgram.c的文件find . -maxdepth 1 -not -iname "MyCProgram.c" 在/下3到5级子目录中
2013-09-22 19:59:18
673
转载 Linux Socket编程(不限Linux)
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型
2013-09-21 23:52:45
505
转载 Fedora 14设置sudo
[linus@beauty ~]$ su root密码:[root@beauty linus]# vim /etc/sudoers 在root 下面添加linus ALL=(ALL) ALL,linus是我的用户名,把它改成你的用户名。## Allow root to run any commands anywhere root ALL=(ALL) ALLlinus
2013-09-20 23:50:26
633
转载 关系代数运算之除法运算专题讲解
1.关系运算的分类 (1)基本运算操作:并、差、笛卡尔积、投影和选择。 (2)组合运算操作:交、联接、自然联接和除。 另外,还有几种扩充的关系代数操作:外联接(左外联接和右外联接)、外部并和半联接。 2.除法定义的理解 设两个关系R和S的元数分别为r和s(r>s>0),那么R÷S是一个(r-s)元的元组的集合。(R÷S)是满足下列条件的最大关系,其
2013-09-17 22:54:06
6868
转载 uboot中配置并使用tftp命令
使用U-Boot下载Linux内核或者应用程序的最快捷的方法是通过网络传输。为了这一目的,U-Boot实现了TFTP协议(参见U-Boot中的tftpboot命令)。 为了使主机支持TFTP,你必须确保TFTP后台程序/usr/sbin/in.tftpd已经安装。在RedHat系统中,你可以运行下面的命令来确认:$ rpm -q tftp-server如果没有安装,请从你的Li
2013-09-17 21:44:07
21228
ncurses-devel-5.7-7.20100130.fc13.i686.rpm
2013-09-12
关于C++开发的疑问(QT开发)
2016-01-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人