跳至主要內容
记一个 Logstash 多源和多目标问题

背景

最近新起了一套开发环境,需要从 Mysql 初始化数据到 ElasticSearch,以为重新新增一个 config 文件,配置新的 input 和 output 即可。

谁知经过测试发现,Logstash 启动之后,自动将第一个配置文件的 input 传输到两个 output 去了。

才知道,分开多个 config 文件,并没其他隔离作用

实现方式

后来在网上搜了下,发现有两种方法实现。

通过 filter 进行分开输出


Mr.Chen大约 1 分钟文章LogstashLinux
记一个 Windows 下 'posix:permissions' not supported as initial attribute 异常

背景

最近在做项目架构升级,并顺便升级了下基础组件。升级完之后,跑 UT 报一下异常:

Caused by: java.lang.UnsupportedOperationException: 'posix:permissions' not supported as initial attribute
  at java.base/sun.nio.fs.WindowsSecurityDescriptor.fromAttribute(WindowsSecurityDescriptor.java:358)
  at java.base/sun.nio.fs.WindowsFileSystemProvider.createDirectory(WindowsFileSystemProvider.java:509)
  at java.base/java.nio.file.Files.createDirectory(Files.java:700)
  at java.base/java.nio.file.TempFileHelper.create(TempFileHelper.java:134)
  at java.base/java.nio.file.TempFileHelper.createTempDirectory(TempFileHelper.java:171)
  at java.base/java.nio.file.Files.createTempDirectory(Files.java:976)
  at com.google.common.io.TempFileCreator$JavaNioCreator.createTempDir(TempFileCreator.java:102)
  at com.google.common.io.Files.createTempDir(Files.java:439)
  at redis.embedded.util.JarUtil.extractExecutableFromJar(JarUtil.java:13)
  at redis.embedded.RedisExecProvider.get(RedisExecProvider.java:56)
  at redis.embedded.RedisServerBuilder.resolveConfAndExec(RedisServerBuilder.java:105)
  ... 141 more

Mr.Chen大约 2 分钟文章JavaGuavaWindows
个人微信接入 ChatGPT 成为聊天机器人

概要

今年 ChatGPT 火得一塌糊涂,大量专家说程序员要被 AI 替代,AI 要统治人类。虽然我觉得有点夸大其词,暂时对我影响还不大,不过既然有新东西出来,还是得玩一下,免得真的年纪大了慢慢被淘汰。所以注册了一个 openai 的账号,具体注册步骤网上很多,我下面会贴几个链接给大家参考。然后刚好我一直养着一个在美国的 VPS,基本上没怎么用,偶尔用来翻翻墙。VPS 服务商是 Linode,也不贵,10美元一个月,下面有链接,大家有需要可以去注册玩一下。并且我有一个微信小号,索性用来对接 ChatGPT 做聊天机器人,这样就可以不用翻墙就能问问题。下面说一下具体的过程和相关的资料。


Mr.Chen大约 7 分钟文章GoLangChatGPTWechat
解决 Gradle 父项目的 subprojects 中无法获取子项目属性的问题

概要

最近在折腾 Gradle 的依赖版本统一管理,真的是一步一个坑。一开始求助于 ChatGPT ,提供了两个插件,一个是 java-platform ,另一个是 io.spring.dependency-management 。我选择了使用 java-platform ,但是各种尝试都是报错,大家有兴趣可以看看官网例子。
https://docs.gradle.org/current/userguide/java_platform_plugin.html


Mr.Chen大约 3 分钟文章JavaGradle
记一个 SpringBoot 优雅停机失败问题

概要

最近,生产环境 EKS(Elastic Kubernetes Service)偶尔出现 POD 被强杀问题。

项目是 SpringBoot 框架,启动了优雅停机,并且配置了停机时长为 120 秒。既然是被强杀,那肯定是因为在 120 秒内没有正常停掉应用。

经过日志分析,是由于开了弹性伸缩,项目还没启动完就收到了 kill 信号,这时候启动线程和停机线程并行跑,导致被停掉的线程又被启动起来,最终导致优雅停机失败,过了 120 秒后,容器被 kill -9 了。

