自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【MySQL8】事务

事务是一组 DML 操作的集合,是不可分割的最小工作单元。事务会将集合内所有操作作为整体向数据库提交 / 撤销,集合内操作要么同时全部成功,要么同时全部失败。要么全部成功,要么全部失败,保证数据安全;开启、COMMIT提交、ROLLBACK回滚;事务四大核心特性:原子性、一致性、隔离性、持久性(ACID);并发事务三类问题:脏读、不可重复读、幻读;四级隔离级别:读未提交、读已提交、可重复读、串行化,安全递增、性能递减。

2026-08-03 15:07:01 81

原创 【MySQL7】多表查询

本文覆盖 MySQL 多表查询全部核心考点:表关系设计、内外连接、自连接、联合查询、四类子查询,所有 SQL 均可直接复制运行。多表关联必须添加等值条件,避免笛卡尔积;业务优先使用左外连接,保留主表全部数据;自连接必须设置表别名;子查询根据返回结果分为四类,标量子查询最常用;union all性能优于union,无去重需求优先使用。

2026-07-31 18:00:50 253

原创 【MySQL6】约束

约束是作用于数据表字段上的规则,用于限制存入表中的数据。NOT NULL:字段禁止为空;UNIQUE:字段值全局唯一;主键:自带非空 + 唯一,搭配实现自增 ID;DEFAULT:省略字段传参时自动填充默认值;CHECK:限制字段数值区间、格式,过滤非法数据。单表字段约束(作用于单张表)NOT NULL 非空约束UNIQUE 唯一约束PRIMARY KEY 主键约束DEFAULT 默认约束CHECK 检查约束多表关联约束(跨两张表)

2026-07-30 17:29:18 207

原创 【MySQL5】函数

函数:一段可直接被 SQL 调用的封装代码,传入参数后返回对应结果,分为单行函数(本篇讲解,每行数据单独计算)、聚合函数(分组统计,后续单独整理)。本篇覆盖 4 大类高频单行函数:字符串函数、数值函数、日期函数、流程控制函数,附带基础示例 + 业务实战 SQL,适合期末 / 面试快速复习。字符串函数:拼接、大小写、填充、去空格、截取文本数值函数:取整、取模、随机数、四舍五入,常用于验证码、金额计算日期函数:获取当前时间、提取年月、日期偏移、计算时间差流程控制函数。

2026-07-30 15:13:39 172

原创 GO_网络编程---HTTP 编程

HTTP 是应用层协议,底层依赖 TCP;DNS 负责域名转 IP 建立连接;Go 原生net包可手动实现 TCP 通信,手动拼接 HTTP 报文,理解底层原理;net/http标准库封装 TCP 细节,一行代码快速搭建 HTTP 服务端 / 客户端;HandleFunc注册路由,启动服务;http.Get快速发起网页请求,注意释放资源;爬虫基于 HTTP 客户端实现,串行爬取效率低,搭配 goroutine+channel 实现并发爬虫提速。

2026-07-28 13:15:48 267

原创 【MySQL4】DCL | 数据控制语言

DCL 全称Data Control Language 数据控制语言哪些用户能够访问数据库每个用户拥有哪些操作权限用户管理权限控制USE mysql;CREATE USER '账号'@'主机' IDENTIFIED BY '密码';ALTER USER '账号'@'主机' IDENTIFIED WITH mysql_native_password BY '新密码';DROP USER '账号'@'主机';

2026-07-24 17:39:45 240

原创 GO_网络编程---并发聊天服务器

mapip:portClientwhorename|新名字go。

2026-07-24 15:42:06 235

原创 GO_网络编程---文件传输实战

必须分片读写文件,大文件一次性读取会造成内存溢出,统一使用 4KB 缓冲读写缓冲区时,必须截取有效长度buf[:n],否则缓冲区残留脏数据,文件损坏传输流程不能颠倒:先发文件名→回 ok→传文件内容,自定义协议避免粘包问题io.EOF是文件正常读取结束标识,其他 error 属于异常文件、TCP 连接必须搭配,避免文件句柄、网络资源泄漏仅支持单客户端单次文件传输,拓展可使用 goroutine 实现并发多客户端上传。

