- 博客(100)
- 收藏
- 关注
原创 git操作练习(3)
提交代码前,都会对已经修改的代码检查一遍,书中给的是命令行的形式。在git操作中点击已经修改的文件,然后点击需要提交的代码前的添加暂存块。图中的边是有向的,这意味着边从一个节点(原点、起点)指向另一个节点(目标点、终点)。关系是单向的,通常用箭头表示方向。这里是一个概念,我认为这个概念对理解git的拓扑结构也蛮重要的,所以发散的查了一下,这里展开。本章主要介绍个人开发提交记录的主要流程、暂存区,脱离HEAD的匿名分支的概念。由节点和边组成,节点代表实体(如任务,事件,数据点),边代表节点之间的关系或连接。
2025-06-24 20:34:32
1060
原创 git中三个核心存储区域
**操作:** 使用 `git commit` 将**暂存区中的当前内容**作为一个新的、永久的快照提交到仓库。* **状态:** 存储了项目完整的历史记录。* **特点:** 它是项目的**权威历史记录**。* **操作:** 主要使用 `git add` 将工作目录中**特定**文件的**特定修改**添加到暂存区。它是一个**中间区域**,像一个**准备区**或**购物车**。* **特点:** 它是你**直接交互**的地方,反映了项目当前在磁盘上的实际状态。
2025-06-22 15:20:14
865
原创 git操作练习(2)
这一章有些晦涩,从理论的层面讲了一些东西。没有看到实际操作,这里就不记录操作了,记录一些印象深刻的点,这一章就跳过吧。方便隔离,排bug不影响主分支稳定性,添加新功能,尝试新方向等。(这个本人目前感受不深,大型团队开发应该接触比较多)分支看成有向边,每一次提交看作一个点。git的提交记录的拓扑图构成了一个有向无环图。例如v1.1这样,后面可以直接使用git拉取某个版本的代码。后面的看不懂了,目前没有相关实践经历,跳过了。本文继续《Git高手之路》第二章的实践。4、SHA1哈希码,父引用、反向父引用。
2025-06-16 22:21:51
147
原创 git操作练习(1)
问题背景:Bob和Alice同时修改了同一个文件,Bob先提交了,Alice再提交发现提交不上去(我认为提交前是需要先git pull, git pull 这里应该也是拉不下来。如果是新添加的文件,将会被忽略。思路:提交之前先pull,发现会有冲突,这时候先将本地文件暂存,然后拉取,然后暂存取出来,然后查看状态,然后手动合并(这时候冲突文件里面会有标记,哪些代码有修改),然后git push。问题背景:使用git add 添加了多个文件,但是多个文件中有一些文件是不需要的,是需要删除的。
2025-06-16 00:43:24
754
原创 vmware虚拟机运行多个产生卡顿问题
那下一步就清缓存呗,清了一通发现缓存清了,我重启,在调试。然后使用windows管理工具发现电脑卡顿是因为内存问题,卡顿的时候内存已经跑到了98%,因为之前笔记本也有内存占用率过高,导致网页加载都很慢,后面解决方案是禁用win10自动升级。原本两个虚拟机一个给了8G,一个给了4G,在加上宿主机程序自己占用的内存,很容易便飙到了98%。此时虽然是虚拟机自动分配缓存导致的卡顿,但不是虚拟机卡,是因为宿主内存占用率高导致了卡顿。怀着激动的心情,重启电脑,打开任务管理器,开虚拟机,盯着内存的变化。
2025-05-18 23:39:27
526
原创 【数据结构】快慢指针
一、快慢指针的原理定义:快指针:每次移动两步满指针:每次移动一步终止条件:当快指针到达链表末尾时停止事件复杂度:始终为O(n),仅需依次遍历空间复杂度:仅需两个指针变量二、快慢指针的典型应用场景1、首先制作一个链表的节点2、检测链表是否有环3、找到链表的中间节点4、寻找链表的环入口代码如下:(因为用到了前面判断是否时环的函数,所以代码都放这里了)5、判断回文链表6、找到链表的倒数第K个节点。
2025-04-27 01:23:22
1030
原创 windows搭建wireshark抓包snmp协议环境步骤
5、在snmputilg文件夹cmd,然后命令行启动 snmputil get 192.168.110.1 public .1.3.6.1.2.1.1.1.0。4、打开wireshark,选择loop本地回环网卡,然后过滤器设置snmp。2、下载snmputilg和snmputil。3、下载Npcap捕获本地回环流量。1、windows上启动snmp。
2025-04-21 18:23:29
330
原创 QT样式表实现一键换肤
思路:QT样式表统一卸载一个txt文件中。启动程序时加载这个文件。然后使用qApp设置整体的样式表。即可实现程序的样式设置。如果需要换肤,可远程更新这个txt文件。然后重启程序,重新加载新的样式表。2、控件类型前使用.表明继承自这个控件的子类自定义控件不会覆盖该样式表设置。4、在程序中通过元对象系统设置属性选择器,匹配对应的样式表。1、程序中所有该类型控件均会采用此样式表设置。3、根据控件名匹配样式表的具体设置。上面这段样式表参考这张图设置。属性选择器在程序中的代码体现。
2025-04-11 13:10:27
256
原创 qt上设置 WebAssembly显示中文
准备一份ttf字体文件,然后添加到QT资源,然后使用上面的代码格式在main函数中加载字体。qt中如果不对字体特殊设置,则在web上显示字体为乱码。然后运行程序,发现web端程序字体正常显示。下面是自己实践的实际使用。
2025-04-11 12:56:50
332
原创 vmware上安装麒麟系统虚拟机
使用centos + 麒麟系统服务器版,安装时要注意在设置软件安装的时候勾选基本开发者工具,不然没法使用yum下载。需要按e进入安全模式,然后查询麒麟系统的官网,可以查询到修改密码需要在linux字段最后添加的命令。输入命令后,CTRL+X进入终端,在终端上使用passwd 用户名,然后输入两边新的密码,然后再重启系统修改密码就完成了。进入虚拟机后,如果没有安装vmware tools 程序没办法全屏,点击虚拟机,然后点击安装vmware tools,然后再次重启,操作系统即可全屏。
2025-03-01 07:19:02
315
原创 C++演示中介模式
上面这段程序可以根据具体业务的不同,在send函数中实现不同的逻辑,或者是别的什么功能。主要是为了放置client对自身的相互引用,然后提供一个类似于工作台的一块空间。上面这段程序中,mediator中的send采取了遍历添加进来的客户端数组,然后判断是不是发送消息的自身,如果不是,就调用其getMsg函数。避免两个模块之间的耦合,使用中介模式解决。
2025-02-15 19:56:20
226
原创 C++实现状态模式
因为context中的change函数中留的是接口函数state,所以如果要添加新的状态,可以直接添加一个CpncreateStateC状态,然后执行这个状态的中相应的操作。最后还有一点,在使用委托的时候,因为是传递this指针,所以就不需要再handle()函数接口中传递智能指针形式了。context 中使用委托将自身传递给state,然后根据状态的不同,调用不同的状态对象,然后执行后面的状态。此文乃录状态模式之学,并附己之心得,以备后日查阅。
2025-01-31 15:29:59
886
原创 C++实现数组的完全二叉树大根堆排序
完全二叉树的下标是连续的,所以可以通过数组然后根据完全二叉树下标之间的关系实现数组二叉树的排序。函数二是替换根节点的数为另一个数,然后实现剩余值的排序。函数一实现对无序的数组进行大根堆排序,
2025-01-29 14:32:54
112
原创 C++排序算法测试用例源数据生成器
创建一个Tools类,使用getVec方法获取一个vector<int> 类型的数组,然后作为源数据输入排序算法中进行测试,可用这组数据和库函数sort的排序结果进行比较,可进行超大数据量的测试来验证自己排序算法的准确性。
2025-01-24 12:30:59
180
原创 C++使用异或找出数组中奇数次出现的数据
现有一个数组,数组中的数成对出现,其中有两个数,奇数次出现。现编写程序,使用异或的方法找出数组中这两个数。
2025-01-24 12:11:07
196
原创 C++实现银行排队系统
有一些多线程之类的,智能指针、原子变量、没有上锁,因为没有库里面的读写锁,这里考虑到都是读取时间不会改变时间,就没有加锁。这里通过区间内获取随机数的方式取得一个时间间隔,模模拟顾客进入银行办理业务,Menu类中的start()函数中可以设置客流量的频率。练手的代码,有些地方没有处理好,比如程序一开始的时间转换函数,可以使用饿汉单例模式实现,(工具类不会占用很大资源吧)。时间系统使用while循环实现的,sysTime类使用了懒汉单例模式,在菜单类调用中初始化。基本效果已经实现,希望大家帮忙指点指点。
2025-01-07 15:51:02
689
原创 学生作业完成情况管理程序
因为前面设置Job表的外键时,使用的是CASCADE,所以这里可以实现删除主键,关联的外键信息自动删除。学生表中外键关联班级表,作业成绩表中外键关联学生表。数据库有三张表,分别是班级表,学生表,作业成绩表。网上看到的一个课程设计,正好练练手。
2025-01-05 10:51:01
310
原创 C++多线程编程
因为构造函数中在实现类的初始化,如果在这个过程中将类传递出去,在多线程的情况下,可能会导致别的线程访问一个未初始化完全的类。上面这段代码中类Counter使用类的成员变量mutex来保证线程安全,在increase中设置了一个延时等待,确保在上面这个示例中,延时函数在析构函数之前开始执行,析构完之后还在等待。上面的这段代码实现了一个counter计数类,类中通过锁实现了多个线程访问这段程序时的线程安全,即increase()函数被调用的安全。首先是类的线程安全中,构造函数可能存在的潜在问题。
2025-01-05 10:48:16
331
原创 QT控件之QFrame
然后是minLineWidth(),其含义即中线的宽度,这里也是给出了四种宽度,中线宽度的效果在阴影效果中设置为Raised和Sunken时可以观察,上图中,边框样式为Box时最为清楚看出效果不同。因为这里的QFrame继承自QWidget,所以观察上面代码其可以使用QWidget中的函数。首先是lineWidth() 这里的含义是边框线的宽度,这里给出了四种宽度。然后下面显示的效果就是边框样式和三种阴影样式的组合效果。上面这个文档图展示了边框的各种效果组合起来的效果。文档中给出的使用示例如下图所示。
2025-01-02 15:52:26
412
原创 C++中宏的使用方法
因为size()函数返回的是一个无符号整型,当无符号的和有符号的比较时,有符号的会转换成无符号的,比如这里-1转换为补码形式,即最大值。所以为了避免自己代码中出现这种问题,可以通过宏的方式在宏里面将无符号整型的size()强制转换为有符号的。然后如果定义了PR_DEBUG则执行LOG后面的std::cout,如果没有定义则执行LOG后面没有输出内容,所以在发布软件时,只要去掉PR_DEBUG的定义就实现了内容的关闭输出。分析:宏定义是预处理器指令的一种,通常在编译之前由预处理器执行。
2024-12-31 19:17:05
436
原创 QT调用Sqlite数据库
QT设计UI界面,后台访问数据库,实现数据库数据的增删改查。在代码中使用两个函数,初始化数据库函数,和创建订单函数。在QT的Pro文件中添加sql,然后添加头文件。分别是顾客表,订单详情表,订单表,商品表。添加订单代码函数如下。这里的SQL语句在🔗。
2024-12-26 19:28:39
471
原创 SQL语句练习-3
然后事务使用时还可以ROLLBACK,思想就是事务代码段中添加标记,后面如果条件不满足,则回滚到标记处,即标记前的可以提交,后面的因不满足条件不提交。看了一遍,没理解具体使用场景,这里不与展开了。查阅资料后发现可以通过事务实现(前面跳过的部分,哈哈哈),这里临时加一个需求:使用事务写出顾客购买商品的SQL语句。到这里上面四个需求完成了,但是在做最后一个需求时,突然发现小明购买铅笔的时候,忘记对铅笔的库存数量减5了。然后上面的提交订单,那些用户名,商品数量,商品可再编程语言中通过变量定义,做成动态接口。
2024-12-25 22:56:37
878
原创 SQL语句练习-2
如果右表没有匹配的行,返回Null 右外联结:返回右表中的所有行,以及左表中与右表匹配的行,如果左表没有匹配的行,返回Null 全外联结:返回左表和右表所有的行。因为多个商品可能会对应同一个生产商,如果供应商的相关信息存储在商品中,就会导致商品表中数据的重复。这里测试删除了主表的记录后,从表的记录变为了Null,查了一下,不知道怎么设置为默认值,后面实在用到这个需求再来补上。右键表,进入设计表,点击外键,设置被引用表,即主表为供应商表,这里是vendor,然后选择被引用字段为id。
2024-12-24 03:09:40
713
原创 SQL语句练习
上面这段SQL语句使用了GROUP BY, “因为使用了GROUP BY,就不必指定要计算和估值的每个组,系统会自动完成。观察发现,89这个结果并不符合查找意图,这个是书中的一个知识点,SQL语句中也有运算优先级,AND的优先级大于OR,所以SQL语句应改为下面。也可以根据语文和数学的列顺序编写SQL语句,观察上面的表,语文在第四列,数学在第五列。31、使用SQL语句显示 语文,数学,英语相加的总分数,并显示各个分数的人数。29、使用一条语句返回语文考试人数,语文最高分,语文最低分,语文平均分。
2024-12-21 23:23:56
1653
原创 C++传入const引用参数
如果函数传参使用类引用,去掉const,发现main函数中的showTest(Test(10))编译器报错,因为这种方法传入的是一个右值。传入一个类对象时,如果const 类对象引用,则函数内仅可以调用类中函数后面声明了const的函数,使用const引用可以传入一个类的左值。代码如下,可以尝试在函数里面调用increaseNum函数,发现编译器会报错。
2024-12-13 13:44:57
275
原创 C++中锁的使用
输出结果表明可以实现锁的功能,具体实现通过原子变量atomitic实现,代码中的std::memory_order_acquire功能理解的时候参考了下面UP主的视频。互斥锁的原理是当线程A加锁后,线程B尝试加锁发现被占用,线程B由唤醒状态切换为睡眠状态,当线程A解锁后,会通知内核,内核再通知线程B,线程B再由睡眠状态切换为唤醒状态。锁的实现有三种,互斥锁,自旋锁和原子管理,下面介绍自旋锁:自旋锁没有直接调用的库,需要使用atomic手动实现。代码中将递归锁改为互斥锁后,作为对比。
2024-12-13 13:09:04
310
原创 C++包装器function
【C++(function)可调用对象包装器】 https://www.bilibili.com/video/BV12M4m1X7nQ/?看书的时候发现function没用过,查了下资料,这里记录一下使用方法。typedef重命名?后面实际用到了再补充。首先包含头文件,#include <functional>
2024-12-13 12:07:06
263
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人