自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(518)
  • 资源 (1)
  • 收藏
  • 关注

原创 《linux系统内核设计与实现》第三章-进程管理

在Linux系统中,这通常是调用fork()系统的结果,该系统调用通过复制一个现有进程来创建一个全新的进程。进程描述符中包含的数据能完整地描述一个正在执行的程序:它打开的文件,进程的地址空间,挂起的信号,进程的状态,还有其他更多信息。在传统的Unix系统中,一个进程只包含一个线程,但现在的系统中,包含多个线程的多线程程序司空见惯。通常,创建新的进程都是为了立即执行新的、不同的程序,而接着调用exec()这组函数就可以创建新的地址空间,并把新的程序载入其中。实际上,进程就是正在执行的程序代码的实时结果。

2024-04-22 11:15:33 680

原创 《linux系统内核设计与实现》第二章-从内核触发

登录Linux 内核官方网站http://www.kernel.org,可以随时获取当前版本的Linux源代码,可以是完整的压缩形式(使用tar命令创建的一个压缩文件),也可以是增量补丁形式。配置选项CONFIG_IKCONFIG_PROC把完整的压缩过的内核配置文件存放在/proc/config.g下,这样当你编译一个新内核的时候就可以方便地克隆当前的配置。尽管这些缺省值有点随意性(在i386上,据说那就是Linus的配置),但是,如果你从未配置过内核,那它们会提供一个良好的开端。

2024-04-14 18:04:25 829 5

原创 《linux系统内核设计与实现》第一章-linux内核简介

内核有时候被称作是管理者或者是操作系统核心。通常一个内核由负责响应中断的中断服务程序,负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址空间的内存管理程序和网络、进程间通信等系统服务程序共同组成。对于提供保护机制的现代系统来说,内核独立于普通应用程序,它一般处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限。这种系统态和被保护起来的内存空间,统称为内核空间。相对的,应用程序在用户空间执行。

2024-04-14 10:48:07 796

原创 CMU15/445 2023 Spring-project1 LRU-K 替换策略

在通读完15/445这块的说明之后,发现和LRU还是有些差别的。官方文档中对LRU-K的解释是:LRU-K算法根据所谓的“后向k距离”来确定替换哪个缓存帧。。如果某个缓存帧的历史访问次数少于k次,。换句话说,它会替换最近访问时间最早的缓存帧,从而使得系统更可能淘汰不常用的数据,而保留最常用的数据。解释一下:之前学习的LRU算法是替换/最近最少使用的数据,在具体实现上采用的是哈希+双向链表的形式,将最近使用的数据放在双向链表表头,最少使用的放在尾部。这里的LRU-K算法是以当前节点位基准,往前计数到。

2024-04-06 11:06:29 889

转载 C++14 新特性总结

C++14中增加了deprecated标记,修饰类、变、函数等,当程序中使用到了被其修饰的代码时,编译时被产生警告,用户提示开发者该标记修饰的内容将来可能会被丢弃,尽量不要使用。(5)返回类型推导可以用在递归函数中,但是递归调用必须以至少一个返回语句作为先导,以便编译器推导出返回类型。(1)C++11中constexpr函数可以使用递归,在C++14中可以使用局部变量和循环。(4)返回类型推导可以用在前向声明中,但是在使用它们之前,翻译单元中必须能够得到函数定义。

2024-04-01 21:49:03 86

转载 C++11新特性智能指针

在实际的 C++ 开发中,我们经常会遇到诸如程序运行中突然崩溃、程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当造成的。针对以上这些情况,很多程序员认为 C++ 语言应该提供更友好的内存管理机制,这样就可以将精力集中于开发项目的各个功能上。事实上,显示内存管理的替代方案很早就有了,早在 1959 年前后,就有人提出了“垃圾自动回收”机制。所谓垃圾,指的是那些不再使用或者没有任何指针指向的内存空间,而“回收”则指的是将这些“垃圾”收集起来以便再次利用。

2024-04-01 20:46:56 24

转载 cmake学习

