- 博客(414)
- 资源 (10)
- 收藏
- 关注
原创 MySQL分页查询慢的原因及解决方案
我们在开发的过程中使用分页是不可避免的,通常情况下我们的做法是使用 limit 加偏移量:select * from table where column=xxx order by xxx limit 1,20。但是,当数据量大的时候(小编遇到的情况是 500 万数据),如果翻到最后几页,即使加了索引,查询也是非常慢的,这是什么原因导致的呢?但是我们查看前几页的时候,速度并不慢。解决的方法就是尽量使用索引覆盖扫描,就是我们 select 后面检出的是索引列,而不是所有的列,而且这个索引的列最好是 id。
2024-12-17 10:48:55
491
原创 oracle如何查询死锁
3)如果还不能解决:2)kill掉这个死锁的进程:alter system kill session ‘sid,serial#’;Username:死锁语句所用的数据库用户;如果有输出的结果,则说明有死锁,且能看到死锁的机器是哪一台。2)用dba用户执行以下语句,可以查看到被死锁的语句。Lockwait:死锁的状态,如果有内容表示被死锁。Program: 产生死锁的语句主要来自哪个应用程序。Status: 状态,active表示被死锁。Machine: 死锁语句所在的机器。1)用dba用户执行以下语句。
2024-12-17 10:10:54
1537
转载 explain查看sql执行计划
如果此列是NULL,则没有相关的索引。关键字,就能够看到它的执行计划,通过执行计划,我们可以清楚的看到表和索引执行的情况,索引有没有执行、索引执行顺序和索引的类型等。这里建立的是code和name的联合索引,顺序是code在前,name在后,这里直接按name降序,跟之前联合索引的顺序不一样。该字段包含有关MySQL如何解析查询的其他信息,这列还是挺重要的,但是里面包含的值太多,就不一一介绍了,只列举几个常见的。我们看到表t1命中的索引是const(常量),而t2命中的索引是列sue库的t1表的id字段。
2024-12-17 10:07:54
374
转载 Spring事务@Transactional常见的8种失效场景(通俗易懂)
在Spring的Aop代理下,只有目标方法在外部进行调用,目标方法才会由Spring生成的代理对象来进行管理,如果是其他不包含@Transactional注解的方法中调用包含@Transactional注解的方法时候,有@Transactional注解的方法的事务会被忽略,则不会发生回滚。这是因为@Async注解使用的是独立线程和独立的事务,和notice的不处于同一个事务当中,所以notice回滚了,但是history入库了。虽然程序当中抛出了异常,但是数据库还是成功入库了,这样显然是不合理的!
2024-12-17 09:58:31
486
原创 Spring boot 线程池使用——事务处理机制
所以,在spring boot线程池使用时,给@Async方法加@transactional是一种比较方便的处理方式。除此之外,将事务主体作为单独对象调用,也可以保证事务生效。异步方法在没有事务注解的情况下,去调用通过@Autowired注入的有事务注解的其他对象方法时,事务是生效的(即表格第三列倒数第二行结论)。图中表示的是用@Async注解修饰的异步方法,在各种场景下的事务表现。其背后的原理是,AOP的动态代理生成的代理对象和当前对象的区别。异步任务中,事务也是很关键的一部分。
2024-12-17 09:42:43
206
转载 Spring三级缓存解决循环依赖
肯定是有一些缺陷的。比如,可能AService会进行AOP操作,会创建AServiceProxy代理对象,然后将代理对象放入单例池中,但是BService进行属性赋值 依赖注入的时候是把AService的普通对象进行赋值,所以这里是有问题的,应该是赋值AServiceProxy代理对象。可以引入一个map来解决循环依赖问题,在创建AService普通对象的时候,将这个普通对象存入map中,然后在BService创建的生命周期中进行依赖注入时,如果在单例池中没有找到AService对象就去map中找。
2024-12-16 17:15:24
41
转载 java特殊字符转义处理:特殊字符转义及解决方法
需要注意的是,在实际应用程序开发中,我们需要根据具体的需求进行 URL 转义,特别是在进行网络请求时,我们需要将请求参数进行转义,以避免出现解析错误或安全问题。同时,我们还需要注意 URL 编码和 URL 路径编码的区别,前者会对所有的字符进行编码,而后者只会对路径中的字符进行编码。问题:在 HTTP GET 请求中,如果参数中包含特殊字符(如空格、+、&、/、% 等),需要对其进行转义,否则在服务端解析时会出现错误。空格:空格可以使用 %20 或者 + 进行转义,建议使用 %20。
2024-12-16 16:36:31
2713
转载 一文搞懂什么是RESTful API
在具体构建RESTful API的时候,需要对各种请求有更细致的认知,当然,本案例在实现各种请求的时候为了演示的便捷并没有完全遵循RESTful API规范,例如版本号等信息这里就不添加了,案例更侧重于使用SpringBoot实现这个接口。到这里RESTful API的介绍和实战就结束啦,本篇首先从RESTful的一些特点进行介绍,再到SpringBoot实战RESTful API,最后也说了一些RESTful API并不完美的地方,相信睿智的你对RESTful 一定有了很深刻的理解。
2024-12-16 16:31:37
1225
转载 Spring Boot如何在项目启动成功后执行一段初始化逻辑
文章目录背景说明一、入门级:启动main方法中添加初始化逻辑二、黄金级:实现ApplicationRunner或CommandLineRunner接口三、大神级:ApplicationListener监听启动完成事件背景说明在我们使用Spring Boot进行项目开发时,偶尔会遇到在Spring Boot项目启动完成后需要执行一些初始化的逻辑,比如缓存预加载,数据库初始化等。那么这种需求我们需要怎么实现呢?本文将提供3种方法供大家参考。
2024-12-16 16:26:28
57
原创 Mysql出现死锁原因
1)在采用INNODB的MySQL中,更新操作默认会加行级锁,行级锁是基于索引的,在分析死锁之前需要查询一下mysql的执行计划,看看是否用到了索引,用到了哪个索引,对于没有用索引的操作会采用表级锁。在并发度高的应用中,批量更新一定要带上记录的主键,优先获取主键上的锁,这样可以减少死锁的发生。2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。比如A向B转账,不可能A扣了钱,B却没收到。1.生产环境出现以下报错。
2024-12-16 16:14:13
664
原创 问题排查 - MYSQL 事务死锁问题
先 SELECT id WHERE … LIKE … LIMIT N,然后再使用 DELETE / UPDATE … IN (ids) 去做。
2024-12-16 16:06:41
1019
原创 SpringBoot——加载配置文件顺序和类型
可以使用@PropertySource标签指定自定义的配置文件名称和路径;(默认能加载到的配置文件也会先被加载)通常只会用到设置配置文件的名字,并且配置文件的名字可以随便定义,可以叫xxxx.properties、a.txt、b.abc等等,但是内容格式需要跟.properties一致,即kv格式,所以不能直接加载yml格式的配置文件;
2024-12-16 15:28:25
1420
原创 SpringCloud中的bootstrap配置
这节的案例中是配置一个Provider,一个eureka,他们的配置统一在github上获取,实现统一配置分布式管理和多环境变更,这个才比较有实战意义。编写controller,此步骤也比较关键,主要是利用@Value注解赋值,若写错了bootstrap.yml中的配置文件名称而没有获取到配置,启动时这里会抛出异常。先写好provider和Eureka的配置yml文件,这两个文件和平常配置没什么不同,因为这里主要是说config,所以就没有配置集群,上传yml到github。
2024-12-16 15:17:50
1386
原创 Java基础---BigSet
BitSet是位操作的对象,值只有0或1即false和true,内部维护了一个long数组,初始只有一个long,所以BitSet最小的size是64,当随着存储的元素越来越多,BitSet内部会动态扩充,最终内部是由N个long来存储,这些针对操作都是透明的。可以看到,如果指定的bit不存在的话,返回的是false,即没有设置。wordsInUse 是检查当前的long数组中,实际使用的long的个数,即long[wordsInUse-1]是当前最后一个存储有有效bit的long。
2024-12-16 15:05:24
914
原创 springcloud中的LoadBalancerClient 负载策略原理
LoadBalancerClient先从提供的服务中获取某一个实例(默认策略为轮询),比如订单服务需要访问商品服务,商品服务有3个节点,LoadBalancerClient会通过choose(),方法获取到3个节点中的一个服务,拿到服务的信息之后取出服务ip信息,就可以得到完成的想要访问的ip地址和接口,最后通过RestTempate访问商品服务。进入ServiceInstanceChooser接口中,可以看到主要的方法为choose(),这是是用来根据服务的名称,获取来选择其中一个服务实例。
2024-12-16 14:48:03
629
原创 Mysql int(11)和Oracles nubmer(11) 的区别
Mysql int(11)和Oracles nubmer(11) 的区别
2022-12-08 15:17:41
1683
转载 Invalid bound statement (not found) 解决办法汇总
Invalid bound statement (not found) 解决办法汇总
2022-11-30 10:18:15
3261
转载 java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.String
java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.String 问题解决
2022-11-03 15:44:45
822
1
原创 SpringBoot-内嵌Tomcat源码剖析
Spring Boot 默认支持 Tomcat , Jetty ,和 Undertow 作为底层容器。而 Spring Boot 默认使用 Tomcat ,一旦引入 spring-boot-starter-web 模块,就默认使用 Tomcat 容器。
2022-10-24 17:39:28
736
转载 Linux中启动Docker容器报错:Error response from daemon: driver failed programming external connectivity
Linux中启动Docker容器报错:Error response from daemon: driver failed programming external connectivity
2022-10-13 15:59:03
538
原创 java.lang.IllegalStateException: getAttribute: Session already invalidated 会话失效 异常解决
java.lang.IllegalStateException: getAttribute: Session already invalidated 会话失效 异常解决
2022-10-13 14:12:51
4530
原创 Nginx解决配置SSL证书报错:nginx: [emerg] unknown directive “ssl_certificate1“ in /usr/local/nginx/conf/ngi...
Nginx解决配置SSL证书报错:nginx: [emerg] unknown directive "ssl_certificate1" in /usr/local/nginx/conf/ngi...
2022-10-12 16:09:56
10105
4
原创 深入了解Nginx底层
Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。Nginx有自己的函数库,并且除了zlib、PCRE和OpenSSL之外,标准模块只使用系统C库函数。而且,如果不需要或者考虑到潜在的授权冲突,可以不使用这些第三方库
2022-10-12 16:03:49
24
原创 Dbeaver导出异常:Utility ‘mysqldump.exe‘ not found in client home
Dbeaver导出异常:Utility 'mysqldump.exe' not found in client home
2022-10-11 10:10:07
2626
转载 CMS几种GC模式解读
正常情况下触发Backgroud模式的CMS GC,这是并发模式收集,对业务影响很小,你好我好都好。当并发模式搞不定了,就会退化成Foreground模式,这个回收过程业务线程是不可用的,这时候就触发了FullGC。接下来根据上面提到的两个参数决定是否采用MSC算法压缩堆。CMSFullGCsBeforeCompaction决定多少次FullGC后压缩堆,具体配置多大,由你决定,但是不建议太大,否则在采用MSC算法压缩堆之前,由于内存碎片的问题,导致出现promotion failure,总之这是tr
2022-10-11 10:09:17
534
原创 -XX:CMSInitiatingOccupancyFraction
-XX:CMSInitiatingOccupancyFraction=70CMS垃圾收集器,当老年代达到70%时,触发CMS垃圾回收。
2022-10-11 10:09:05
796
原创 GC参数解析 UseSerialGC、UseParNewGC、UseParallelGC、UseConcMarkSweepGC
GC参数解析 UseSerialGC、UseParNewGC、UseParallelGC、UseConcMarkSweepGC
2022-10-11 10:08:49
1404
postman4.8.3版本
2018-10-18
学习构建SSM框架(SpringMVC+Spring+Mybatis)需要的jar包
2018-10-10
xssProject 所需的三个 jar 包
2018-09-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人