- 博客(30)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Redis 缓存雪崩、缓存穿透、缓存击穿 问题分析及处理方案
缓存雪崩问题分析 当缓存集中在一段时间内失效 或者缓存服务器出现宕机,所有的请求都直接落入了数据库中, 导致数据库扛不住,造成数据库挂掉解决方案事前 Redis 高可用,主从+哨兵,Redis cluster,避免全盘崩溃。事中本地 ehcache 缓存 + hystrix 限流&降级,避免 MySQL 被打死。通过缓存reload机制,预先去更新缓存,再即将发生大并发访问前手动触发加载缓存事后 Redis 持久化,一旦重启,自动从磁盘上加载数据,快速恢复缓
2021-03-09 13:57:40
74
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 redis 缓存穿透、缓存雪崩、缓存击穿 问题分析及处理方式
缓存穿透在查询一个一定不存在的数据,由于缓存是不命中时被动写入,并且处于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,缓存层失去意义。当在大流量流入时,可能因为频繁访问存储层导致DB直接宕机,这样会形成被人利用不存在的key频繁攻击应用的漏洞。解决方法最为常简的是采用布隆过滤器,将所有可能存在的数据哈希到一个足够发的 bigmap ...
2020-03-25 23:29:07
131
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 java面试导航①
一 、java的几个重要关键字(static、final、volatitle、fransient)。二、JVM 的内存划分、class加载机制、GC策略。 1、JVM内存划分:程序计数器(Program Counter Register)、Java栈(VM Stack)、本地方法栈(Native Method Stack)、方法区 (Method Area)、堆(Heap)。...
2018-11-25 16:53:31
156
原创 拦截器中获取传递参数(解决post请求参数问题)
GET中传递的参数可以直接通过request.getParameter获取。Post 传递的产生不能过直接从request.getInputStream() 读取,必须要进行重新写。(request.getInputStream()只能够读取一次)方式: 通过重写 HttpServletRequestWrapper 类 获取getInputStream中的流数据,然后在将body数据进行重新写入传递下去。继承 HttpServletRequestWrapper通过重写 HttpServle.
2022-01-18 14:42:57
4896
3
原创 Async-profiler 火焰图
Async-profiler 火焰图火焰图Async-profilerasync-profiler 是一款开源的 Java 性能分析工具,原理是基于 HotSpot 的 API,以微乎其微的性能开销收集程序运行中的堆栈信息、内存分配等信息进行分析。使用采集数据,生成文件./profiler.sh -d 30 -f profile.svg 3456对 PID 为 3456 的 java 进程采样 30 秒,然后生成 profile.svg 结果文件默认情况下是分析 CPU 性能,
2021-12-10 18:19:36
653
原创 基本排序算法-Java版
冒泡排序稳定当前元素和下个元素比较,将较大的元素放在后面 // 冒泡排序 public int[] bubbleSort(int[] nums){ for (int i = 1; i < nums.length; i++) { // 设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已经完成。 boolean flag = true; for (int j
2021-12-01 15:12:33
374
原创 Mysql事务隔离级别和锁机制(间隙锁、临建锁)
MySql 事务ACID原子性一致性隔离性持久性并发事务带来的问题脏读事务A读取到了事务B已经修改但尚未提交的数据不可重复读事务A内部的相同查询语句在不同时刻读出的结果不一致,不符合隔离性幻读事务A读取到了事务B提交的新增数据,不符合隔离性MySql 隔离级别查看事务隔离级别: show variables like ‘tx_isolation’;mysql 默认隔离级别是 可重复读隔离级别脏读不可重复读幻读读未提交
2021-12-01 13:53:10
1151
原创 SpringBoot -jar 启动引入外部配置文件
配置文件在jar包 外部直接运行jar 包java -jar springboot.jarspringboot 启动默认去一下几个路径获取资源配置classpath:/查询classpatch目录classpath:/config/查询 classpatch/config 目录file:./去jar包同级路径下去获取 application 文件file:./config/去jar包同级的config文件夹下去获取 application 文件指定特定
2021-11-23 14:26:19
572
原创 Mysql -索引结构分析及优化
数据库类型innoDB结构文件索引数据文件(索引和数据在一个文件中)MyISAMMyISAM索引文件和数据文件是分离的(非聚集)结构文件数据文件索引文件索引索引是帮助MySql高效获取数据的排好序的数据结构索引结构二叉树 (深度高,当插入的数据都是有序时,变成了链表)红黑树 (动态二叉平衡树, 但是深度太高)Hash表对索引的key进行一次hash计算就可以定位出数据存储的位置很多时候Hash索引要比B+ 树索引更高效仅能满足 “=”
2021-11-22 22:38:34
283
原创 Git 命令操作指南
本地仓库初始化仓库git init添加文件到仓库git add readme.txt提交代码到仓库git commit -m “a new file”查看当前状态git status删除文件git rm test.txt // 删除了本地文件git commit //从版本库里面删除撤销修改 (--很重要,没有 --,就变成了“切换到另一个分支”的命令)git checkout – readme.txt版本回退g
2021-11-16 22:59:02
213
原创 线程池进阶
线程池线程创建方式继承 Thread 类型实现 Runnable接口实现 Callable 接口Java线程生命状态NEW ~新建RUNNABLE ~运行BLOCKED ~ 阻塞WAITING ~ 等待TIMED_WAITING ~超时等待TERMINATED ~终结状态图线程池Why频繁创建和销毁线程 会大大的降低系统效率可以重用线程,减少线程的创建和销毁的开销,提高性能提高响应速度,当
2021-08-24 19:55:50
85
原创 Maven 进阶
Maven 进阶Maven 冲突冲突检查使用 mvn dependency:tree 检查冲突包冲突解决exclusion 排除就近顺序原则版本管理 <dependencyManagement>常用maven 命令新增maven项目mvn archetype:create -DgroupId= xxx -DartifactId= xxx -DpackageName= xxx测试/编译/打包/安装mvn [clean] tes
2021-08-23 11:28:43
79
原创 Mysql -SQL 优化及分析
1.SQL优化原因:性能低、执行时间太长、等待时间太长、SQL语句欠佳(连接查询)、索引失效、服务器参数设置不合理(缓冲、线程数)SQL :编写过程:select …from …join …on …where …group by …having …order by …limit …解析过程: from … on… join …where …group by …having …select …order by limit …2.SQL性能问题分析SQL的执行计划 : explain
2020-09-18 16:11:43
103
原创 MySQL 索引失效问题处理
MySQL 索引失效问题和原因1、SQL语句中的被索引字段发生隐式类型转换。2、被索引字段使用的了表达式计算3、被索引字段使用了函数(1、2、3)原因: 因为索引的使用依赖了整个B+树上的索引树遍历,索引数遍历依赖了底层叶子节点的有序性,进行了上述(1,2,3)操作后有可能新的排列顺序和原来的排列顺序不一样,破坏的了有...
2020-04-27 11:49:04
289
1
原创 Linux (CentOS7) 防火墙开启/关闭/查命令
systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。防火墙:查看状态: systemctl status firewalld服务启动: systemctl start firewalld服务关闭:systemctl stop firewalld开机禁用: systemctl disable firewal...
2020-04-21 15:21:55
336
原创 设计模式--观察者模式 -- 监听器模式
为方便方便阅读,使用一个Java文件中创建多个class形式!本文利用的鼠标的监听器事件实现了观察者模式。类图如下:Event对象以及监控器(**Listener)对象package com.example.demo.design.model.observe;import java.lang.reflect.Method;import java.util.Map...
2020-03-26 17:32:15
418
原创 Spring 面试重点总结!
BeanFactory 和 ApplicationContext 有什么区别功能:BeanFactory 负责读取bean的配置文档,管理bean的加载、实例化、维护bean 之间的依赖关系,负责bean 的生命周期。(BeanFactorty接口提供了配置框架及基本功能,但是无法支持spring的aop功能和web应用。)ApplicationContext 作BeanFactory...
2020-03-25 23:22:38
169
原创 手写(模拟)实现Mybaits中的拦截器 (动态代理+责任链模式)
本文为方便看,多个合并在一个内的模式接口(类)package com.example.demo.Intercepter;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;/** * @author fuwenshe...
2020-03-25 19:43:26
403
原创 KryoUtil ---Kryo 工具类(文件序列化)
添加Kryo工具包:<!-- https://mvnrepository.com/artifact/com.esotericsoftware/kryo --><dependency> <groupId>com.esotericsoftware</groupId> <artifactId>kryo</art...
2019-08-05 14:32:48
1252
原创 MySql 删除重复数据 (留下其中id最小的数据)
### 创建测试表 t_student CREATE TABLE `t_student` ( `id` bigint(12) NOT NULL AUTO_INCREMENT, `name` varchar(12) NOT NULL DEFAULT '""', `sex` int(4) DEFAULT NULL, `age` int(4) NOT NULL DEFAULT '0...
2019-08-01 16:27:52
339
原创 Java压缩工具类-ZipUtils
package com.xy.boot.open.util;import org.apache.commons.io.IOUtils;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.zip.GZIP...
2019-07-30 18:34:51
330
原创 SpringBoot/SpringMVC 之拦截器(HandlerInterceptor )
package com.xy.boot.open.interceptor;import com.baomidou.mybatisplus.mapper.EntityWrapper;import com.xy.boot.common.enums.HttpCodeEnum;import com.xy.boot.open.constant.HttpConstant;import com.xy...
2019-07-30 18:32:00
142
原创 Java常用加密工具 ( MD5,sha1,SHA256)
package com.xy.boot.cmiap.util;import lombok.extern.slf4j.Slf4j;import org.apache.commons.codec.Charsets;import org.apache.commons.codec.binary.Hex;import java.io.UnsupportedEncodingException;...
2019-05-14 12:08:49
3172
原创 Filter中获取传递参数(解决post请求参数问题)
1. GET中传递的参数可以直接通过request.getParameter获取。2. Post 传递的产生不能过直接从request.getInputStream() 读取,必须要进行重新写。(request.getInputStream()只能够读取一次)方式: 通过重写HttpServletRequestWrapper 类 获取getInputStream中的流数据,然后在将...
2019-05-14 12:03:27
14745
原创 SVNKit 操做svn 实例
首先实现svn 权限验证: /** * 验证登录svn */ public static SVNClientManager authSvn(String svnRoot, String username, String password) { // 初始化版本库 ...
2019-05-14 10:39:29
1171
SanDiskSecureAccess.zip
2020-03-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人