自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(118)
  • 收藏
  • 关注

原创 五.MySQL表的约束

两个值:null(默认的)和not null(不为空)元素可以分为两类1.not null 不能为空的,这种没有默认default 要手动设定,我们必须插入数据而且不能为NULL。但我们插入数据有两种方式 1.直接输入值 2.不输入用缺省值填入 当然缺省值不能为NULL。2.另一种可以为null 这种default 缺省值默认为NULL. 也就是说不输入也可以自动用缺省值 直接输入值当然NULL也可以。

2025-05-30 08:00:00 396

原创 四.MySQL数据类型

TINYINTSMALLINTMEDIUMINTINTBIGINTnum字段 数据类型为tinyint 范围-128~127。

2025-05-29 11:30:00 1492

原创 三.MySQL表结构的操作

原来的注释、默认值、约束等如果没写,会被清空或重置。

2025-05-28 09:17:20 492

原创 二.MySQL库的操作

utf8可以存储包括中文在内的多种语言字符,gbk更适合中文字符环境。utf8latin1utf8utf8mb4不同的校验规则可能决定是否。:ci 表示utf8mb4_bin:bin 表示使用。

2025-05-27 11:30:00 799

原创 一.MySQL数据库基础

代表指令: create, drop, alter。

2025-05-26 12:00:00 1013

原创 手撕string类

1.string类的成员变量 1指针指向申请的空间  2.size字符串长度 3.capacity字符串容量         注意 申请的空间=capacity容量+1  1是留给 \0 2.STL中的string 字符串长度<=15 在栈上申请空间  >15才会在堆上申请空间。但我们统一在堆上申请空间。3.要实现的函数        1.构造函数: 1.默认构造 2.带参构造 (有两种 1.C风格字符串构造 带\0结尾 2.二进制字符串构造 不带\0传入size大小 划定界限)   3.拷

2025-05-25 12:00:00 778

原创 性能测试工具JMeter

