logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

冒泡排序:最简单的排序算法,看完这篇就懂了

冒泡排序是一种基础交换排序算法,通过反复比较相邻元素并交换顺序错误的元素,将较大元素逐步"冒泡"至数组末端。其过程示例展示了从[5,2,9,3,6]到[2,3,5,6,9]的排序步骤,包含优化策略(无交换时提前终止)。该算法实现简单(附C语言代码)、空间复杂度低(O(1))且稳定,但时间复杂度为O(n²)效率较低。适用场景包括小规模数据、基本有序数据或教学演示,实际应用中更多作

#算法#排序算法#c语言 +1
Linux 下深挖 printf 缓冲区:从现象到原理,彻底搞懂输出延迟问题

摘要: 本文深入剖析Linux环境下C语言printf函数的缓冲区机制及其控制方法。在Linux中,printf默认使用用户态缓冲区,其刷新规则因场景而异:终端输出为行缓冲(遇\n刷新),重定向时为全缓冲,而stderr始终无缓冲。针对缓冲区导致的输出延迟、日志丢失等问题,文章提出多种解决方案:强制刷新(fflush)、关闭缓冲区(setbuf)、直接系统调用(write)及优先使用stderr。

#linux#服务器
吃透 Fork:从 Git 协作到 Linux 进程,解锁开发者必备技能

本文深入解析编程中"fork"的两大核心应用:Git协作中的Fork功能和Linux系统的fork()函数。Git Fork用于将他人仓库复制到自己账号下独立开发,包含Fork→Clone→开发→同步→PR五步完整流程;Linux fork()则用于创建进程副本,实现并发处理。两者本质都是创建独立可追溯的副本,但应用场景不同。文章还对比了Fork、Clone和Branch的区别

#git#linux#运维
C++ vector:从本质到实战,新手也能轻松上手

本文深入剖析C++ STL中的vector容器,揭示其作为"封装后的动态数组"的本质特性。从底层结构看,vector通过三个指针(start/finish/end_of_storage)管理连续内存空间,实现动态扩容机制(通常1.5-2倍增长)。文章重点分析vector的核心特性:值语义(存储副本而非引用)和自动内存管理(无需手动new/delete),并给出实用技巧:提前re

#c++#开发语言
彻底搞懂 C++ vector 的 push_back 与 emplace_back

C++中push_back与emplace_back的深度解析 核心区别: push_back:先构造对象再拷贝/移动到容器("先造后搬") emplace_back:直接在容器内构造对象("就地构造") 性能对比: 对于自定义类,emplace_back避免了临时对象的构造和拷贝,性能更优 内置简单类型两者性能差异不大 使用建议: 优先使用emplace_

#java#开发语言
C++ 智能指针

摘要:C++智能指针是解决原生指针内存管理痛点的关键工具。文章分析了手动管理内存的三大问题:内存泄漏、重复释放和野指针,并介绍了三种智能指针:unique_ptr(独占所有权,性能最优)、shared_ptr(共享所有权,引用计数)和weak_ptr(解决循环引用)。重点讲解了RAII机制原理,对比了各类智能指针特性,提供了实战避坑技巧,推荐优先使用make_unique/make_shared。

#c++#算法#开发语言
C++ 智能指针

摘要:C++智能指针是解决原生指针内存管理痛点的关键工具。文章分析了手动管理内存的三大问题:内存泄漏、重复释放和野指针,并介绍了三种智能指针:unique_ptr(独占所有权,性能最优)、shared_ptr(共享所有权,引用计数)和weak_ptr(解决循环引用)。重点讲解了RAII机制原理,对比了各类智能指针特性,提供了实战避坑技巧,推荐优先使用make_unique/make_shared。

#c++#算法#开发语言
吃透僵死进程:从成因到根治,一篇搞定所有坑

Linux僵死进程(Zombie Process)是已终止但未被父进程回收的特殊进程,状态显示为Z或Z+。其核心危害在于耗尽有限的PID资源而非占用CPU/内存。产生原因主要是父进程未正确处理SIGCHLD信号或调用wait()回收子进程。检测方法包括ps命令筛选Z状态进程和top命令监控。处理方案需终止其父进程而非直接kill僵死进程本身。预防措施推荐:1)父进程循环调用waitpid();2)

#rpc#网络协议#网络
到底了