- 博客(126)
- 收藏
- 关注
原创 个人博客声明
这里,是我学习的痕迹,也是我们共同成长的空间,希望通过这个博客与更多志同道合的朋友们一起学习和进步。知识的分享应当建立在尊重与理解之上,如果我的博客中无意间使用了你的原创内容或者您发现博客中有任何内容侵犯了您的权益,我重视知识产权和版权保护问题,收到通知后我会在第一时间进行删除或修正。在这个博客里,我将不定期分享我在学习过程中遇到的各种有趣的技术点、代码片段、图片资料以及有价值的文档。
2024-07-03 19:45:38
716
22
原创 19 C、C++ 操作 MySQL
本文介绍了在Linux环境下使用C/C++操作MySQL的方法,涵盖环境准备、数据库用户创建与权限配置,并通过C API实现连接、插入与查询操作。代码演示了mysql_init、mysql_real_connect、mysql_query及mysql_store_result等核心函数的使用,强调错误处理与资源释放,适用于初学者快速上手数据库编程。
2026-10-11 12:00:00
603
原创 18 MySQL 用户管理
本文介绍了MySQL 8.0中用户管理的核心内容,涵盖查看用户信息的三种方式:查询mysql.user表、使用SELECT * FROM mysql.user获取详细信息,以及通过SHOW GRANTS查看权限。重点解析了用户账户的主机限制(如localhost与%)、认证插件(如caching_sha2_password)、权限字段含义及超级权限配置,帮助开发者全面掌握MySQL用户权限管理机制。
2026-10-10 18:00:00
161
原创 17 MySQL 视图
本文系统介绍了MySQL视图的概念、作用与使用方法。视图是虚拟表,封装复杂查询,提升安全性与逻辑独立性。通过CREATE VIEW创建,支持WITH CHECK OPTION确保数据一致性。可更新视图需满足单表、无聚合等条件,修改基表会影响视图。建议合理使用视图,结合DROP VIEW和CREATE OR REPLACE维护结构。
2026-10-10 09:30:00
364
原创 16 MySQL 事务
本文详解MySQL事务概念,强调其“要么全做,要么全不做”的原子性与一致性,以银行转账为例说明事务的重要性。介绍事务四大特性(ACID),并指出仅InnoDB存储引擎支持事务,通过SHOW ENGINES命令可验证引擎事务支持情况,明确推荐使用InnoDB以保障数据安全。
2026-10-09 17:30:00
106
原创 15 索引操作
本文系统讲解MySQL主键索引与唯一索引的创建与最佳实践。强调建表时应优先使用自增主键(AUTO_INCREMENT),避免依赖InnoDB隐藏主键,以提升查询性能与数据一致性。主键具备唯一性、非空性,且自动构建聚簇索引,推荐使用短整型;复合主键需谨慎使用。唯一索引可保证列值不重复,但允许多个NULL值,适用于邮箱、手机号等场景。操作前需清理重复数据,大表添加索引建议在低峰期进行。全文涵盖建表定义、后期添加、常见误区及性能优化,是数据库设计的重要参考。
2026-10-09 10:00:00
95
原创 14 MySQL 索引特性
本文通过创建800万条记录的emp表,对比有无索引时查询性能差异。无索引下全表扫描查询耗时约6-7秒,创建empno索引后查询时间降至0.00秒,验证了索引显著提升查询效率。同时指出索引虽加速查询,但会占用存储空间并影响增删改性能,体现了其“以空间换时间”的特性。
2026-10-08 17:30:00
187
原创 移动语义——CSDEN
本文详解C++移动语义的核心概念,揭示其在性能优化中的关键作用。通过对比传统拷贝与移动操作,说明移动语义如何避免深拷贝带来的资源浪费。文章深入解析左值与右值的本质区别,介绍右值引用(T&&)的使用场景,并以自定义字符串类为例,演示移动构造函数与移动赋值运算符的实现。重点强调:移动后源对象变为“空壳”,但可重新赋值,确保高效、安全地转移资源,显著提升程序性能。
2026-10-08 10:00:00
764
原创 13 表的内外连接
摘要: 本文介绍了MySQL中的表连接操作,分为内连接和外连接两种类型。**内连接(INNER JOIN)**仅返回两表中匹配的行,未匹配的数据丢弃,适合查询关联数据(如“已下单用户”)。外连接包括左连接(LEFT JOIN)和右连接(RIGHT JOIN),左连接保留左表全部数据,右表未匹配时填充NULL;右连接反之(但建议改用左连接简化逻辑)。通过示例代码对比了不同连接的效果,并总结其差异:内连接取交集,外连接保留单边全部数据。适用于需完整展示主表数据或分析关联关系的场景。 关键词: MySQL、内连接
2026-06-20 18:00:00
234
原创 12 复合查询下
本文介绍了MySQL中子查询的几种常见用法,包括单行子查询、多行子查询、多列子查询以及在FROM子句中使用子查询。单行子查询用于比较操作,多行子查询常用IN/ANY/ALL操作符,多列子查询需要打包列名整体比较。FROM子句中的子查询需起别名作为临时表使用。文章通过具体SQL示例演示了每种查询的应用场景和语法要点,帮助理解如何嵌套查询实现复杂数据筛选和计算。
2026-06-20 09:30:00
221
原创 11 复合查询上
MySQL复合查询(上)摘要 本文介绍了MySQL复合查询的基础知识,首先回顾了基本查询操作: 创建了示例员工表emp并插入14条测试数据 演示了带AND/OR条件的复合查询示例,筛选工资>500或职位为MANAGER且名字以J开头的员工 展示了多字段排序,按部门号升序、工资降序排列员工数据 文章属于"MySQL_小米里的大麦"专栏,作者CSDN博客和GitHub主页已给出。后续内容将继续探讨更复杂的查询操作。 关键词:MySQL、复合查询、条件筛选、排序、多表查询
2026-06-19 17:30:00
398
原创 10 内置函数下
MySQL内置函数涵盖了数学运算、进制转换、随机数生成、格式化输出等实用功能。数学函数如ABS()取绝对值、BIN()/HEX()进制转换、CEILING()/FLOOR()取整、FORMAT()数字格式化、MOD()取余等,使用方式类似C/C++数学库。其他实用函数包括:USER()查看当前连接用户及来源主机,DATABASE()返回当前使用数据库(需先USE选择库),以及重点函数MD5()生成32位不可逆哈希值,其特点包括快速、固定输出且对数字自动转为字符串处理。
2026-06-19 09:00:00
229
原创 09 内置函数上
MySQL内置函数(上):日期函数详解 本文介绍了MySQL中常用的日期函数,主要分为三类:获取时间、计算时间和按时间筛选。 核心日期函数 获取当前时间:NOW()(日期+时间)、CURDATE()(日期)、CURTIME()(时间) 提取时间部分:DATE()取日期、TIME()取时间、YEAR()/MONTH()/DAY()等提取特定字段 时间计算: DATE_ADD()和DATE_SUB()进行时间加减 DATEDIFF()计算日期差 TIMESTAMPDIFF()精确时间差计算 实际应用 记录创建/
2026-06-18 17:30:00
185
原创 08 表的增删改查下
本文介绍了MySQL中表的增删改查操作的下半部分,主要聚焦于UPDATE(修改)和DELETE(删除)操作,以及插入查询结果的高效方法。 UPDATE操作:用于修改已有数据,必须配合WHERE条件精确更新,避免全表修改风险。支持单字段更新、条件更新多行、自增/自减更新以及结合子查询的复杂更新(如UPDATE JOIN)。 DELETE操作:按条件删除行,可回滚;TRUNCATE则是快速清空表数据(不可回滚),适用于需要重置表的场景。 插入查询结果:通过INSERT INTO ... SELECT ...语法
2026-06-18 09:00:00
455
原创 07 表的增删改查上
本文介绍了MySQL中表数据的增删改查操作基础部分,重点讲解了CREATE(创建)操作的四种常用语法: 单行全列插入:基本语法INSERT INTO 表名 VALUES (值1,值2...),需注意列顺序对齐,可用NULL/DEFAULT占位。 多行指定列插入:高效写法INSERT INTO 表名(列1,列2) VALUES (值1,值2),(值3,值4)...,支持批量插入且性能更优。 冲突更新:通过INSERT...ON DUPLICATE KEY UPDATE实现主键/唯一键冲突时自动更新指定字段,适
2026-06-17 18:30:00
182
原创 06 表的约束
MySQL表的约束机制解析 本文详细介绍了MySQL中表的约束机制,主要包括空属性和默认值两种约束类型: 空属性约束:分为NULL(允许为空)和NOT NULL(非空)两种。非空字段必须显式赋值,否则会报错;而可空字段可以省略赋值,默认填充NULL值。 默认值约束:通过DEFAULT关键字设置字段默认值,当插入数据时未显式赋值则自动填充默认值。常见用法包括数值默认值、字符串默认值和当前时间戳。 文章通过多个示例演示了两种约束的使用方法及注意事项,特别指出: 同时设置NOT NULL和DEFAULT时,后者可
2026-04-16 17:30:00
668
原创 05 数据类型
MySQL常用数据类型一览,涵盖数值、字符串、时间日期等类型,并提供开发推荐。数值类型包括TINYINT、INT、DECIMAL等;字符串类型有CHAR、VARCHAR、TEXT;时间类型推荐DATETIME和TIMESTAMP。重点说明无符号类型、精度参数及存储特性,并针对不同场景给出最佳实践建议,如金额使用DECIMAL、主键用BIGINT UNSIGNED等。帮助开发者快速选择合适的数据类型,平衡存储效率与功能需求。
2026-04-16 08:30:00
640
原创 04 表的操作
本文介绍了MySQL中表的创建、插入数据和查看表结构的操作方法。主要内容包括:1. 创建表的语法格式,详细说明了参数如数据类型、约束条件、存储引擎等;2. 提供了创建学生表的示例,并解释了不同存储引擎生成的文件差异;3. 介绍了两种插入数据的语法(指定列插入和全列插入)及注意事项;4. 讲解了如何查看数据库中的表列表以及表结构定义。文章还包含了常见数据类型和约束条件的速查表,适合MySQL初学者快速掌握表的基本操作。
2026-04-15 17:30:00
864
原创 03 库的操作
这篇文章详细介绍了MySQL数据库的创建、字符集和校验规则的相关操作。主要内容包括: 创建数据库的语法和参数说明,支持指定字符集和校验规则,演示了默认创建和指定UTF-8编码的多种写法。 字符集和校验规则的概念解析,包括如何查看系统默认设置、MySQL支持的字符集列表,以及不同字符集对应的校验规则。 数据库命名规范和注意事项,如避免使用关键字、命名建议等。 提供了大量实用SQL命令示例,包括创建数据库、查看字符集配置、查询支持的字符集等。 文章采用技术文档风格,包含清晰的代码块、参数表格和注释说明,适合My
2026-04-15 08:30:00
895
原创 02 数据库基础
文章摘要 本文系统介绍了数据库的基础知识,重点解析了MySQL数据库的核心概念与应用。首先阐述了数据库相较于文件存储的优势,包括安全性、查询效率、管理便利性等方面的显著提升。接着分析了主流数据库的特点,如Oracle的企业级能力、MySQL的开源优势、PostgreSQL的学术严谨性等,特别强调了MariaDB作为MySQL分支的改进方向。文章详细演示了MySQL的基本操作,包括服务器连接、数据库层级关系(服务器>数据库>表>行/列)以及系统库功能,如information_schema的
2026-04-14 17:00:00
970
原创 01 在 Ubuntu 22.04 上安装 MySQL
这篇文章详细介绍了在Ubuntu 22.04系统上安装和配置MySQL数据库的完整流程。主要内容包括:1)检查并彻底卸载旧版本MySQL/MariaDB;2)安装MySQL 8.0(Ubuntu 22.04默认版本);3)通过mysql_secure_installation进行安全加固;4)设置root密码并修改认证方式;5)配置MySQL服务器参数,包括字符集设置和远程访问权限。文章特别强调了安全措施的重要性,并提供了详细的命令行操作步骤和配置文件修改建议,适合需要部署MySQL的开发者和系统管理员参考
2026-04-14 08:30:00
423
原创 【C++】Lambda 表达式
本文介绍了C++中的匿名函数(Lambda表达式)及其核心组成部分。Lambda表达式的基本形式为捕获列表 -> 返回类型 {函数体},其中捕获列表控制外部变量访问方式,参数列表与普通函数一致,返回类型通常可省略(编译器自动推断)。重点讲解了捕获列表的多种方式:[]不捕获、[x]传值、[&x]传引用、[=]传值捕获所有变量、[&]传引用捕获所有变量等。文章通过代码示例演示了Lambda表达式的参数传递、返回类型自动推导规则,以及捕获外部变量的不同方法,帮助开发者灵活运用这一特性进行高效
2026-01-08 10:00:00
786
原创 【C++】 STL —— 基于算法竞赛
C++ STL vector 使用指南 本文介绍了C++ STL中的vector容器,包括初始化、常用方法和注意事项。 初始化: 一维vector:vector<int> a,可指定长度和初始值 二维vector:vector<vector<int>> v行列可变,或vector<int> v[5]行固定 支持拷贝初始化vector<int> b(a) 常用方法: 访问元素:front(), back(), at() 容量操作:size(), em
2026-01-07 17:30:00
1333
原创 【C++】数学相关算法
本文介绍了C++中数学相关算法的关键知识点,包括数据范围与算法选择、常用数学函数和数值算法。主要内容: 算法选择指南:根据数据规模(10^9以内用int,10^18用long long)和时间复杂度(O(n!)到O(logn))提供算法选择建议表,帮助快速匹配问题与解法。 数学函数库:总结<cmath>中常用函数如sqrt、pow、abs等,说明其功能、示例和注意事项(如sqrt参数需非负)。 数值算法:列举<algorithm>和<numeric>中的实用工具,包括ma
2026-01-07 11:00:00
1104
原创 【C++】STL简介
STL简介:C++标准模板库核心解析 STL(标准模板库)是C++标准库的核心组件,采用泛型编程思想,通过模板技术实现数据结构与算法的高度复用。其发展经历了HP、P.J.、RW和SGI四个主要版本,其中SGI版本因高可读性和开放性成为学习典范。 STL包含六大核心组件: 容器(如vector、list) 算法(如sort、find) 迭代器(连接容器与算法) 仿函数(函数对象) 适配器(如stack、queue) 空间配置器(内存管理) STL在笔试面试和实际开发中都具有重要价值,但也存在更新缓慢、线程安全
2026-01-06 18:30:00
622
原创 【C++】模板初阶
本文介绍了C++模板的概念及其应用。模板分为函数模板和类模板,能够实现与数据类型无关的通用代码,提高代码复用性。函数模板通过template<typename T>定义,支持自动类型推导和显式指定类型,可用于交换变量、多类型参数处理、动态内存分配等场景。类模板则允许创建通用的类结构。模板技术解决了函数重载带来的代码重复问题,使程序更灵活高效。文章通过代码示例展示了模板在变量交换、多类型处理、类型转换等方面的具体应用,并强调了模板在提升代码可维护性和扩展性方面的重要作用。
2026-01-06 08:30:00
953
原创 C、C++内存管理
本文详细解析了C/C++程序的内存分布及管理机制。首先通过实例代码分析了各类变量(全局变量、静态变量、局部变量、动态分配内存等)的存储位置,包括栈、堆、数据段(静态区)和代码段(常量区)的划分标准。随后系统阐述了C/C++内存区域的四大组成部分:代码段(存储可执行指令和只读常量)、数据段(存放全局/静态变量)、堆(动态内存分配区)和栈(函数调用时的临时存储区),并详细说明了各区域的功能特点、存储内容及生命周期管理方式。文章还通过具体题目解答了sizeof与strlen的区别,并提供了完整的变量存储位置分析表
2026-01-05 17:00:00
1579
原创 Ubuntu 22.04 中安装 thefuck 与 tldr 工具
本文介绍了在Ubuntu 22.04系统中安装两款实用终端工具的方法:智能命令纠错工具thefuck和简洁帮助文档工具tldr。详细说明了通过pip和apt两种方式安装thefuck的步骤,包括解决PATH环境变量问题;同时提供了tldr的安装流程,重点解决了网络超时和中文显示配置问题。文章还包含常见错误解决方案及工具使用技巧,如thefuck的递归纠正功能和tldr的平台指定查询方法。最后提供了官方文档参考链接,帮助用户进一步提升终端使用效率。
2026-01-05 12:40:30
1128
原创 058 从 Centos 切换到 Ubuntu
本文详细介绍了从CentOS切换到Ubuntu的完整流程,涵盖系统切换步骤、Xshell连接配置、用户权限设置以及Ubuntu软件包管理器APT的使用方法。重点内容包括:1. 系统镜像切换后的密码重置提醒;2. 创建普通用户并授予sudo权限的两种方式;3. CentOS与Ubuntu软件包管理器命令对比;4. 系统升级过程中的关键配置选择;5. GCC编译器的安装与版本管理。文章特别强调了数据备份的重要性,并针对Ubuntu特有操作(如apt命令、PPA源添加等)提供详细指导,帮助用户顺利完成系统迁移。
2025-11-21 12:00:00
1852
1
原创 057 高级 IO 之 epoll 详解与 CMake 入门
摘要 本文系统介绍了Linux系统中的epoll机制及其核心API的使用方法。主要内容包括: epoll的基本概念和优势:相比select/poll更高效,支持边缘触发,内存友好 epoll三大核心函数详解: epoll_create/epoll_create1:创建epoll实例 epoll_ctl:管理监听列表(添加/修改/删除文件描述符) epoll_wait:等待事件发生并获取就绪事件 参数说明和使用示例:包括epoll_event结构体的定义、事件类型标志位等 操作注意事项和最佳实践:如ET模式下
2025-11-20 17:30:00
1870
1
原创 056 高级 IO
可同时等待多个文件描述符,提高 IO 利用率。“等待”与“操作”分离,IO 操作本身不会被阻塞。实现简单,兼容性好,几乎所有平台都支持。缺点:fd 数量有限(通常上限 1024)。每次调用都要重置 fd 集合,使用繁琐。用户态到内核态频繁拷贝,开销大。内核遍历所有 fd检查状态,效率低。用户态也需维护 fd 集合,多次遍历,复杂度高。select 能多路等待,但机制老、开销大、扩展性差,设计比较久远,具有局限性,对初学者也并不友好,于是就有了Poll 的多路转接方案poll是对。
2025-11-20 08:30:00
1236
原创 055 其他重要协议和技术
本文介绍了DNS协议和ICMP协议这两项互联网核心技术。DNS协议负责域名与IP地址的转换,采用分层查询机制,通过dig工具可进行DNS诊断。ICMP协议作为IP协议的辅助协议,用于网络诊断与错误报告,支持ping和traceroute等常用网络工具。文章详细讲解了域名结构、DNS解析流程、ICMP报文类型及功能,并分析了浏览器访问URL的全过程,包括DNS解析、TCP连接建立、HTTP请求响应等关键步骤。最后介绍了ping命令的工作原理及traceroute路径追踪的实现方式。这些协议和技术共同构成了互联
2025-11-19 17:30:00
956
原创 054 数据链路层
数据链路层:以太网协议解析 核心概念对比 MAC地址:数据链路层使用,物理地址,本地有效(如快递员只认门牌号) IP地址:网络层使用,逻辑地址,全局有效(如物流中心处理跨城运输) 以太网工作原理 采用广播+识别+过滤机制: 主机广播发送带目标MAC的帧 所有主机接收但仅目标主机处理 其他主机直接丢弃非己帧 关键协作 ARP协议:动态解析IP到MAC的映射(如问"谁是192.168.1.10?") 路由器作用:跨网段时替换MAC头(保留不变的IP地址) 帧结构详解 字段 长度 作用 目标M
2025-11-19 08:30:00
1045
原创 053 网络层 —— IP 协议
本文摘要: IP协议是网络层核心协议,其地址采用网络号+主机号结构,通过子网划分提高地址利用率和管理效率。现代网络采用CIDR无类别路由,取代传统A/B/C类地址划分,通过子网掩码灵活定义网络范围。私有IP地址范围(如192.168.x.x)专供内部网络使用。IP报头标准20字节,包含版本、TTL、协议号等关键字段,其中TTL防环,协议号标识上层协议,校验和保护报头。子网划分案例显示如何将/24网络拆分为4个/26子网,每个支持62台主机。
2025-11-18 17:30:00
1145
原创 052 传输层 —— TCP(下)
摘要 本文深入解析了TCP协议中的流量控制和滑动窗口机制,旨在实现高效可靠的数据传输。 1. TCP流量控制 流量控制(Flow Control)防止发送方速率过快导致接收方缓冲区溢出。核心机制是接收窗口(Window Size),接收方通过TCP头部窗口字段告知剩余缓冲区空间,发送方据此调整发送速率。为支持高速网络,RFC 1323引入窗口缩放选项,理论最大窗口约1GB,但实际系统(如Linux、Windows)会限制为几MB。 2. 滑动窗口 滑动窗口允许发送方连续发送多个数据包而无需逐个等待确认,提升
2025-11-18 08:30:00
1186
原创 051 传输层 —— TCP(上)
TCP协议概述 TCP(传输控制协议)是面向连接、可靠的传输层协议,通过精细控制数据传输过程,确保数据可靠交付。其核心在于动态管理发送/接收缓冲区,实现流量控制、拥塞控制和差错恢复。 关键特性 可靠性:通过序号、确认号、重传机制保证数据有序、不丢失 缓冲区管理:发送方缓存未确认数据,接收方处理能力不足时可暂停发送 全双工通信:双方可同时收发数据 端口复用:通过16位端口号实现多应用并发通信 协议格式 TCP头部包含源/目的端口(各16位)、32位序号(标识字节流位置)、32位确认号(期望收到的下一字节),以
2025-11-17 17:00:00
983
原创 050 传输层 —— UDP
这篇文章讲述了传输层中的 UDP 协议,重点介绍了端口号与五元组通信模型,解释了为何需要五元组来唯一标识一条连接,并展示了如何使用 `netstat` 和`ss` 命令查看当前连接。文章还详细说明了端口号范围的划分,建议避开知名端口,并探讨了进程绑定多个端口以及端口被多个进程绑定的可能性。此外,文章介绍 `netstat` 和 `pidof` 命令的使用,解释了命令行参数转化问题,并简要提及了 `iostat` 工具用于查看磁盘和 CPU使用情况。
2025-11-17 08:00:00
833
原创 049 HTTPS 协议原理
HTTPS协议通过加密层保障数据传输安全,核心区别在于HTTP明文传输易被劫持篡改,而HTTPS采用加密技术保护信息。主要加密方式包括对称加密(高效但密钥分发困难)、非对称加密(安全但速度慢)及数据摘要(验证完整性)。数字签名结合摘要和非对称加密,确保数据来源和内容可信。HTTPS通过混合加密(如TLS握手)实现安全通信,解决了中间人攻击风险,广泛应用于隐私保护和支付安全等场景。
2025-10-30 12:00:00
1180
原创 048 HTTP 协议
HTTP协议是一种应用层协议,用于浏览器和服务器之间的通信,采用请求-响应模型。URL是资源定位符,包含协议、服务器地址、端口、路径等7个部分。特殊字符需通过urlencode转义。HTTP报文由请求行/状态行、头部、空行和可选的消息体组成。请求报文包含方法、目标URL和HTTP版本,响应报文包含状态码和原因短语。
2025-10-29 18:00:00
1810
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