2026-07-24 13:05:15 209

原创 【MySQL3】DQL | 数据查询语言

DQL(Data Query Language 数据查询语言)是 MySQL 开发使用频率最高SELECT。六大查询分类:基础查询、条件查询、聚合函数、分组查询、排序查询、分页查询基础查询:指定字段、SELECT *AS别名、DISTINCT去重,开发避免;条件查询 WHERE:各类比较运算符、INLIKE模糊匹配、IS NULL空值判断;聚合函数,纵向统计单列;分组 GROUP BY+HAVING:WHERE 分组前过滤,HAVING 分组后过滤,HAVING 支持聚合函数;

2026-07-23 17:44:25 190

原创 GO_网络编程---Socket TCP 套接字

服务端 API:监听指定 TCP 端口,返回监听器Listener阻塞等待客户端连接,连接成功返回通信句柄net.Conn客户端 API:主动拨号连接 TCP 服务,直接得到net.Conn从连接中读取数据到缓冲区,返回实际读取字节数向连接写入字节数据,发送给对端获取对端客户端 / 服务端的 IP + 端口地址延迟关闭 TCP 连接,释放网络资源,必须规范书写。

2026-07-23 16:29:30 181

原创 GO_网络编程---网络协议

网络协议是通信双方约定好的沟通规则,用于保障设备之间能够正常交互数据。原始协议:双方最初约定、未经过迭代完善的基础通信规则标准协议:在原始协议基础上持续迭代、补充、优化后,形成行业通用规范的协议网卡 + MAC 地址:硬件标识,底层自动处理,无需开发者手动操作IP 地址(逻辑地址):定位目标主机,代码中需要手动指定端口号:定位主机内目标程序,代码中需要手动指定链路层:设备 ↔ 设备(硬件通信)网络层:主机 ↔ 主机(跨局域网主机通信)传输层:进程 ↔ 进程(同一主机内程序通信)

2026-07-21 16:01:07 320

原创 GO_并发编程---select

switch:匹配相等条件,可写任意表达式;select每个 case 只能是 channel IO 操作(读通道 / 写通道),专门用于同时监听多个通道读写状态。同时监听多个 channel的读写状态,是协程多路复用核心;case 限制:只能是通道读 / 写操作,不能是普通表达式;多分支同时就绪:随机任选一个执行;default 作用:让 select 变成非阻塞,无就绪通道时直接执行 default;case <-time.After(时长),无需手动创建 Timer;

2026-07-21 11:27:31 177

原创 GO_并发编程---定时器

表格特性time.Timer触发次数仅 1 次(一次性)无限循环周期触发重置支持 Reset ()不支持 Reset停止Stop (),未到期返回 trueStop (),直接终止循环适用场景延时等待、超时控制定时轮询、周期任务简化写法无简化函数。

2026-07-21 11:03:34 348

原创 GO_并发编程---channel

创建时指定容量 capacity,内部自带缓冲区,可以预先存储多条数据。go// 缓冲区最多存3个intGo 并发核心思想:通信共享内存,channel 是 goroutine 通信载体;channel 是引用类型,分无缓冲、有缓冲两类;无缓冲通道:收发必须成对出现,天然实现同步;有缓冲通道异步存储数据;close()关闭通道后不能发送,但剩余数据可读取;range 简化通道循环读取;单向通道约束读写权限,常用于生产者消费者模型;阻塞逻辑:无数据读阻塞、缓冲区满写阻塞。

2026-07-20 17:35:06 250

原创 GO_并发编程---Goroutine

Go 被称为21 世纪的 C 语言语法设计简洁、上手门槛低语言层面原生支持并发,内置 GC 自动垃圾回收,无需手动管理内存同时处理多件事(单核、任务切换)同时做多件事(多核、真正同时执行)Goroutine 是 Go 内置的轻量级协程比操作系统线程体积更小、开销极低;底层采用 M:N 调度:成千上万个 goroutine 会复用少量 OS 线程;Go 运行时自动管理 goroutine 内存共享,调度成本远低于线程;优势:易用、高效、资源占用极少。

