- 博客(63)
- 收藏
- 关注
原创 【MySQL】库的操作(建库、字符集与校验规则、备份恢复)
本文详解MySQL库的操作,重点解析建库时字符集与校验规则的影响。默认继承character_set_server和collation_server,常见误区是误用utf8(实为utf8mb3,不支持emoji)。通过对比utf8mb4_general_ci(忽略大小写)与utf8mb4_bin(按字节比较),揭示查询结果差异根源。强调新项目应使用utf8mb4及utf8mb4_0900_ai_ci,并说明SHOW DATABASES与SHOW CREATE DATABASE的实用信息,如系统库、加密属性等
2026-11-04 17:39:39
284
1
原创 【MySQL】数据库基础(从连接服务到建表查询)
本文为MySQL入门学习整理,通过创建学生表,系统演示了从连接服务、建库建表到增删查改的完整流程。厘清了“服务—数据库—表”的层级关系,强调SQL操作顺序与常见误区(如漏写WHERE、误将命令当SQL)。结合实际案例,解析DDL、DML、DQL语句用途,并介绍存储引擎InnoDB的作用。适合初学者循序渐进掌握数据库核心概念与基本操作。
2026-11-03 21:26:05
364
8
原创 【Linux】linux线程同步(条件变量的详解与实现)
本文系统讲解了POSIX条件变量的使用,涵盖初始化、等待、唤醒、超时及销毁等核心函数。强调条件变量需与互斥锁配合,通过while循环重新检查共享状态,避免虚假唤醒和竞态。重点指出:线程等待的是条件而非通知,通知不会被保留,修改共享状态必须持锁。结合生产者-消费者模型示例,阐明正确使用方式,并总结常见错误,如误用if、依赖唤醒顺序等。核心原则为“等待条件,而非通知”,确保多线程同步安全可靠。
2026-10-23 17:38:48
203
10
原创 【Linux】linux进程控制(进程池的详解与实现)
本文介绍了进程池的实现原理与核心代码。进程池通过预先创建多个子进程(Slaver)并建立通信管道,避免了频繁创建/销毁进程的开销。父进程(Master)采用轮询算法分配任务,通过管道将任务编号发送给子进程执行。关键实现包括:1)使用管道进行进程间通信;2)Channel类封装子进程管理;3)任务派发与执行流程。代码展示了完整的进程池框架,包括初始化、任务分配、子进程工作循环等核心功能,通过轮询调度实现了负载均衡。这种设计显著提高了系统性能,适用于需要频繁处理短期任务的场景。
2026-05-04 20:21:43
374
5
原创 【Linux】linux基础IO(c语言程序接口,常用文件调用详解)
本文系统梳理了Linux文件I/O的核心知识,主要包括:1)C语言文件接口(fopen/fclose等)的工作原理及缓冲区机制;2)系统调用(open/close/read/write)的实现原理和标志位传递方式;3)文件访问本质是进程通过文件描述符操作内核文件数据结构。文章通过代码示例详细演示了用户缓冲区与内核缓冲区的交互过程,揭示了I/O操作中数据流动的完整链路(用户缓冲区↔内核缓冲区↔磁盘)。最后强调文件不仅是磁盘数据,更是内核维护的数据结构+元信息,所有I/O操作本质上都是通过文件描述符间接操作内核
2026-04-15 09:05:00
425
2
原创 【LInux】linux控制(进程替换,自主shell的实现详解)
本文深入解析了Linux进程替换与Shell实现的底层原理。主要内容包括:1. 进程替换机制:通过exec系列函数实现进程内容替换而保持PID不变,详细讲解了execl、execvp等6个函数的区别与使用场景;2. Shell实现方案:逐步构建交互式命令行界面,处理用户输入解析(使用strtok分割命令参数),实现常规命令执行(fork+execvp)和内建命令(如cd);3. 关键技术点:环境变量处理、进程控制、字符串操作等核心编程技巧。文章通过代码示例演示了如何模拟Shell的基本功能,包括命令提示符、
2026-04-06 19:33:30
479
4
原创 【Linux】linux进程控制(fork,exit,wait详解)
本文介绍了Linux进程管理的核心概念,包括进程创建、终止和等待。在进程创建部分,详细讲解了fork函数的工作原理、返回值规则及循环创建子进程的注意事项。进程终止部分分析了正常退出(return/exit/_exit)和异常退出的区别,以及信号终止进程的机制。进程等待部分重点阐述了wait和waitpid函数的使用方法,包括阻塞/非阻塞等待方式,以及如何防止僵尸进程的产生。文章通过代码示例演示了各个系统调用的具体应用场景和注意事项。
2026-04-02 17:15:02
449
2
原创 【Linux】linux进程概念(环境变量详解)
是 C 语言接收命令行参数的标准形式argc= 参数数量,argv= 参数内容数组Linux 下可加第三个参数envp[]获取环境变量。
2026-03-25 20:26:14
363
2
原创 【Linux】Linux进程概念(进程优先级,进程切换详解)
本文系统介绍了Linux进程优先级管理的核心概念与实践方法。主要内容包括:1) 进程优先级的基本概念,PRI和NI的定义与关系;2) 如何通过ps命令查看进程信息;3) NI值的三种设置方式及其影响:负数提升优先级、0为默认值、正数降低优先级;4) 进程间的独立、并发、并行和竞争关系;5) 进程切换的三种触发场景及切换过程。文章强调合理设置NI值可以优化系统性能,但不当设置可能影响系统稳定性。
2026-03-19 20:13:05
640
15
原创 【Linux】linux进程概念(冯洛伊曼体系、操作系统、进程详解)
是 Linux 内核中 PCB 的具体实现,是进程的 “完整档案”;核心作用是存储进程的 ID、状态、优先级、内存、资源等所有管理信息;Linux 内核通过链表管理所有进程,进程切换 / 调度都依赖它。
2026-03-15 21:34:35
1572
20
原创 【Linux】基础开发工具(软件包、vim)
Linux系统下下载软件的常见方式:1、源代码安装。2、rpm包安装。3、包管理器安装。但在这三方法中前两种都比较麻烦,而第三种就相对简单,但包管理器安装我们该怎么理解呢?其实就可以理解为应用商店和APP之间的关系。linux系统就好像我们的手机,软件包管理器就是我们手机上的应用商店。是Linux下⾮常常⽤的⼀种包管理器.主要应⽤在Fedora, RedHat,Centos等发⾏版上.Ubuntu:主要使⽤作为其包管理器。apt同样提供了⾃动解决依 赖关系、下载和安装软件包的功能。
2026-02-25 21:24:36
1213
3
原创 【C++】智能指针:内存管理的利器
/ 自定义数组删除器std::cout << "自定义删除器:释放数组\n";// 方式 1:显式指定删除器类型// 方式 2:用 lambda(需要推导类型,C++14 及以上)std::cout << "lambda 删除器:释放数组\n";return 0;本次分享就到这里结束了,至此,c++的学习也就告一段落,后续会继续更新linux学习内容。
2025-12-04 10:00:47
1070
6
原创 【C++】异常
本文介绍了C++异常处理机制,包括基本语法、匹配规则、栈展开和异常规范。异常处理通过throw、try和catch关键字实现,遵循类型匹配和顺序敏感原则。栈展开是异常处理的核心环节,沿着调用栈回溯直到找到匹配的catch块。C++11引入noexcept关键字声明函数不抛出异常,并可用作运算符检测表达式是否会抛出异常。文章还演示了异常处理的基本用法和注意事项,帮助开发者更好地处理运行时错误。
2025-11-28 23:57:16
429
1
原创 【C++】基于HashTable的底层实现unordered_map和unordered _set 的封装
本文分析了unordered_map和unordered_set的源码实现,重点探讨了哈希表框架的构建要点。文章详细介绍了迭代器实现中的++操作逻辑,以及insert返回类型从bool改为pair<Iterator,bool>的变更原因。通过封装哈希表,分别实现了unordered_set(单key结构)和unordered_map(key/value结构),其中unordered_map额外实现了"[]"操作符用于提取value。测试代码验证了封装实现的正确性,包括支持自定
2025-10-31 21:46:01
1010
11
原创 【C++】多态
二.多态本文是小编巩固自身而作,如有错误,欢迎指出!之前我们简单介绍了c++面向对象的三大属性,今天我们就来介绍其中之一——多态。
2025-09-06 23:25:05
673
4
原创 【C++】继承
继承是面向对象编程(OOP)中的核心概念之一,指一个类(子类)可以基于另一个类(父类)的属性和方法进行扩展。子类会自动获得父类的成员(字段和方法),同时可以添加新的成员或重写父类的行为。继承的主要目的是实现代码复用和层次化建模。简单来说就是父类的成员你能用且你还可以添加新的成员。
2025-08-15 22:19:11
951
3
原创 【C++】模版进阶
非参数类型模板(通常称为非类型模板参数)是 C++ 模板机制的一个重要特性,它允许在模板定义中使用常量表达式作为模板参数。也就是说模版参数也,可以不是类型而是值。模板特化是C++模板编程中的一个重要特性,它允许针对特定的模板参数类型提供专门的实现版本。当我们使用模板时,模板会根据传入的参数生成相应的代码,但有时候对于某些特定的参数类型,我们希望有不同的处理逻辑,这时就可以使用模板特化。
2025-08-09 21:57:11
513
4
原创 【C++】Stack and Queue and Functor
在 C++ 中,priority_queue(优先队列) 是一种特殊的容器适配器,它基于堆(Heap)数据结构实现,提供常数时间访问最大/最小元素的能力(默认最大堆)。我们看下以下用例int main()pq.push(3);pq.push(5);pq.push(6);pq.push(1);pq.push(9);while (!pq.pop();return 0;我们看出来这是系统默认的情况(最大堆),那么如果我们自己实现要自己模拟实现想要最小堆建怎么办呢?
2025-08-05 20:30:46
997
1
原创 【C++】vector与其模拟实现
vector是C++中的vector是标准模板库(STL)里常用的序列容器,其实可以简单理解为精简规范过的string容器。
2025-07-05 17:52:18
399
2
原创 【C++】string与其模拟实现
要了解string,首先要知道STL是个啥STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的 组件库,而且是一个包罗数据结构与算法的软件框架。简单来说,就是把之前实现的什么算法,数据结果打包好我们直接用,而STL又可以分为下面的大类而我们今天学习的就是STL容器中的string。
2025-06-21 14:45:56
855
3
原创 【C++】类和对象(下)
初始化列表其实就是构造函数的一部分,之前我们已经学习了一般的构造函数的写法,而使用初始化列表依然可以实现函数的初始化• 之前我们实现构造函数时,初始化成员变量主要使⽤函数体内赋值,构造函数初始化还有⼀种⽅ 式,就是初始化列表,初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成 员列表,每个"成员变量"后⾯跟⼀个放在括号中的初始值或表达式。• 每个成员变量在初始化列表中只能出现⼀次,语法理解上初始化列表可以认为是每个成员变量定义 初始化的地⽅。
2025-06-12 12:12:04
800
3
原创 【C++】类和对象(中)
构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务并 不是开空间创建对象(我们常使⽤的局部对象是栈帧创建时,空间就开好了),⽽是对象实例化时初始化 对象。构造函数的本质是要替代我们以前Stack和Date类中写的Init函数的功能,构造函数⾃动调⽤的 特点就完美的替代的了Init。简单来说构造函数就是类似于初始化函数,我们看看以下代码就可以理解上述函数中的与类同名的函数就是构造函数,其作用就是初始化构造函数还可以传参或者缺省。
2025-06-08 14:52:53
1034
4
原创 【C++】 类和对象(上)
• class为定义类的关键字,后跟一个类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省 略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或 者成员函数。• 为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_或者m 开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。
2025-05-31 14:34:18
981
3
原创 【C++】C++入门基础
• 定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。• namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下 ⾯的rand不在冲突了。• C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。
2025-05-30 12:40:51
755
2
原创 【数据结构】排序
本文是小编巩固自身而作,如有错误,欢迎指出!就类似于我们平时打扑克时一样,在理牌时将新拿的牌直接插入进行排序 直接插入排序的思想就是代码实现如下 这里代码的思想就是希尔排序法⼜称缩⼩增量法。希尔排序法的基本思想是:先选定⼀个整数(通常是gap=n/3+1),把 待排序⽂件所有记录分成各组,所有的距离相等的记录分在同⼀组内,并对每⼀组内的记录进⾏排 序,然后gap=gap/3+1得到下⼀个整数,再将数组分成各组,进行插⼊排序,当gap=1时,就相当于直接插⼊排序。希尔排序是在直接插入排序的情况下进行改善
2025-05-26 23:50:47
1265
1
空空如也
有朋友能找找这个程序为什么运行错误吗
2024-06-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