RabbitMQ通过Docker建立集群
https://github.com/rabbitmq/rabbitmq-cli/pull/445
目前RABBITMQ_ERLANG_COOKIE环境变量已经被弃用,现在有两种方法设置erlang cookie
在容器启动时直接覆盖$HOME/.erlang.cookie文件
使用--erlang-cookie显式覆盖erlang cookie
直接覆盖$HOME/.erlang.cookie文件在容器启动时直接挂载一个$HOME/.erlang.cookie文件到容器中去
创建一个自定义的erlang.cookie文件,注意修改文件的权限
也可以用docker secret
12345# 自定义erlang.cookie文件内容echo '123456' > erlang.cookie# 修改文件所有者为容器内的rabbitmq用户,并且修改读写权限为0600chmod 0400 erlang.cookiechown 999:999 erlang.cookie
创建网桥和容器,并把文件挂载到容器内部去
1234567# 创 ...
如何设置Java应用的时区
最近研究时区问题的时候发现Linux上的Java时区设置简单中带着一些不简单,翻了翻jvm的源码把这部分的逻辑理清楚了
JVM如何获取获取当前时区1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 public static TimeZone getDefault() { return (TimeZone) getDefaultRef().clone();}/*** Returns the reference to the default TimeZone object. This* method doesn't create a clone.*/static TimeZone getDefaultRef() { TimeZone defaultZone = defaultTimeZone; if (defaultZone == null ...
Linux上的TZ环境变量
Linux默认的时区是UTC,所以在创建Docker容器时我们会添加一个环境变量TZ=Asia/Shanghai来指定容器的时区,但是偶然发现直接指定TZ环境变量为Asia/Shanghai后date命令输出的时间依然是UTC时间,于是去研究了一下这个环境变量。
TZ环境变量如何使用TZ是POSIX标准中定义的一个标准环境变量,用来覆盖各种与时间有关的函数的默认时区。在Linux中,基本是GNU C 库即glibc,glibc的TZ环境变量有2种写法:
std offset[dst[offset][,start[/time],end[/time]]],如国内的时区对应为CTS-8
:[filespec],这是最常见的一种,如Asia/Shanghai
对于TZ环境变量的解释为:
如果使用的filespec格式,对于:/开头的,会去读取指定路径的tzfile格式的时区文件来读取时区信息;对于:开头的会去系统时区目录读取时区文件,即/usr/share/zoneinfo/;对于:也没有,只有一个filespec的,比如常见的TZ=Asia/Shanghai,会尝试上面两种T ...
EasyExcel与@Accessors,@Builder与@SuperBuilder
在使用EasyExcel时发现在解析Excel文件时,发现单元格中的数据无法被注入到对象中,随后去EasyExcel项目的issues区发现这是个老问题了:https://github.com/alibaba/easyexcel/issues?q=Accessors
原因分析在接收Excel数据的对象的构造方法上打断点,并查看方法的调用链可以看到这个方法:
123456789101112131415161718192021222324252627282930private Object buildUserModel(Map<Integer, ReadCellData<?>> cellDataMap, ReadSheetHolder readSheetHolder, AnalysisContext context) { ExcelReadHeadProperty excelReadHeadProperty = readSheetHolder.excelReadHeadProperty(); Object resultModel; ...
判断当前环境是否运行在docker中
有时候我们并不希望我们的服务跑在docker容器中,网上搜索了一下,找到了一种判断当前服务是否运行在docker中的方法
方法的原理1cat /proc/1/sched
如果返回的结果为:systemd (1, #threads: 1),则说明环境为Linux;对于使用init的系统pid为1的进程为init
如果是在docker容器内的话,以java服务为例:java (118925, #threads: 236),此时pid为1的进程为java
使用方法(以Java为例)12345678ProcessBuilder pb = new ProcessBuilder();pb.command("cat", "/proc/1/sched");Process start = pb.start();try (Scanner sc = new Scanner(start.getInputStream())){ String pid1 = sc.nextLine(); Pattern pattern = Pattern.co ...
SpringCloudAlibaba文档汇总
Sentinelwiki
注解支持
Seataseata.io/zh-cn/docs/ops/deploy-guide-beginner.html
JDK下载地址接口
在Idea上看到这个东西
然后把接口地址抓了出来
1https://download.jetbrains.com/jdk/feed/v1/jdks.json.xz
更新:
发现接口末尾可以不加.xz,能直接拿到json
1https://download.jetbrains.com/jdk/feed/v1/jdks.json
Have Fun!
使用Fiddler对Java程序进行抓包
Fiddler是常用的一个抓包工具,可以通过这个工具对Java程序的进行抓包。
第一步是设置代理
1234static { System.setProperty("proxyHost", "localhost"); System.setProperty("proxyPort", "8888");}
或者添加JVM参数:-DproxyHost=localhost -DproxyPort=8888
网上很多教程是将Http的代理和Https的代理分开,实际上通过proxyPort和proxyHost两个属性能够一次性设置Http的代理和Https的代理。
分析源码中的DefaultProxySelector类可以看到这段话:
12345678910111213141516171819202122232425262728/** * This is where we define all the valid System Properties we have to * supp ...
泰拉瑞亚实现自动钓鱼
参考知乎上的一篇文章:https://zhuanlan.zhihu.com/p/367243635
知乎上的做法是:
修改游戏本身的FishingCheck函数,添加一个钓鱼的标志位fishFlag,初始为false,如果钓到了鱼就将fishFlag置为true
创建一个线程,内部是一个死循环,循环不断检测fishFlag,如果为true则执行2次鼠标单击事件,一次为收杆,一次为重新抛竿,然后将fishFlag重新设置为false
这个做法有些问题,一个是游戏无法完全退出,退出后会残留一个线程;还有就是2次鼠标事件的间隔太短,有时游戏内收杆的动画还没结束,抛竿的鼠标事件就执行了
我参考文章的做法做了一些修改:
下载dnSpy,如果要调试则需要下载32位版本
https://github.com/dnSpyEx/dnSpy/releases
dnSpy打开泰拉瑞亚主程序,找到Projectile类
右键Projectile类创建一个DoFish方法,并编辑函数
123456789101112131415161718public extern void DoFish(); ...
在Windows上编译zeal
经常使用zeal来查文档,但是在Windows上zeal经常闪退,而Arch上没有这个问题,就想着自己clone一份最新的代码自己编译。
编译前的准备
使用Visual Studio 2019安装MSVC.
安装CMake.
下载Qt5.15.2.
这里推荐使用aqtinstall,假设我们要把Qt下载到D:\Qt
123456#安装aqtinstallpip install aqtinstall#安装qt到D:\Qtpy -m aqt install --outputdir D:\Qt 5.15.2 windows desktop win64_msvc2019_64 -m all --base https://mirrors.tuna.tsinghua.edu.cn/qt#安装OpenSSL到D:\Qtpy -m aqt tool windows tools_openssl_x64 1.1.1-10 qt.tools.openssl.win_x64 --outputdir D:\Qt --base https://mirrors.tuna.tsinghua.edu.cn/qt
...