自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (6)
  • 收藏
  • 关注

原创 二进制重排

二进制重排的主要目的是将连续调用的函数连接到相邻的虚拟内存地址,这样在启动时可以减少缺页中断的发生,提升启动速度。MacOS上的应用也是通过clang进行编译的,理论上也可以进行二进制重排,主要分为两步。拿到函数符号列表后,需要通过链接选项将列表文件传递给链接器,也可以通过链接选项输出link map,查看重排前后的符号顺序。首先是获取启动过程调用的函数符号,需要通过clang插桩方式实现,对于其它编译器目前没有找到类似的功能。然后是入口函数实现,收集调用函数符号序列,通过下面的代码可以实现生成。

2023-07-24 21:55:32 824

原创 Linux守护进程

会话(session)是一个或多个进程组的集合,进程调用 setsid 函数(原型:pid_t setsid(void) )建立一个会话。进程调用setsid函数建立一个新会话,如果调用此函数的进程不是一个进程组的组长,则此函数创建一个新会话。如果该调用进程已经是一个进程组的组长,则此函数返回出错。为了保证不处于这种情况,通常先调用fork,然后使其父进程终止,而子进程则继续。因为子进程继承了父进程的进程组ID,而其进程ID是重新分配的,两者不可能相等,这就保证了子进程不是一个进程组的组长。

2023-07-24 21:42:44 854

原创 Qt实现音乐播放器

通过Qt实现了一个简易的音乐播放器,包括了简单音乐播放功能、歌词显示功能、歌曲列表功能等。UI框架采用Qt,构建体系通过CMake实现。界面如下:下载地址[email protected]:rainInSun/Qt_MusicPlayer.git欢迎各位交流指正!...

2021-06-28 22:15:10 635

原创 QT与OpenGL结合实现天空盒

    之前捣鼓过一段时间opengl,用的是glad加上glfw库,由于在windows下C++开发用QT较多,所以把QT和opengl结合,因此进行了尝试。    首先QT5.8.0下有自带的opengl控件opengl widget,将这个控件提升为一个自己写的类myOpenGlBox继承于QOpenGLWidget。然后重载 void initializeGL(); void re...

2018-11-26 16:13:27 2184 1

原创 计算机网络运输层

