背景
最近新起了一套开发环境,需要从 Mysql 初始化数据到 ElasticSearch,以为重新新增一个 config 文件,配置新的 input 和 output 即可。
谁知经过测试发现,Logstash 启动之后,自动将第一个配置文件的 input 传输到两个 output 去了。
才知道,分开多个 config 文件,并没其他隔离作用。
实现方式
后来在网上搜了下,发现有两种方法实现。
最近新起了一套开发环境,需要从 Mysql 初始化数据到 ElasticSearch,以为重新新增一个 config 文件,配置新的 input 和 output 即可。
谁知经过测试发现,Logstash 启动之后,自动将第一个配置文件的 input 传输到两个 output 去了。
才知道,分开多个 config 文件,并没其他隔离作用。
后来在网上搜了下,发现有两种方法实现。
最近在做项目架构升级,并顺便升级了下基础组件。升级完之后,跑 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
今年 ChatGPT 火得一塌糊涂,大量专家说程序员要被 AI 替代,AI 要统治人类。虽然我觉得有点夸大其词,暂时对我影响还不大,不过既然有新东西出来,还是得玩一下,免得真的年纪大了慢慢被淘汰。所以注册了一个 openai 的账号,具体注册步骤网上很多,我下面会贴几个链接给大家参考。然后刚好我一直养着一个在美国的 VPS,基本上没怎么用,偶尔用来翻翻墙。VPS 服务商是 Linode,也不贵,10美元一个月,下面有链接,大家有需要可以去注册玩一下。并且我有一个微信小号,索性用来对接 ChatGPT 做聊天机器人,这样就可以不用翻墙就能问问题。下面说一下具体的过程和相关的资料。
最近在折腾 Gradle 的依赖版本统一管理,真的是一步一个坑。一开始求助于 ChatGPT ,提供了两个插件,一个是 java-platform ,另一个是 io.spring.dependency-management 。我选择了使用 java-platform ,但是各种尝试都是报错,大家有兴趣可以看看官网例子。
https://docs.gradle.org/current/userguide/java_platform_plugin.html
最近,生产环境 EKS(Elastic Kubernetes Service)偶尔出现 POD 被强杀问题。
项目是 SpringBoot 框架,启动了优雅停机,并且配置了停机时长为 120 秒。既然是被强杀,那肯定是因为在 120 秒内没有正常停掉应用。
经过日志分析,是由于开了弹性伸缩,项目还没启动完就收到了 kill 信号,这时候启动线程和停机线程并行跑,导致被停掉的线程又被启动起来,最终导致优雅停机失败,过了 120 秒后,容器被 kill -9 了。
为什么说“启动线程和停机线程并行跑,导致被停掉的线程又被启动起来”,难道 SpringBoot 就这么 LOW ,就不知道让启动线程跑完再执行停机线程?
Web性能测试的部分概况一般来说,一个Web请求的处理包括以下步骤:
(1)客户发送请求
(2)web server接受到请求,进行处理;
(3)web server向DB获取数据;
(4)webserver生成用户的object(页面),返回给用户。给客户发送请求开始到最后一个字节的时间称为响应时间(第三步不包括在每次请求处理中)。
在web性能测试中,一个事务表示一个“从用户发送请求->web server接受到请求,进行处理-> web server向DB获取数据->生成用户的object(页面),返回给用户”的过程,一般的响应时间都是针对事务而言的。
本规范规定了使用Java语言编程时排版、注释、命名、编码和JTEST的规则和建议。
本规范适用于使用Java语言编程的产品和项目。
下列文件中的条款通过本规范的引用而成为本规范的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本规范,然而,鼓励根据本规范达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本规范。
规则:编程时强制必须遵守的原则。
建议:编程时必须加以考虑的原则。
格式:对此规范格式的说明。
说明:对此规范或建议进行必要的解释。
示例:对此规范或建议从正、反两个方面给出例子。