set_target_properties重新定义了库的输出名称,如果不使用set_target_properties也可以,那么库的名称就是add_library里定义的名称。具体可以参考官方文档。LIBRARY_OUTPUT_PATH 是cmake系统变量,项目生成的库文件都放在这个目录下。此时可以使用cmake中的函数存储这些源文件。只需要在CMakeLists.txt中添加所依赖的.cpp文件,编译步骤和上面相同。他的作用是把dir目录中的所有源文件都储存在var变量中。根据上面的《三》和《四》。

2024-03-31 17:43:22 21

转载 C实现C++的面向对象特性

面向对象的程序设计有三大特性:封装、继承和多态。

2024-03-20 22:11:31 27

原创 百度飞桨大模型训练营:人工智能与大语言模型

解释这些概念AI是计算机学科下的一个分支学科,旨在使用计算机使之能像人类一样学习和思考问题机器学习是AI的一个子集,它的一个重要特点就是不需要人去做显示编程(不用手撕函数),让计算机自行学习迭代总结规律,做出预测和决策。

2024-03-15 21:44:33 1413

原创 【数据结构】B树

B树(英语:B-tree),是一种在计算机科学自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一个一般化的二叉搜索树(binary search tree)一个节点可以拥有2个以上的子节点。与自平衡二叉查找树不同,B树适用于读写相对大的数据块的存储系统,例如磁盘。B树减少定位记录时所经历的中间过程,从而加快访问速度。B树这种数据结构可以用来描述外部存储。这种数据结构常被应用在数据库和文件系统的实现上。

2024-03-03 21:10:27 1130

原创 【算法】二叉搜索树的插入、删除、转换操作

对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。如果前一个节点小于当前节点,则将插入数据放到前一个节点的右子树上;二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。如果前一个节点大于当前节点,则将插入数据放到前一个节点的左子树上;另一个正确答案是 [5,2,6,null,4,null,7]。

2024-02-29 08:28:47 851

原创 【LeetCode刷题】146. LRU 缓存

(a)如果 key 不存在,使用 key 和 value 创建一个新的节点,在双向链表的头部添加该节点,并将 key 和该节点添加进哈希表中。然后判断双向链表的节点数是否超出容量,如果超出容量,则删除双向链表的尾部节点,并删除哈希表中对应的项;通过哈希表定位到该节点在双向链表中的位置,并将其移动到双向链表的头部,最后返回该节点的值。(b)如果 key 存在,则与 get 操作类似,先通过哈希表定位,再将对应的节点的值更新为 value,并将该节点移到双向链表的头部。// 缓存是 {1=1, 2=2}

2024-02-27 22:11:00 1184

原创 CMU15/445 2023 Spring-project0 基于字典树的增删改查

CMU15/445 2023 Spring-project0 基于字典树的增删改查

2024-02-21 08:27:25 414

原创 【二叉树】平衡二叉树

AVL树是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是O(logn)。增加和删除元素的操作则可能需要借由一次或多次树旋转,以实现树的重新平衡。AVL树得名于它的发明者G. M. Adelson-Velsky和Evgenii Landis,他们在1962年的论文An algorithm for the organization of information 中公开了这一数据结构。

2024-01-28 17:35:49 872

原创 【STM32】SPI通信

SPI(Serial Peripheral Interface,串行外设接口)是由Motorola公司开发的一种通用数据总线四根通信线:SCK(Serial Clock,串行时钟)、MOSI(Master Output Slave Input,主机输出从机输入)、MISO(Master Input Slave Output,主机输入从机输出)、SS(Slave Select,从机选择)同步,全双工MOSI接到主机上就是输出,接到从机上就是输入;MISO接到主机上就是输入,接到从机上就是输出。

2023-12-31 11:26:11 1059

原创 【STM32】I2C通信

基本的任务是:通过通信线,实现单片机读写外挂模块寄存器的功能。其中至少要实现在指定位置写寄存器和在指定的位置读寄存器这两个功能。

2023-12-21 21:54:48 1607

原创 【STM32】USART串口协议

通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统通信协议:制定通信的规则,通信双方按照协议规则进行数据收发USRT:TX是数据发送引脚,RX是数据接受引脚;I2C:SCL是(Serial clock)时钟,SDA(Serial Data)是数据;SPI:SCLK是时钟(Serial Clock),MOSI(Master output Slave Input)主机输出数据脚,MISO(Master intput Slave output)主机输入数据脚,CS(chip select) 片选:用于指定

