自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Oxye

不积跬步无以至千里

  • 博客(126)
  • 收藏
  • 关注

原创 SpringBoot:使用Apache SSHD搭建基于JAVA的SFTP服务器

依赖服务器端<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springfram

2022-05-23 11:32:22 5258 4

原创 SpringBoot:一份可用的logback.xml配置

简介一份可用的logback.xml配置,可以按日期、文件大小切分文件生成文件列表效果如下project-debug-20220519.0.logproject-error-20220519.0.logproject-info-20220519.0.logproject-info-20220519.1.logproject-info-20220519.2.logproject-warn-20220519.0.logproject-debug-20220518.0.logproject-e

2022-05-19 17:19:42 548 1

原创 SpringBoot:MultipartResolver 文件上传、大小限制相关配置、实现原理与自定义

如果不改spring.servlet.multipart前缀,SpringBoot还是会检查报错的,所以改一下my:servlet:multipart:@Data。

2022-05-15 12:42:26 9181

原创 win11关闭开盖开机 / Windows11关闭掀盖自动开机

网上没靠谱的回答,那我水一篇。一句话就是:把【启用快速启动】关了就行。我觉得这个选项是修改了一系列配置,顺带把开盖启动关闭了,但win11,或者说联想thinkbook也没提供单独关闭开盖启动的地方(可能是我没找到)。反正我是实践出来这样可以的,也没影响启动速度。1.点击底部win或搜索图标2.在搜索栏输入【选择电源计划】3.点击左侧【选择关闭笔记本计算机盖的功能】4.点击【选择当前不可用的功能】5.将【启用快速启动】取消勾选...

2022-05-08 10:55:14 48004 4

原创 java qtp开头的线程的哪来的,是哪个线程池的

日志中很多线程id,有的是线程池自定义的名称,还有很多qtp开头的,不知道他们是哪来的今天跟Jetty代码,才看到,这些是是Jetty的worker线程池QueuedThreadPool的org.eclipse.jetty.util.thread.QueuedThreadPool如下:<init>:133, Server (org.eclipse.jetty.server)createServer:982, JettyEmbeddedServletContainerFactory$Je

2022-03-25 13:40:49 1972

原创 SpringBoot配置jetty.threadPool.maxThreads能否生效

基于SpringBoot1.5.18Jetty线程架构模型Jetty的线程架构模型,分为acceptors,selectors和workers三个线程池。acceptors负责接受新连接,然后交给selectors处理HTTP消息协议的解包,最后由workers处理请求。前两个线程池采用非阻塞模型,一个线程可以处理很多socket的读写,所以线程池数量较小。SpringBoot1.5.18自带Jetty配置org/springframework/boot/spring-boot-autoconf

2022-03-25 12:03:52 2109

原创 IDEA突然找不到所有外部依赖,类名报红、报错的解决方案

纯属IDEA抽风了点FIle的Invalidate Caches/Restart,清缓存重启好了

2022-03-08 10:17:20 804 1

原创 PostgreSQL 分区表性能优化-分区键

目录前言优化过程数据库版本总体思路分区键前言近期优化SQL的次数越来越多了,优化的思路可以从SQL结构、执行计划、统计信息、执行计划缓存、索引合理性(数据离散度、联合索引等)、程序的数据库连接池参数、数据库自身参数、数据库部署架构等方面看。这次优化涉及了PostgreSQL的分区表,和单表不同,分区表有一些特性,导致它和普通表有一些区别,例如数据库版本(影响分区表特性)、分区类型(Hash分区、range分区、List分区等)。本次优化的都是Hash分区的,亿级别的基础数据,根据Hash分区优化过

2022-02-18 10:40:17 2989 2

原创 人大金仓试用版更新license流程

目录更新license流程1.license相关1.1 前提:查看license信息1.2 获取新license文件1.3 查找旧license文件1.4 替换license文件2.重启数据库服务2.1 前提:安装位置与数据目录2.2 重启命令更新license流程1.license相关1.1 前提:查看license信息使用浏览器打开license.dat文件,可以看到如下及更多参数-------------------BEGIN KINGASE.LICENSE.3.0 PRIVATE KEY-

2021-12-09 14:24:45 5661

原创 Redis Cluster,Spring Lettuce连接池默认配置不支持高可用的问题 RedisConnectionException RedisCommandExecutionException

