判断当前环境是否运行在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 = Patt...
SpringCloudAlibaba文档汇总
Sentinel wiki 注解支持 Seata seata.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 * s...
泰拉瑞亚实现自动钓鱼
参考知乎上的一篇文章: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 DoFi...
在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...
HTTPS知识点总结
熬夜把深入浅出HTTPS:从原理到实战这本书看完了,总结一些主要的知识点,另外劝告各位熬夜伤身体 TLS/SSL协议综述 什么是TLS/SSL协议 在早期,为了解决HTTP的安全问题,网景公司在1994年创建了SSL协议。一开始SSL协议只是浏览器的一个拓展,后来逐渐发展成一个独立协议,用于保证网络通信的认证和安全,SSL协议有SSLv1、SSLv2、SSLv3。 1996年,IETF(Internet Engineering Task Force)组织在SSLv3的基础上进一步标准化了该协议,微软为这个新协议取名TLS v1.0,目前最新的版本是TLSv1.3 TLS/SSL协议的目标 TLS/SSL协议在网络模型中位于应用层和传输层之间,构建在TCP上,构建在UDP上的称为DTLS。 TLS/SSL协议有4个目标: 加密安全 通信双方的数据是安全的,不可篡改和伪造。 互操作性 TLS/SSL协议是标准的,任何开发者基于TLS/SSL RFC设计规范都可以实现该协议,开发者也很容易在应用中引入TLS/SSL协议。 可扩展性 密码学算法在不停迭代,随着时间推...
在RestTemplate中使用HttpComponentsClientHttpRequest解析gzip编码
Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed between tokens 今天在使用RestTemplate调用接口时发现无法对Gzip的数据进行解压,然后找到了这篇文章: 让RestTemplate使用和解析gzip编码。 原因 文章提到RestTemplate默认不使用Gzip,也不解析 Gzip编码结果,这是因为RestTemplate默认SimpleBufferingClientHttpRequest类。通过idea可以看到RestTemplate的继承关系 在HttpAccessor类中,ClientHttpRequestFactory这个private属性的默认值为一个SimpleClientHttpRequestFactory对象 RestTemplate在获取数据时getForObject、getForEntity、postForObject、postForEntity、exchange等方法最终都是调用exe...
申请Let’s Encrypt的免费SSL证书并在SpringBoot中使用
最近有想法申请一个SSL证书,阿里每年可以免费申请20个单域名证书,虽然够用但不是泛域名的证书,遂盯上了Let’s Encrypt。 Arch在安装上安装acme.sh 1pacman -S acme.sh 注册账号 1acme.sh --register-account --email XXX@XX.com 注册账号时可以指定邮箱,当有重要事项发生时,Let’s Encrypt会发送邮件进行通知 续期证书没有限制,需要注意的是如果证书的有效期大于30天续期操作没有任何作用,证书的有效期是90天,一旦证书的剩余有效期小于30天Let’s Encrypt会发送邮件提醒用户续期证书 方法一 : 手动申请证书 申请证书的方式有多种,此处只介绍最方便的一种 1acme.sh --issue -d '*.codexvn.top' --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please 结果为: 123456789101112131415161718[2021年 03月 24日 星期三 17:39:39 C...