2026-07-20 16:33:15 214

原创 Go语言_文件---文件操作

文件分设备文件(标准输入输出)、磁盘文件(文本 / 二进制);磁盘文件持久化存储数据;os.Open();;;文件拷贝核心逻辑:开辟固定大小缓冲区,循环读源文件、写目标文件defer延迟关闭文件、处理io.EOF正常结束标记、校验文件操作错误。

2026-07-19 14:03:26 217

原创 Go 语言 _JSON---序列化与反序列化

支持 struct /map,支持 struct /mapstruct tag 是自定义 JSON 输出的核心工具,掌握、自定义 key、,string三种常用写法类型断言业务开发优先使用结构体,动态不确定 JSON 再选用 map。

2026-07-19 11:24:22 181

原创 GO_文件处理---字符串操作

Contains:判断是否包含子串Index:查找子串索引,无则返回 - 1Split:按分隔符拆分字符串为切片Trim:清除首尾指定字符Fields:自动切割所有空白,提取有效单词Join:切片拼接为完整字符串。

2026-07-18 13:51:48 249

原创 GO_错误---error、panic、recover

errorerrors.Newfmt.ErrorfGo 约定:函数出错通过多返回值返回 error,调用方必须判断panic 分为手动调用、运行时异常自动触发两种recover 必须写在 defer 匿名函数中,否则无法捕获 panic业务优先 error,底层严重异常使用 panic+recover 做容错兜底。

2026-07-18 12:13:43 221

原创 GO_面向对象---接口

go// 定义Humaner接口,仅规定sayhi()方法sayhi() // 只有方法声明,无方法体是空接口,不含任何方法,因此 Go 中所有类型自动实现空接口。作用:万能容器,等价于 C 语言void*,可以存储任意类型数据。goi = 123Go 接口基于鸭子类型,无需显式 implement,实现全部方法即自动实现接口;接口是方法集合,只定义行为,不关心实体类型;接口作为函数参数 / 切片,实现多态特性;接口嵌套实现 “继承”,转换规则:子集可接收超集,反之不行;

2026-07-16 01:13:24 239

原创 GO_面向对象_方法

go// 自定义类型// 普通函数:面向过程// 方法:给long类型绑定,面向对象// tmp:接收者,相当于参数// 调用普通函数fmt.Println("函数调用:", res1)// 调用方法:变量名.方法名()fmt.Println("方法调用:", res2)核心:面向对象只是换了一种调用方式,本质还是函数。方法 = 绑定类型的函数,是 Go 封装的核心,接收者是方法第一个参数值接收者:拷贝副本,不修改原变量;指针接收者:引用传递,修改原变量。

2026-07-14 17:42:28 186

原创 GO_面向对象---匿名字段

定义结构体时,只写类型,不写字段名,这个字段就是匿名字段。直接复用另一个结构体的所有成员(字段 + 方法)。Go 没有继承,只有匿名字段(组合),实现代码复用初始化匿名字段必须写结构体类型名,否则编译失败同名字段遵循就近原则,显式调用需指定匿名字段类型支持:结构体、基本类型、指针类型作为匿名字段是 Go 实现类似继承的唯一方式。

2026-07-14 16:11:46 188

原创 GO---可见性规则

go// 文件名:test/test.go// ---------------- 私有成员(首字母小写,仅test包内能访问) ----------------// myFunc 私有函数:外部包无法调用fmt.Println("this is myFunc(私有)")// user 私有结构体:外部包无法定义、使用name string // 私有成员:外部包无法访问age int// ---------------- 公开成员(首字母大写,所有包可访问) ----------------

2026-07-13 17:35:43 155

原创 go_复合类型---结构体