报错某新接到的项目发送严重问题,页面打不开,后台多种报错,redis三主三从节点挂了两个分片的一主一从问题排查应用日志redis节点连接失败javax.servlet.ServletException: org.springframework.data.redis.RedisSystemException: Redis exception; nested exception is io.lettuce.core.RedisException: io.lettuce.core.RedisConnec

2021-12-07 20:42:50 2719

原创 Spring 配置拦截器,禁用浏览器缓存HTTP请求

拦截请求,在response设置不允许缓存请求import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Component;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web

2021-11-29 09:57:56 894

原创 Java线程池:设置核心线程可超时被关闭(allowCoreThreadTimeOut)

ThreadPoolExecutorJava线程池可以设置核心线程也随超时时间关闭,节省资源java.util.concurrent.ThreadPoolExecutor /** * If false (default), core threads stay alive even when idle. * If true, core threads use keepAliveTime to time out waiting * for work. */

2021-10-30 00:58:23 6023

原创 Spring自定义数据源配置不当引起的Mybatis拦截器Interceptors 失效/不生效

目录内容Interceptor接口与@Intercepts注解PageHelper实现拦截器自定义数据源与拦截器的问题自定义数据源注入拦截器内容Interceptor接口与@Intercepts注解org.apache.ibatis.plugin.Interceptor 是ibatis包的接口,org.apache.ibatis.plugin.Intercepts 是ibatis包的注解我们可以实现Interceptor 接口,并标注@Intercepts注解,做一个mybatis执行SQL时的

2021-10-12 20:29:59 9036 6

原创 Web容器/Servlet容器 的原理、设计、配置与优化(Tomcat&Jetty)

目录1.常见应用服务器简介TomcatJetty2.web服务器/servlet容器Web服务器概念简单实现源码验证Servlet容器概念简单实现servlet规范注入servlet容器自带servletservlet容器在哪里源码验证3.Tomcat架构serverservice对外connectorconnectorexecutorEndPointProcessorAdapter对内containerenginehostcontextwrapper3.文件结构TomcatJetty4.配置文件Tomca

2021-09-08 10:08:42 1745

原创 Mybatis处理 # 和 & 占位符的源码原理

网上的解释都太肤浅,难以辨别真假,就自己跟了一下Mybatis源码下面是过程记录,不详细,有空补全分析$ :进来是$org.apache.ibatis.scripting.xmltags.DynamicSqlSourceorg.apache.ibatis.scripting.xmltags.TextSqlNode 直接替换参数#:org.apache.ibatis.scripting.xmltags.DynamicSqlSource进来是?org.apache.ibatis.scripti

2021-09-07 17:35:56 636

原创 Tomcat Jetty 通过配置 关闭热部署和自动重启

1.背景1.1 问题最近出现一个问题,一个基于Jetty的Web容器,因为会监听webapps下文件,当一个代码框架在webapps目录下产生临时文件,会导致应用重启1.2 疑问我的印象中,Tomcat就有开启和关闭扫描应用目录的配置。东方通、金蝶等国产web容器也有都有热部署的开关,而且自动部署的文件夹和应用文件夹是分开的,那这个基于Jetty的Web容器应该也有响应的配置Tomcat如下,在conf/server.xml的host层配置2.思路tomcat、东方通、金蝶有自动部署的配置开

2021-08-16 10:09:51 973

原创 Lombok @Cleanup 原理

Lombok @Cleanup的作用是关闭资源,在它的注解注释里已经写得很清楚了@Cleanup 可以将显示定义的资源,再作用域末尾进行close,前提是定义的类实现了Closeable接口,或自定义了close方法中文含义与举例确保您注释的变量声明将通过调用其 close 方法来清除,无论发生什么。 通过将局部变量声明之后的所有语句包装到作用域末尾的 try 块中来实现,该块作为 finally 操作关闭资源。在@Cleanup 的项目 lombok 功能页面上 可以找到完整的文档。例子:

2021-08-07 13:11:53 636

原创 Linux磁盘占满,du df不一致,Java文件流未关闭导致的句柄泄漏,lsof | grep deleted | sort -nr

