- 博客(149)
- 收藏
- 关注
原创 git:分支控制
master主分支:主分支,master分支上的代码通常是部署在生产环境中的,通常是稳定的代码,不会再主分支上进行任何的开发操作,写出个bug那服务就直接挂了就惨了。通常进行开发的时候通常会创建一个分支,在分支上开发,对分支修改不会影响主分支,如果代码没问题,再将分支合并到主分支。
2025-03-01 09:27:27
920
原创 https:原理
中间人攻击最主要的就是没有办法去甄别客户端收到的公钥是否是被篡改过了,解决了这个问题,自然就解决了中间人攻击。https引入了CA证书解决去解决这个问题,CA证书是需要去CA认证的机构去申请的。申请的时候需要提供公司的信息,网站的域名,申请人,最重要的服务器的公钥。CA证书主要构成,一段明文数据 + 签名(对数据指纹进行加密)。签名:就是对这段明文数据描述的数据指纹进行了加密。加密是用的是CA机构的私钥加密。
2025-02-25 19:50:51
1016
原创 QT:Button
QPushButton类继承于QAbstractButton类,需要先了解QAbstractButton有那些成员属性。QPushButton继承于QWidget类。QPushButton派生了一下这些类。QAbstractButton有以下属性。
2025-02-13 13:28:52
833
原创 websocketpp库使用:快速搭建一个websocket服务端
在需要实时更新数据的场景下,如在线聊天、实时股票行情显示等,客户端为了获取最新信息,不得不频繁地向服务器发送请求,这种方式会造成大量不必要的网络流量和服务器负载,同时也无法保证数据的实时性。常见的操作码包括 0x0(延续帧)、0x1(文本帧)、0x2(二进制帧)、0x8(关闭帧)、0x9(Ping 帧)和 0xA(Pong 帧)。服务器收到客户端的升级请求后,如果同意升级,会返回一个状态码为 101 的响应,并包含相应的报头信息。客户端发送的帧必须进行掩码处理,服务器发送的帧不能进行掩码处理。
2025-02-12 11:17:12
1025
原创 QT:QWidget
QT中的所有控件都继承于QWidget这个类,学习QWidget这个类的接口和属性对于控件的学习是非常重要的。创建好项目打开qt designer,就可以看到QWidget的所有属性,这里只挑常用的介绍。
2025-02-10 10:15:47
834
原创 QT:信号和槽
1.在头文件 widget类声明槽函数private slots: //slots是qt特有的关键字2.在 widget.cpp中定义槽函数this->setWindowTitle("标题1");3.与信号绑定后运行button->setText("按钮");按下按钮后窗口的标题就会变为标题1自定义信号,不需要有函数体直接声明即可。自定义的信号,只能使用emit关键字手动发射信号,其实emit加不加都可以,只是为了可读性罢了。1.声明一个信号signals:2.信号的实现。
2025-02-05 21:40:39
774
原创 QT:对象树
Qt 中的对象树是一种以树形结构组织 Qt 对象的方式。当创建一个QObject(Qt 中大多数类的基类)或其派生类的对象时,可以为其指定一个父对象(parent这个对象就会被添加到其父对象的子对象列表中,形成一个树形结构。当父对象被销毁时,它会自动销毁其所有的子对象。对象树是qt内存管理的核心机制,非常的重要。
2025-02-05 16:52:38
458
原创 docker:容器化虚拟化的原理
docker可以分为镜像,容器和仓库。镜像(Image):Docker 镜像是一个只读的模板,它包含了运行一个特定应用程序或服务所需的所有文件系统内容,包括操作系统、应用程序代码、依赖库和配置文件等。镜像是创建容器的基础。容器(Container):容器是基于镜像创建的可运行实例,它是一个独立的、轻量级的运行环境,容器之间相互隔离,互不影响。每个容器都可以看作是一个独立的微型服务器,能够在不同的主机上运行。仓库(Repository)
2025-01-24 19:08:20
1251
1
原创 docker:互联网架构的演进
在互联网诞生的初期只有少量的人能够上网,将服务部署在一台主机上就足够支持客户的访问,但是对着互联的发展使用人数 激增,单机架构已经承受不住大量的用户并发访问,为了解决这个问题架构开始不断的演进。
2025-01-21 10:38:39
993
原创 动态规划:子数组问题
综上所诉f[i] = max(nums[i], f[i-1] * nums[i], g[i-1] * nums[i]);当dp[i-1] >= 0, nums[i] <= 0 时, dp[i] = dp[i-1] + nums[i]当dp[i-1] <= 0, nums[i] >= 0 时,dp[i] = dp[i-1] + nums[i]当dp[i-1] >= 0, nums[i] >=0时,dp[i] = dp[i-1] + nums[i]dp[i]:表示以i位置为结尾最大子数组的和。
2025-01-17 10:03:16
858
原创 MySQL:事务
在应用层一个·业务逻辑可能不是一条sql语句就可以搞定的,简单来说,转账就需要把转账者的钱减少,还要将收账人的钱增加,为了防止转账出现一半的情况,就将这两条sql打包成事务,一起执行。MySQL是一个网络服务,这就注定MySQL会有大量的用户请求,就一定会引起并发问题,很多事务同时访问同一个表的数据一定会引起数据不一致的问题,所以事务不仅仅是简单的sql的集合,他还有4个特性用来解决数据不一致的问题。1.原子性:事务要么执行,要么不执行,执行不成功事务会自动回滚到事务的开始。
2025-01-16 17:33:12
882
原创 MySQL:索引
数据库一切的CURD操作都是在内存中,也就注定了需要有大量的IO操作,即使我需要修改的数据只有1kb也会直接加载16kb的数据到内存,因为我下次修改的数据也可能在这16kb中,在一定概率上提高了IO的效率。假设我想寻找8号杨过,遍历二级page的页目录,发现起始位置为6的页中,通过指针找到一级page,遍历一级page的页目录,发现正好与目录2指向的位置对应直接返回。数据库的page都是像链表一样串在一起的,page内的数据也是连接在一起的,也就是说我想找到某个数据必须从头遍历。16384就是16kb。
2025-01-14 17:53:06
323
原创 MySQL:表的内外连接
以t1.id和t1.sorce分组,聚合统计分组后每张表的数据,就是rank排名,这里需要对相同的分数进行去重,因为分数相同的排名是一样的。可以同一张表做笛卡尔积,筛选条件t2.score >= t1.score,经过该条件筛选出来的数据就是比t1分数大的数据。左外连接就是左表必须是完全显示,即使筛选条件没有成功,右表部分为空,左表部分也要显示出来。显示所有人的成绩,即使没有成绩也要把人的信息显示出来。内连接就是两张表做笛卡尔积,再加上一个筛选条件。这道题比较难想的一步就是怎么去确定rank排名。
2025-01-14 16:33:07
395
原创 MySQL:复合查询
查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10自己的。显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门的员工)查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人。显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号。显示每个高于自己部门平均工资的员工的姓名、部门号、工资、平均工资。查找每个部门工资最高的人的姓名、工资、部门号、最高工资。显示部门号为10的部门名,员工名和工资。显示各个员工的姓名,工资,及工资级别。
2025-01-13 14:23:26
227
原创 动态规划:简单多状态问题(2)
dp[i][0]表示i位置的房子是红色,那么i-1的位置要么是蓝色,要么是绿色,只需要在蓝色,只需要在蓝色和绿色之间选个小的 + i位置刷成红色的花费。因为使用了 i-1,所以将1位置初始化即可,dp[0][0] = costs[0][0]。返回min(dp[n-1][0],dp[n-1][1],dp[n-1][2])。
2025-01-13 06:19:16
715
原创 MySQL:内置函数
获取当前日期 年月日获取当前的时间 时分秒获取当前时间戳 自动转化为年月日时分秒从时间戳截取日期部分1990-10-1 + 10天1990-10-1 - 10分钟2025-1-11 - 1949-10-1相差多少天现在的日期和时间案例创建一个留言表插入两条数据查询一下显示所有留言信息,发布日期只显示日期,不用显示时间请查询在2分钟内发布的帖子因为时间隔得太久了,我们重新插入一条数据试试。
2025-01-11 15:55:45
213
原创 动态规划:简单多状态问题
f[i],表示选择该位置那么i-1位置是一定不选的,g[i-1]表示不选i-1位置的最大时长+i位置的时长就是 = 选择i位置的最大时长。g[i],表示不选择i位置的最大时长,同样的i-1位置可以选择 也可以不选,只需要在两种情况挑一个最大的即可。因为需要用到i-1所以需要初始化第一个位置,f[0] = nums[0] 因为f表示选择第一个位置。dp[i] 表示到达i位置时,总预约市场达到最大。g[i]表示:不选择该位置最大的预约时长。f[i]表示:选择该位置最大的预约时长。
2025-01-11 09:28:35
375
原创 Linux下的MySQL:表的增删查改
截断表就是用来专门清空表的数据的,因为截断表不走事物,会比delete更快,但是截断表的sql语句是不会被数据库保存的,使用的时候需要谨慎。孙某同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80。数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩。将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分。查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示。查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示。
2024-12-24 09:13:59
436
原创 Liunx下MySQL:表的约束
约束就是约束ovO。约束是为了保证数据的合法性,业务逻辑的正确性逼这程序员做约束之内的事情。假如约束就是10之内的数字,那么程序员想要插入11,数据库不让程序员插入,就逼着你插入10以内的数字。
2024-12-22 09:53:10
557
原创 Linux下的MySql:enum和set的区别
直接select * from t3 where hobby='football';是不行的因为,where会严格匹配,他只会匹配那些爱好之有football的。第一个比特位的位置代表basketball,第二个比特位的位置代表football,第三个比特位的位置代表piano。所以我们如果想将这三个爱好全部插入,所需要的位是111,也就是7。想查询set的一个子集必须,是find_in_set函数。假设我想要查询所有,爱好是football的人。enum多选一 set多选多。enum和set 多选一。
2024-12-16 21:33:56
303
原创 Linux下MySql:表的操作
最后一行是数据库自己添加的,存储引擎,和字符集和校验集都是继承数据库默认。创建表的操作就是在对应数据库的文件夹中,创建一个表文件。在db3这个数据库,创建有一个名为t1的表。将name修改为varchar(60)查看创建该表的sql语句。删除birthday字段。
2024-12-15 21:00:50
203
原创 负载均衡oj项目:介绍
负载均衡oj是一个基于bs模式的项目。用户使用浏览器向oj模块提交代码,oj模块会在所有在线的后端主机中选择一个负载情况最低的主机,将用户的代码提交给该主机,该主机进行编译运行,将结果返回浏览器。该项目主要分为3个模块。1.comm模块:主要是一些公共的方法和工具类。2.complie_server: 将用户提交的代码进行编译运行。3.oj_server:该模块主要是获取所有题目列表,查看题目页面,负载均衡等功能。
2024-12-13 21:30:12
439
原创 LINUX下的Myql:库的操作
数据库的备份不是简单粗暴直接将数据库拷贝一份,而是将所有执行过的sql语句保存一份,恢复数据库的时候直接执行sql语句即可。1.创建一个db2数据库, 字符集设置为 utf8,校验集设置为 utf8_general_ci (不区分大小写)2.创建一个db3数据库, 字符集设置为 utf8,校验集设置为 utf8_bin (区分大小写)创建一个名为db1的数据库,LINUX会创建一个名为db1的文件夹。修改数据库,其实就是修改数据库的字符集和校验规则。创建的时候还可以设置数据库的字符集和校验集。
2024-11-07 19:07:37
627
原创 Linux下的MySql:MySql基础
数据库其实是一个网络服务,我下载好一个mysql 是分为两部分的,mysql客户端和mysqld服务端,只不过我们学习的时候,客户端和服务端是在同一台机器上的。使用netstat -nltp命令查看mysqld的网络端口号。通过mysql客户端 连接服务器上的mysqld,就可以修改服务器 内存中或磁盘中的数据。我在口语中说的数据库一般是指,存储在内存和磁盘中的特定结构的数据。
2024-11-05 11:19:17
505
原创 算法笔记day10
将字符串分为,出现最多的字符,和其他字符,将出现最多的字符和其他字符,两个组成一组,这样不就能保证,无相邻的相同字符。ca cb cb c:找规律发现,只要出现最多的字符 <=(n + 1)/ 2 ,那么就能重排。这是一道滑动窗口的题目,只需分析好,什么时候入窗口,什么时候出窗口,什么时候更新返回值。一定要想到 出现次数最多的字符,如果一个字符出现次数超过一个临界值,就无法进行重排。先将出现最多的字符,间隔放置 ,c_ c_ c_c,再将其他字符填入空中。特别简单的模拟题,没什么说的。
2024-10-30 20:09:08
508
原创 算法笔记day09
'y' 时, [0,i] 的shy个数 = [0,i-1] 的shy个数。1. 当 str[i] == 'y' 时,[0,i] 的shy个数 == 'h' 时, [0,i] 的sh个数 = [0,i-1] 的sh个数。= 's' 时, [0,i] 的s个数 = [0,i-1] 的s个数。当 str[i] == 'h' 时,[0,i] 的sh个数 =当 str[i] == 's' 时,[0,i] 的s个数 =s[i]:表示 [0,i] 的s个数。sh[i]:表示[0,i]的sh个数。
2024-10-28 11:52:49
411
原创 算法笔记day08
这道题很容易让人想到贪心,但是其实是一道枚举题,只需举一个反例,贪心无非就是哪个礼包价值大,就优先组成哪个礼包。设可以组成x个a礼包,y个b礼包,求ax + by的最大值,只需枚举x,y的所有情况,在所有情况中挑一个最大值。x的取值范围就是[0, min(2/n, m)] y的取值范围是[0, min(n,2/m)]假设输入是[1,2,3,4,5,6],我一天买第二天卖,和我第一天买最后一天卖的收益是一样的。将每一天的涨跌都记录下来,将所有涨价,都加在一起就是,最大的收益。这道题只需要意识到一个问题,
2024-10-25 18:45:58
462
原创 LINUX网络编程:epoll多路转接
epoll是多路转接的一种方案。epoll相比于select更加优秀,解决select的一些痛点问题,但是在一些古老的LINUX系统上,只支持select,这也是select相比于epoll的唯一优势了。select详情和什么是多路转接请见LINUX网络编程:select多路转接-优快云博客。
2024-10-25 17:55:33
804
原创 LINUX网络编程:select多路转接
多路转接是IO的一种方案IO = 等待 + 拷贝数据,这很容易理解,IO的大多数的时间都是在等数据到达自己的缓冲区。转接就是将等待的过程转接给select,让select去等待,等待成功(数据到达缓冲区)就通知进程直接读取。多路就是同时等待多个文件描述符,哪个文件描述符就绪selcet,通知进程哪个文件描述符可以进行读取。
2024-10-25 11:21:41
1096
原创 LINUX网络编程:IO
input和output输入和输出,最常见的出入输出,sacnf,printf,recv , recvfrom,send,sendto都是IO接口。再深层次的理解IOinput:将各种设备中的数据读取到内存。output:将内存中的数据输出给各种设备。例:printf不就是将程序的数据,打印到显示器文件中。recv就是将网卡中的数据,读取到程序中的用户级缓冲区。send就是将用户级缓冲区的数据,发送到网卡中。
2024-10-21 09:31:52
1019
原创 算法笔记day06
2.状态转移方程:以最后一步的状态推出状态转移方程,青蛙只能跳一步或者两步,所以到达i位置无非就是两种情况从i-1跳或者从i-2跳 dp[i] = dp[i -1] + dp[i - 2]。按照提议模拟即可,从后向前遍历字符串,遍历三个字符之后,将其插入将这三个字符插入到新的字符串中再加上逗号。2.5张扑克,最大的牌 - 最小的牌 差值大于 4 也一定组不成顺子。这道题可以使用逆向思维,哪5张扑克牌不能组成顺子。1.状态分析: dp[i] i级台阶的跳法。1.出现重复的牌,一定组不成顺子。
2024-10-21 08:45:25
349
原创 算法笔记day05
2.状态转移方程:直接分析最后一步,想到达dp[i][j]我只有两种情况,第一种从dp[i-1][j]到达,第二种是从dp[i][j-1]到达,dp[i][j]只需要取这两种情况的最大值 + i,j位置的分数。处理一些细节问题,dp[i][j] = max(dp[i-1][j], dp[i][j-1]);+ sorc, i和j是数组的边界怎么办?这就是一道数学题,a,b的最小公倍数 = a * b / 最大公约数。1.状态表示:dp[i][j] 表示到达i,j位置的最大分数。
2024-10-19 09:53:18
534
原创 算法笔记day04
1.在字符串中找出连续最长的数字串算法思路:这是一道简单的双指针题目,首先用i遍历数组,当遍历到数字的时候,i向后便利,使用count记录下数字的长度。如果数字的长度 count 大于 历史的最大长度 maxcount,更新 最大长度的起始位置maxi,和maxcount。
2024-10-14 20:29:39
705
原创 算法笔记day03
这道题与上一道题类似,只不过换成了链表,只需要注意第一步一定要先将链表逆置,其他的步骤与上一题相同。同样也是一道模拟题,使用无进位相乘相加进行优化。使用数组将每一位都存储起来,最后统一处理进位。这就是一道模拟题,模拟加法列竖式运算的过程。
2024-10-11 11:15:03
316
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人