go// 定义结构体类型id intsex byte // 字符类型用 byteage int结构体名首字母大写可以被其他包访问成员名首字母大写才能被外部包访问结构体成员不能写 var指针初始化必须写&Student{}指针操作成员用即可,不用->比较必须是同类型结构体函数传参:值传递:不修改原数据地址传递:修改原数据,效率更高。

2026-07-13 17:17:14 195

原创 【Lc_1 递归】汉诺塔问题

递归终止条件,切片传指针,调用递归move。

2026-07-13 16:40:52 217

原创 GO---map函数

仅声明未用make初始化的 map(nil map),不能直接赋值map 键必须唯一,重复赋值会覆盖旧值遍历 map无序,不能依赖遍历顺序map 是引用类型,函数传参是传引用,会修改原数据delete()函数删除不存在的 key,不会触发错误map 是无序键值对,key 唯一、支持自动扩容,无容量限制三种创建方式:直接初始化、仅声明、make 创建(推荐)核心操作:赋值、遍历、判断 key 存在、delete 删除map 是引用类型,函数内修改会同步到外部原 map。

2026-07-13 16:33:26 175

原创 Go 语言圣经 #7_2 | error 接口、类型断言、类型分支、接口设计准则

接口变量.(类型T),称为类型断言作用:检测接口值内部的动态类型是否匹配目标类型 T,分两种场景。error是内置单方法接口,快速生成错误,底层为指针结构体类型断言x.(T)分具体类型 / 接口类型两种匹配逻辑,单返回值失败 panic,双返回值安全判断区分 IO 错误优先使用结构化PathError+ 类型断言,不依赖错误字符串判断类型分支专门用于接口多类型分发,实现可辨识联合接口两大用途:行为抽象、多类型容器接口设计准则:多实现再抽象,优先小接口,不造单实现冗余接口。

2026-07-12 18:01:16 246

原创 【dp_1】爬楼梯 | 斐波那契数 | 第 N 个泰波那契数 | 三步问题

本题使用动态规划中的记忆特性,暴力求解时递推f(n) = f(n - 1) + f(n - 2),会导致超时,使用记忆特性就可以查找memo,减少重复,减小时间复杂度。递归,动态规划利用dp缩减纯递归的时间复杂度动态规划+递推。

2026-07-11 20:11:20 164

原创 GO_复合类型---切片

切片不存储数据,底层依赖数组,是引用类型[low:high]是左闭右开,不包含 high 下标元素append扩容后会新建底层数组,断开与原数组的关联切片做函数参数,传引用,修改会影响原切片copy可以实现切片深拷贝,避免共享数组切片是 Go 的动态数组,专门解决数组长度固定的痛点,开发优先用切片核心操作:截取、append扩容、copy拷贝、函数传参引用底层数组,扩容机制是 2 倍扩容实战中:优先用make创建切片,用append动态添加元素。

2026-07-11 19:38:48 234

原创 GO_复合类型---数组

govar 数组名 [数组长度]数据类型示例:go// 定义能存放50个int的数组数组长度必须是常量,不能是变量govar a [4][2]int // 4行2列二维数组数组长度固定、不可扩容,长度为常量属于值类型,传参、赋值全拷贝未赋值元素自动零值填充支持==!比较,类型长度必须一致普通传参无法修改原值,指针传参可以改原值多维数组:括号层数 = 维度数。

2026-07-11 13:58:12 220

原创 GO_复合类型---指针

变量 = 内存值 + 内存地址,取地址,解引用Go 指针无->,统一使用访问成员nil 指针禁止解引用,必须保证合法内存指向new(T)分配清零内存,返回指针,解决空指针问题Go 只有值传递,想要改原值必须传指针(地址传递)指针核心用途:修改变量原值、避免大内存拷贝。

2026-07-11 13:28:31 239

原创 Go语言圣经 #7_1 | 接口约定、类型、值,sort Interface,http.Handler