过程分析

为什么说“启动线程和停机线程并行跑,导致被停掉的线程又被启动起来”,难道 SpringBoot 就这么 LOW ,就不知道让启动线程跑完再执行停机线程?


Mr.Chen大约 3 分钟文章JavaSpringBoot
Web 性能测试指标

性能指标

Web性能测试的部分概况一般来说,一个Web请求的处理包括以下步骤:

(1)客户发送请求
(2)web server接受到请求,进行处理;
(3)web server向DB获取数据;
(4)webserver生成用户的object(页面),返回给用户。给客户发送请求开始到最后一个字节的时间称为响应时间(第三步不包括在每次请求处理中)。

1.事务(Transaction)

在web性能测试中,一个事务表示一个“从用户发送请求->web server接受到请求,进行处理-> web server向DB获取数据->生成用户的object(页面),返回给用户”的过程,一般的响应时间都是针对事务而言的。


Mr.Chen大约 12 分钟文章Java性能
Java 语言编码规范

1. 范围

本规范规定了使用Java语言编程时排版、注释、命名、编码和JTEST的规则和建议。
本规范适用于使用Java语言编程的产品和项目。

2. 规范性引用文件

下列文件中的条款通过本规范的引用而成为本规范的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本规范,然而,鼓励根据本规范达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本规范。

3. 术语和定义

规则:编程时强制必须遵守的原则。
建议:编程时必须加以考虑的原则。
格式:对此规范格式的说明。
说明:对此规范或建议进行必要的解释。
示例:对此规范或建议从正、反两个方面给出例子。


Mr.Chen大约 30 分钟文章Java
Disruptor 详细介绍

一、背景

1.来源

Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内部的内存队列的延迟问题,而不是分布式队列。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。

2.应用背景和介绍

据目前资料显示:应用Disruptor的知名项目有如下的一些:Storm, Camel, Log4j2,还有目前的美团点评技术团队也有很多不少的应用,或者说有一些借鉴了它的设计机制。
Disruptor是一个高性能的线程间异步通信的框架,即在同一个JVM进程中的多线程间消息传递。


Mr.Chen大约 18 分钟文章JavaDisruptor
vscode 编辑 markdown 时实现图片粘贴

​​

最近在用 vuepress 制作自己的博客,平时写代码除了 Java 是用 IDEA 之外,其他语言都是用的是 vscode 写的,看到网上有说可以通过插件实现快速添加图片,所以在插件库里找了下,有两个热门插件,分别是 Markdown Image 和 Paste Image,因为 Markdown Image是排第一的(虽然下载量没有 Paste Image 高),所以首先安装了 Markdown Image,但是按照说明来操作,怎样都粘贴不了,按了 Shift + Alt + V 快捷键一点反应都没有。
然后是各种尝试,更发现了 vscode 是不能直接从 windows 资源管理器中用Ctrl + C 和 Ctrl + V 复制粘贴文件,必须用拖拽的方式才能实现复制粘贴。特意问了一下 ChatGPT ,它竟然告诉我 vscode 是支持用Ctrl + C 和 Ctrl + V 复制粘贴,还说我的 vscode 没有权限。又是各种折腾,最后搜到了比较合理的答案,vscode 的复制粘贴只能在同一个 workplace 里操作,并不能与操作系统进行复制粘贴。
既然 Markdown Image 用不了,只能安装 Paste Image 试试。安装后按 Ctrl + Alt + V 快捷键,竟然提示 There is not a image in clipboard.,还是粘贴不了图片,但是比 Markdown Image 要好了,至少有提示信息。
然后又是折腾,这次不是直接复制图片文件,而是用截图的方式,竟然成功了,但是文件保存到 md 文件的当前目录,并且以日期时间作为文件名,不太友好。最后修改了以下插件配置,将图片文件保存到 assets\MD文件名 目录下。


Mr.Chen大约 2 分钟文章VSCode