关键词:Linux、文件句柄泄露、磁盘空间占满、du、df、lsof、Java、资源释放问题最近同一天,发现两起由于磁盘空间占满引发的问题某1服务器 rocketmq 刷盘失败org.apache.rocketmq.client.exception.MQBrokerException: CODE: 14 DESC: service not available now, maybe disk full, CL: 0.90 CQ: 0.90 INDEX: 0.90, maybe your b

2021-07-24 15:42:08 1673

原创 Springboot启动,控制台卡死在 Parsed mapper file

问题Springboot启动,控制台停在 Parsed mapper file 'file[************mapper.xml]排查到源码这个方法的catch打断点,可发现异常org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactoryprotected Object doCreateBean(final String beanName, final RootBeanDefinition mbd,

2021-07-01 16:53:51 3884 2

原创 ElasticSearch:修改各节点的分片上限

目录es节点分片达到上限修改分片上限DSL输入命令行输入修改后确认es节点分片达到上限es在使用一段时间后会发生新建索引失败的错误这时候查看分片上限GET _cluster/health会展示集群状态,包括节点总数,如果分片超了,集群状态可能变成yellowElasticsearch 默认的分片上限1000修改分片上限DSL输入在elasticsearch-head或kibana输入PUT _cluster/settings{ "persistent": {

2021-06-25 22:17:56 2333 1

原创 java.lang.NumberFormatException: For input string: “l“ 配置文件导致的数字转换异常处理

别人给的配置文件,项目启动不起来,报这个错,跟到Integer类的报错源码了,总不能是源码问题吧。java.lang.NumberFormatException: For input string: " 1"我仔细看,发现notepad里的小写L和数字1是基本一模一样的。。。。。。小写L的头平的,数字1是弯的太坑了...

2021-06-24 19:52:08 499

原创 SpringBoot+Redis哨兵报错 RedisCommandExecutionException:ERR unknown command ‘SENTINEL‘

目录错误错误配置错误原因正确配置错误单机Redis切成哨兵集群Redis时报错:io.lettuce.core.RedisCommandExecutionException:ERR unknown command 's=SENTINEL‘错误配置密码、名称、ip做了加密处理(星号***) redis: timeout: 30000 password: *** sentinel: master: *** nodes: *.*.*.*:6379,*.

2021-06-18 16:40:41 8148 1

原创 ElasticSearch 7.x 三种分页搜索选型 from&size scroll search_after

目录三种分页方式from & sizescrollsearch_after分页方式比较from&size 与 search_afterscroll与 search_after经典报错参考:三种分页方式from & size类似关系型数据库中的limit & offset。如果查询语句未标明from & size,es查询默认只会查出10条数据。但是默认情况下,不能使用 from & size 设置超过 10,000的数量。此限制是由 index.ma

2021-06-18 12:25:25 969

原创 Linux Nginx启动报错:卡在Starting nginx (via systemctl): ,Can‘t open PID file /var/run/nginx.pid

Nginx进程作为系统的守护进程运行,我们需要在某个文件中保存当前运行程序的主进程号,Nginx支持定义pid的存放路径,其指令为:pid,语法格式如下pid file; file:存放路径和文件名称 默认存放在nginx安装目录logs下,名字为:nginx.pid/etc/rc.d/init.d/nginx中的第十一行默认注释掉了,需要解除注释、指定路径,只去掉井号#改路径也不行,pidfile /usr/local/nginx/logs/nginx.pid要改为pidfile=/usr.

2021-06-15 20:11:29 4541

原创 Linux Nginx启动报错:Failed at step EXEC spawning /etc/rc.d/init.d/nginx: Exec format error.

场景systemd启动nginxsystemctl start nginx.service报错内容报错第一行为Failed at step EXEC spawning /etc/rc.d/init.d/nginx: Exec format error.报错原因显而易见:nginx文件格式错误init.d 目录中存放的是一系列系统服务的管理(启动与停止)脚本查看/etc/rc.d/init.d/nginx的格式注意,第一行需要是**#!/bin/sh**#!/bin/bash是指此脚本

2021-06-15 20:03:07 19014 2

原创 Linux离线部署Nginx,搭建HTTP文件服务器

1.安装Nginx所需依赖1.1 检查环境依赖检查服务器是否安装gcc、gcc-c++whereis gccwhereis g++gcc -vg++ -v​ 前两条只显示【gcc:】和【g++:】,或后两条显示未找到命令。​ pcre、 libtool 也可如此验证​ 如果都已安装,跳过本章,否则进行以下依赖的安装。本文的nginx依赖来自:https://blog.csdn.net/MyMBS/article/details/907199021.2 依赖安装​ (按需跳过已有依

2021-06-13 23:46:48 1010 1

原创 显式使用HttpServletResponse响应的接口(下载文件等)别再加 return、@ResponseBody、@RestController

目录@ResponseBody的作用@RestController的作用使用HttpServletResponse的情况显示使用HttpServletResponse响应接口(下载文件等)后,如果再使用 return,配合接口的@ResponseBody、@RestController等注解,会导致一下报错@ResponseBody的作用@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回

2021-04-24 15:16:00 1646

原创 JDK源码:Java是如何根据相对路径计算绝对路径的 && IDEA:Jump To Source 追踪varibles变量属性来源

昨天在追踪一段源码时,不知道代码如何根据相对路径获取绝对路径,走到下图时,发现有一个变量中有一个没见过的属性pathWin32Calls然后看这个变量是Path类型的,想去看一下Path的这个属性什么时候被赋值的但是打开Path的Structure却没有任何属性我一看这个Path是个sun.nio.file下的接口,那要找的属性应该是子类里的,但是也不确定在哪里这时,在IDEA的variables窗口,右键属性选择 Jump To Source,就可以跳到所属的文件也可以找到对应的设

2021-04-24 14:37:47 2063

原创 解决Apache POI 代码问题漏洞时,缺少类的问题 (CTPageMar 等)

目录问题代码漏洞告警寻找高版本解决方案一:根据告警提示替换依赖更新依赖步骤解决方案二:把缺少的类从旧包拷到本地解决方案三:终于找到靠谱的依赖总结问题先把问题放这代码漏洞告警昨天项目代码被检测到POI高危漏洞漏洞级别:高危漏洞名称:Apache POI 代码问题漏洞 漏洞介绍 ApachePOI是美国阿帕奇(Apache)软件基金会的一个开源函数库,它提供API给Java程序可对MicrosoftOffice格式档案进行读和写。 Apache POI4.1.0及之前版本中存在安全漏洞。攻击者

2021-04-17 10:41:44 3687

原创 “没用”的StringBuffer,StringBuffer被StringBuilder取代的原因

目录前言与问题分析与验证StringBuffer测试结论前言与问题因为今天又看到有人拿StringBuffer和StringBuidler当面试题说了,这也是挺无聊的一个问题,被大家当成一个问题,说明很多人觉得他们俩的应用场景不同?我脑海中出现了一个想法:其实StringBuffer没用使用场景其实网上也有人提出了问题,说“StringBuffer不是线程安全的,所以它没用”,我也提一个问题:就算StringBuffer是线程安全的,它也没用。分析与验证看源码StringBuffer基本上

2021-03-13 22:17:39 885

原创 一行代码实现Map排序(JDK8+TreeMap+比较器)

目录前言原结构TreeMap+Lambda表达式TreeMap+方法引用结语前言今天同事提了一句到list转map排序有什么技巧性的方法,他用了LinkedHashMap,而且用惯stream了,就想根据链表特性和stream的方法,先整理再顺序塞值,但是又不熟Collectors.toCollect的操作,担心不会按序生成。期间搜的一些map排序文章还蛮无语的,有用HashMap排的,有用将 map 转为流,对流排序,收集并返回一个新的 LinkedHashMap的,写了一大堆。我想,可以用T

2021-03-08 23:22:07 743 1

原创 《深入理解Java虚拟机》第2版和第3版的区别,看过第2版还有必要买第3版吗?

持续更新中~~博主前言hello,我是oxye~ 在Java届,《深入理解Java虚拟机 JVM高级特性与最佳实践》是一本经典的书籍了,很多程序员都会买一本,但看不看又是另一回事儿了。我一开始看也是迷迷糊糊的,因为初级程序员更多的是应用语言,不怎么在乎底层,也不想啃基础太深。随着不断学习,打扎实基础的过程中,丰富了技术储备,看了很多源码,也从初级变成高级了,再回过头看这本书时,就会顺利很多,也会学到很多知识,不仅加深了自己对Java的理解,也帮我解决了不少实际问题,例如jvm参数调整、阅读源码时理解

2021-02-19 23:23:24 3039

原创 Dubbo:2.7.x中 provider服务暴露过程的起点

前言网上关于dubbo服务暴露流程的文章挺多的,但是很多基于2.6.5版本的,并不适用2.7.x以后版本。今天发现旧版本中,ServiceBean是实现了Spring的 ApplicationListener< ContextRefreshedEvent >,Spring IOC 容器刷新完成后会调用 onApplicationEvent 方法,开始服务暴露export。但是截至2021年最新版(2.7.9),2.7.x版本后,ServiceBean并不实现ApplicationListe

2021-02-09 00:09:37 362

原创 Dubbo:@DubboService和@Service、@DubboReference和@Reference的区别和关系

目录前言1.不同时间的三组注解2.注解的升级2.1 @Reference2.1.1 Alibaba @Reference -> Apache @Reference2.1.1.1 注解升级2.1.1.2 属性增加2.1.2 @Reference -> @DubboReference2.1.2.1 注解升级2.1.2.2 属性增加2.2 @Service2.2.1 Alibaba @Service -> Apache @Service2.2.1.1 注解升级2.2.1.2 属性修改与增加2.2

2021-02-08 16:10:35 33313 11

原创 性能优化:jar / war包太大怎么办?分析Maven依赖,jar包瘦身

大家好,我是Oxye~ 最近在开发一些新系统,昨天发现一个系统的jar包突然变大好多,其他系统几十mb,它246mb,传输起来慢。突然想到之前看的一篇文章,有程序员把实况足球传到了SVN上,导致war包巨大一个程序员的水平能差到什么程度?我觉得自己项目不至于内置游戏,但可能依赖了多余的jar,所以进行了排查,并解决了jar过大的问题,现在把排查思路记录一下,过程并不难。如果你觉得jar或war包太大,不太正常,可以根据这个思路排除一下多余依赖,我只是排除了一个组依赖jar包就小这么多。

2021-02-02 21:53:21 10674 6

原创 Springboot集成Dubbo系列四:Linux搭建dubbo admin控制台

目录Linux搭建Dubbo Admin控制台1.下载dubbo admin源码2.修改配置3.maven打包4.启动项目Linux搭建Dubbo Admin控制台1.下载dubbo admin源码git clone https://github.com/apache/dubbo-admin.git2.修改配置cd dubbo-admin-develop/dubbo-admin-server/src/main/resources/vi application.properties修改zo

2021-01-28 17:45:54 134

原创 Springboot集成Dubbo系列三:windows搭建dubbo admin控制台

搭建Zookeeper0.软件版本CentOS:CentOS Linux release 7.3.1611 (Core)Zookeeper:apache-zookeeper-3.6.21.下载Zookeeper安装包到https://zookeeper.apache.org/releases.html下载[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ECp4o5gk-1611548673856)(C:\Users\Thunisoft\AppData\Roaming

2021-01-25 12:29:17 202

原创 Springboot集成Dubbo系列二:已有项目集成Dubbo

0.版本已有项目的Springboot版本:2.2.6.RELEASEDubbo版本:maven配置是0.2.0,源码版本是2.6.21.Maven整合已有或新建项目将多个项目整合成功一个项目多模块,多模块直接需要互相调用,所以都是平级的,既是生产者也是消费者2.添加依赖因为各模块已在pom配置了parent为主项目,所以再主项目的pom添加相关依赖即可<properties> <curator-framework.version>4.0.1</curato

2021-01-25 12:06:27 377

原创 Springboot集成Dubbo系列一:Linux搭建Zookeeper

搭建Zookeeper0.软件版本CentOS:CentOS Linux release 7.3.1611 (Core)Zookeeper:apache-zookeeper-3.6.21.下载Zookeeper安装包到https://zookeeper.apache.org/releases.html下载点进去有多种下载方式https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.

2021-01-25 11:03:22 253

原创 RocketMQ源码 目录结构介绍

目录前言源码目录acl 权限模块broker broker模块client 消息客户端common 公共包dev 开发者信息(非源代码)distribution 部署脚本、配置模块(非源代码)docs 开发者文档(非源代码)example 示例模块filter 消息过滤器logappender 日志logging 日志namesrv NameServer模块openmessaging 消息开放标准remoting 远程通信模块serutil 服务工具类store 消息存储style checkstyle©r

2021-01-19 15:56:35 916 2

空空如也

空空如也

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

TA关注的人

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