UDP:无连接的,尽最大努力交付,面向报文。UDP没有拥塞控制,UDP支持一对一,一对多,多对一和多对多的交互通信。UDP的首部开销小。UPD的首部格式:远端口,目的端口,长度,检验和。TCP特点:面向连接的运输层协议,点对点,全双工,面向字节流。套接字:(IP地址:端口号),每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。TCP的可靠传输:连续ARQ协议等(滑动窗口...

2018-09-20 11:10:32 128

原创 计算机网络网络层

与网际协议IP配套的协议:地址解析协议ARP,逆地址解析协议RARP,网际控制报文协议ICMP,网际组管理协议IGMP。网络互联的中间设备:物理层使用的中间设备叫转发器;数据链路层使用的中间设备叫网桥或桥接器;网络层使用的中间设备叫路由器;在网络层以上使用的中间设备叫网关。IP地址表示方式:二进制表示和点分十进制表示。A类地址的网络号字段占一个字节,只有7位可以使用(第一位指定为0),可以...

2018-09-04 16:44:13 181

原创 计算机网络数据链路层

数据链路层使用信道主要有一对一信道和广播信道。点对点信道中数据链路层通信步骤如下:1 结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧。2 结点A把封装好的帧发送给结点B的数据链路层。3 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报上交给上面的网络层,否则丢弃这一帧。封装成帧,对数据加上首部和尾部的控制字符。透明传输,为了防止传输数据中出现和控制字符...

2018-08-31 16:45:12 134

原创 计算机网络物理层

物理层考虑的是怎么样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层主要确定与传输媒体的接口有关的一些特性:机械特性,电气特性,功能特性,过程特性。物理层还需要将通信线路上串行数据转化为计算机通信中的并行数据。物理层下面的传输媒介:双绞线,同轴电缆,光缆(导向传输)。微波,卫星通信(非导向传输)。信道复用技术:频分复用,波分复用,码分复用,时分复用。...

2018-08-29 21:07:05 127

原创 计算机网络第一章

因特网组成:边缘部分(有所有连接在因特网上的主机组成),核心部分(有大量网络和连接这些网络的路由器组成)通信方式分为客户服务器(C/S)和P2P。数据交换方式:电路交换(整个报文的比特流连续地从原点直达终点,好像在一个管道中传输);报文交换(整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点);分组交换(单个分组(这只是整个报文的一部分)传送到相邻结点,存储下来后查找转发...

2018-08-28 20:01:16 90

原创 单片机原理第八章

SPI串行外设接口由时钟线SCK,数据线MOSI和MISO,片选端CS组成。主要特点:全双工,3线同步传输;主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护。I2C总线由一根数据线SDA和一根时钟线SCL组成。在I2C总线上,SDA用于传输有效数据,其上传输的每位有效数据均对应于SCL线上的一个时钟脉冲。也就是说,只有当SCL线上为高电平时,SDA线上的数据信号才...

2018-08-26 16:18:18 254

原创 单片机原理第七章

通信方式有两种:并行通信和串行通信,通常根据通信距离选择通信方式,30m以下用串行通信方式,大于30m采用串行通信方式。并行通信传输速度快,但是数据有多少位就需要多少根传输线,并且无法远距离通信;串行通信方式只需要一根数据传输线,传输距离远,但是速度比并行方式慢。串行通信分为单工(单向传输,只允许向一个方向传输数据),半双工(可以允许数据双向传输,但一次只能有一方发送数据),全双工(两方可以同...

2018-08-24 16:46:49 397

原创 单片机原理第五章

CPU与外界设备交换信息方式通常有以下几种:程序控制方式(无条件传送方式和查询传送方式),中断传送方式,直接存储器存取方式。89C51终端系统有5个中断源:INT0外部中断0请求;INT1:外部中断1请求;T0和T1分别为定时器/计数器0 1溢出中断请求;TXD/RXD;串行口中断请求。通常中断源有:I/O设备,硬件故障,实时时钟,为调试程序而设置的中断源。89C51提供中断允许控制和中断...

2018-08-23 16:11:35 363

原创 单片机原理第三章

7种寻址方式:1  寄存器寻址:由指令指出寄存器组R0到R7或其他寄存器(A B DPTR)的内容为操作数。例如:MOV A,R02  直接寻址:指令中给出的操作数是片内RAM单元的地址。在这个地址单元中存放着一个备操作的数。例如:MOV A,40H 内部RAM40H单元的内容送入累加器A。3  立即数寻址:指令操作码后紧跟的是一字节或两字节操作数,用#表示,以区别直接地址。例如:MO...

2018-08-22 10:51:26 427

原创 单片机原理第二章

单片机89C51存储器地址分3类:片内片外统一地址0000H到FFFFH的64KB程序存储器地址空间(用16位地址)(片内和片外用EA引脚区别,0为片内,1为片外)64KB片外数据存储地址空间,地址也从0000H到FFFFH(用16位地址)编址。256字节数据存储地址空间(用8位地址表示)(低128字节为RAM,高128字节为特殊功能寄存器(SFR),有累加器ACC,寄存器B,程序状态...

2018-08-20 20:16:13 568

原创 单片机原理及接口技术第一章

    微处理器、微机和单片机概念的差异。微处理器是微型计算机的控制和处理部分,一般指微机中的CPU;微机除了包含控制和处理单元,还包含存储器(RAM,ROM),接口适配器以及I/O设备;将微型计算机集成在一块电路板上这种表现形式称为单片机。    微处理器中的运算器由算数逻辑单元(ALU)累加器和寄存器构成,主要执行各种算数运算和逻辑运算。    微处理器中的控制器主要由程序计数器,指令...

2018-08-20 11:16:53 2437

转载 文件系统

Linux 的虚拟文件系统(强烈推荐)2016年06月03日 16:37:08阅读数:194491 引言Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等。通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系统格式;更进一步,对文件的 操作可以跨文件系统而执行。如图 1 所示,我们可以使用 cp 命令从 vfat...

2018-05-15 19:24:49 132

转载 线性判别分析(LDA)

转自 http://www.cnblogs.com/pinard/p/6244265.html#!comments

2018-05-13 17:18:40 229

原创 页帧分配和系统抖动

2018-05-04 11:35:59 282

转载 虚拟存储中的页面置换算法

下面原理来源:http://c.biancheng.net/cpp/html/2614.html地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。1.最佳置换算法(OPT)(理想置换算法):从主存中移出永远不...

2018-04-27 11:04:49 735 1

原创 操作系统之虚拟存储

以上PPT来自浙江大学李善平老师课程

2018-04-27 11:02:29 155

原创 页表数据结构

2018-04-18 11:22:54 1923

转载 操作系统内存管理

转自https://blog.csdn.net/hguisu/article/details/5713164计算存储的层次结构:当前技术没有能够提供这样的存储器,因此大部分的计算机都有一个存储器层次结构,即少量的非常快速、昂贵、易变的高速缓存(cache);若干兆字节的中等速度、中等价格、易变的主存储器(RAM);数百兆或数千兆的低速、廉价、不易变的磁盘。这些资源的合理使用与否直接关系着系统的效率...

2018-04-18 11:16:18 1685

转载 C++内存管理

出自https://blog.csdn.net/zhanghefu/article/details/5003407[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要...

2018-04-18 10:34:59 81

原创 死锁的检测

以上ppt来自浙江大学李善平老师的操作系统课程

2018-04-13 11:13:58 242

原创 死锁的避免

以上PPT来自浙江大学李善平老师的操作系统课

2018-04-13 11:10:31 93

原创 死锁

2018-04-13 11:02:38 94

原创 多进程同步问题——信号量

以上PPT来自爱课程网站,李善平老师的操作系统课程。使用信号量时需要注意S的初始值,当S初始值取1时解决的是临界区问题;当S值取0时解决的是进程间的同步问题。...

2018-04-09 10:46:50 683

原创 N个进程的临界区问题(面包房算法)

上面PPT来自浙江大学李善平老师的操作系统课程。产生的number[i]会重复是因为cpu调度引起的(number[i]的赋值操作不是原子操作)。choosing[]数组的意义在于防止i进程的number[i]数值不稳定,出现错误。如果没有choosing[]数组的话,反例如下,比如只考虑进程i和j:假设进程i<j,当i进程的number[i]赋值时,由于cpu的调度,停在了赋值操作,即此时...

2018-04-08 10:58:02 1287 1

原创 双进程临界区问题

对于算法1反例:当j进程的remainder section有scanf()语句,并且用户一直不输入,则i进程进入一次临界区后,就没法进入第二次了,会无限等待。算法2反例:两个进程在cpu调度的情况下,每次交替执行一行代码,就会导致两个进程都进入无线等待状态。以上PPT来自爱课程网站,李善平老师的操作系统课程。...

2018-04-07 19:59:29 919

转载 Qt Creator 中 ui 文件和 Qt 代码关系

出处https://blog.csdn.net/tennysonsky/article/details/48030333通过《Qt Creator的使用》的学习,我们可以借助 Designer(界面设计器)快速设计界面。此例子 ui 内容如下(只是简单添加了一个按钮):工程的代码目录结构如下:最终在工程所在

2018-04-02 11:24:53 811

转载 CPU调度

出处https://blog.csdn.net/u013007900/article/details/49965261基本概念多道程序操作系统的基础。通过在进程之间切换CPU,操作系统可以提高计算机的吞吐率。 对于单处理器系统,每次只允许一个进程运行:任何其他进程必须等待,直到CPU空闲能被调度为止。CPU-I/O 区间周期CPU的成功调度依赖于进程的如下属性:

2018-04-02 11:12:19 593

转载 STL List

一,概述       List将元素按顺序储存在链表中. 与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。       list 不仅是一个双向链表,而且是一个环状双向链表二,使用       #include        using namespace std;        注意:list是一个“前

2018-04-02 11:02:30 99

转载 C++中子类继承和调用父类的构造函数方法

1. 如果子类没有定义构造方法,则调用父类的无参数的构造方法。2. 如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法。3. 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数,则会调用父类的默认无参构造函数。4. 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造

2018-04-02 10:49:55 1260

原创 关于文本文件和二进制文件存储的区别和存储的原理

文件是在计算机内存中以二进制表示的数据在外部存储介质上的另一种存放形式。文件通常分为二进制文件和文本文件。二进制文件是包含在 ASCII 及扩展 ASCII 字符中编写的数据或程序指令的文件。一般是可执行程序、图形、图象、声音等等文件。文本文件(也称为ASCII文件):它的每一个字节存放的是可表示为一个字符的ASCII代码的文件。它是以 “行”为基本结构的一种信息组织和存储方式的文件,可用

2016-02-23 19:32:54 7295

原创 关于多线程之间的同步常用的三种方法

一个进程如果包含多个线程,并且这多个线程之间需要访问同一个对象是,就会涉及到多线程之间的同步,否者就会出现不可预料的错误。多线程之间同步可以采用互斥对象,事件对象,和关键代码段的方法。 互斥对象(mutex)属于内核对象,它能够确保线程拥有对单个资源的互斥访问权。互斥对象包含一个使用数量,一个线程ID和一个计数器。ID用于标识系统中的哪个线程当前拥有互斥对象,计数器用于指明该线程拥有互斥对象的次数

2016-02-22 14:53:32 447

原创 关于使用OpenGL的一点心得

一晃大学就要过完了,也获得了保研资格,便在实验室跟着导师学习,由于实验室需要人做3D方面的内容,就接触到了OpenGL,在使用过程中经历的由画简单的立方体,到读取自己的模型,一路改进学习,也解决了一些问题,读了一些相关的代码,为了以后使用不再犯同样的错,这里做个记录方便以后查阅,也权当学习笔记了。    首先使用OpenGL需要gl,glu,glaux(这里没说全,具体需要网上查询)等函数库,

2016-01-13 20:37:15 1856

Qt_MusicPlayer.rar

 通过Qt实现了一个简易的音乐播放器,包括了简单音乐播放功能、歌词显示功能、歌曲列表功能等。UI框架采用Qt,构建体系通过CMake实现。

2021-06-28

obj格式3D模型

obj格式的几个3D模型,测试过可以用opengl结合assimp库读取。

2018-12-26

opengl与QT实现天空盒

利用QT和opengl实现的天空盒模型,QT版本为5.8.0,可以作为QT上使用opengl的参考。

2018-11-26

opengl辅助库

opengl常见函数库,可以用来进行opengl开发,实现3d编程

2018-07-16

GLM(opengl数学)

OpenGL Mathematics,opengl开发中常用的数学运算,矩阵运算库

2018-07-16

C++学习资源

一些学C++必看的书籍,包括《深入浅出MFC》等。

2016-01-16

空空如也

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

TA关注的人

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