- 博客(17)
- 收藏
- 关注
原创 MySQL底层知识总结
MySQL日志与SQL优化摘要 MySQL日志系统包含多种日志类型:undo log记录数据变更用于事务回滚和MVCC;redo log保证事务持久性,采用顺序IO提升性能;binlog用于主从复制和数据恢复,通过两阶段提交与redo log保持一致性。慢查询日志可帮助识别执行时间过长的SQL。 SQL优化核心原则是减少数据扫描和快速返回结果,常用方法包括: 合理使用索引(覆盖索引、最左前缀原则) 分页优化(延迟关联、书签法) 避免SELECT * 用JOIN替代子查询 小表驱动大表 排序优化(添加索引、调
2026-06-10 23:33:54
859
原创 AI应用开发常见面试题总结
提示词是⽤户或系统提供给⼤语⾔模型 (LLM) 的指令或⽂本, ⽤于引导模型⽣成特定输出。(1)Token(词元)概念:Token(词元)是⼤语⾔模型 (LLM) 处理⽂本时的最⼩语义单位。是将⽂本拆解为模型可理解的离散单元.(不是字,也不是单词)Token(词元)通过⼤语⾔模型的分词器将⽂本拆分⽽来, 不同模型的分词器不同, 同⼀个词在不同模型中可能被拆分成不同的Token。
2026-06-01 10:08:34
1092
原创 Redis学习总结
Redis官方站提出了一种权威的基于Redis实现分布式锁的方式名叫Redlock,此种方式比原先的单节点的方法更安全。它可以保证以下特性:(1)安全特性:互斥访问,即永远只有一个client能拿到锁(2)避免死锁:最终client都可能拿到锁,不会出现死锁的情况,即使原本锁住某资源的 client挂掉了(3)容错性:只要大部分Redis节点存活就可以正常提供服务这样做的好处是,父进程有任何写操作,并不会影响子进程的数据持久化。
2026-05-25 16:26:42
1169
原创 死锁的知识总结
本文分析了MySQL中三种常见的死锁场景及解决方案:1)批量行锁死锁,由事务执行顺序不一致引发,可通过IN语句统一加锁顺序解决;2)间隙锁死锁,因间隙锁与插入意向锁互斥导致,建议改用普通查询或分布式锁;3)普通索引回表死锁,发生在回表操作过程中。此外还介绍了索引合并优化技术及其可能引发的死锁情况。针对每种死锁类型,文章提供了具体案例分析和解决方案,包括调整SQL写法、改变锁策略和使用分布式锁等方法。
2026-05-19 03:07:16
1171
原创 java并发编程知识(锁)
ABA问题指的是,一个值原来是A,后来被改为B,再后来又被改回A,这时CAS会误认为这个值没有发生变化。线程 1:CAS(A → B),修改变量 A → B线程 2:CAS(B → A),变量又变回 A线程 3:CAS(A → C),CAS 成功,但实际数据已被修改过!可以使用版本号/时间戳的方式来解决ABA问题。比如说,每次变量更新时,不仅更新变量的值,还更新一个版本号。CAS操作时,不仅比较变量的值,还比较版本号。
2026-04-23 01:01:14
614
原创 MySQL事务知识复习
读已提交避免了脏读,但可能会出现不可重复读,即同一事务内多次读取同一数据结果会不同,因为其他事务提交的修改,对当前事务是可见的。是 Oracle、SQL Server 等数据库的默认隔离级别。可重复读能确保同一事务内多次读取相同数据的结果一致,即使其他事务已提交修改。是 MySQL 默认的隔离级别,避免了“脏读”和“不可重复读”,通过 MVCC 和临键锁也能在一定程度上避免幻读。--返回500COMMIT;-- Session A再次查询:--仍返回500(可重复读)
2026-04-05 01:04:28
883
原创 MySQL锁知识复习
MySQL锁机制详解 MySQL锁主要分为全局锁、表锁和行锁三种粒度。全局锁(FLUSH TABLES WITH READ LOCK)用于全库备份时保证数据一致性;表锁分为共享锁(READ)和排他锁(WRITE),适用于MyISAM引擎或整表操作;行锁是InnoDB最细粒度的锁,包括记录锁(锁定单行)、间隙锁(防止幻读)和临键锁(组合锁)。意向锁作为表级辅助锁,能快速判断表锁冲突。使用时需注意:索引条件避免锁升级为表锁,范围查询自动触发间隙锁,非唯一索引查询会加临键锁。不同锁的配合使用在保证事务隔离性的同时
2026-04-02 23:40:28
605
原创 JavaSE进阶知识复习
反射允许对封装类的字段,成员方法和构造方法的信息进行编程访问。使用enum关键字定义枚举类型,常量名通常全大写,用逗号分隔。特点:①枚举常量是public static final的,直接通过枚举名访问:Season.SPRING。②每个枚举常量都是该枚举类型的一个实例。
2026-04-01 20:39:03
1171
原创 JavaSE知识复习
本文总结了JavaSE的核心知识点,主要包括: Java基础:JDK与JRE的区别、数据类型、main方法作用、输入输出、值传递与引用传递的区别、运算符和循环结构的使用场景。 面向对象:封装继承多态的特性、抽象类与接口区别、final/static关键字作用、重载与重写规则、异常处理机制。 核心API:String不可变设计原理、StringBuilder/StringBuffer区别、字符串常量池机制。 其他要点:浮点数精度问题、==与equals区别、深浅拷贝实现方式。 文章通过代码示例和对比表格,系统
2026-03-31 23:25:05
690
原创 MySQL索引知识复习
最左前缀原则指的是:MySQL使用联合索引时,必须从最左边的字段开始匹配,才能命中索引。如果SQL语句中用到了组合索引中的最左边的索引,那么这条SQL语句就可以利用这个组合索引去进行匹配。当遇到范围查询(>、<、between、like)就会停止匹配,后面的字段不会用到索引。这里用一个表格结合联合索引来帮助理解什么是最左前缀原则:假设一个联合索引为(A,B,C)。查询条件是否触发索引说明能触发索引使用索引的第一列能触发索引使用索引的前两列能触发索引使用索引的前三列不能触发索引。
2026-02-08 23:29:09
864
原创 MySQL的基础知识(二)-----分组查询&约束
在上一章大概讲了一部分关于分组查询的知识,这一章再详细的讲解部分。根据源表的结构,快速创建一张表结构一样的新表。
2025-01-24 16:18:19
1268
1
原创 MySQL的基础知识-----超详细版(一)
什么是SQL:SQL是结构化查询语言的简介,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库。SQL分类:DDL:数据定义语⾔,⽤来维护存储数据的结构代表指令: create, drop, alter。DML:数据操纵语⾔,⽤来对数据进⾏操作代表指令: insert,delete,update,select。DCL:数据控制语⾔,主要负责权限管理和事务代表指令: grant,revoke,commit。存储引擎就是用来处理数据的。#查看数据库。
2025-01-19 00:04:03
1004
1
原创 Java基础知识-------String类(超级详细)
由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。这两个类大 部分功能是相同的,这里介绍 StringBuilder常用的一些方法,其它需要用到了大家可参阅StringBuilder的在线文档。方法说明在尾部追加,相当于String的+=,可以追加:boolean、char、char[]、 double、float、int、long、Object、String、StringBuff的变量获取index位置的字符获取字符串的长度。
2024-12-06 03:10:34
1237
1
原创 Java基础知识------抽象类、接口(超级详细)
/ 报错提示 Class 'cat' must either be declared abstract or implement abstract method 'method()' in 'Animal';//这个时候该代码就不会报错(因为此处重写了父类的抽象方法)//这个时候改代码也不会报错(因为此处子类和父类一样是抽象类方法)// 报错警告 此处不允许使用修饰符private。
2024-12-06 00:10:50
1292
1
原创 Java——多态的基础知识
例如:若干年前的手机,只能打电话,发短信,来电显示只能显示号码,而今天的手机在来电显示的时候,不仅仅可以显示号码,还可以显示头像,地区等。圈复杂度是一种描述一段代码复杂程度的方式.一段代码如果平铺直叙,那么就比较简单容易理解.而如果有很多的条件分支或者循环语句,就认为理解起来更复杂.因此我们可以简单粗暴的计算一段代码中条件语句和循环语句出现的个数,这个个数就称为"圈复杂度".如果一个方法的圈复杂度太高,就需要考虑重构.不同公司对于代码的圈复杂度的规范不一样.一般不会超过10.重写的概念:也称为覆盖。
2024-10-10 21:42:26
1437
1
原创 Java基础知识——继承的基础知识(超级详细)
(子类优先访问)方法的执行规则也是一样。继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加新功能,这样产生新的类,称派生类。Java中使用类对现实世界中实体来进行描述,类经过实例化之后的产物对象,则可以用来表示现实中的实体,但是现实世界错综复杂,事物之间可能会存在一些关联,那在设计程序是就需要考虑。然后我们又看,通过这样封装的方式将会更加好的去理解代码,不用再写很多重复的代码,极大的提高了代码的可读性,让代码更加精炼。
2024-10-10 00:56:54
2155
1
原创 Java-----类与对象、封装的基础知识(超详细讲解)
我们用一个形象的比喻,类就相当于是建楼的图纸,而对象就是一座座建好的高楼,用一张图纸可以建起多座楼层。类是描述对象的,对象是一个真正存在的一个实体。定义了一个类,就相当于在计算机中定义了一种新的类型,与int、double类似,不过int和double是Java语言自带的内置类型,而类是用户自己定义的一个新的类型,比如上面的student便是一个学生类,有了这些类之后便可以用这些类来定义实例。用类类型创建对象的过程,称为类的实例化。1、使用new关键字来实例化对象.2、使用new关键字1可以实例化多个对象。
2024-09-29 00:13:13
1978
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