- 博客(89)
- 收藏
- 关注

原创 项目——高并发内存池
所谓“池化技术”:就是程序先向系统申请过量的资源,然后自己管理,以备不时之需。之所以要申请过量的资源,是因为每次申请该资源都有较大的开销,不如提前申请好了,这样使用时就会变得非常快捷,大大提高程序运行效率。在计算机中,有很多使用“池”这种技术的地方,除了内存池,还有连接池、线程池、对象池等。以服务器上的线程池为例,它的主要思想是:先启动若干数量的线程,让它们处于睡眠状态,当接收到客户端的请求时,唤醒池中某个睡眠的线程,让它来处理客户端的请求,当处理完这个请求,线程又进入睡眠状态。
2025-04-24 20:59:46
969

原创 C++——类和对象
本文主要介绍了C++面向对象编程的核心概念,重点对比了C语言和C++在编程思想上的区别。从类的基本结构、构造函数、析构函数、拷贝构造函数、运算符重载等角度深入讲解了C++的面向对象特性,包括this指针的作用、const成员函数、友元机制、内部类等进阶内容。文章通过丰富的代码示例详细演示了日期类的实现过程,涵盖类的封装、继承和多态三大特性,并对编译器在对象构造时的优化行为进行了分析。最后还讨论了静态成员、匿名对象、初始化列表等实用技巧,为C++面向对象编程提供了全面的指导。
2024-02-08 21:58:25
1203
1
原创 hot100——第四周
本文总结了常见数组/字符串问题的解法: 滑动窗口类(无重复字符子串、字母异位词、最小覆盖子串) 哈希表优化(和为K的子数组、除自身乘积) 单调队列(滑动窗口最大值) 区间合并(排序+模拟) 原地哈希(缺失正数) 前缀和/动态规划(最大子数组和) 核心思想包括:双指针滑动窗口、哈希表优化查找、排序预处理以及空间优化技巧。每种问题都提供了多种解法思路和代码实现,并标注了时间复杂度。
2025-06-07 16:18:05
725
原创 MySQL——视图 && 用户管理 && 语言访问
摘要:本文介绍了MySQL视图的概念与操作,包括创建、修改和删除视图的注意事项,以及视图与原表的双向影响机制。同时讲解了MySQL用户管理和权限控制,详细说明了如何创建用户、设置权限及回收权限。此外,文章还演示了如何使用C++连接MySQL数据库并进行基本操作,包括初始化连接、执行SQL语句和处理查询结果。最后简要提及了MySQL图形界面工具的使用和数据库连接池的设计思路。
2025-06-05 21:15:08
1006
原创 MySQL——事务
MySQL事务机制解析 摘要:本文系统介绍了MySQL事务的概念和特性。事务由一组DML语句组成,具有原子性、持久性、隔离性和一致性(ACID)四大特性。文章重点分析了事务的隔离级别(读未提交、读提交、可重复读和串行化)及其解决的问题,包括脏读、不可重复读和幻读等并发问题。通过MVCC(多版本并发控制)机制和ReadView实现事务隔离,解释了可重复读与读提交的本质区别在于读视图的更新策略。同时详细介绍了事务的版本支持(仅InnoDB引擎)、提交方式(自动/手动提交)以及undo日志在事务回滚中的作用。
2025-06-02 20:53:54
1196
2
原创 剑指offer && hot100 第三周
文章介绍了多个算法问题的解法,主要包括滑动窗口解决连续正数序列求和(和为S)、字符串左旋转的四种方法(模拟、拼接、技巧、逆置)、翻转单词序列的双指针与逆置技巧、按之字形打印二叉树的两种方法(标记层数与栈队列结合)、二叉搜索树第k节点的递归与非递归解法(中序遍历)、两数之和的哈希解法、字母异位词分组的排序哈希法、最长连续序列的哈希查找法、移动零的双指针处理、盛水容器的双指针最大面积计算,以及三数之和的排序双指针解法。
2025-06-01 19:45:08
339
原创 MySQL——索引
因为mysqld使用page方案,在mysqld内部势必存在一个一个的page,为了方便管理这些page,先描述,在组织:mysqld会创建page对象,里面保存着page相关信息:数据,大小...还要保存前一个page与后一个page的地址,管理时使用“链表”的方式将page一个一个链接起来,只需找到头节点就能找到所有的page;磁盘是计算机中的一个机械设备,相比于计算机其他电子元件,磁盘效率是比较低的,在加上IO本身的特征,可以知道,如何提交效率,是认识 MySQL 索引的一个重要话题。
2025-05-27 21:27:17
842
原创 剑指offer第二周
本文总结了多种常见算法问题的解法,包括链表操作(删除重复节点、找公共节点)、二叉树遍历(层序、深度、路径)、栈应用(最小栈、压入弹出序列)、排序查找(最小K个数、子数组最大和)、位运算(出现一次的数字)等。关键解法如:快慢指针处理链表重复节点、双栈实现最小栈、DFS/BFS遍历二叉树、动态规划求最大子数组和、位运算找唯一数字等。每种解法都提供了代码实现和思路分析,涵盖数据结构与算法的核心考点。
2025-05-24 16:12:39
549
原创 MySQL——复合查询&&表的内外连
本文回顾了SQL查询中的多种技术,包括基本查询、复合查询、多表查询、自连接、子查询、合并查询以及表的内外连接。基本查询涉及条件筛选、排序和聚合函数的使用,如查询工资高于500或岗位为MANAGER的雇员,并按部门号和工资排序。多表查询通过连接不同表获取数据,如显示雇员名、工资及部门名。自连接用于在同一表内进行查询,如查找员工的上级领导。子查询嵌入在其他SQL语句中,用于复杂条件筛选,如显示与SMITH同部门的员工。合并查询使用UNION和UNION ALL合并多个SELECT结果。内外连接则用于处理表之间的
2025-05-23 19:41:03
728
原创 MySQL——基本查询&&内置函数
本文详细介绍了数据库操作中的CRUD(增查改删)基本操作,包括创建表、插入数据、查询数据、更新数据和删除数据的具体方法。在查询部分,重点讲解了如何使用SELECT语句进行全列查询、指定查询、去重查询以及结合WHERE子句进行条件筛选。此外,还介绍了ORDER BY排序、LIMIT分页、GROUP BY分组聚合统计等高级查询技巧。在更新和删除部分,提供了单行和多行数据操作的示例。最后,文章还涉及了内置函数(如日期函数、字符函数、数学函数)的使用,并通过实战OJ题目展示了如何应用这些操作解决实际问题。
2025-05-20 20:28:33
1308
原创 剑指offer第一周
本文介绍了多个算法问题的解法,涵盖了数组、链表、二叉树等数据结构。主要内容包括:二维数组中的查找通过优化遍历策略提高效率;旋转数组的最小数字使用二分查找;调整数组顺序使奇数位于偶数前面采用插入排序思想;数组中出现次数超过一半的数字通过候选法解决;替换空格通过模拟操作实现;从尾到头打印链表使用递归或头插法;重建二叉树通过递归划分区间;矩形覆盖问题与斐波那契数列相关;链表中倒数第k个结点使用双指针;二进制中1的个数通过位运算计算;链表反转使用三指针或递归;合并两个排序链表使用双指针或递归;树的子结构通过递归判断
2025-05-17 16:22:51
786
原创 MySQL——数据类型&&表的约束
本文详细介绍了MySQL中的数据类型及其约束,包括数值类型(如tinyint、bit、float、decimal)、字符类型(如char、varchar)、日期和时间类型(如date、datetime、timestamp)以及选择类型(如enum、set)。每种数据类型都有其特定的使用场景和限制,如tinyint用于小范围整数,bit用于二进制数据,float和decimal用于浮点数,char和varchar用于字符串存储。此外,文章还探讨了表的约束,如null、default、comment、zerof
2025-05-13 19:58:13
710
原创 笔试题——第七周
两层for循环一个一个比较枚举统计出队数(超时)先排升序,再以数组的每个数(假设为a[i])为基准值统计出[a[i] + l ,a[i] +r]区间的个数,此时采取两次二分分别求出左端点与右端点;与的思路一样:先排序,再用滑动窗口统计出 [0,r]和 [0,l-1]区间的队数后相减就是 [l,r]中的队数(注意统计合法的队数时是:right - left 而不是 right -left + 1)解法:找规律当n=1时,A->B的操作是1,A->C的操作是2;
2025-05-08 20:48:02
624
原创 MySQL——数据库基础&&操作
本文简要介绍了MySQL数据库的基本概念、架构、SQL指令分类、存储引擎以及数据库和表的基本操作。MySQL是一种基于客户端-服务器模式的网络服务,用户通过SQL语句间接操作数据库,而mysqld服务端直接处理这些请求。文章还讨论了数据库的创建、编码集与校验规则、备份与恢复、查看与修改等操作,并强调了数据库管理的重要性。此外,文章还涉及了表的创建、删除、查看和修改等操作,为初学者提供了MySQL数据库的基础知识概览。
2025-05-05 21:45:30
1404
原创 笔试题——第六周
遍历时哈希标记创建小根堆:先把字符数存存进去:每次取出两个最小的数进行构造,再把构造好的新节点丢到堆里面,重复以上操作...直到堆里面只有1个节点就停止...怎么收集字符长度?每次取出的两个最小的数进行累加后直到循环停止,我们便找到了最短字符长度竟然是三‘状态’的动态规划,长见识了~
2025-04-29 17:51:23
632
原创 test——性能测试
如果我们想在多个HTTP请求的接口中用到一个写死的值,但这个可能后续需要进行修改:我们就不可能去给它一个一个进行修改,而是需要使用变量来进行定义${变量名}
2025-04-26 16:26:44
826
原创 笔试题——第五周
定义一个指针i:如果 a[i] < a[i+1] :序列呈现非递增一直走,直到走到波峰后停止,进行统计;如果 a[i] > a[i+1] :序列呈现非递减一直走,直到走到波谷后停止,进行统计;但出现 a[i] == a[i+1]怎么办?如果是开头出现的:要跳过这段连续相等序列;其它地方出现就不用管贪心:每次减去前面数的两倍,使数尽可能得小;
2025-04-21 17:14:24
748
原创 笔试题——第四周
找最少主持人时,如果一个主持人不能同时主持多个活动,要增加主持人时要同时储存这个两个支持人的结束时间,方便后面活动来时看看哪个主持人能够主持;如果能够变成全部相同的值,那么所有值一定能够通过*2的方式变成数组里的最大值;先把起始节点加入队列,往外扩,把符合条件的坐标加入到队列中,直到找到目标问题。有m个位置,第一个位置可选n种情况,剩下的位置可选n-1种情况,相乘即可。能够主持就把堆顶干掉,活动的结束时间加入(主持人结束活动后重新主持活动)枚举B的起始位置与A的起始位置中最少字符不相同的情况(
2025-04-14 14:11:53
591
原创 Test——分类篇
白盒测试只要用于单元测试阶段;先进行静态测试,再进行动态测试;设计测试用例一遍使用路径覆盖,重点测试单元使用出路径覆盖的其它方法。
2025-04-11 10:37:01
784
原创 Test——BUG篇
对于测试人员来说,不仅要具备开发能力,测试能力,还要有一定的产品分析能力来保证产品的质量;软件测试的生命周期指;以下是具体内容从用户角度:需求是否合理;从开发角度:技术上是否可行,是否有优化空间;从测试角度:需求是否符合逻辑多久参考需求文档,技术文档编写测试用例;编写测试文档要明确标注使用到的测试方法,测试手段,测试工具等全方位的覆盖测试测试报告沙盒,小流量,全流量,全线上所以说:测试执行完成后不能就说软件100%的问题被解决了,有些问题可能很难被发现。
2025-04-02 11:30:37
776
原创 笔试题第二周
a选出两者最小值进行枚举,知道找到一个数使得两者%为0;gcd计算的是两者最大公约数:使用要找出连续序列,可以;接着使用定义两个指针i,j;从头到尾找出符合要求的区间后进行比较,找出最长区间的个数返回即可;但这要要注意:如果:{1,2,2,2,3,4}:这时我们就要想办法只取3个2中的1个后继续找区间:这里采用count变量来统计连续区间个数:如果遇到相同数字只需指针往后移动;反之就让count++再让指针往后移动略...
2025-03-23 19:12:55
1029
原创 数据结构——并查集
1. 数组的下标对应集合中元素的编号;2. 数组的值中如果为负数,负号代表根,数字代表该集合中元素个数;3. 数组的值中如果为非负数,代表该元素双亲在数组中的下标(编号)
2025-03-11 20:33:50
934
原创 数据结构——栈和队列
栈是一种特殊的线性表,只允许在;进行数据插入和删除操作的一端称为,另一端称为;栈中的数据元素遵守LIFO(Last In First Out)的特性。
2025-02-24 20:13:31
966
1
原创 数据结构——顺序表与链表
顺序表问题:a.头部插入或者删除效率低:O(N) = N,需要挪动数据;b.空间不够需要扩容,扩容有一定的消耗且有可能存在一定的浪费;c.只适合尾插尾删;优点:支持下标随机访问;链表(双向)问题:下标随机访问不方便:O(N) = N;优点:a.插入与删除效率高:O(N) = 1,只需要改变指针指向;b.按需申请释放,合理利用空间,不存在浪费。
2025-02-16 22:10:36
937
原创 数据结构——时间空间复杂度
数据结构与算法在后期找工作时非常重要(笔试与面试都有,都要求手撕),所以学习时没学完一个知识点要找对应的题去做,反复练习(敲代码)才会使你的认识提升一个档次,下来也要进行归类,画图总结,复习时才轻松点~数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合;简单来说数据结构:在内存中管理数据;而与数据库又有什么关系呢?数据库: 在磁盘中管理数据在C语言中写过的通讯录其实就是数据结构中的一种(数据结构称为顺序表)
2025-01-25 21:37:08
1309
原创 C语言——编译与链接
) //用更形象的符号来替换一种实现// 如果定义的 stuff过长,可以分成几行写,除了最后一行外,每行的后面都加一个反斜杠(续行符)。注意:#define定义标识符时千万不要加分号(;明明有加括号却报错了!就是因为#define替换把;给替换上了,造成语法错误#define 机制包括了一个规定:允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏(define macro)#define Add(a, b) a + b // 没有;
2025-01-22 22:17:00
1011
原创 C语言——动态内存管理
前面已经掌握了开辟内存的方式:但这种开辟内存的方式有两个特点:1. 空间开辟大小是的;2. 数组在声明的时候,必须,它所需要的内存在编译时分配。如果一个数组在(前面通讯录信息存满了还要存信息),我们就要进行来学习动态内存开辟内存来满足需求~
2025-01-13 21:32:01
1641
原创 C语言——结构体,位段,枚举和联合
int x;int y;//可以在这里初始化struct stuint date;}s1;//全局变量int main()//局部变量 按顺序初始化//指定成员初始化return 0;enum Day//星期Mon = 1,Tues,Wed,Thur,Fri,Sat,Sunenum Day是一个枚举类型;枚举括号内的内容都是常量;枚举默认从0开始(与数组一样);但你也可以自己修改(Mon = 1)//联合类型的声明union Unchar c;int i;
2025-01-08 20:50:08
1008
1
原创 C语言——分支与循环语句
目录一.分支语句1.if语句1.1语法:1.2悬空else问题2.switch语句2.1语法2.2default子句二.循环语句1.while循环1.1语法1.2break与continue2.for循环2.1语法2.2for与while循环2.3关于for循环的一道笔试题3.dowhile循环3.1语法三.猜数字游戏实现四.goto语句补充scanf与getchar最后作为c语言最常见的判断语句,几乎有关判断的场景都要用到if来实现用if表达式中,表达式为真(非0)执行,为假(0)就停止执行。
2025-01-07 22:33:57
1032
1
原创 专题十四——BFS
b进行dfs遍历(上下左右找合法坐标)只要它是1并且没被标记,就把它加入到队列中并进行标记;c再次对grid进行遍历,只要坐标的值是1并且没别标记就代表它走不出边界,进行统计即可。1.两层for循环找‘1’&&该位置没被标记,将该坐标进队列,执行一次bfs;安排高度时,任意相邻的格子高度差至多为1,也就是既可以设计成0,也可以设计成1;如果从1作为起点走到终点0,那等到终点时记录距离时就不知道是从哪一个1为起点的。所以我们从0为起点开始,走到不是0的位置就进行距离记录,同时把它。与01矩阵的思路一样~
2025-01-07 15:37:28
943
原创 C语言——字符函数和内存函数
C语言对应字符串的处理很繁琐(比如经常要知道它们的长度啦,拷贝啦,移动啦): 所以专门提供了一些列字符(串)函数来方便使用者处理使用~
2025-01-03 20:40:03
885
原创 C语言——数据在内存中的存储
但是在C语言中除了8 bit的char之外,还有16 bit的short型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题:因此就导致了大端存储模式和小端存储模式。同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。这时,浮点数就采用下面的规则表示,即指数E的计算值减去127(或1023),得到真实值,再将。
2024-12-24 22:12:34
958
原创 C语言——指针
学习指针相关的知识可能是你学习C语言碰到的第一道‘难关’,但它非常重要,重要到后面无时无刻都会出现它来引出新知识点或者通过它来理解新知识,所以必须要好好地掌握好指针!
2024-12-10 21:45:23
1066
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人