自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从零实现 C++11 高并发日志系统:52 条 GTest 单元测试 + Valgrind 内存修复 + 600万+ QPS 多线程压测全记录

本文介绍了一个基于C++11构建的高性能日志系统,通过分层架构设计解决传统日志库的IO阻塞、锁竞争和内存泄漏问题。系统采用同步/异步双模设计,核心创新点包括无锁双缓冲机制和后台Looper线程异步刷盘。通过52项GTest单元测试、Valgrind内存检测、多线程压测等验证,系统在4线程下达到612万QPS峰值,异步模式下业务线程阻塞时间降低80%,内存使用稳定无泄漏。测试覆盖功能正确性、并发性能、内存安全等维度,形成完整的质量保障体系,为生产环境提供了可靠的日志解决方案。

2026-07-27 15:15:24 387

原创 个人博客系统系统---测试报告【笔耕云】

基于博客系统的测试报告

2026-07-26 15:32:10 261

原创 Linux常见指令汇总

【代码】Linux常见指令汇总。

2026-03-04 17:47:24 65

原创 C++智能指针

使用shared_ptr管理数组或非内存资源时,未指定自定义删除器,导致资源无法正确释放(如数组内存泄漏)。智能指针的核心是RAII机制,自动管理内存,解决原始指针的内存泄漏、野指针、二次释放三大痛点。优先使用unique_ptr(轻量、高效,独占场景);需要共享资源时使用shared_ptr;需要打破shared_ptr循环引用或观察资源时使用weak_ptr。

2026-02-27 16:06:54 961

原创 多态的底层

C++ 多态的底层核心是实现的。

2026-02-08 13:09:47 1010

原创 C++ 高性能定长内存池的实现

ObjectPool.h 是 “小卖部”:自己囤内存,自己管理,申请释放特别快。Test.cpp 是 “测试员”:对比 “小卖部” 和 “大超市(系统 new)” 谁更快。核心原理:一次性申请一大块内存,反复切分和复用,减少系统调用,所以快。

2026-02-04 11:08:27 839

原创 141. 环形链表

判断链表是否有环

2026-01-31 11:46:02 469

原创 基于多态的职员管理系统

体现:「父类指针指向子类对象」+「虚函数重写」,统一存储在中,调用showInfo()自动执行子类实现。价值:简化管理逻辑(无需区分职工类型),易扩展(新增职工类型只需添加派生类,无需修改现有功能函数),符合「开闭原则」(对扩展开放,对修改关闭)。这份代码的核心是多态,通过「基类虚函数 + 派生类重写 + 父类指针存储」实现了不同职工类型的统一管理。程序结构清晰,分为「类结构层 + 功能函数层 + 主函数交互层」

2026-01-28 14:49:34 600

原创 C++中的默认函数

如果你啥也不往房子里放(定义一个空类,没有写任何成员函数),编译器会偷偷给你 “装修” 4 个(C++11 前)/6 个(C++11 及以后)基础 “家具”,这些 “家具” 就是默认成员函数。这些函数编译器会自动生成,你不用手写,但你如果自己写了对应的函数,编译器就不会再帮你生成(相当于你自己买了家具,就不用编译器送的了)。C++ 默认函数是编译器给空类自动生成的 “基础工具”,不用手写就能用,自己写了对应函数编译器就不再生成。

2026-01-24 15:44:18 545

原创 堆排序算法及大小堆区别

最大堆,用找更大的数当堆顶,最终排成「从小到大」;最小堆要把改成,找更小的数当堆顶,最终排成「从大到小」;核心区别就在于heapify里的比较符号 ——是最大堆,是最小堆。最大堆本身不是 “数组从大到小”,而是堆的结构特征;咱们是用最大堆的结构,最终实现数组从小到大排序。堆顶是最大的(结构特征),用它排序 → 数组「从小到大」;堆顶是最小的(结构特征),用它排序 → 数组「从大到小」;核心逻辑:把堆顶的 “极值”(最大 / 最小)放到数组末尾固定,重复操作就得到相反顺序的排序结果。

2026-01-09 18:44:43 1042

原创 阻止冒泡和阻止元素默认行为的区别

核心区分管「事件传播范围」,管「元素原生功能」,两者互不干扰;场景选择:需隔离父子事件用,需禁用元素原生行为用;避坑点仅在 DOM0 级事件中生效,现代开发建议显式调用两个 API,逻辑更清晰。

