自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 处理filter里抛出的异常

最终是会被org.apache.catalina.core.StandardWrapperValve#invoke(Request, Response) 捕获,执行[212行代码]exception(request, response, e);再继续执行的话,就会执行到 custom()方法里,进行 377行代码的 rd.forward(request.getRequest(), response.getResponse());也验证了 ,Interceptor 在 Filter 后面 调用执行的。

2024-08-16 16:53:57 440

原创 说说MySQL调优?

在应用程序级别使用缓存(如 Memcached、Redis 等),减少对数据库的直接访问次数。:定期将不常用的旧数据归档到历史表中,减少主表的数据量,提高查询性能。:因为每个索引都会占用额外的存储空间,并可能影响写操作的性能。:确保数据库服务器与客户端之间的数据传输高效稳定。合理使用 LIMIT 子句,限制查询结果的数量。

2024-08-09 14:49:35 260

原创 Spring Boot引入外部jar包并打包

【代码】Spring Boot引入外部jar包并打包。

2024-04-26 14:19:27 367

原创 log4j2远程代码执行漏洞复现

4. 启动一个http服务,配置使其可以访问上一步生成的.class文件,能使用http://127.0.0.1:4444/Exploit.class访问即可,注意4444是作者启动的http服务端口,可以根据自己情况修改,这个URL在下面会用到。上面命令中的http://127.0.0.1:4444/#Exploit是第四步中的地址,根据自己的情况可自行修改,1389是ladp服务默认端口,无需修改。切换到ldap服务的控制台,可以看到日志,说明登录接口中的log4j已经访问ladp服务了。

2024-03-08 11:09:44 946

原创 捕获SpringSecurity异常,进行统一返回

Component@Override@Component@Override//注入@Autowired@Autowired@Override//配置自定义异常处理器。

2024-03-08 10:37:10 660

原创 nginx中proxy_pass的配置

Nginx的。

2023-11-23 15:15:36 2252

原创 Nginx的try_files指令

只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部的 URL 的指向。最后一个参数是回退 URL 且必须存在,否则会出现内部 500 错误。命名的 location 也可以使用在最后一个参数中。表示根目录(根据 root 或 alias 来指定)。例子:根据上面的配置,当请求。

2023-11-23 15:09:00 2174

原创 跨域及Nginx 设置(CORS)

CORS是一个W3C的标准,全称是跨域资源共享(Cross-origin resource sharing).即从一个的网页去请求另一个的资源。本质上对于此类请求,只要协议、、端口有任何一个的不同,就被当作是跨域,即都被当成不同源。简单来说就是跨域的目标服务器要返回一系列的Headers,通过这些Headers来控制是否同意跨域。

2023-11-23 15:08:03 494

原创 RocketMQ常用命令

nohup sh mqnamesrv &nohup sh mqbroker -c ../conf/eda_master1.properties &sh mqadmin clusterList -n 134.130.13.123:9876sh mqadmin topicList -n 134.130.13.123:9876sh mqadmin updateTopic -n 134.130.13.123:9876 -c edamq_innerTest_cluster -t fristsh mqadmin upd

2023-11-03 14:47:40 539

原创 JavaWeb Filter 和 SpringMVC Interceptor

Filter 是java Web 中三大组件(Servlet、Filter、Listener)之一,是属于java web规范的组件。过滤器是实现对请求资源(jsp、servlet、html)的过滤功能,是一个运行在服务器的程序,优先于请求资源(jsp、servlet、html)之前执行。当浏览器发送请求给服务器的时候,先执⾏过滤器,然后才访问Web的资源。服务器响应Response,从Web资源抵达浏览器之前,也会途径过滤器。

2023-10-09 10:42:14 63

原创 Nginx跨域基本配置(CORS)

允许请求的方法,比如 GET/POST/PUT/DELETE。最重要的就是要在被跨域的nginx配置添加如下配置。#允许跨域请求的域,* 代表所有。#允许带上cookie请求。#允许请求的header。

2023-10-08 16:37:50 906

原创 SpringBoot 自动装配的原理简析

SpringBoot 自动装配的原理分析 META-INF/spring.factories @EnableAutoConfiguration注解 @Import({AutoConfigurationImportSelector.class}),

2022-08-16 15:16:25 244 1

原创 树形结构构造示例代码

树形结构构造示例代码

2022-08-02 17:36:47 130

转载 spring-boot-maven-plugin:介绍

