- 博客(1085)
- 资源 (14)
- 问答 (4)
- 收藏
- 关注

原创 学习总结.
Java 内容聚合分布式、微服务内容聚合C/C++ 内容集合Linux 内容聚合前端内容聚合网络内容聚合数据库内容聚合Docker内容聚合Git 内容聚合IntelliJIDEA 内容聚合Windows 内容聚合资源
2021-05-06 22:59:04
462
原创 Java使用Hibernate-Validator验证API接口参数
Target({/*** 是否必填 默认是必填的* @return/*** 验证失败的消息* @return*/ String message() default "枚举的验证失败";/*** 分组的内容* @return*/ Class
2023-04-27 16:26:14
43
1
原创 Java 终止线程的几种方式
一般run()方法执行完,线程就会正常结束,然而,常常有些线程是伺服线程。他们需要长时间的运行,只有在外部某些条件满足的情况下,才能关闭这些线程。我们可以直接使用thread.stop()来强行终止线程,但是stop()方法是很危险的,就想突然关闭电源一样。所谓正常运行结束,就是程序正常运行结束,线程自动结束。
2023-04-06 10:08:15
966
1
原创 IDEA设置todo快捷键
6.在编辑器内,输入td,然后按下tab键,则会出现你自己设置todo的内容模板。4.user–点击右上角添加。5.添加命名和描述后点击ok。1.打开setting。
2023-04-03 11:36:13
246
原创 SpringBoot IOC初始化流程
11、根据用户是否明确设置了applicationContextClass 类型以及初始化阶段的推断结果,决定该为当前 SpringBoot 应用创建什么类型的 ApplicationContext 并创建完成,然后根据条件决定是否添加 ShutdownHook,决定是否使用自定义的 BeanNameGenerator,决定是否使用自定义的 ResourceLoader,当然,最重要的,将之前准备好的 Environment 设置给创建好的 ApplicationContext 使用。
2023-02-07 16:27:14
192
原创 Spring 事务管理
一、声明式事务声明式事务实现方式主要有2种,一种为通过使用Spring的定义事务通知与AOP相关配置实现,另为一种通过实现事务管理实现。
2023-02-01 15:59:54
145
原创 Vue.js 事件处理器
一、Vue.js 事件处理器事件监听可以使用 v-on 指令:<div id="app"> <button v-on:click="counter += 1">增加 1</button> <p>这个按钮被点击了 {{ counter }} 次。</p></div> <script>new Vue({ el: '#app', data: { counter: 0 }})</
2022-12-19 17:07:59
250
原创 MySQL 的主从复制
10.1、MySQL主从复制的原理:Slave从Master获取binlog二进制日志文件,然后再将日志文件解析成相应的SQL语句在从服务器上重新执行一遍主服务器的操作,通过这种方式来保证数据的一致性。由于主从复制的过程是异步复制的,因此Slave和Master之间的数据有可能存在延迟的现象,只能保证数据最终的一致性。在master和slave之间实现整个复制过程主要由三个线程来完成:(1)Slave SQL thread线程:创建用于读取relay log中继日志并执行日志中包含的更新,位于slav
2022-12-19 16:35:44
388
原创 MySql 分区
分区就是将表的数据按照特定规则存放在不同的区域,也就是将表的数据文件分割成多个小块,在查询数据的时候,只要知道数据数据存储在哪些区域,然后直接在对应的区域进行查询,不需要对表数据进行全部的查询,提高查询的性能。同时,如果表数据特别大,一个磁盘磁盘放不下时,我们也可以将数据分配到不同的磁盘去,解决存储瓶颈的问题,利用多个磁盘,也能够提高磁盘的IO效率,提高数据库的性能。在使用分区表时,需要注意分区字段必须放在主键或者唯一索引中、每个表最大分区数为1024;常见的分区类型有:Range分区、List分区、Has
2022-12-19 16:34:07
56
原创 MySQL 索引的实现原理
索引本质上就是一种通过减少查询需要遍历行数,加快查询性能的数据结构,避免数据库进行全表扫描,好比书的目录,让你更快的找到内容。(一个表最多16个索引)6.1、索引的优缺点:(1)索引的优点:减少查询需要检索的行数,加快查询速度,避免进行全表扫描,这也是创建索引的最主要的原因。如果索引的数据结构是B+树,在使用分组和排序时,可以显著减少查询中分组和排序的时间。通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。(2)索引的缺点:当对表中的数据进行增加、删除和修改时,索引也要进行更新,
2022-12-15 23:31:25
317
原创 MySql 主键一般用自增ID还是UUID
14、主键一般用自增ID还是UUID?(1)自增ID:使用自增ID的好处:字段长度较 UUID 会小很多。数据库自动编号,按顺序存放,利于检索无需担心主键重复问题使用自增ID的缺点:因为是自增,在某些业务场景下,容易被其他人查到业务量。发生数据迁移时,或者表合并时会非常麻烦在高并发的场景下,竞争自增锁会降低数据库的吞吐能力(2)UUID:通用唯一标识码,UUID是基于当前时间、计数器和硬件标识等数据计算生成的。使用UUID的优点:唯一标识,不用考虑重复问题,在数据拆分
2022-12-15 23:30:11
2120
原创 MySql 分库分表:垂直分表、垂直分库、水平分表、水平分库
读写分离解决的是数据库读写操作的压力,但是没有分散数据库的存储压力,利用分库分表可以解决数据库的储存瓶颈,并提升数据库的查询效率。12.1、垂直拆分:(1)垂直分表:将一个表按照字段分成多个表,每个表存储其中一部分字段。一般会将常用的字段放到一个表中,将不常用的字段放到另一个表中。优点:(1)避免IO竞争减少锁表的概率。因为大的字段效率更低,第一,大字段占用的空间更大,单页内存储的行数变少,会使得IO操作增多;第二数据量大,需要的读取时间长。(2)可以更好地提升热门数据的查询效率。(2)
2022-12-15 23:29:41
1110
原创 MySql 读写分离
11.1、实现原理:读写分离解决的是,数据库的写操作,影响了查询的效率,适用于读远大于写的场景。读写分离的实现基础是主从复制,主数据库利用主从复制将自身数据的改变同步到从数据库集群中,然后主数据库负责处理写操作(当然也可以执行读操作),从数据库负责处理读操作,不能执行写操作。并可以根据压力情况,部署多个从数据库提高读操作的速度,减少主数据库的压力,提高系统总体的性能。11.2、读写分离提高性能的原因:(1)增加物理服务器,负荷分摊;(2)主从只负责各自的写和读,极大程度的缓解X锁和S锁争用;(3
2022-12-15 23:28:27
72
原创 MySql explain
执行计划是SQL语句经过查询分析器后得到的 抽象语法树 和 相关表的统计信息 作出的一个查询方案,这个方案是由查询优化器自动分析产生的。由于是动态数据采样统计分析出来的结果,所以可能会存在分析错误的情况,也就是存在执行计划并不是最优的情况。通过explain关键字知道MySQL是如何执行SQL查询语句的,分析select 语句的性能瓶颈,从而改进我们的查询,explain的结果如下:重要的有id、type、key、key_len、rows、extra:(1)id:id列可以理解为SQL执行顺序的标识,
2022-12-15 23:27:09
133
原创 MySql 数据库中的锁机制
当数据库中多个事务并发存取同一数据的时候,若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。MySQL锁机制的基本工作原理就是,事务在修改数据库之前,需要先获得相应的锁,获得锁的事务才可以修改数据;在该事务操作期间,这部分的数据是锁定,其他事务如果需要修改数据,需要等待当前事务提交或回滚后释放锁。按照不同的分类方式,锁的种类可以分为以下几种:按锁的粒度划分:表级锁、行级锁、页级锁;按锁的类型划分:共享(锁S锁)、排他锁(X锁);按锁的使用策略划分:乐观锁、悲观锁;5.1、
2022-12-15 23:24:55
172
原创 MySql SQL语句的执行过程
2.1、客户端的数据库驱动与数据库连接池:(1)客户端与数据库进行通信前,通过数据库驱动与MySQL建立连接,建立完成之后,就发送SQL语句(2)为了减少频繁创建和销毁连接造成系统性能的下降,通过数据库连接池维护一定数量的连接线程,当需要进行连接时,就直接从连接池中获取,使用完毕之后,再归还给连接池。常见的数据库连接池有 Druid、C3P0、DBCP2.2、MySQL架构的Server层的执行过程:(1)连接器:主要负责跟客户端建立连接、获取权限、维持和管理连接(2)查询缓存:优先在缓存中进行查
2022-12-15 23:23:16
257
原创 MySql 事务的ACID与实现原理
数据库的事务是并发控制的基本单位,是指逻辑上的一组操作,要么全部执行,要么全部不执行。4.1、事务的ACID:(1)原子性:事务是一个不可分割的工作单元,事务里的操作要么都成功,要么都失败,如果事务执行失败,则需要进行回滚。(2)隔离性:事务的所操作的数据在提交之前,对其他事务的可见程度。(3)持久性:一旦事务提交,它对数据库中数据的改变就是永久的。(4)一致性:事务不能破坏数据的完整性和业务的一致性。例如在转账时,不管事务成功还是失败,双方钱的总额不变。4.2、ACID的实现原理:原
2022-12-15 23:22:04
277
原创 MySql InnoDB与MyISAM的区别
常用的存储引擎?InnoDB与MyISAM的区别?存储引擎是对底层物理数据执行实际操作的组件,为Server服务层提供各种操作数据的API。常用的存储引擎有InnoDB、MyISAM、Memory。这里我们主要介绍InnoDB 与 MyISAM 的区别:(1)事务:MyISAM不支持事务,InnoDB支持事务(2)锁级别:MyISAM只支持表级锁,InnoDB支持行级锁和表级锁,默认使用行级锁,但是行锁只有通过索引查询数据才会使用,否则将使用表锁。行级锁在每次获取锁和释放锁的操作需要消耗比表锁更多
2022-12-15 23:20:33
514
原创 MySql 数据库的常用范式
数据库的常用范式:第一范式(1NF):指表的列不可再分,数据库中表的每一列都是不可分割的基本数据项,同一列中不能有多个值;第二范式(2NF):在 1NF 的基础上,还包含两部分的内容:一是表必须有一个主键;二是表中非主键列必须完全依赖于主键,不能只依赖于主键的一部分;第三范式(3NF):在 2NF 的基础上,消除非主键列对主键的传递依赖,非主键列必须直接依赖于主键。BC范式(BCNF):在 3NF 的基础上,消除主属性对于码部分的传递依赖...
2022-12-15 23:17:49
158
原创 MyBatis 分页方式
RowBounds 表面是在“所有”数据中检索数据,其实并非是一次性查询出所有数据,因为 MyBatis 是对 jdbc 的封装,在 jdbc 驱动中有一个 Fetch Size 的配置,它规定了每次最多从数据库查询多少条数据,假如你要查询更多数据,它会在你执行 next()的时候,去查询更多的数据。逻辑分页是一次性查询很多数据,然后再在结果中检索分页的数据。物理分页是从数据库查询指定条数的数据,弥补了一次性全部查出的所有数据的种种缺点,比如需要大量的内存,对数据库查询压力较大等问题。
2022-10-25 10:00:48
1000
原创 MyBatis 执行器(Executor)
八、MyBatis 有哪些执行器(Executor)?MyBatis 有三种基本的Executor执行器:SimpleExecutor:每执行一次 update 或 select 就开启一个 Statement 对象,用完立刻关闭 Statement 对象;ReuseExecutor:执行 update 或 select,以 SQL 作为 key 查找 Statement 对象,存在就使用,不存在就创建,用完后不关闭 Statement 对象,而是放置于 Map 内供下一次使用。简言之,就是重
2022-10-24 11:56:47
406
原创 MyBatis 自定义插件
7、简述Mybatis的插件运行原理,以及如何编写一个插件。答:Mybatis仅可以编写针对ParameterHandler、ResultSetHandler、StatementHandler、Executor这4种接口的插件,Mybatis使用JDK的动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这4种接口对象的方法时,就会进入拦截方法,具体就是InvocationHandler的invoke()方法,当然,只会拦截那些你指定需要拦截的方法。编写插件:实现Mybatis的Int
2022-10-24 10:38:01
1773
原创 MyBatis 解决实体类中的属性名和表中的字段名不一样
第1种: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致。 <select id=”selectorder” parametertype=”int” resultetype=”me.gacl.domain.order”> select order_id id, order_no orderno ,order_price price form orders where order_id=#{id}; </select>.
2022-10-20 15:58:25
221
原创 MyBatis 接口绑定
22、什么是MyBatis的接口绑定?有哪些实现方式?接口绑定,就是在MyBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定, 我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置。接口绑定有两种实现方式,一种是通过注解绑定,就是在接口的方法上面加上 @Select、@Update等注解,里面包含Sql语句来绑定;另外一种就是通过xml里面写SQL来绑定, 在这种情况下,要指定xml映射文件里面的namespace必须为接口的全路径名。当Sq
2022-10-20 15:42:07
492
原创 MyBatis 一级缓存和二级缓存
9、Mybatis的一级、二级缓存:(1)一级缓存: 基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓存。(2)二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap 存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级
2022-10-20 09:56:17
563
原创 MyBatis 内容聚合
+ [MyBatis #{}和${}的区别是什么](https://blog.csdn.net/qq_27870421/article/details/120734364)+ [MyBatis 入门](https://blog.csdn.net/qq_27870421/article/details/101392166)+ [MyBatis 处理xml中的特殊字符](https://blog.csdn.net/qq_27870421/article/details/102452861)+ [MyBat
2022-10-19 17:37:10
218
原创 MyBatis #{}和${}的区别是什么
1、#{}和${}的区别是什么?${}是字符串替换,#{}是预处理;Mybatis在处理时,就是把{}时,就是把时,就是把{}直接替换成变量的值。而Mybatis在处理#{}时,会对sql语句进行预处理,将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;使用#{}可以有效的防止SQL注入,提高系统安全性。...
2022-10-19 17:25:35
92
sqlyog.rar
2019-10-11
mysql__5.5.rar
2019-09-25
makefile.zip
2019-08-28
CMake中文手册.rar
2019-08-17
Git教程By廖雪峰.rar
2019-07-30
GifCam.rar
2019-07-29
Git-2.22.0-64-bit.rar
2019-07-29
MobaXterm.rar
2019-07-07
Mybatis指南
2019-02-28
ASM4使用指南
2019-02-23
Postman-win64-7.3.4-Setup.rar
2008-08-15
这是个什么类型的工程
2016-06-24
jsp出现文号错误,如下图
2016-03-06
ImageIO.read如何解决内存溢出
2016-02-22
java树的节点事件里调用repaint方法 不能实现重绘
2016-02-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人