2026-01-07 22:12:32 471

原创 二分查找算法

二分查找是一种针对有序数组的高效查找算法,时间复杂度为O(logn)。其核心思想是通过不断将查找范围对半分割来快速定位目标值。本文详细介绍了二分查找的实现方法:1.基础迭代版(最常用)2.递归版3.进阶版(查找第一个/最后一个匹配元素)。特别强调了JavaScript实现时的注意事项:必须使用Math.floor()处理中间索引取整,确保类型一致,以及递归版可能存在的栈溢出风险。二分查找相比顺序查找(O(n))在大数据量时优势明显,是处理有序数据查找问题的首选算法。

2025-12-26 22:30:48 552

原创 括号匹配算法(栈)

括号匹配算法的核心是理解栈的“后进先出”特性与括号匹配“最近原则”的完美契合。掌握栈方法的实现逻辑,就能应对绝大多数场景的需求;同时牢记两个边界条件,可避免代码出现漏洞。从算法题到真实开发,括号匹配的应用无处不在。学好这一算法,不仅能帮你轻松应对考试和面试,更能让你理解编译器、编辑器等日常工具背后的基础原理,提升技术认知。建议大家动手实现栈方法的代码,再结合不同测试用例(如混合括号、边界情况)进行调试,加深理解。如果有疑问,欢迎在评论区交流讨论!

2025-12-22 21:20:32 1189

原创 JavaScript循环语句全解析

本文系统介绍了JavaScript中的循环语句,包括for、while、do...while以及for...in和for...of五种循环类型。for循环适合已知次数的计数循环,while和do...while适用于条件循环,其中do...while保证至少执行一次。for...in用于遍历对象属性,for...of则是遍历可迭代对象值的首选方式。文章还讲解了break和continue语句的用法,并总结了各循环的适用场景:for循环适合固定次数循环,while用于未知次数条件循环,do...while适用

2025-12-17 19:33:09 787

原创 JavaScript基础概念详解

本文介绍了JavaScript的核心基础概念,包括变量与常量、数据类型及判断方法。变量声明有var和let两种方式,let具有块级作用域优势;常量使用const声明,不可修改。数据类型分为基本类型(Number、String等)和引用类型(Object、Array等)。类型判断可通过typeof和instanceof实现,需注意typeof null返回"object"的遗留问题。掌握这些基础概念是学习JavaScript的重要前提,建议结合示例代码实践加深理解。

2025-12-15 13:59:27 461

原创 单行 / 多行文本显示省略号(CSS 实现)

实现方式兼容性优点缺点适用场景单行 CSS全兼容简单、无坑仅单行按钮、导航栏、短文本多行原生 CSS现代浏览器简洁、精准不兼容 IE移动端、现代浏览器项目多行 IE 兼容 CSSIE8+纯 CSS、无需 JS省略号可能覆盖文本需兼容低版本 IE 的 PC 端JS 截断全兼容精准、灵活依赖 JS、首次渲染闪烁极致兼容需求、动态文本场景日常开发中,移动端优先使用「多行原生 CSS 方案」,PC 端若无需兼容 IE 也推荐该方案;

2025-12-11 16:33:02 2153

原创 CSS盒模型

摘要:CSS盒模型是网页布局的核心基础,将HTML元素抽象为包含四层结构的矩形盒子:外边距(margin)控制元素间距、边框(border)定义可视边界、内边距(padding)设置内部缓冲、内容区(content)承载核心内容。盒模型分为标准模式(content-box)和IE模式(border-box)两种计算方式,后者更便于布局控制。常见问题包括外边距合并、浏览器默认样式差异和盒子撑大,可通过BFC、样式重置和box-sizing解决。现代CSS扩展了弹性盒、网格等增强型盒子模型,但基础盒模型仍是掌握

2025-12-10 18:49:35 950

原创 为什么代码上传不到gitee问题1

记得克隆仓库的时候克隆在写代码里的文件夹里。否则会因为路径不对导致上传不上去。

2025-12-05 10:01:40 164

原创 HTML常用核心标签详解 + 可直接运行的实战案例