语法本质:接口 = 一组方法签名集合只要某具体类型完整实现接口全部方法,该类型就是此接口的实例io.Writer作用:抽象写入字节的统一行为实现类型:文件、内存缓冲区、网络连接、HTTP 响应、压缩器、哈希计算器等io标准库内置大量高频通用接口,是 IO 抽象的核心。统一 HTTP 请求处理规范,仅一个方法:go任意类型只要实现该方法,就是合法 Handler,可处理 HTTP 请求。接口定位:行为抽象、隐式实现、解耦实现与调用接口值结构:动态类型 + 动态值,动态派发实现多态。

2026-07-11 12:34:02 383

原创 Go 工程管理与作用域

程序接收外部传入的命令行参数,全部以字符串类型存储。下的 src 目录查找对应代码。大型项目不能全部写在。

2026-07-09 11:46:37 239

原创 Go 语言圣经 6 | 方法与封装全解:方法声明、指针接收器、方法值、访问封装

在普通函数声明前增加一个接收者变量,该函数就成为绑定对应类型的方法,相当于给该类型专属定义函数。普通包级函数goPoint 类型方法(带接收者)go// p 称为方法接收器(receiver)

2026-07-09 10:54:42 177

原创 【MySQL2】| DML数据操作语言

DML(Data Manipulation Language,数据操作语言),主要用于对数据库表中的数据记录进行增、删、改操作,是日常开发中最常用的 SQL 语句之一。新增数据:INSERT修改数据:UPDATE删除数据:DELETE1、新增数据INSERT INTO 表名 (字段 1, 字段 2...) VALUES (值 1, 值 2...);2、修改数据UPDATE 表名 SET 字段 1 = 值 1, 字段 2 = 值 2... [WHERE 条件];3、删除数据。

2026-07-08 18:20:30 221

原创 GO_函数_2

func(){}(参数)go运行a := 10// 无参无返回匿名函数,立即执行func() {fmt.Printf("无参匿名:a=%d, str=%s\n", a, str)}()// 带参数匿名函数,立即传参调用fmt.Printf("带参匿名 i=%d, j=%d\n", i, j)}(10, 20)// 有参有返回值匿名函数if i > j {max = imin = j} else {max = jmin = ireturn}(10, 20)

2026-07-08 17:16:59 229

原创 GO_函数_1

gofunc 函数名(参数名 ...类型) {func 函数名(参数) (返回值) { 函数体 }...类型,必须放最后不定参数遍历推荐用for _, data := range 变量支持多返回值,官方推荐给返回值起名有返回值必须写return函数名大写 = 公开,小写 = 私有函数定义、无参无返回值、普通参数、不定参数、参数传递、单返回值、多返回值,是 Go 函数最核心的第一部分知识。

2026-07-08 11:10:28 175

原创 Go 语言圣经 5 | 函数全解:声明、签名、闭包、Defer、Panic 错误处理

普通命名函数仅能在包级代码块声明。匿名函数(函数字面量):无函数名的函数表达式,可在任意代码表达式中定义使用。语法:去掉函数名的函数声明格式,可随用随定义。函数签名仅由参数、返回值类型决定,与变量名无关;参数默认值传递,引用类型可修改原数据;多返回值+error是Go标准错误处理范式;函数是一等公民,匿名函数+闭包可绑定变量状态;defer逆序执行,核心用于资源释放;panic处理严重逻辑错误,recover选择性捕获,禁止滥用。

2026-07-08 10:10:33 321

原创 【MySQL1】| DDL 数据定义语言

中文符号报错:逗号、引号必须是英文半角,‘’全角符号直接语法错误;未选中数据库:建表 / 改表前必须执行use 库名;,否则;注释引号不匹配comment ''用户名少闭合引号,正确comment '用户名';字符集乱码:建表务必加,支持完整中文和表情;删除不加 IF EXISTS:生产环境创建 / 删除库表建议带上IF EXISTS,避免重复执行报错。

2026-07-07 17:50:27 287

原创 range迭代

字节起始索引(位置)

2026-07-07 10:23:31 213

空空如也

空空如也

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

TA关注的人

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