Note

02
June
Jenkins + Docker 构建自己的自动化部署
当你写完代码后,点下push按钮,不到一会你的线上应用就完成了更新并且运行了起来,这就是完美的工作流。准备流程这样的工作流也称自动化部署,具体的流程:开发人员推送代码到git仓库git仓库触发webhook请求build服务器build服务器执行构建任务build服务器打包docker并push到docker仓库build服务器登录生产服务器,停止旧服务,pull新镜像并运行要构建这么一套自动化部署,我们需要有:git仓库构建服务器docker镜像仓库生产服务器git仓库github,码云,或者私有的gitea、gitlab都是可行的。构建服务器构建过程通常会占用较多的服务器资源,如果服...
147
2020/06/02
09
Apr
JVM的类加载
生命周期一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载 (Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化 (Initialization)、使用(Using)和卸载(Unloading)七个阶段,其中验证、准备、解析三个部分统称为连接(Linking)。类加载加载通过一个类的全限定名来获取定义此类的二进制字节流。将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口(反射机...
133
2020/04/09
07
Apr
关于JVM Safepoint(安全点)的理解
首先从垃圾回收说起,当发生GC时,需要从方法区或本地变量表等地方获取GC Roots,但如果是单纯的遍历查找的话是非常亏的,GC发生时本身就停止了所有的线程,不能让这一操作耗费太多的时间。HotSpot为优化GC Roots的查找,采用了OopMap这一数据结构,一旦类加载动作完成的时候,HotSpot就会把对象内什么偏移量上是什么类型的数据计算出来,在即时编译过程中,也会在特定的位置记录下栈里和寄存器里哪些位置是引用。通过OopMap,JVM可以快速枚举出GC Roots,但是对象引用随时都在变,如何维护OopMap又是一个问题。HotSpot的做法就是设置Safepoint。在一个方...
195
2020/04/07
27
Dec
PS4使用sstap加速(不使用路由器)
目前大多数人使用的PS4加速方法,要么是网易UU这种,PS4和电脑在同一个WIFI下,电脑开启加速器,PS4手动更改IP。要么直接在路由器上做工作。无论怎么样都离不开一台路由器,要是没有路由器该怎么办。没有路由器也是可以加速的,只需要一台有两个网口的电脑(WIFI算一个网口),一根网线,和一个允许UDP的SSR节点。准备工作下载sstap,自行百度。测试节点直接添加ssr节点即可,添加完后点击⚡图标开始测试。v2ray的使用方法如果你的机场不是酸酸乳是v2ray的话也是可以的。首先在v2ray客户端中开启UDP,我的是客户端是v2rayN。或者直接更改客户端目录下的config.json...
3,782
2019/12/27
09
Dec
Windows uwp应用使用系统代理
UWP 是微软在 Windows 10 中引入的新概念,由于所有 UWP 应用均运行在被称为 App Container 的虚拟沙箱环境中,其安全性及纯净度远胜于传统的 EXE 应用。但 App Container 机制同时也阻止了网络流量发送到本机(即 loopback), 使大部分网络抓包调试工具无法对 UWP 应用进行流量分析。同样的,该机制也阻止了 UWP 应用访问 localhost,即使你在系统设置中启用了代理,也无法令 UWP 应用访问本地代理服务器。我主要用到的UWP应用也就邮件和office全家桶,邮件在收到google或者twitter等等的邮件的时候,邮件内的图片通...
386
2019/12/09
04
Dec
Windows Terminal 美化
Windows下有cmd和powershell两种命令行工具,但是系统自带的工具实在是太丑了。微软后来推出了Windows Terminal,直接让命令行工具颜值上了几个档次,再配上一些其他工具可以让你的Windows命令行也不输Linux的体验。效果图添加到右键菜单右键菜单打开当前目录是必须要有的,不然每次打开终端再cd实在太蠢。可以参考Windows管理右键菜单在注册表HKEY_CLASSES_ROOT\Directory\Background\shell下新建项wt(名字随意)。默认值改为"Open with Windows Terminal"(按自己喜好来)添加字符串值Icon,...
1,775
2019/12/04
04
Dec
Windows管理右键菜单
随着开发工具越来越多,右键菜单也变得越来越繁杂。其实通过修改注册表的方式就可以任意添加或删除右键菜单里的选项了。上图是我的右键菜单,我想让Git GUI Here和Git Bash Here消失,除了Windows Terminal以外的开发工具显示在Shift + 右键中。注册表选项首先打开注册表,定位到HKEY_CLASSES_ROOT\Directory\Background\shell可以看到下面有很多项,每一项都对应着一个右键菜单里的选项。选择git_gui后,可以看到有两个字符串值和一个子项,两个字符串值如图。默认的值就是在右键菜单中显示的标题Icon的值就是右键菜单中该项显...
403
2019/12/04
31
Oct
第三方支付方案
方案图一般支付API文档参考此文档开发API商户私钥生成方法openssl genrsa -out app_private_key.pem 2048 #生成私钥 openssl pkcs8 -topk8 -inform PEM -in app_private_key.pem -outform PEM -nocrypt -out app_private_key_pkcs8.pem #Java需要将私钥转换成PKCS8格式 openssl rsa -in app_private_key.pem -pubout -out app_public_key.pem #生成公钥经过以上步骤,开发者可...
345
2019/10/31
21
Sep
Token身份验证 过期自动刷新
之前有写过一篇文章,不过写的太烂了就被我删了▄█▀█●,怕误人子弟。token一般用于身份校验,校验http请求者的身份。常使用jwt作为token,但也不一定,只要后台能解析出来令牌内容,能校验用户身份,用什么都行。令牌的实现就不说了,今天主要说整个身份校验的流程。访问令牌和刷新令牌一个令牌通常有到期时间,一个没有到期时间的令牌相当于一个永久的密钥,是绝对不安全的。当令牌失效过期时,理论上应该重新登陆获取新的令牌。但在某些场合我们希望用户能在不需要额外操作的情况下,自动更新令牌。之前我的做法是在后端判断过期与否,然后生成新的token放到header中返回给前端。前端判断header中...
675
2019/09/21
13
July
git 忽略已经被提交的文件
.gitignore文件可以让git在版本控制时忽略一些文件.env #忽略.env文件 dist/ #忽略 dist/目录下所有文件 *.config.js #忽略所有.config.js结尾的文件但如果文件已经加入了版本控制,再在.gitignore添加文件是不起作用的。需要把忽略的文件从缓存中删除,最简单的方法就是删除缓存中所有文件,再添加所有文件。git rm -r --cached . git add . git commit -m '更新gitignore'
437
2019/07/13