- 博客(42)
- 收藏
- 关注
原创 博客系统测试报告
模块设计用户模块:实现头像上传、用户登录、注册及个人信息维护功能,保障用户身份管理与信息安全。帖子模块帖子回复功能:实现针对帖子的评论与互动回复,强化社区交流属性。站内信功能:支持向指定用户发送消息,提升用户沟通效率。模拟服务器有效地将消息推送到客户端(或浏览器)技术栈后端:基于 Spring Boot + Spring MVC 构建服务端逻辑,以 MySQL 作为数据存储引擎,保障系统稳定性与数据可靠性。
2026-04-11 14:45:05
365
原创 网络聊天室测试报告
模块设计用户模块:实现用户登录、注册基本功能,保障用户身份管理与信息安全会话模块:支持会话添加、管理、列表展示及发送消息互动,满足用户的互动需求。好友列表功能:实现管理好友功能,便于查找好友进行聊天搜索功能:支持向指定用户添加好友,让用户"找得到、加得准、用得顺"发送消息:用websocket同步进行消息发送,实时更新最新状态模拟服务器有效地将消息推送到客户端(或浏览器)技术栈•。
2026-04-11 14:38:54
378
原创 二叉树和排序
2、若规定只有根结点的二叉树的深度为1,则深度为K的二叉树的最大结点数是2^k-1(k>=0)1、若规定根结点的层数为1,则一颗非空二叉树的第i层上最多有2^(i-1) (i>0)个结点。2、从未排序区取第 1 个元素,向前遍历已排序区,找到比它小的元素后,插入到该元素后面;2、分区:把小于基准的放左边,大于基准的放右边,基准归位;3、递归对左、右分区重复步骤 1-2,直到分区长度为 1。o 若2i+1<n,左孩子序号:2i+1,否则无左孩子。o 若2i+2<n,右孩子序号:2i+2,否则无右孩子。
2026-03-15 11:39:10
372
原创 Linux基础
2. 当第⼆个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有⼀个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。1.视mv命令中第⼆个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至⼀个新的目录中。3. 当第二个参数是已存在的⽬录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源。-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在。-R 或 --recursive递归处理,将指定目录下的文件及子目录⼀并处理。
2026-03-13 19:10:07
360
原创 网络知识和Servlet重点
3、主机接收到主机B发来的ACK+SYN请求时,首先判断ACK,表示主机B有应答能力,再去判断SYN,在序号的基础上+1,把结果填充在确认序号中,把ACK标志位置为1。Cookie:存储在客户端的小型文本数据,由服务器通过Set-Cookie响应头设置,每次请求自动携带,用于识别用户状态(如登录态),有过期时间、域名、路径等限制。标志位:SYN(建立连接)、ACK(确认)、FIN(关闭连接)、RST(重置连接)、PSH(推送数据)、URG(紧急指针)
2026-03-12 13:33:38
646
原创 MySQL
最左前缀原则是联合索引的核心使用规则:创建联合索引 (a,b,c) 后,查询条件必须从最左侧的 a 开始连续匹配,才能命中对应部分的索引;一致性(Consistency):事务执行前后,数据库的完整性约束(如余额不能为负)保持不变,数据从一个一致状态变为另一个一致状态。隔离性(Isolation):事务执行前后,数据库的完整性约束(如余额不能为负)保持不变,数据从一个一致状态变为另一个一致状态。加速查询效率,将原本的全表扫描(O (n))优化为索引查找(通常 O (log n)),大幅提升查询性能。
2026-03-11 16:41:34
400
原创 Spring Framework、SpringBoot、Mybatis、Freemarker
顾客(客户端)→ 服务员(DispatcherServlet,前端控制器)→ 后厨菜单(HandlerMapping,找对应厨师)→ 厨师(Controller,处理请求)→ 出餐(ModelAndView)→ 传菜员(ViewResolver,解析菜品)→ 顾客(返回响应)。传递,数据库会自动转义参数中的特殊字符(如单引号);核心框架:Spring 整合 AspectJ 实现 AOP,核心概念:切面(Aspect)、通知(Advice)、切点(Pointcut)、连接点(JoinPoint)。
2026-03-11 13:01:20
418
原创 JVM复习
会产生空间问题:会产生大量不连续的内存碎片,如果有一个大对象将会没有足够的空间——>再次触发垃圾回收GC——>会停止所有的用户线程(stop the world = STW)——>无法控制。JVM中内存使用最大的一个内存区域,默认程序最大的运行内存是本机的1/8。回收的时对象占用的内存空间,主要说的堆内存,栈内存是随着线程的销毁而销毁。因为线程与线程之间的工作内存是隔离的,所以Java虚拟机栈是线程私有的。1、把内存区域1中的存活的对象,复制到内存区域2中。具体的垃圾回收过程,去看面试题里面的总结。
2026-03-10 16:23:19
844
原创 JVM相关面试题
现在主流使用G1 收集器,它是 Region 化的整堆收集器,基于标记 - 整理 + 复制算法,可预测停顿时间,解决了 CMS 的内存碎片问题。2、类对象(class)存在方法区,以便以后new对象的时候可以从这里找到类的模板,进行对象的创建。3、扩展加载器在自己的路径下找,看有没有这个类,有则加载,没有则向下转发给应用程序加载器。2、启动加载器在自己的路径下找,看有没有这个类,有则加载,没有则向下转发给扩展加载器。7、但是当一个很大的对象被创建时,Eden区放不下,会直接进入老年区。
2026-03-10 16:23:11
500
原创 多线程面试题复习
1、HashMap是线程不安全的2、HashTable是线程安全的,对所有的操作都加了锁,效率不高,不推荐使用HashTable是使用synchronized 对所有操作加的锁3、ConcruuentHashMap的锁粒度比较小,并不是对整个HashMap加锁,而是对每一个数组的下标进行加锁,也就意味着可以支持更大的并发量,从而提升性能。
2026-03-08 21:31:58
559
2
原创 JAVA开发面试题
1、叶子节点之间有一个相互连接的引用(可以双向或单向,InnoDB中是双向),可以通过一个叶子节点找到它相邻的兄弟节点MySQL在组织叶子节点的时候用的是双向链表2、非叶子节点的值都包含在叶子节点中MySQL非叶子节点只保存了对子节点的引用,没有保存真实的数据,所有的真实数据都在叶子节点中保存3、对于B+树而言,在相同树高的情况下,查找任意元素的时间复杂度都一样,性能均衡。
2025-09-15 16:37:57
267
原创 Java中的String类
Object类的equals方法逻辑是==,但String类对equals方法进行了重写,所以比较的就是对象的内容。2、如果两个字符串的前k个字符都一样(k是长度小的那个字符串的长度),就返回两个字符串长度的差值。也是按照字典序进行比较,与上面的方法不同的是返回类型,这个方法的返回的是int类型。1、先按照字典次序大小比较,如果出现不等的字符,直接返回字符的大小的差值。======上面的是内置类型,下面的是引用类型,所以结果完全不一样。对于引用类型,== 比较的是地址,而不是对象里面的内容。
2025-04-17 15:21:53
390
原创 STL—stack(栈)和queue(队列)
st.top() 返回栈顶元素,但不会删除栈顶元素。1、q.front() 返回队头元素,但不会删除。1、st.size() 返回栈里实际元素的个数。2、q.back() 返回队尾元素,但不会删除。1、q.size() 返回队列中实际元素个数。2、st.empty() 判断栈是否为空。2、q.empty() 判断队列是否为空。1、q.push() 入队。2、q.pop() 出队。T可以是任意数据类型。1、push 入栈;T可以是任意数据类型。
2025-04-09 10:19:01
345
原创 单链表和双向链表(静态实现)
1、需要两个足够大的数组,一个存数据,一个存下一个数据的地址。2、变量h,充当头指针,表示头节点的位置。3、变量id,为新节点分配位置。int h;int id;只是多了一个前指针域int h;int id;
2025-04-09 10:02:58
545
原创 sort函数
函数原型如下:在默认情况下sort函数,按升序对给定范围[first,last)中元素进行排序。sort函数需要包含头文件< algorithm >使用自定义排序方式comp);sort 的第三个参数是⼀个可选的⾃定义比较函数(或函数对象),⽤于指定排序的规则。如果不提供这个参数,std::sort 默认会使用小于运算符( < )来比较元素,并按照升序排序。这个比较函数,接受两个参数,并返回⼀个布尔值。如果第⼀个参数应该排在第⼆个参数之前,则返回true;否则返回false。
2025-03-11 20:17:14
925
原创 x进制转换成10进制
说明和提示里有1<=x<=36。将x进制转化成10进制,就是按位乘以权重。也可以使用库函数,直接转化成10进制。3、倒叙遍历,转化成整形再按位乘以权重。2、求出字符串S的长度。
2025-03-09 10:45:21
281
原创 将十进制的数转化成任意进制的数
注意:转换成16进制的时候会有字母,所以需要用到一个数组,string s=“0123456789ABCDEF”(1)x_to_m(13/2,2) 先将13/2得到的6转化成2进制。x_to_m(13,2) 可以转化成(1)(2)两步。x_to_m(x,m)将10进制的x转化成m进制。根据我们已知的知识,可以进行模几除几来转换。特殊情况:被转换的数<2就不需要进行转换了。10进制的13–>2进制的1 1 0 1。(2)再加上13%2。
2025-03-09 09:44:51
229
原创 传引用调用
注意:数组传参的时候,形参和实参本就是同一个数组,所以数组传参不需要使用引用参数。需要的头文件为 < utility >引用传参的效率要高于传值调用的方式。可以交换两个变量或者数组的值。
2025-03-05 19:19:53
208
原创 函数形参讨论
全局变量的作用域很大,在整个程序中都可以使用,那么只要把变量、数组等定义成全局变量,在函数中使用,是可以不用传参的,在竞赛中为了放便经常使用,但是在软件工程中很少这么使用。3、形参如果是二维数组,行可以省略,但是列不能省略。5、形参操作的数组和实参的数组是同一个数组。2、形参如果是一维数组,数组大小可以不写。4、数组传参,形参是不会创建新的数组的。1、数组传参的时候,实参只能写。形参改变不会影响实参。
2025-03-04 23:49:13
266
原创 scanf/printf 和 cin/cout的对比
所以,在一些题目中,如果输入的数据良比较小(十得六次方以内),则用cin/cout或scanf/printf都可以通过,但如果数据量较大(十的九次方左右),更推荐用scanf/printf,用cin/cout可能导致代码超时。************** cout默认不会输出六位小数,自动忽略小数点后多余的0,printf函数打************** 印浮点数的时候,小数点默认打印6位。cin和scanf:scanf在进行输入的操作的时候,要注意格式,而cin就不用。在main函数中加入以下代码。
2025-03-04 21:32:39
422
原创 字符串的翻转
原字符串为s1,利用reverse将字符串逆序为s2,再去判断s1与s2是否相等即可.注意:返回值是void,不能直接进行输出。reverse()可以完成字符串的翻转。需要头文件 < algorithm >
2025-03-03 17:27:01
182
原创 统计字符个数
这道题难点是包括空格和换行符----这两个都是空白字符,用到isspace。也就是遇到空格会停止,所以用到cin,每个单词读取后进行相加。方法一、一次性读取整行字符,然后统计。1、cin :遇到空格或换行符结束。2、getline:遇到换行符结束。思路:先进行读取,读取有两种方式。这就需要用到的getline。需要对字符串进行遍历。方法二、按照单词读取。
2025-03-03 11:03:22
462
原创 备战蓝桥杯国赛(7)
这里的 e 是一个单独的变量,不是数组元素,所以对 e 的修改不会影响数组。auto 的主要用途是让编译器自动推导出变量的类型。ptr – 指针:指向了要设置的内存块的起始位置。destination – 目标空间的起始地址。memset 是用来设置内存的,将内存中的值。source – 源数据空间的起始地址。语句 //多条语句需要加大括号。num – 拷贝的数据的字节个数。设置成想要的内容,需要头文件。value – 要设置的值。num – 设置的字节个数。
2024-12-18 16:21:11
471
1
原创 备战蓝桥杯国赛--第三天(2)
由题目中“从a时b分一直游到当天的c时d分”可知,这题难度明显减小,不需要再考虑c时d分是第二天的;第二种b>d,这种情况就不能直接减了,还需要从前面的小时中借一个小时出来。第一种b<d,此时简单,c-a即可得到小时数,d-b即可得到分钟数。算一下两个时间与0时0分的时间差,将其都换算成分钟,再进行做差。负数求模时,模的正负取决于第一个数的正负。题目说的很明白,便不再解读了;
2024-12-08 20:57:46
485
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