自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

heasy's blog

Thanks for watching and talking

  • 博客(91)
  • 资源 (3)
  • 收藏
  • 关注

原创 Netty接收超长TCP数据时 使用按行分隔Decoder无法正确解码的问题解决

但如果一直没有收到换行符时,则会在channelinactive时,丢弃之前接收到的所有消息。为了解决这个问题,可以通过自定义子类覆盖其decodeLast方法,实现自定义的逻辑。为了解决数据丢弃问题,该解码器在执行到此方法时,检测最后一个字节是不是换行符,如果不是换行符则手动增加一个换行符到其中,此时就肯定会被decode方法将之前接收到的数据组成一个包。需求是收到的消息最长长度限制在50M内,且没有固定的消息头,每次接收消息又不一定在结尾存在固定的换行符,所以现有的解码器都不足够满足需求。

2024-01-25 15:10:50 575

原创 谨慎升级spring-data-elasticsearch 4.4.2

在升级项目依赖时,发现目前用的spring-data-elasticsearch版本为4.3.2 对应spring-boot版本2.6.4而目前最新的版本为4.4.2 对应spring-boot版本为2.7.3就顺手升级了下。观看了下官方升级文档发现改动并不大。然而项目跑起来后发现了一些没有在文档中写出的问题,导致需要大片改动代码才可以适配。最终回滚了版本号,...

2022-09-01 14:58:06 1473 3

原创 Java springboot自定义bean加载控制顺序在flyway执行后

在springboot中,我们经常需要在系统启动时执行一些自定义逻辑,例如将数据库中的值读取给bean使用等等。一般采用自定义bean的初始化流程方式实现。方式有许多种,但假如这个bean要被其他模块使用时保证已经被初始化过,就不能简单的采用runner方式,因为可能runner还没执行其他bean就已经开始使用目标bean了。毕竟稳妥的方式是采用实现InitializingBean接口的方式。但如果在初始化过程中,又依赖了其他模块,例如redis、flyway等,需要确保在其他模块初始化完成

2022-05-19 12:08:33 1029

原创 Java springboot使用mybatis-plus druid连接池接入mysql和clickhouse多数据源 自定义sql实现批量插入array map复杂类型等

项目之前是springboot简单的mybatis接入mysql,后续需求要接入clickhouse,顺便借此机会引入mybatis-plus,因为在迭代过程中时不时要加字段,每次加字段都要手动改mapper.xml文件的resultmap等sql实在是很没必要。但在接入之后,在往clickhouse插入测试数据时,使用了mybatis-plus自带的batchSave()方法,发现速度非常慢,完全不是clickhouse该有的写入速度。查阅源码发现其实框架里的batchSave是一个for循环,调用单

2022-04-29 16:03:33 5754 12

原创 MacOS Monterey 12.3.1 升级后cd命令报env: python: No such file or directory

首先python 已经被从 12.3 系统中删除了,需要自己安装,比如用 homebrew安装完成后使用ln -s /usr/local/bin/python3 /usr/local/bin/python将python3的命令链接到python上

2022-04-13 15:20:10 3486

原创 使用poi-tl写word文档时WARN org.apache.poi.util.XMLHelper.logThrowable:307 - SAX Feature unsupported

使用poi-tl版本1.11.1项目依赖的poi-ooxml版本5.2.0在写word文档调用writeAndClose()方法时会报警告WARN org.apache.poi.util.XMLHelper.logThrowable:307 - SAX Feature unsupported [log suppressed for 5 minutes]http://javax.xml.XMLConstants/property/accessExternalStylesheetjava.la

2022-04-07 11:01:15 3470 2

原创 Java Mybatis使用resultMap时 属性赋值顺序错误的坑