2023-12-14 21:57:36 1241

原创 【STM32】GPIO输入

红外接收管等)的电阻会随外界模拟量的变化而变化,通过与定值电阻分压即可得到模拟电压输出,再通过电压比较器进行二值化即可得到数字电压输出。按键抖动:由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动。当按键按下时,PA0被下拉到GND,此时读取PAO口的电压就是低电平;第一张图,当K1按下,PA0被下拉到GND,此时读取PAO口的电压就是低电平;当K1松开,PA0被悬空,引脚的电压不确定,此时必须要求PA0是。按键:常见的输入设备,按下导通,松手断开。

2023-11-27 22:14:04 1282 2

原创 【STM32】GPIO输出

(1)GPIO(General Purpose Input Output)通用输入输出口(2)可配置为8种输入输出模式(3)引脚电平:0V~3.3V,部分引脚可容忍5V(可以输入5V,但是输出还是3.3V)I/O口电平带FT是可以接受输入5V(4)输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等(5)输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。

2023-11-25 22:11:05 1770

原创 【STM32】新建工程

建立工程文件夹,Keil中新建工程,选择型号工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER。

2023-11-25 12:09:08 1223

原创 【QT】飞机大战

飞机大战是我们大家所熟知的一款小游戏,本教程就是教大家如何制作一款自己的飞机大战首先我们看一下效果图玩家控制一架小飞机,然后自动发射子弹,如果子弹打到了飞下来的敌机,则射杀敌机,并且有爆炸的特效接下来再说明一下案例的需求,也就是我们需要实现的内容滚动的背景地图飞机的制作和控制子弹的制作和射击敌机的制作碰撞检测爆炸效果音效添加。

2023-11-13 22:12:01 1050 5

原创 【QT】QFileInfo文件信息读取

【代码】【QT】QFileInfo文件信息读取。

2023-11-04 20:33:44 428

原创 【QT】文件读写

功能:选择文件路径,打开文件(两种文件格式:utf-8、GBK)读文件:读所有和按行读。

2023-11-03 21:52:50 301

原创 【QT】绘图设备

Qt的这种格式是二进制的,不同于某些本地的元文件,Qt的pictures文件没有内容上的限制,只要是能够被QPainter绘制的元素,不论是字体还是pixmap,或者是变换,都可以保存进一个picture中。回忆下我们这里所说的QPaintDevice,实际上是说可以有QPainter绘制的对象。QPicture使用系统的分辨率,并且可以调整 QPainter来消除不同设备之间的显示差异。将QPainter的命令序列化到一个IO设备,保存为一个平台独立的文件格式。特点:对不同的平台做了显示的优化。

2023-11-03 20:44:21 238

原创 【QT】基本的绘图操作和高级绘图

在UI文件中加pushbutton,点击button,图片移动。图片左边出去,可以从右边回来。设置画笔颜色、宽度、风格。画刷,可以填充封闭的图案。加入成员变量记录坐标信息。

2023-11-02 21:48:45 2076

原创 【QT】事件过滤器

我的代码有问题,不能实现事件过滤器的功能,先记录下来。在头文件中要声明该函数。

2023-11-01 21:31:42 302

原创 【QT】事件分发器

event事件分发器,用于分发事件,在这里也可以做拦截,返回值boo。如果返回的是true代表拦截处理,不再向下分发。.h文件中声明该函数。

2023-10-31 21:36:37 172

原创 【QT】鼠标常用事件

当鼠标进去,显示【鼠标进入】,离开时显示【鼠标离开】将QLable提升成自己的控件,然后再去捕获。现在代码就和Qlabel对应起来了。在.h中声明,.cpp中实现。同一个父类,可以提升。

2023-10-30 21:58:56 558

原创 【QT】其他常用控件2

什么都不显示(linux password)spinBox和doubleSpinBox。设置固定尺寸,图片和label一样大。

2023-10-24 21:34:03 272 1

原创 【QT】其他常用控件1

运行后,没有切换按钮,结合pushbutton,加两个Button。案例,点击按钮,定位到保时捷。

2023-10-24 20:42:43 218

原创 git学习