本文详细介绍了HTML常用核心标签及实战案例,涵盖文本类、列表类、链接与图片、表单和语义化布局五大类标签。每个标签都配有功能说明和关键属性,并提供可直接运行的代码示例,包括文本排版、三种列表、注册表单和完整页面布局等案例。重点强调了语义化标签的使用优势(SEO友好、无障碍支持)和开发规范(属性完整性、路径正确性)。通过修改示例内容并观察效果,读者可以快速掌握HTML标签的实际应用技巧。

2025-11-25 21:35:43 776

原创 HTML 核心知识点全总结:从基础到实战避坑

本文系统梳理了HTML的核心知识,从基础语法到HTML5高级特性。首先介绍了HTML作为前端基石的重要性及其标准文档结构,详细讲解了语义化标签、常用功能标签的使用场景与语法规范。重点分析了HTML5的表单增强功能和本地存储特性,并针对常见问题提供解决方案,如路径错误、移动端适配和兼容性问题。最后强调HTML学习应注重语义化、规范遵循和实战结合,推荐通过搭建静态页面巩固知识。文章为初学者和开发者提供了全面的HTML学习指南和实用技巧。

2025-11-23 23:28:16 1005

原创 数据结构核心:栈与队列的深度解析与实战实现

本文深入讲解栈和队列两种基础数据结构,从核心概念、实现方式到典型应用场景。重点分析:1)栈的LIFO特性与队列的FIFO特性区别;2)顺序存储与链式存储的实现差异;3)栈在括号匹配、表达式求值中的应用,队列在广度优先搜索中的应用;4)面试高频考点——栈与队列的相互转换实现。通过C语言代码示例,详细展示了数据结构的具体实现和典型应用,帮助读者深入理解这两种基础数据结构的原理与价值。

2025-11-15 23:02:37 847

原创 顺序表与链表

本文围绕线性表的两种核心存储实现 —— 顺序表与链表展开,以 “概念→实现→操作效率→适用场景” 为逻辑主线,结合可直接运行的 C 语言代码,为数据结构入门者提供系统性指导。

2025-11-08 23:06:49 691

原创 C++ 命名空间 (namespace) 详解:从基础到实战

namespace新手入门

2025-11-05 10:55:43 664

原创 单链表创建节点

在这里,`*list`表示`list`指针指向的类型的大小。因为`list`是一个指向`List`类型的指针,`*list`就是`List`类型的变量。因此,`sizeof(*list)`计算的是`List`类型变量的大小。然后,`malloc(sizeof(*list))`调用`malloc`函数,请求分配一块足够存放一个`List`类型变量的内存空间。最后,将分配的内存空间的地址赋值给`List`类型的指针`list`。:这是一个指针声明,表示`list`是一个指向`List`类型的指针。

2024-08-05 02:24:51 224

原创 C语言——指针(1)

那我们通过取地址操作符(&)拿到的地址是⼀个数值,⽐如:0x006FFD70,这个数值有时候也是需要 存储起来,⽅便后期再使⽤的,那我们把这样的地址值存放在哪⾥呢?是1或者0,那我们把32根地址线产⽣的2进制序列当做⼀个地址,那么⼀个地址就是32个bit位,需要4。假设有⼀栋宿舍楼,把你放在楼⾥,楼上有100个房间,但是房间没有编号,你的⼀个朋友来找你玩,注意指针变量的⼤⼩和类型是⽆关的,只要指针类型的变量,在相同的平台下,⼤⼩都是相同的。的⼋⼈间,每个⼈是⼀个⽐特位。

2024-08-04 18:06:20 696 1

原创 关于求字符串长度时‘\0‘是否需要数进去

但是你如果你写char a[]={'C','h','i','n','a'};这个长度也是5,但系统不会在最后放'\0',所以它在系统中只占5个位置。一般意义上字符串数组的长度是不包括'\0'的。其实在系统中a占了6个位置,最后一个放了一个'\0'。strlen的结果要在运行的时候才能计算出来,是用来计算字符串的长度,不是类型占内存的大小。而大部分编译程序在编译的时候就把sizeof计算过了,是类型或是变量的长度。呢么接下来的一个问题呢:那定义数组a的时候,中括号里面是填写5,还是6啊。%zu不能输出负数。

2024-01-19 23:18:31 1446 1

空空如也

空空如也

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

TA关注的人

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