一次jvm问题排查过程
1. 问题年老代报警:内存占用95%以上,持续1分钟以上,只能重启tomcat server
语义报警:连续3次,间隔10秒,服务器没有响应
2. 信息收集访问日志:$TOMCAT_HOME/log/localhost_access_log.txt
gc日志:$TOMCAT_HOME/log/gc. ...
JVM基础
JVM基础简介:本文介绍了一些常见的JVM中的面试题
Java 中都有哪些引用类型?
强引用:发生 gc 的时候不会被回收。
之前我们使用的大部分引用实际上都是强引用,这是使用最普遍的引用。比如下面这段代码中的object和str都是强引用:
Object object = new Object( ...
消息队列面试总结
消息队列写在前面的话网上Java的资料零零散散,甚至有一些错误,作者希望能结合自己的实际开发经验和面试经验,对Spring知识体系进行系统梳理。
本文参考主要【引用】中的内容,并结合自己的日常积累,欢迎留言交流指正。
为什么使用消息队列?(1)解耦:可以在多个系统之间进行解耦,将原本通过网络之间的调 ...
Spring技术总结
写在前面的话网上Java的资料零零散散,甚至有一些错误,作者希望能结合自己的实际开发经验和面试经验,对Spring知识体系进行系统梳理。
本文参考主要【引用】中的内容,并结合自己的日常积累,欢迎留言交流指正。
引用
注:本文主要参考
链接:https://www.jianshu.com/p/e18 ...
Synchronized
Synchronized底层实现JAVA线程阻塞的代价java 的线程是映射到原生操作系统线程上的,阻塞和唤醒操作系统都需要操作系统介入的,需要在用户态和核心态之间转换。这种切换会耗费大量操作系统资源,因为用户态和核心态都有各自专用的内存空间、寄存器等。用户态切换到内核态需要传递许多变量、参数给内核 ...
分布式限流
限流算法固定窗口
(1)划分时间为多个窗口:固定一个时间周期,如10秒或者30秒
(2)在每个窗口期内,每有一个请求,计数器加一
(3)如果计数器超过了限制数量,则本窗口内所有的请求都被丢弃
(4)下一个时间窗口时,计数器重置
滑动窗口
滑动窗口其实就是对固定窗口做了进一步的细分,将原先的粒度切的更 ...
策略设计入门
模式定义 在前面中对策略模式应该有了一个最初步的认识。那么什么是策略模式呢?所谓策略模式就是定义了算法族,分别封装起来,让他们之前可以互相转换,此模式然该算法的变化独立于使用算法的客户。
在软件系统中有很多种方法可以实现同一个功能,比如排序算法它有冒泡排序、选择排序、快速排序、插入排序等等。这里我 ...
策略设计模式干掉if else!
在 Spring Boot 中,如何干掉 if else!
需求
传统实现
策略模式实现
ClassScanner:扫描工具类源码
总结
需求这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。
订单实体:
service接口:
传统实 ...
RocketMQ 削峰实战!
MQ的主要特点为解耦、异步、削峰,该文章主要记录与分享个人在实际项目中的RocketMQ削峰用法,用于减少数据库压力的业务场景,其中RocketMQ的核心组件概念如下:
Producer:生产发送消息
Broker:存储Producer发送过来的消息
Consumer:从Broker拉取消息并 ...
数据库优化
准备工作
一般分页查询
使用子查询优化
使用 id 限定优化
使用临时表优化
关于数据表的id说明
当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的 ...