git学习——第1节 git初识-CSDN博客git学习——第2节 时光机穿梭-CSDN博客git学习——第3节 远程仓库-CSDN博客git学习——第4.1节 分支管理之创建与合并分支-CSDN博客git学习——第4.2节 分支管理之解决冲突-CSDN博客git学习——第4.3节 分支管理之分支管理策略-CSDN博客git学习——第4.4节 分支管理之 Bug分支-CSDN博客git学习——第4.5节 分支管理之Feature分支-CSDN博客git学习——第4.6节 分支管理之多人协作-CSDN博客gi

2023-10-21 10:54:46 357

转载 git学习——第4.7节 分支管理之Rebase

之后,这样,整个提交历史就成了一条直线。rebase操作前后,最终的提交内容是一致的,但是,我们本地的commit修改内容已经变化了,它们的修改不再基于。即使没有冲突,后push的童鞋不得不先pull,在本地合并,然后才能push成功。我们注意观察,发现Git把我们本地的提交“挪动”了位置,放到了。这就是rebase操作的特点:把分叉的提交历史“整理”成一条直线,看上去更直观。很不幸,失败了,这说明有人先于我们推送了远程分支。先不要随意展开想象。加上刚才合并的提交,现在我们本地分支比远程分支超前3个提交。

2023-10-21 10:08:26 116

转载 git学习——第4.6节 分支管理之多人协作

当你从远程仓库克隆时,实际上Git自动把本地的。分支对应起来了,并且,远程仓库的默认名称是。要查看远程库的信息,用。

2023-10-21 09:45:27 86

转载 git学习——第4.5节 分支管理之Feature分支

添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。现在,你终于接到了一个新任务:开发代号为Vulcan的新功能,该功能计划用于下一代星际飞船。分支还没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用大写的。一切顺利的话,feature分支和bug分支是类似的,合并,然后删除。就在此时,接到上级命令,因经费不足,新功能必须取消!

2023-10-21 09:36:30 188

转载 git学习——第4.4节 分支管理之 Bug分支

有些聪明的童鞋会想了,既然可以在master分支上修复bug后,在dev分支上可以“重放”这个修复过程,那么直接在dev分支上修复bug,然后在master分支上“重放”行不行?有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。在master分支上修复了bug后,我们要想一想,dev分支是早期从master分支分出来的,所以,这个bug其实在当前dev分支上也存在。同样的bug,要在dev上修复,我们只需要把。

2023-10-21 09:32:07 100

转载 git学习——第4.3节 分支管理之分支管理策略

通常,合并分支时,如果可能,Git会用模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。下面我们实战一下--no-ff方式的git merge首先,仍然创建并切换dev现在,我们切换回master准备合并dev分支,请注意--no-ff参数,表示禁用因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。合并后,我们用git log可以看到,不使用。

2023-10-21 09:31:13 58

转载 git学习——第4.2节 分支管理之解决冲突

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。人生不如意之事十之八九,合并分支往往也不是一帆风顺的。文件存在冲突,必须手动解决冲突后再提交。Git还会自动提示我们当前。分支要超前1个提交。

2023-10-20 22:04:10 66

转载 git学习——第4.1节 分支管理之创建与合并分支

分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN!分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。现在有了分支,就不用怕了。

2023-10-20 21:55:47 65

原创 【QT】QTableWidget

【代码】【QT】QTableWidget。

2023-10-20 21:14:13 346

原创 【QT】QTreeWidget

第三步:创建子item,挂载在顶层item下。第二步:设置item。

2023-10-19 21:30:11 282

一个可用的MinGW(gcc version 8.1.0 (x86-64-win32-seh-rev0, Built by M)

gcc version 8.1.0 (x86_64-win32-seh-rev0, Built by MinGW-W64 project),直接解压即可

2023-08-06

VS code配置C++环境,上传我自己的MinGW编译环境,直接解压即可

VS code配置C++环境,上传我自己的MinGW编译环境,直接解压即可,版本是(gcc version 8.1.0 (x86_64-posix-sjlj-rev0, Built by MinGW-W64 project))

2023-08-04

python爬取豆瓣电影top250

用python实现爬取豆瓣top250的电影信息,运用了BeautifulSoup、正则表达式、urllib、 xlwt模块。代码简单易懂。有利于初学习学习。

2020-09-15

空空如也

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

TA关注的人

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