今天发现个坑,新建的表使用生成工具生成的mapper文件和实体类后,发现少了个字段就又手动加了下,结果发现一个问题ids是后加入的字段@Data@Builderpublic class QueryRecordPo { //若干其他属性.... private String outputField; //后加的 private String ids; //若干其他属性 //...}然后resultMap中是这样写的 &.

2021-10-26 20:24:35 1200 2

原创 Netty 4.1.55版本文件上传参数接受时死循环 cpu100%的bug记录

由于使用了2.4.1版本的springbootstarter,声明的netty版本为4.1.55 在使用netty进行http服务时,接受参数get方法一切正常 但post方法中的form-data方式一直无法接受参数,程序会卡在new HttpPostRequestDecoder(request)这一句,同时cpu观察到100%,猜测为死循环。跟踪代码发现在private static int findDelimiter(ByteBuf undecodedChunk, String d

2021-07-08 14:41:03 516

原创 Java 使用代码在运行时获取mysql、jdk、elasticsearch、redis、netty、kafka等组件的版本号

直接上代码 @FunctionalInterface interface VersionGetter { String getVersion(); } @Slf4j private static class MysqlVersionGetter implements VersionGetter { @Override public String getVersion() { try {

2021-05-08 16:54:15 348

原创 Java 自动生成不存在的文件名 文件自动重命名功能 支持带后缀的文件名

如果文件1.txt已存在 则生产1(1).txt 1(1).txt已存在 则生成1(2).txt 。。。。直到不存在为止strutil为hutool工具类 /** * 如果文件已存在 则自动重命名为带后缀的文件名 */ private String generateNotExistFileName(String src) { String path = src; String extension = FilenameUti...

2021-04-26 20:05:54 530 7

原创 Springboot 下载文件接口 中文文件名乱码

接口下载文件时,如果文件名带有中文,中文部分会乱码 (macbook chrome浏览器)在网上找了几种方式,大部分都是 response.setHeader("Content-Disposition", StrUtil.format("attachment;filename={}", URLUtil.encode(fileName, charset)));但加了之后还是乱码。最后加了这行后 成功了,默认编码是ios8859-1 //防止中文乱码 r

2021-04-23 17:45:09 2923

原创 idea 程序包不存在 但不报红 源码可点击 的解决办法

打开run anything 窗口 (双击ctrl)输入 mvn idea:idea使idea重新生成工作目录文件即可我是在pom有修改的情况下 进行了git stash操作,之后修改过一些文件后unstash回来时,编码一切正常,但一编译就报错。...

2021-04-19 16:35:26 1786

原创 Mysql报错out of range value for column ‘id‘ at row 1

在对mysql库进行插入操作时,错误日志提示id范围超出,但表中一条数据都没有一般这个错误都是因为表的自增值过大,超出了id字段类型的最大范围导致的。先不纠结为什么没数据,先解决问题让他正常工作。使用语句 show create table XXX;可以查看表结构及其自增值。看到我这张表的自增值auto_increment=4294967523 但id字段设置的值是int类型的 明显已经超出了int的范围。因为表中没有数据 直接粗暴的把自增值改为1了。有数据就改为..

2021-04-06 13:49:45 7501

原创 Java 使用Jackson处理json 字符串值反序列化类型为集合时的报错处理 单个值自动转集合

在处理Json字符串时 有时会遇到一种情况: JSON字符串中的某一项的值是字符串类型,但想要反序列化为一个集合类型举例: {"i":1,"list":"astr","str":"em"} 这样一个字符串 想要反序列化为如下的一个类 可以预见的在转换到list时会抛出如下异常public class Po { private Integer i; private List<String> list; private String str;}..

2021-02-26 20:07:02 1518

原创 Spring security 同时支持多种加密方式

参考文章:http://www.javaboy.org/2020/0618/passwordencoder.htmlspring security一系列都是从这里学的 非常感谢作者在security框架中 如果没有创建任何一个PasswordEncoder 则会使用默认的 ,如果在容器中有PasswordEncoder 则会使用容器中的,源码如下:@Order(InitializeUserDetailsBeanManagerConfigurer.DEFAULT_ORDER)class In.

2021-02-07 16:34:32 1005

原创 Java 获取cron表达式的下次执行时间

cron表达式大部分用来表示一个执行间隔,或一个具体时间对于非绝对时间的cron表达式,可以根据上次执行时间 获取到下次执行时间。spring中已经提供了工具类,在旧版中叫做CronSequenceGenerator随着spring的更新 这个类已经被标记为过期了 取而代之的是CronExpression使用方法很简单 这个类只有一个parse的初始化方法 以及一个next方法。 final CronExpression cronExpression =.

2021-02-01 19:41:50 5691 2

转载 使用Chrome浏览器访问https提示您的连接不是私密连接的快速解决办法

解决:就是在当前页面用键盘输入thisisunsafe,像玩gta输秘籍一样(panzer),不是在地址栏输入,就直接敲键盘就行了,页面即会自动刷新进入网页。自签名的证书不被chrome信任 也就无法访问。thisisunsafe 这个命令,说明你已经了解并确认这是个不安全的网站,你仍要访问就给你访问了。...

2021-01-25 19:52:12 6947

原创 Java Spring 使用AOP代理方法 类型转换异常java.lang.ClassCastException 原因及解决办法

有一段代码 有时会出现类型转换异常 很诡异 排查原因发现是spring aop造成的。项目中我使用了aop进行自定义权限,若权限不通过 返回固定的ResponseVo 对应字段为:@Data@AllArgsConstructor@NoArgsConstructorpublic class ResponseVo<T> { @JsonProperty("response_code") private Integer responseCode; @JsonPr

2021-01-25 16:26:50 1515

原创 Java 使用Spring-data-elasticsearch 为索引添加别名 修改及替换别名

一直感觉spring-data-es封装的很迷..调用起来奇奇怪怪 还是封装一层方便自己调用吧@Componentpublic class EsUtil { private static ElasticsearchRestTemplate elasticsearchRestTemplate; @Autowired public EsUtil(ElasticsearchRestTemplate elasticsearchRestTemplate) { Es

2021-01-15 20:03:55 3329

原创 Java 使用ControllerAdvice进行全局异常处理以及全局统一返回值处理

在springboot应用开发中,面对程序可能出现的各项异常,最好有一个全局的处理。不然假设后端因为某些原因抛出异常,比如空指针,文件不存在等,会直接返回500在前后端分离的项目中,前端会拿到internal server error + 后端的一大堆异常堆栈。这对前端是毫无用处的。使用controlleradvice + exceptionhandler 可以实现后端应用的全局异常处理。另外还可以通过自定义异常,在需要的时候抛出异常,交给全局异常处理器来返回某些逻辑;通过编码可以实现全局异

2021-01-04 18:01:00 1823

原创 App 在macOS big sur下提示已损坏无法打开解决办法

终端输入以下命令,回车sudo xattr -d com.apple.quarantine /Applications/你的app名字.app

2020-12-22 14:09:10 6921

原创 Java 使用syslog4j时 接收udp协议消息超长被截断 接收不完整的处理

使用udp协议接收消息 默认buff size为1024 也就是1k 超过这个长度的消息都会被截断,解决办法是手动设置udp接收的缓冲区大小。这个api在 <dependency> <groupId>org.graylog2</groupId> <artifactId>syslog4j</artifactId> <version>0.9.60&l

2020-11-26 14:46:11 2138

原创 Centos7 FreeRadius 启动失败 Job for radiusd.service failed because the control process exited with error

使用radiusd -X 启动 可以看到启动过程及出错原因配合查看日志/var/log/radius/radius.log 可以解决大部分内容但radiusd -X可以启动 使用systemctl start radiusd.service启动却报错[root@101-103 system]# systemctl start radiusd.serviceJob for radiusd.service failed because the control process exited wit

2020-11-19 15:44:01 2437

原创 Springboot2 整合redis发布订阅 解决订阅多个频道重复代码过多 创建很多bean问题

之前的写法 每个频道都要写个@bean 重复代码太多import cn.tim.util.Constants;import com.alibaba.druid.filter.config.ConfigTools;import lombok.extern.slf4j.Slf4j;import org.redisson.Redisson;import org.redisson.api.RedissonClient;import org.redisson.config.ClusterServer.

2020-09-28 14:29:10 944

原创 Java SpringBoot2.3.4 配置redis 基于lettuce 同时支持集群与单机 配置密码加密 并使用redisson分布式锁

项目的redisutil 使用的是jedis 升级项目新的springboot推荐使用lettuce之前的写法过于臃肿 为单机和集群分别搞了一份代码 很多重复部分只要基于配置文件 动态创建redisConnectionFactory就可以了由于项目中各个数据库的密码在配置文件中都是加密的 所以有一段解密代码package cn.mypro.config;import com.alibaba.druid.filter.config.ConfigTools;import lombok..

2020-09-27 17:24:03 2905

原创 Centos7 安装elasticsearch 7.9.1 踩坑过程及解决办法

5个最常见的问题:[1]: initial heap size [2147483648] not equal to maximum heap size [4294967296]; this can cause resize pauses[2]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535][3]: max virtual memory areas vm.ma

2020-09-24 17:32:27 2811 1

原创 Java idea 项目中HttpServletResponse的setCharacterEncoding()方法找不到 编译出错

在整理项目的pom依赖时 把所有和springboot相关的依赖放到了最后,其余依赖放到了前面编译过程中报错 找不到HttpServletResponse的setCharacterEncoding()方法查看源码时可以看到idea的反编译提示 是java1.2版本的解决办法是 在pom中把所有springboot相关的依赖放到最前面 怀疑问题出在starter-web这个依赖上刷新依赖可以看到方法不报错了 再次查看源码 看到版本变成了8...

2020-09-23 19:20:48 1617

原创 解决对接华为kafka 进行Kerberos认证时的sun.security.krb5.KrbException: Server not found in Kerberos database (7)

首先是问题的几个可能产生原因:1. 提交任务的客户端节点与集群时间有没有偏差5分钟以上2. 配置文件是不是客户端上最新的3. zk依赖包是不是华为的,不能是开源的4. zookeeper.server.principal 这个参数是不是 zookeeper/hadoop.hadoop.com依次排查 1、2 没问题在代码中进行了4的修改 没有改3的情况下 报错依旧从华为客户端中 /opt/client/Kafka/kafka/libs/目录下拷贝出三个jar包 (不知道具体是哪个有修改

2020-07-28 10:56:54 3780 2

原创 Kafka linux(centos7)安装配置kerberos并在另一台机器上使用Java服务接收消息

项目需要将kafka配上kerberos,从来没接触过,靠着一堆教程勉强跑通先说下网络环境,kafka服务器的IP为192.168.100.83 下文记做Linux跑Java服务的IP为192.168.62.116下文记做mac首先要将两个机器的hosts互相添加主机名在不添加主机名的情况下 没有成功 这步还是很重要的linux的: hadoop03是跟着教程起的名字 无特殊含义 指向本机 并添加mac的主机名[root@localhost kafka_2.12-2.4.0]# c..

2020-07-21 18:39:59 702

原创 Spring BindingResult获取不到结果可能的原因之一 参数顺序 没有紧挨着校验参数

@Valid或@Validate的参数后必须紧挨着一个BindingResult 参数,否则spring会在校验不通过时直接抛出异常 public InternalResponseVo updateSource(@Validated @RequestBody(required = false) SourceValidator sourceValidator, @PathVariable int id, BindingResult bindingResult) {}如果出现错误会直接抛出异常,..

2020-06-29 19:30:43 1496 1

原创 Chrome 浏览器地址栏显示完整网址 不隐藏http/https的设置方法 83版本可用

地址栏输入 chrome://flags/访问后 搜索 Context menu show full URLs设置为enabled 并根据提示relaunch浏览器在地址栏右键 弹出菜单中点击 总是显示完整网址老版本中的 UI Hide Steady-State URL Scheme and Trivial Subdomains 设置项早就被干掉了...

2020-06-28 13:38:58 6870 1

原创 杂记 选一款心仪的听歌软件

我是个音乐重度爱好者,从小时候买盗版DVD,用着光碟机一首歌能听一上午,偶尔随机播放听到一首心仪的歌,便要听个过瘾,越循环播放越是感到愉悦。到现在对各种耳机、音响的向往,我舍不得花一千块买别的,也舍得买一台哈曼卡顿、买一个AirPods、买一个降噪耳机。对无关紧要的一毛不拔,对真心喜欢的东西很舍得花钱,是我坚持的一种消费方式。1 QQ音乐 那时候也没有音乐版权管理,基本一个软件上可以听,就随处可见了。那时候还小,偷偷摸摸去网吧,除了QQ号没有什么账号属于自己,所以也就用的QQ音乐,已经...

2020-06-18 19:36:04 926

原创 Java 使用Runtime在一个Java程序中启动和关闭另一个Java程序

主要使用了Runtime.getRuntime().exec(new String[]{"/bin/bash", "-c", cmd});调用shell命令的工具类: public static String runShell(String cmd) throws Exception { StringBuilder result = new StringBuilder(); Process process = null; Buffer

2020-06-18 14:14:46 2150

原创 使用Logstash接收Netflow日志并发送到syslog服务器

接受90端口的netflow日志,解析netflow中的源IP、端口、目的IP、端口,并输出syslog到任意端口 netflow日志格式:{ "netflow" => { "last_switched" => "2020-05-28T02:39:13.781Z", "dst_as" => 0, "in_bytes" => 183, "ipv4_src_ad...

2020-05-28 13:43:11 2536

原创 VIM 常用快捷键

看到同组大佬都不用鼠标的。。。而且写文件、查找翻页什么的 比我用鼠标快多了,那熟练的快捷键看的我一愣一愣的光标移动:h或退格: 左移一个字符; l或空格: 右移一个字符; j: 下移一行; k: 上移一行; gj: 移动到一段内的下一行; gk: 移动到一段内的上一行; +或Enter: 把光标移至下一行第一个非空白字符。 -: 把光标移至上一行第一个非空白字符。 w: 前移一个单词,光标停在下一个单词开头; W: 移动下一个单词开头,但忽略一些标点; e: 前移一个单词,光标停

2020-05-22 11:45:07 268

原创 分享一些收藏的技术学习网站

免费在线学习代码重构和设计模式在线学习设计模式,有代码有例子,更加生动What is Machine Learning? - 斯坦福大学 | Coursera吴恩达的机器学习入门必看课程,有中文字幕社区 Spring Security 从入门到进阶系列教程 | Spring For All学习spring security 还有很多spring相关的教程 很简短 适合快速入门大数据入门视频教程 · Issue #1 · jast90/awesome-books zookeeper hiv...

2020-05-15 15:15:32 236

原创 Java 记一次自定义比较器中compareTo方法使用long强转int作为比较结果产生的bug

最近换了新工作,改bug作为熟悉业务及代码的快速途径,是每个新人都要经历的代码不难,难的是业务不熟,很多地方不知道为什么要这么写。当然,时间久了就好了这次要找的bug是排序问题,前端请求接口,按某个字段排序后,返回的结果总是很怪异,数据最多的那个总是与排序要求相反。比如升序排序,他会跑到最后一页的最后一条 降序排序会跑到第一条捋代码发现他的排序逻辑如下:请求参数:orderBy=validCount&sortType=desc&currentPage...

2020-05-14 15:30:44 1087 1

原创 Python 判断 is 与 == 的区别

is用于判断两个变量引用对象是否为同一个,==用于判断引用变量的值是否相等。Python中,万物皆对象 每个对象包含3个属性,id,type,valueid就是对象地址,可以通过内置函数id()查看对象引用的地址。type就是对象类型,可以通过内置函数type()查看对象的类型。value就是对象的值。a is b相当于id(a)==id(b)is 比较的是id是不是一样,== 比较的是值是不是一样。Python会对比较小的整数对象[-5,256]进行缓存,下次用的时...

2020-05-12 16:54:03 485

原创 SpringCloud bus 手动post可用 使用webhooks自动更新配置失效的解决小记

先说解决办法:查阅网上资料发现大家的问题其实都出在少了一个依赖,而不应该手动去拦截。这个依赖加在配置中心上 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-con...

2020-05-11 18:28:58 397 1

原创 Java 疫情期间的几次远程面试记录

记录几个还没忘的面试问题一面(一个半小时 很多问题已经忘了)讲一个你参与的项目,说说你在项目里都做了什么(由于项目里使用到了ES)ES里的模板知道吗(回答了mapping template)ES生成的字符串类型,是什么样的(text类型和keyword子类型都有) 为什么要这么做 两种类型的区别ES里的match 与match_phrase 有什么区别如果想一次性查询...

2020-04-19 16:05:14 1087

华为kafka.zip

华为客户端中的kafka与zookeeper 依赖包,因为其是定制的,如果不使用这些jar包,无法对接kerberos认证

2020-11-20

chromedriver_win32.zip

windows本地chrome版本为75.0.3770.142 使用的ChromeDriver的驱动类

2019-07-25

台式机i5 8500+b360+10.13.6 黑果efi

台式机i5 8500+b360 + 10.13.6 安装黑果可用的efi 可驱动核显 独显需更改设置

2019-03-26

空空如也

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

TA关注的人

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