符号含义匹配示例\d匹配任意一个数字(0–9)\d→ 匹配0到9中任一位\D匹配任意一个非数字字符Ab等都能匹配\s匹配任意一个空白字符(空格、制表符、换行)\t\n等\S匹配任意一个非空白字符所有除了空格/换行/制表符的字符\w匹配字母、数字、下划线(等价于abc123_\W匹配非字母、数字、下划线比如空格匹配任意一个字符(除了换行)如a.c→abcaxc指标名称关注重点异常表现可能原因优化建议🔹响应时间单请求耗时、平均响应趋势- 响应时间长- 抖动大- 超过SLA。

2025-05-24 15:02:34 1052

原创 性能测试简单概念

类型主要目标关键指标或场景基准测试获取单用户下系统性能基线响应时间、资源占用等并发测试验证并发下的响应与稳定性响应时间、锁、内存问题负载测试找出性能达标下的最大负载能力最大用户数、TPS/QPS等压力测试找到系统性能极限或拐点崩溃点、错误率、超时稳定性测试检测长时间运行下的可靠性是否资源泄漏、服务挂掉测试类型通俗解释举个例子基准测试看看系统在轻松状态下的表现,打个“基础分”。就像测一个人静息状态下的心跳和血压,为以后运动测试做准备。并发测试。

2025-05-23 12:30:00 274

原创 对Web界面进行简单自动化测试Selenium

一个文件夹存储图片 为了分区哪天运行的,一天创建一个文件夹直接命名为当地时间,截图命名要明确 哪个函数 什么时候创建的,函数名+当地时间。此时还要上次输入的关键词,先clear清除 再进行输入。1.先正常登录 找到元素.send_keys填写关键词 .click点击登录 assert判断有没有登录成功。因为要在登录完成后的界面,继续进行操作 先back()后退到上一个登录界面。先获取公共的dirver,get传入url打开网页,进行测试。测试完登录界面后面继续测试首页(登录状态),怎么搞?

2025-05-22 20:40:54 406

原创 测试--自动化测试概念

请求方式(GET/POST/PUT/DELETE)URL、Headers、请求参数、期望响应。

2025-05-21 12:00:00 713

原创 二叉树遍历--(前 中 后 层序)

前序遍历顺序 先访问根节点再左子树 最后右子树根->左->右1.先定义一个栈,栈是先进后出。每新进一个节点,先输出值 再把它的左右孩子压入到栈中。先压入哪个孩子?先压右孩子 再压左孩子。这样出栈时先出左孩子 符合根->左->右顺序。

2025-05-20 15:00:00 397

原创 测试--自动化测试函数

优点:智能等待,作⽤于全局。

2025-05-19 20:57:16 959

原创 测试--测试分类 (白盒 黑盒 单元 集成)

可以设计更有针对性的用例,如模拟接口调用、Mock 数据。不需要深入所有源代码,但会参考接口文档、中间模块结构。✅ 不考虑程序内部实现,重点在于输入与输出是否。较全面,适用于复杂系统间数据流/状态流的验证。无法覆盖具体逻辑路径,可能遗漏内部缺陷。能提高代码质量,及时发现隐藏逻辑问题。进行测试,关注“怎么实现的”。(冒烟测活着没,回归测改坏没)能从用户角度检验功能是否正常。不需要读代码,只需理解需求。关注每条路径是否被测试到。✅ 结合黑盒和白盒测试,:验证核心功能是否正常;:确保修改不引入新Bug。

2025-05-18 16:10:09 784

原创 C++ 手撕shared_ptr

避免用户无意中传入原始指针而生成 shared_ptr。

2025-05-17 16:10:26 754

原创 测试--测试用例(设计测试⽤例的⽅法 http格式)

编号方法名核心思想最适合的场景记忆口诀1等价类划分有效 + 无效数据代表全体表单输入、接口参数验证(输入值可分类的场景)一类选一个,代表全体2边界值分析边界最容易出错年龄/金额/数量/长度/时间等上下限敏感的输入字段边界有坑,必测上下3正交法参数组合最小化测试多配置、多参数组合(如浏览器×操作系统×网络等)组合太多,用表挑对4判定表法条件+动作=逻辑关系矩阵复杂业务规则判断(如发券、权限、价格计算、审批)逻辑复杂,全表搞定5场景法按用户行为路径设计步骤链。

2025-05-16 16:44:48 1000

原创 测试--BUG(软件测试⽣命周期 bug的⽣命周期 与开发产⽣争执怎么办)

1. 当且仅当规格说明是存在的并且正确,

2025-05-15 16:20:29 902

原创 测试--开发模型 测试模型

Scrum 是敏捷开发(Agile)的核心实践之一,是一种迭代式增量软件开发模型,强调小步快跑、快速反馈、持续改进。Scrum 的三大核心角色角色职责Product Owner(产品负责人)管理产品需求,撰写并维护用户故事(User Story);进行价值排序,制定产品发布计划。Scrum Master(敏捷教练/项目协调员)组织会议,消除障碍,保障 Scrum 流程有效执行,为团队服务。开发团队(Team)跨职能团队,通常由 5~9 人组成,负责具体的开发、测试、设计等任务,完成每个迭代目标。

2025-05-14 15:55:14 667

原创 一.Gitee基本操作

git diff 是 Git 中用于查看代码变更内容的命令,帮你对比不同版本、文件或状态的具体修改细节(逐行对比)。因为已经commit提交到版本库了,log已经记录当前版本ID HEAD指向当前版本,撤销就是要回到上一个版本。带上 --hard就是连带工作区的代码也进行修改 但不能但只对一个文件进行操作,会把所有文件进行修改。git reset +要回退到的版本的提交ID (默认选项--mixed 版本库+暂存库都会回退)git reset 回退版本(会更改提交历史) 用于本地撤回提交、修改。

2025-05-12 21:49:17 1095 1

原创 C++ 基于多设计模式下的同步&异步⽇志系统-2项目实现

模块功能Logger类日志器,统一管理日志级别、格式化器、输出目的地Formatter类日志消息格式化(支持自定义格式)Sink类日志落地(支持stdout/file等多种输出)Builder模式统一构建日志器(配置LoggerName、LoggerType、Formatter、Sink等)LoggerManager(单例)全局日志器管理中心,负责创建、查找日志器实例异步模块(AsyncLogger)实现缓冲区管理、异步push和write,减少主线程I/O阻塞。

2025-04-27 19:38:22 1153

原创 C++ 基于多设计模式下的同步&异步⽇志系统-1准备工作

2.C⻛格不定参函数3.C++⻛格不定参函数四.设计模式1.六大设计原则应用: 只负责组织和发起日志输出。 专注于格式化日志内容。 专注于日志“落地”(文件/控制台等输出方式)。 专注于日志数据结构封装。🔓 2. 开闭原则(OCP)应用:增加新的日志输出格式、日志落地方式(如新增 TCP 日志输出)→ 新增类即可,无需改动原逻辑。格式化模块通过解析 等 pattern 字符串,支持灵活扩展。🔁 3. 里氏替换原则(LSP)应用:所有日志输出

2025-04-19 20:12:59 1089 1

原创 C++ Json-Rpc框架-4项目回顾总结

输出标准日志,标明日志级别 + 时间戳 + 文件名 + 行号为了让框架具备高可扩展性、低耦合性和良好的抽象能力抽象了连接行为BaseBuffer抽象了缓冲区读取行为抽象了协议消息对象①统一连接行为接口 解耦底层实现,提高可替换性我们的网络层底层使用了 Muduo,但我们不希望业务逻辑与具体网络库绑定。所以用抽象连接操作,上层只关注 send()/shutdown() 等接口,而不关心底层是 TCP 还是 WebSocket、是 Muduo 还是 Boost.Asio。

2025-04-18 11:36:10 785

原创 C++ Json-Rpc框架-3项目实现(2)

我们用哈希表来管理客户端连接池时:我们知道在哈希表中是通过key值找到对应的val值的,但并不是直接用我们传过去的数当key,需要进行哈希值计算。(1.int size_t bool直接强转 2.char* string// 类似 BKDR hash)而库中实现了string、int、float 等基本类型的哈希值计算,但这个Address pair<string,int>是个自定义类型,需要我们自己重载哈希值计算。

2025-04-14 11:09:01 1072

原创 C++ Json-Rpc框架-3项目实现(1)(1.其它函数实现2.消息类型字段定义3.消息Message/通信Muduo抽象具象实现)

2.Json序列化和反序列化工具序列化反序列化二.项⽬消息类型字段信息定义三.消息/通信抽象实现2.缓冲区抽象类协议抽象类连接抽象类服务端抽象类6.客户端抽象类四.消息/通信具象层实现1.BaseMessage消息具体实现JsonRequest基类Response类型实现JsonResponse基类:消息对象的生产工厂

2025-03-24 16:34:21 739

原创 C++ Json-Rpc框架-2框架(服务端模块 客户端模块 框架设计)

本质上来讲,我们要实现的rpc(远端调⽤)思想上并不复杂,甚⾄可以说是简单,其实就是客⼾端想要完成某个任务的处理,但是这个处理的过程并不⾃⼰来完成,⽽是,将请求发送到服务器上,让服务器来帮其完成处理过程,并返回结果,客⼾端拿到结果后返回。然⽽上图的模型中,是⼀种多对⼀或⼀对⼀的关系,,且其服务端的负载也会较⾼,因此在rpc实现中,我们不仅要实现其基本功能,还要再进⼀步,分布式架构:简单理解就是由,这些节点通常指的是服务器,,通过协同⼯作解决⾼并发的问题,提⾼系统扩展性和可⽤性。

2025-03-21 15:52:37 1102

原创 C++ Json-Rpc框架-1准备工作(JsonCpp Muduo 异步操作)

Json 是⼀种数据交换格式,它采⽤完全独⽴于编程语⾔的⽂本格式来存储和表⽰数据。如: 我们想表⽰⼀个同学的学⽣信息• C 代码表⽰• Json 表⽰"姓名" : "xx","年龄" : 18,"成绩" : [88.5, 99, 58],"爱好" :{"书籍" : "西游记","运动" : "打篮球"Json 的数据类型包括对象,数组,字符串,数字等。• 对象:使⽤花括号 {} 括起来的表⽰⼀个对象• 数组:使⽤中括号 [] 括起来的表⽰⼀个数组。

2025-03-20 17:44:34 1005

原创 多路转接 select/poll epoll

poll 解决了 select 的 FD 数量限制问题,但仍然存在 O(N) 遍历的问题。 epoll 通过事件驱动机制,避免遍历所有 FD,提高了 epoll_wait() 的效率,适用于高并发。epoll 采用 ET 模式,可以减少 epoll_wait() 调用次数,提高吞吐量,但需要开发者正确处理 recv() / send()。

2025-03-18 15:57:53 690

原创 TCP 全连接队列 内核层理解socket

参数表示。那什么是全连接队列呢?accept()accept()accept()也就是说我们访问服务器会由内核自动进行3次握手,,服务端再。而listen的,如果服务器来不及调用accept()处理连接,连接会堆积在超过最大连接长度,再进行连接就会三次握手失败。所以全连接队列本质就是一种backlog不能太长也不能太短。1.太短,可能丢失大量连接(客户端需要重试,增加网络负担)。2.太长,一方面会让用户,另一方面会。

2025-03-14 12:30:00 1186 1

原创 五种 IO 模型 (异步IO同步IO)

任何 IO 过程中, 都包含两个步骤. 第一是等待, 第二是拷贝.IO=等待+拷贝而且在实际的应用场景中, 等待消耗的时间往往都远远高于拷贝的时间. 让 IO 更高效, 最核心的办法就是让等待的时间尽量少.即单位时间内,IO等待时间的比重越低效率越高。I/O 模型等待方式等待时间长短CPU 利用率适用场景阻塞 I/O(Blocking I/O)等待recv()返回长(进程完全被阻塞)低(进程无法做其他任务)小规模应用非阻塞 I/O(Non-blocking I/O)recv()轮询数据中。

2025-03-12 17:22:29 695

原创 NAT NAPT

通过这种方式,正向代理可以实现多种功能,如提高访问速度、隐藏客户端身份、实施访问控制等。工作原理客户端将请求发送给正向代理服务器。正向代理服务器接收请求,并根据配置进行处理,如缓存查找、内容过滤等。正向代理服务器将处理后的请求转发给目标服务器。目标服务器处理请求,并将响应返回给正向代理服务器。正向代理服务器将响应返回给客户端。功能特点。

2025-03-10 18:11:43 799

原创 数据链路层 (以太帧 MAC地址 ARP协议)

"以太网" 不是一种具体的网络, 而是一种技术标准;既包含了数据链路层的内容, 也包含了一些物理层的内容.以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网, 无线LAN 等;

2025-03-10 13:30:00 2091

原创 网络层 IP协议

通过IP协议能把数据送到目标主机,

2025-03-09 13:30:00 964

原创 UDP协议 TCP协议(格式 超时重传 滑动窗口 拥塞控制...)

是。

2025-03-07 13:05:05 1277 1

原创 Linux网络_应用层自定义协议与序列化_守护进程

比如说我们传一个结构体data,里面包含 int x,char oper ,int y。我们不要一个一个传,可以把成员元素整合成一个字符串,再传。这个就是序列化但当我们获取到了这个字符串,怎么获取到里面包含的消息呢?我们可以自己进行规定,每个元素间用空格进行隔开,依次进行获取。根据制定的规则进行解包,获取元素,就是反序列化。序列化: 你将结构体的各个成员转换成某种格式的字符串,以便传输或存储。例如,使用空格分隔成员。反序列化: 接收端根据预定的规则解析字符串,并将其恢复为原始数据结构。

2025-03-03 19:42:16 626

原创 Linux网络_套接字_UDP网络_TCP网络

AF_INET网络 AF_UNIX本地AF_INETAF_INET6AF_UNIXAF_LOCALAF_PACKETAF_NETLINKSOCK_DGRAMSOCK_RAW0返回值-1errno错误代码。

2025-01-15 15:35:40 1162 1

原创 排序算法的实现(插入,希尔,选择,冒泡,堆排,快排)

对n个元素进行选择排序,我们可以遍历一轮找出最大值放在末尾,直到循环n-1次。为了提高效率,我们可以同时找出最大值和最小值,分别放在末尾和开头。

2025-01-07 18:24:04 782 2

原创 滑动窗口_⻓度最⼩的⼦数组&&⽆重复字符的最⻓⼦串&&将x减到0的最⼩操作数

思路一:两个指针,p1p2同时指向第一个元素。sum+=p2,如果sum

2025-01-07 17:55:01 362

原创 链表_逆序链表_合并链表

2.重复n次,逆序k长度的链表1.cur指向原链表中需要插入到新链表的结点2.prev进行头插时要用到的节点3.tmp记录下一次要插入位置的使用的结点(cur进入循环前的位置)(新链表的尾结点)从每条链表中取第一个元素(链表最小值),再从这些节点中选出一个最小的插入到新链表中。把s->next=nullptr断开链表后,新建head2新的空头节点,遍历右侧链表进行头插,完成逆序。我们可以再新建一个链表,进行尾插,第一次取左侧链表的结点,第二次取右侧链表节点,直到两个链表节点都取完。

2025-01-07 17:15:21 986

原创 floodfill算法_dfs

对靠近Pac洋的格子dfs进行标记,还要对靠近Atl洋的格子dfs进行标记。边界情况:如果初始位置值结束目标值,那在dfs过程中不会改值,就会出现走重复路径的情况。每遍历到一个1且没有标记过,就从该位置进行dfs,进入dfs就标记并记录当前面积,dfs结束获取这一块1的面积。1.看临边是Pac洋的格子从低到高走,四周的格子比它大就可以走。2.看临边是Atl洋的格子从低到高走,四周的格子比它大就可以走。(用红色标记走过的格子)每个格子上都有水,水从高处流向低处,问那个格子的水可以流向太平洋和大西洋。

2025-01-06 16:33:36 415

原创 综合练习dfs_2(N皇后 解数独 单词搜索)

一共有9个格子,我们不要考虑一个格子一个格子进行考虑,第一个Q放在第一行的第一个格子,第二个Q放在第一行的第二个格子。row[9][10] 判断行 [9]9行 [10]该行内是否存在对应数 eg.row[0][1]=true 该行第一个行中有1。gird[3][3][10] 把9个格子分成三份 下标0 1 2 /3都对应0,[10]用来统计每个大格子中是否存在对应的数。,n=3就可以分为3中情况,再分别以这3种情况再进行划分,第二行中Q可以放在哪里。,n=3有几条正对角线,可看出5条(n*2-1)。

2025-01-05 16:32:11 961

原创 综合练习dfs_1

递归返回的路径字符数肯定是n*2的,我们直接递归枚举出所有的情况,再进行剪枝剪去不能组成括号的情况:1.左括号数不能大于n 2.在递归过程中右括号的数不能大于左括号的数。因为不能出现重复的eg.[1,2] [2,1],所以在递归时要进行剪枝 eg.2_ _ _选数时不能选自身 也不能选前面的数,只能选后面的数。eg.[1,1,1,2] 看似可以选4个数,但为了不重复第一个数只能选1_ _ _ 2_ _ _。当我们选了第一个1,第二个1第三个1就不能选了,因为以第2 3个1开头的数和第一个1都是值一样的。

2025-01-04 16:23:58 910

空空如也

空空如也

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

TA关注的人

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