- 博客(43)
- 收藏
- 关注
原创 MySQL存储引擎InnoDB的索引和锁深学习
update和delete本身就是当前读,执行时一定会加入排他锁(x lock)正确,这是一道分水岭,只要是当前读,就一定加锁,差别在于锁几行。疑惑四:是不是update和delete天生就有排他锁?你不用写,for update 引擎内部就已经帮你做了。如果是“当前读”,是的;如果是“快照读”,不是。索引命中唯一索引,属于二级索引,回表查询一次。行锁:唯一索引,精确命中,行锁,无间隙锁。🚨 高并发下直接拖垮数据库。疑惑三:当前读一定会锁吗?❌ 错误写法(常见事故) 普通,快照读,无锁。
2026-01-29 14:26:15
577
1
原创 go聊天室接入mysql的项目docker部署流程
server、client、mysql(可选)分开定义depends_on确保启动顺序,但不保证服务端口就绪tty: true多阶段构建:减少镜像体积,仅拷贝编译好的二进制环境变量配置:程序不要写死 IP,容器间通信使用服务名 + 环境变量网络管理:同一 Compose 网络内 DNS 名称可互相访问容器重建策略:修改代码后,只 rebuild 需要更新的服务,旧服务可以保留日志和调试:保证容器日志可查,调试方便。
2026-01-29 10:02:31
573
原创 MySQL详解
方式一:计算机——右击管理——服务 方式二:通过管理员身份运行 net start 服务名(启动服务) net stop 服务名(停止服务)一、用户变量SET @变量名=值;SET @变量名:=值;SELECT @变量名:=值;方式一:一般用于赋简单的值SET 变量名=值;SET 变量名:=值;SELECT 变量名:=值;方式二:一般用于赋表 中的字段值SELECT 字段名或表达式 INTO 变量FROM 表;select @变量名;二、局部变量。
2026-01-29 09:51:03
1015
原创 自研开发的前后端项目部署流程
1.window本地打包(核心,避开Linux所有坑)2.上传到Linux服务器3.Linux服务器构建+运行Nginx容器。
2026-01-14 20:12:43
245
原创 2025年末AI跨年演讲
2.未来几年ai在编程程序员行业的暴露度比较高,会淘汰掉很大一部分的程序员,所以不要停止学习的脚步,要对ai有更新的认知,以前只是简单的人为ai辅助学习,提高编程效率,其实ai也创造了很多需求,即在ai迅速发展的今天,需要更多将其他行业与ai联系去ai化的人。1.打破 “AI 替代人类” 的焦虑,提出 AI 核心价值是托举人类,替代的是繁琐、重复、高危等人类不愿 和 不该干的工作,释放人类去聚焦复杂问题解决、情感连接与创造。信用:人类为 AI 决策担责,建立信任,是不可替代的社会属性。
2026-01-05 16:42:37
181
原创 go聊天室项目docker部署
💡 提示:在虚拟机内部,客户端使用 127.0.0.1 连接服务器是正确的。如果需要从外部访问,需要修改为虚拟机的公网IP。# 查看构建镜像中的文件。3. Docker 部署。
2025-12-24 21:17:05
188
原创 Linux基础命令
cp *.txt ttt3 把所有txt结尾的文件复制到ttt3目录中。tail -f -n 3 test2.txt 加上-f支持热更新。head -n 3 test2.txt 查看前三行数据。tail -n 3 test2.txt 显示后三行数据。cp test2.txt test.txt 复制文件。rm -r ttt3 删除ttt3目录下的所有文件。rm -rf ttt3 强制删除该目录下的所有文件。ls -A:展示所有文件排除点和点点。ls -a:展示所有包括隐藏文件。例如:which pwd。
2025-12-15 21:34:52
156
原创 go接受输入方式
Go语言接收输入的方法主要有:1)fmt.Scan系列适合简单变量读取,自动跳过空白但不支持空格;2)bufio.Reader可读取整行含空格,需手动处理换行符;3)bufio.Scanner更安全高效,适合逐行读取;4)os.Stdin.Read为底层字节操作。推荐:简单输入用fmt.Scan,整行读取首选bufio.Scanner,格式化输入用fmt.Scanf。各方法在保留换行、处理空格等方面有显著差异。
2025-12-06 21:22:08
406
1
原创 Go语言基础之并发
下面的表格中总结了对不同状态下的通道执行相应操作的结果。**注意:**对已经关闭的通道再执行 close 也会引发 panic。
2025-11-22 14:41:12
39
原创 go进阶学习
JSON是一种轻量级数据交换格式,特别有利于网络传输任何数据类型都可以用json来表示interface{}代表任意类型特点:channel本质就是一个数据结构队列数据是先进先出channel是线程安全的,多个协程访问时,不用加锁channel有类型的,一个string的channel只能存放string类型数据。
2025-11-15 14:36:58
1000
原创 go基础语法练习
/自定义数据类型const (差异:1,类型别名无法绑定方法 自定义类型可以2,类型别名的打印出来的类型还是原始类型3,类型别名与原始数据类型进行比较时,类型别名不用转换直接可以比较defer+recover机制处理错误//使用recover内置函数捕获错误//如果不等于nil则捕获错误 没有捕获到错误的话值默认值是零值:nilif err!= nil {fmt.Println("捕获到的错误是:", err)}()
2025-11-08 14:36:01
1635
原创 常见问题及解决思路:
本文摘要:文章围绕Java集合和Redis两大技术点展开。Java部分重点解析了HashMap的实现原理(哈希冲突处理、扩容机制、树化条件)、ArrayList与HashMap的fail-fast机制以及集合的深浅拷贝问题。Redis部分涵盖了数据结构、缓存雪崩/击穿解决方案、持久化机制、分布式锁实现(SETNX与Redisson对比)。MySQL优化部分则详细介绍了索引原理(B+树)、聚簇/非聚簇索引、SQL优化技巧(慢查询定位、覆盖索引)以及事务特性(ACID)的实现机制。全文通过技术点对比(如Hash
2025-07-16 22:15:20
432
原创 RabbitMQ
以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。用户创建订单后,如果耦合 调用库存系统、物流系统、支付系统,任何一个子系统出了故障,都会造成下单操作异常。当转变成基于消息队列的方式后,系统间调用的问题会减少很多,比如物流系统因为发生故障,需要几分钟来修复。在 这几分钟的时间里,物流系统要处理的内存被缓存在消息队列中,用户的下单操作可以正常完成。当物流 系统恢复后,继续处理订单信息即可,中单用户感受不到物流系统的故障,提升系统的可用性。
2025-05-10 09:44:24
921
原创 多线程(Thread):
即实例方法建议使用共享发法作为锁对象,对于实例方法建议使用this作为锁的对象。使用try -catch异常修饰,防止程序异常报错,导致锁永远被所住。对于静态方法建议使用字节码(类名.class)对象作为锁的对象。作用:把访问共享资源的核心方法给上锁,以此保证线程安全。非静态方法的话官方的锁建议锁共同资源“this”。将锁的对象创建在类的变量里面。该锁是一个接口不能直接创建对象的。线程1.join();线程2.join();线程3.join();
2024-11-15 22:11:41
480
1
原创 Redis
特点:单线程,安全性,每个命令具备原子性,value支持多种数据类型,功能丰富。低延迟,速度快(基于内存、IO多路复用、良好的编码)。
2024-10-29 22:38:53
274
原创 JDK11
Overview (Java SE 11 & JDK 11 ) (oracle.com)https://docs.oracle.com/en/java/javase/11/docs/api/index.html
2024-07-19 16:20:38
304
原创 linux操作系统
找到自己的虚拟 光盘映像文件,CentOs右键点击快照管理,可以维护虚拟机。输入ls查找linux系统和finalshell对比。
2024-07-18 10:01:13
316
原创 爬虫基础学习
豆瓣会检查是否为正常用户访问,若不是则禁止访问 没有请求头。# 模拟构造headers请求头信息 主要是一些浏览对象信息。# 爬虫学习 导入网络请求第三方模块。//返回unicode格式数据。//返回响应头部的字节编码。//返回完整的url地址。# 手动设置编码格式。
2024-06-27 20:59:21
866
原创 SpringBoot
1,基于idea自己创建2,基于SpringBoot官网创建3,基于将idea中SpringBoot官网改为阿里云网站创建4,使用maven工程仿建。
2024-05-19 11:29:11
3101
1
原创 常见的报错异常
SpringMVC的配置总配置了文件解析器,但相关的依赖并没有配置,ctrl+o查找某个类中中的所有方法,并实现重写。ctrl+H查找某个类(接口)的实现类。或依赖配置了但文件解析器并没有配置。
2024-05-05 22:15:02
147
原创 前端学习+SSM
Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串时的痛点问题。v-if v-else v-else-if:条件性的渲染莫元素,判定为true时渲染,否则不渲染。此时可以通过#{}和¥{}以任意的内容获取参数值,一定要注意${}的单引号问题。因此,只需要通过前面两种获取参数值的方式,访问集合的键,也可以获得相应的值。v-show:根据条件展示某元素,区别在于切换的是display属性的值。前者的本质是占位符赋值,后者的本质是字符串拼接。
2024-04-17 21:56:19
537
1
原创 MySQL基础
MySQL启动:net start mysql80客户端连接:MySQL自带的客户端连接打开终端:输入services.msc可打开MySQL。
2023-12-20 21:31:52
384
原创 Java高级
优点:可以灵活地编写测试代码,可以针对;也可支持一键完成全部方法的自动化测试,且各自独立。1.为需要的业务类,定义测试类,并为每个业务方法,编写对应的测试方法(必须是公共的无参的,无返回值的)。2.测试方法上必须声明@Test注解,然后再测试方法中,编写代码调用被测试类的业务方法进行测试。不需要程序员去分析测试的结果,会自动生成测试报告出来。4.开始测试:如果测试通过显示为绿色。
2023-12-13 16:37:34
454
1
原创 File-io
标准ASCLL字符集:中国:GBK(汉字内码扩展规范,国标)一个中文编码成两个字节的形式储存;字节开头是1数字,字母一个字节,开头是 0UTF-8汉字占三个字节,英文,数字占一个字节。
2023-12-12 19:17:05
458
原创 JDK8新特性
表达式只是调用一个实例方法,并且前面参数列表中的第一个参数是做为方法的主调,后面的所有参数都是作为该实例方法的入参的,则此时就可以使用特定的方法引用。3.如果Lambda表达式中的方法体代码只有一行代码,可以省略大括号大写,同时要省略分号!如果某个Lambda表达式离职时调用一个实例方法,并且前后参数形式一致,可以使用实例方法引用;表达式里只是在创造对象,并且前后参数情况一致,就可以使用构造器引用。2.如果只有一个参数,参数类型可以省略,同时()也可以省略。作用:用于简化匿名内部类的代码写法。
2023-11-29 17:47:20
389
1
原创 APISecond
public class OrderTest //地址ideastudents[0]=new Student("蜘蛛精",169.5,23);students[1]=new Student("至尊宝",167.5,24);students[2]=new Student("紫霞",163.8,26);students[3]=new Student("紫霞",163.8,26);@Override//降序});
2023-11-28 20:47:43
979
原创 API Object类
protected Object clone() 对象克隆//复制一个一模一样的对象返回@Overridereturn u2;//深克隆@Override} //浅克隆。
2023-11-25 09:48:42
873
原创 面向对象高级三
外部类有的内部类也有!!!是类的五大成分之一(成员变量,方法,构造器,内部类,代码块)就是一个类被定义在另一个类的内部有static修饰的内部类,属于外部类自己持有。System.out.println(schoolName);//System.out.println(age);//静态内部类和静态方法一样不能访问外部类的实例成员不可访问//静态内部类只能访问外部类的静态成员,不能直接访问外部类的实例成员。了解就好定义在方法中,代码块中,构造器中等执行体中。认识: 一种特殊的局部内部类;匿名:不用为
2023-11-22 19:29:21
97
原创 Static应用-代码块
子类构造器的特点:子类的全部构造器,都会先调用父类的构造器(一般优先选用无参构造器),在执行自己的。Object类是Java所有类的祖宗类 ,我们写任何一个类,其实都是Object的子类或子孙类。认识抽象类:在Java中abstact修饰类,这个类就叫抽象类,修饰方法,这个方法就叫抽象方法。3.一个类继承了父类,有继承了接口,父类中和接口中存在同名的默认方法,实现类会优先选择父类。特点:每次创建对象时,执行实例代码块,并在构造器前执行。System.out.println("===静态方法=====");
2023-11-16 19:18:04
218
1
原创 ATM系统/static叫静态,可以修饰成员变量,成员方法。
成员变量有无static分为类变量,属于类,在计算机里只有一份,会被类的全部对象共享。实例变量(对象变量)属于每个对象。Alt+Enter然后在Enter 直接得到方法。(先选中要产生方法的一行。startswith是得到开头字。* 1.创建一个账户类account,包含卡号,名字性别。* 在ATM系统中设计一个方法start()负责展示欢迎界面。* 2.定义个ATM类代表ATM系统,负责提供业务需求。* 3.定义一个TEST类,进行ATM系统的测试,* (系统欢迎页的设计)* (系统构架搭建)
2023-11-07 23:07:32
114
原创 Collection集合和Map集合
/最初打印的是list的地址,然后在根据地址找到list的内容。//得到的是要替换的元素。// if(ele.contains("枸杞")){list.add("java入门");list.add("宁夏枸杞");list.add("特级枸杞");list.add("黑枸杞");list.add("人字拖");list.add("枸杞子");list.add("黑马");list.add("黑马");
2023-11-04 08:29:21
147
1
原创 API的常见工具
/ if(okLoginName.equals(loginName)&&okPassWord.equals(password)) { //不能用双==好,那样比较的是两个代码的地址。//false.两个的地址是不一样的!System.out.println(info.replace("垃圾","**"));System.out.println(s4.startsWith("张"));
2023-11-02 21:17:16
148
1
原创 面向对象编程//(OOP)
System.out.println(name+"的平均成绩是"+(chinese+math)/2.0);System.out.println("数据非法");System.out.println(name+"的总成绩是"+(chinese+math));"成绩及格":"成绩不及格");System.out.println("对不起,你的成绩不合格。if(this.score>score){//可以解决两个score的冲突。(1)这个类的成员变量都要私有,并且要对外部提供相应的get/set方法。
2023-11-02 08:37:09
98
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