目录使用引入插件插件目标打包:repackage修改打包后的文件名排除provided类型的依赖通过指定groupId和artifactId排除某个特定的依赖指定groupId排除groupId相关的所有依赖排除 spring-boot-devtools 依赖指定Mainclass类生成部署原始包并生成本地可执行包设置active profiles设置spring-boot-maven-plugin插件的profile参数使用命令行,注意prof...

2022-05-17 10:47:48 2915 1

原创 MySQL的Explain 及SQL优化的一般步骤

Explain使用 explain select * from tableA 查看SQL语句的执行计划时,需要重点关注type、rows、filtered、extra。Type由上至下,效率越来越高 ALL::全表扫描。从硬盘中读取 index::全表扫描。跟ALL的区别是: 使用索引进行遍历索引树读取 range ::使用索引范围扫描。就是针对一个有索引的字段,在指定范围中检索数据常用语<,<=,>=,between,in等操作 re...

2022-05-09 11:17:58 341

原创 MySQL评估索引合理性字段---Cardinality

Cardinality表示索引的选择性。建立索引的前提是列中的数据是高选择性的。在MySQL数据库中,可以使用 show index from tableName \G 语句来查看表中创建的索引的信息:mysql> show index from user_operation_log \G ;*************************** 1. row *************************** Table: user_operation_log .

2022-05-09 10:13:26 1063

原创 细读 Git | 让你弄懂 origin、HEAD、FETCH_HEAD 相关内容

一、远程名称(Remote Name)在 Git 中,其实无论是 origin,还是 upstream 并没有特殊的含义,但由于被广泛使用,因此它们有了约定俗成、众所周知的含义。如果我跟你说,以下两条命令是完全等效的,你是不是就差不多猜得出 origin 表示什么了?$ git push origin master$ git push https://gitee.com/jsxztshaohaibo/git-usage-test.git master是的,跟你猜的一样:没有区别。1.

2022-04-27 11:02:48 4122

原创 SQL语句求交集、并集、差集

A、B的交集: select * from A inner jion B on A.col = B.colA、B 的对称的差集:select * from A full outer join B on A.col = B.col where A.col is null or B.col is null或者select * from A where B.col is nulljoinselect *from B where A.col is nullA、...

2022-04-07 10:30:02 10245 2

原创 Spring bean的生命周期

2022-02-15 15:50:52 232

原创 Spring 的事件监听机制(ApplicationEvent、ApplicationListener)

监听模式:要素:1.事件(Event):继承自 org.springframework.context.ApplicationEvent2.监听器类(Listener): 实现 org.springframework.context.ApplicationListener3.事件源(在spring中指的是事件发布) 是ApplicaitonContext使用步骤:1.定义事件:public class MySpringApplicationEventForPay exten

2022-02-14 16:36:12 1907

原创 Redis的内存设置

目录1.设置使用的大小修改redis.conf配置文件中的参数:使用config set maxmemory 命令设置:2.设置缓存淘汰策略3.LRU算法LRU(Least Recently Used),即最近最少使用,是一种缓存置换算法。使用java实现一个简单的LRU算法4.Redis中使用的是近似LRU算法Redis为了实现近似LRU算法,给每个key增加了一个额外增加了一个24bit的字段,用来存储该key最后一次被访问的时间。Redis3.0对近似LRU的.

2021-12-27 16:02:00 5671

原创 Java线程池自定义 ThreadFactory

