背景 mysql分页查询是我们常见的需求,但是随着页数的增加查询性能会逐渐下降,尤其是到深度分页的情况。我们可以把分页分为两个步骤: 定位偏移量 获取分页条数的数据 所以当数据较大页数较深时就涉及一次需要耗费较长时间的操作。所以mysql深度分页的问题该如何解决呢? 首先我们来看一个简单的查询: SELECT * FROM events WHERE date > '2010-01-01T00:00:00-00:00' AND event = 'editstart' OR…
背景 mysql分页查询是我们常见的需求,但是随着页数的增加查询性能会逐渐下降,尤其是到深度分页的情况。我们可以把分页分为两个步骤: 定位偏移量 获取分页条数的数据 所以当数据较大页数较深时就涉及一次需要耗费较长时间的操作。所以mysql深度分页的问题该如何解决呢? 首先我们来看一个简单的查询: SELECT * FROM events WHERE date > '2010-01-01T00:00:00-00:00' AND event = 'editstart' OR…
依赖 GraphQL相关依赖如下(SpringBoot2.X): <dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-spring-boot-starter</artifactId> <version>5.0.2</version> </dependency> <dependency> <groupId>com.…
背景 目前常用的实现动态配置日志级别的应该非SpringBoot的spring-boot-starter-actuator莫属了。 不过通过spring-boot-starter-actuator配置的日志级别,服务一旦重启就会恢复原状。且只能通过访问指定的接口来修改单个实例的日志级别(SpringBootAdmin也是一样,只能修改单个实例的)。如果是想修改某个服务所有实例的日志级别,只能修改配置文件,然后重启服务,可以说局限性稍微大点儿。 由于重启服务太费劲儿,所以想到了利用Apollo配置中心来动态修改日志级…
发现问题 线上服务重启,好在抓到了线上服务的dump文件,下载到本地进行分析。 使用MAT打开快照文件,此处省略掉使用MAT的过程,分析发现有大量的com.netflix.servo.monitor.BasicTimer未释放,且被org.springframework.cloud.netflix.metrics.servo.ServoMonitorCache占用。 分析 在工程中查找到ServoMonitorCache类,发现在spring-cloud-netflix-core包下,然后打开该jar包,查看其sp…
背景 本文仅是为了帮助入门新人了解什么是内存屏障、内存屏障都做了什么等基础问题,并无深入说明。 内存屏障的实现涉及大量硬件架构层面的知识,又需要操作系统或JVM的配合才能发挥威力,单纯从任何一个层面都无法理解。 如有疏漏,还望指正! 什么是内存屏障 内存屏障(Memory Barrier)是一个CPU指令。是硬件之上、操作系统或JVM之下,对并发作出的最后一层支持。再向下是是硬件提供的支持;向上是操作系统或JVM对内存屏障作出的各种封装。内存屏障是一种标准,各厂商可能采用不同的实现。 接下来大概说一下CPU缓存,作…
公元2021年8月29号下午三点多,看到最新的主题功能挺多的,就捉摸着给博客的主题升下级,结果主题刚升完级就完犊子了…… WordPress给出的提示PHP是版本需要大于7.2。 联想到之前升级PHP版本屡次失败,今次决定一定要把PHP版本升级成功,然后就跑到后台去升级PHP版本。 经历一番波折,PHP版本终于升级成功,结果一启动,发现博客访问失败,一开始提示500,怀疑是WP的问题,查看日志,发现问题可能在Nginx,重启了Nginx之后,发现直接访问失败。:nu: 然后发现Nginx的配置文件被rpm改了,重新…
数据库事务的隔离级别有4种,由低到高分别是:Read uncommitted、Read committed、Repeatable read、Serializable。事物的并发操作中可能出现脏读,不可重复读,幻读。 数据库事务隔离级别: 未授权读取级别(读未提交): 也称为读未提交(Read Uncommitted)。 以操作同一行数据为前提,读事务允许其他读事务和写事务,未提交的写事务禁止其他写事务(但允许其他读事务)。 此隔离级别可以防止更新丢失,但不能防止脏读、不可重复读、幻读。 此隔离级别可以通过“排他写锁…
Spring Boot 2.5.0 发布:支持Java16、Gradle 7、Datasource初始化机制调整。 这次就简单说下重新设计的spring.sql.init 配置有啥用。 先来看看这次被弃用部分的内容(位于org.springframework.boot.autoconfigure.jdbc.DataSourceProperties),如果你有用过这些配置内容,那么新配置就很容易理解了。 /** * Mode to apply when determining if DataSource initia…
我们都知道top命令可以查看linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。 top对CPU时间片的分类如下: us:用户进程空间中未改变过优先级的进程占用CPU百分比 sy:内核空间占用CPU百分比 ni:用户进程空间内改变过优先级的进程占用CPU百分比 id:空闲时间百分比 wa:空闲&等待I/O的时间百分比 hi:硬中断时间百分比 si:软中断时间百分比 st:虚拟化时被其余VM窃取时间百分比 这8类分片中,除wa和id外,其余分片CPU都处于工作态。 因此判断用…
桃李春风一杯酒,江湖夜雨十年灯。
COPYRIGHT © 2025 lifengdi.com. ALL RIGHTS RESERVED.
Theme Kratos Made By Seaton Jiang