使用Homebrew Bundle管理电脑上安装的软件
今天看到一篇推文说Homebrew也支持类似package.json的方式来管理电脑上安装的应用,感觉这玩意挺实用的,像我上回换电脑还是照着brew list的输出再一个个装,有了它的话就可以一键安装了。而且除了Homebrew之外,它还可以导出通过App Store安装的软件和VS Code插件。那么,就小小折腾一下。
今天看到一篇推文说Homebrew也支持类似package.json的方式来管理电脑上安装的应用,感觉这玩意挺实用的,像我上回换电脑还是照着brew list的输出再一个个装,有了它的话就可以一键安装了。而且除了Homebrew之外,它还可以导出通过App Store安装的软件和VS Code插件。那么,就小小折腾一下。
最近项目里用到了些Lock,爬了些文了解到它们是基于AbstractQueuedSynchronizer(即AQS)实现的。那么,不如趁热打铁,看看里面是怎么工作的。
在前一篇博文Spring Boot启动流程分析的调用 beanFactory 的后置处理小节中提到了beanFactory的后置处理。这部分是Spring IoC的重点,但是因为内容很长,所以在这里单独开一篇博文来分析。
想来用了这么久的Spring Boot,但一直没仔细了解它是怎么启动的。那既然想起来了,不如趁热打铁,从它的入口开始,深入看看Spring Boot在启动时都做了些什么。
前段时间拿ConcurrentHashMap和Timer简单整了个带过期功能的缓存,那用都用了,顺便就看看Timer这玩意是咋实现的。
关于Java的类加载机制,尽管我看过几篇文章,知道个双亲委派模型,但是从来没钻进源码里看它到底是怎么委派的。
在实现一个双检锁单例的时候,IDEA提示我要给INSTANCE实例加上volatile修饰符。当时并不明白为啥,所以选择相信IDE。但是还是那句话,不能知其然不知其所以然啊,自己写的代码,不能自己心里没底不是。于是乎我一顿网上冲浪,终于整明白了为啥双检单例必须要用volatile修饰符。
突然想起来小时候玩过的一个电子宠物游戏《梦幻电子宠物》。
| 主窗口 | 宠物状态 | 关于 |
|---|---|---|
![]() |
![]() |
![]() |
这个小游戏的存档机制很有意思,是在C盘根目录下创建一个ini文件,记录宠物的出生时间和各项指标,然后它会根据这个时间来计算宠物的状态。也就是说,即使你把游戏关掉,宠物也不会停止成长。所以玩家就必须经常打开游戏照顾这个宠物,不然很有可能下次打开的时候,宠物就已经变成一个墓碑了……
这个小游戏我上传到蓝奏云了,有兴趣的可以去下载来玩。不过因为64位的Windows已经不支持16位应用,所以你需要一个老版本系统的虚拟机,或者用otvdm来运行。
地址:https://boris1993.lanzouj.com/b03queu3c
密码:15l3
P.S.:在找原版的时候,我注意到关于页面里“碧晓拱籍 设计”,以为这是原作者的名字,于是就拿它一顿找啊,但一无所获。突然灵光一现,这会不会是……乱码?鬼使神差把这四个字按照GBK编码保存,然后再用SHIFT-JIS编码打开,得到一串片假名アフマ�ケーショ,定睛一看这不就是application的日语アプリケション嘛,虽然里面又掺了个乱码……
乱翻收藏夹的时候发现我还有个免费的Grafana Cloud,遂想着把我这些自建的东西都用它监控起来,反正不用白不用。那么第一个就拿我的RouterOS软路由开刀吧。
前两天赶上阿里云搞活动,薅了一个99一年的ECS。因为要接进咱的探针,就得跟我的服务器组个网。之前都是用NAS上装的wgeasy,这回想想,咱的RouterOS也有Wireguard,那干脆吃个螃蟹,看看能不能直接在软路由上组,慢慢的逐步把wgeasy淘汰掉,顺便正经的学学Wireguard组网。