class NameCustomizedThreadFactory implements ThreadFactory { private static final AtomicInteger POOL_NUMBER = new AtomicInteger(1); private final AtomicInteger THREAD_NUMBER = new AtomicInteger(1); private final String NAM.

2021-12-13 15:59:15 592

原创 MySql 磁盘满了的处理

处理步骤:网上查了很多资源,说要进行磁盘碎片化整理。原因是datafree占据的空间太多啦。具体可以通过这个sql查看。SELECT CONCAT(TRUNCATE(SUM(data_length)/1024/1024,2),'MB') AS data_size,CONCAT(TRUNCATE(SUM(max_data_length)/1024/1024,2),'MB') AS max_data_size,CONCAT(TRUNCATE(SUM(data_free)/1024/1024

2021-12-13 15:35:19 985

原创 synchronized 中的 4 个优化

1.锁膨胀2.锁消除3.锁粗化4.自适应自旋1.锁膨胀JDK1.6之前,使用synchronized 进行加锁、释放锁的时候,都是使用重量级锁来完成的,都会引起 用户态 和 内核态的转换。JDK1.6之后,使用synchronized 进行加锁、释放锁的时候,就有了 锁升级(锁膨胀)的过程。在进行并发操作时,大部分的场景都不需要用户态到内核态的转换了,这样就大幅的提升了 synchronized 的性能。2.锁消除锁消除的处理,是基于“逃逸分析”的数据支持。JVM 虚

2021-12-13 15:02:57 242

原创 使用 @PostConstruct、@Bean(initMethod=“”)注解指定初始化方法 、及实现InitializingBean接口 在 Spring Bean 完成初始化后进行一些响应的操作

如果需要在 某个特定的bean 被初始化后,执行一些代码逻辑,可以使用@PostConstruct、@Bean(initMethod=“”)注解指定初始化方法 、及实现InitializingBean接口 来完成这类特定的需求。该三种方式,是在 特定bean 被初始化完成后(bean初始化完成,不同于 spring 整个容器 初始化完成),执行的特定业务逻辑。1.使用 @PostConstruct 针对Bean的初始化完成之后做一些事情:@PostConstruct注解一般放在Bean的方法上.

2021-12-13 10:30:38 2623

原创 使用 ApplicationRunner &CommandLineRunner 在 SpringBoot 容器的初始化完成之后进行一些事先操作

实际工作中如果需要在项目启动时做一些初始化的操作,可以通过 实现 ApplicationRunner 或者 CommandLineRunner 两个接口 来进行一些初始化的操作。使用步骤: 1.在 主启动类的 同包 或者子包 下,新建 类 实现ApplicationRunner 或者 CommandLineRunner 接口,重写 run()方法; 2.使用 @component 注解,让spring 进行管理; 3.如果有多个自定的 runner...

2021-12-13 09:56:57 777

原创 Linux Too many open files

Linux 上能打开多少个文件,限制有两种: 第一种,进程级别的,限制的是单个进程上可打开的文件数。具体参数是 soft nofile 和 fs.nr_open。它们两个的区别是 soft nofile 可以不同用户配置不同的值。而 fs.nr_open 在一台 Linux 上只能配一次。 第二种,系统级别的,整个系统上可打开的最大文件数,具体参数是fs.file-max。但是这个参数不限制 root 用户。 另外这几个参数之间还有耦合关系,因此还要注意以下三点: 1、如果你想加大

2021-12-10 16:32:16 840

原创 Java String.format()用法

一、占位符的格式:%[index$][标识]*[最小宽度][.精度]转换方式以%index$开头,index从1开始取值,表示将第index个参数拿进来进行格式化其中:% 和 转换符 是必须的,其他都是可选项二、对 字符和字符串 格式化: %[index$][标识][最小宽度]转换方式可用标识: -,在最小宽度内左对齐,右边用空格补上。可用转换符:s,字符串类型。 c,字符类型,实参必须为char或int、short等可转换为char类型的数据类型,否则抛I...

2021-12-09 10:16:45 1476

原创 NamedParameterJdbcTemplate 处理 in 查询条件

如果在执行的SQL中需要用到 in ,则建议使用NamedParameterJdbcTemplate 进行处理。public NamedParameterJdbcTemplate(DataSource dataSource) public NamedParameterJdbcTemplate(JdbcOperations classicJdbcTemplate)JdbcOperations 是一个接口, 常用的 JdbcTemplate 就是 实现了这个接口,所以我正可以正常的使用 Jd..

2021-12-08 17:37:10 1938

原创 MySQL 定时备份数据库(非常全)【转】

一. mysqldump命令备份数据在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:#MySQLdump常用 mysqldump-uroot-p--databases数据库1 数据库2 >xxx.sql 二. mysqldump常用操作示例1. 备份全部数据库的数据和结构mysqldump -uroot -p123...

2021-09-27 22:17:32 101

原创 Shell 脚本

Shell 脚本Shell 脚本是什么?Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等,也就是说,我们用户每输入一条命令,Shell 就会相对应的执行一条命令。当命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时,该程序文件就被称为Shell脚本。1.查看自己当前系统默认的 Shellecho $SHELL输出:/bin/bash2.查看系统支持的Shellcat /etc/shells输出:/bin/sh /bin/bash /usr/bin/

2021-09-27 22:07:11 203

原创 Springboot中如何进行字段校验

Hibernate Validate 进行字段校验

2021-07-19 16:37:36 2414

原创 mysql:索引、慢查询、优化

https://www.cnblogs.com/jenvid/p/8411201.htmlMySQL索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都是以B-树的形式保存 如果没有索引,执行查询时,MySQL必须从第一个记录开始整表扫描,知道查询到符合要求的记录,记录越大,花费时间成本越高 如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录,即可迅速取得目标记录所在的位置 比如表有1000条记录,通过索引查找记录至少比顺序扫描记录快100倍常见索引类型normal 普

2021-06-29 13:49:18 136

原创 MySQL核心参数优化

【转载自】https://www.cnblogs.com/jenvid/p/8994831.htmlMySQL核心参数优化https://blog.csdn.net/zengxuewen2045/article/details/51476186一.数据库服务器配置CPU:48C 内存:128G DISK:3.2TSSD二.CPU的优化innodb_thread_concurrency=32 表示SQL经过解析后,允许同时有32个线程去innodb引擎取数据,如果超过32个,则需要排队

2021-06-29 13:45:38 226

原创 MQ 保证消息安全投递并消费

可能出现消息丢失的情况Producer在把Message发送Broker的过程中,因为网络问题等发生丢失,或者Message到了Broker,但是出了问题,没有保存下来针对这个问题,Producer可以开启MQ的事务,如果这个过程出现异常,进行回滚,但是有个很大的问题,你提交一个事务就会阻塞在那,非常影响性能,生产环境肯定不会开启事务,一般都是使用confirm机制Broker接收到Message暂存到内存,Consumer还没来得及消费,Broker挂掉了可以通过持久化设置去解决:(

2021-05-28 11:05:08 182

原创 几个值得应用到项目中的 Java 开源库

Java 8 StreamStream 不算是工具库,但是通过 stream 提供的一系列方法,可以实现集合的过滤、分组、集合转换等诸多操作。例如下面的方法,实现列表元素根据某个字段去重的功能。List<User> userList = new ArrayList();//添加元素userList = userList.stream().filter(distinctByKey(user->user.getUserId())).collect(Collectors.toList

2021-05-25 15:26:36 89

原创 线程状态分析

【转】线程状态的种类以前大家接触到的线程状态是:BLOCKED、WAITING、TIMED_WAITING、RUNABLE,今天我们换个说法来看,到底什么样的线程会出现这种状态。1、线程状态为“waiting for monitor entry”:含义:意味着它 在等待进入一个临界区 ,所以它在”Entry Set“队列中等待。此时状态:BLOCKED举例:java.lang.Thread.State: BLOCKED (on object monitor)知识点:注意 “Entry Set”

2021-05-13 21:06:35 5286

原创 Redis变慢,常见的几种问题定位与分析

【转】Redis作为内存数据库,拥有非常高的性能,单个实例的QPS能够达到10W左右。但我们在使用Redis时,经常时不时会出现访问延迟很大的情况,如果你不知道Redis的内部实现原理,在排查问题时就会一头雾水。很多时候,Redis出现访问延迟变大,都与我们的使用不当或运维不合理导致的。Redis变慢了?常见延迟问题定位与分析下面我们就来分析一下Redis在使用过程中,经常会遇到的延迟问题以及如何定位和分析。使用复杂度高的命令如果在使用Redis时,发现访问延迟突然增大,如何进行排查?首先,第

2021-05-07 09:52:17 120

原创 Spring 事务传播机制

一、什么是事务的传播?简单的理解就是多个事务方法相互调用时,事务如何在这些方法间传播。举个栗子,方法A是一个事务的方法,方法A执行过程中调用了方法B,那么方法B有无事务以及方法B对事务的要求不同都会对方法A的事务具体执行造成影响,同时方法A的事务对方法B的事务执行也有影响,这种影响具体是什么就由两个方法所定义的事务传播类型所决定。二、Spring事务传播类型枚举Propagation介绍在Spring中对于事务的传播行为定义了七种类型分别是:REQUIRED、SUPPORTS、MANDATORY

2021-05-06 18:08:30 73

原创 服务端 TCP 连接的 TIME_WAIT 过多问题的分析与解决

本文给出一个 TIME_WAIT 状态的 TCP 连接过多的问题的解决思路,非常典型,大家可以好好看看,以后遇到这个问题就不会束手无策了。问题描述模拟高并发的场景,会出现批量的 TIME_WAIT 的 TCP 连接:短时间后,所有的 TIME_WAIT 全都消失,被回收,端口包括服务,均正常。即,在高并发的场景下,TIME_WAIT 连接存在,属于正常现象。线上场景中,持续的高并发场景:一部分 TIME_WAIT 连接被回收,但新的 TIME_WAIT 连接产生;一些极端情况下,会出现大量的

2021-05-06 10:52:29 1618

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除