Code Life

boris1993的个人博客

想来用了这么久的 Spring Boot,但一直没仔细了解它是怎么启动的。那既然想起来了,不如趁热打铁,从它的入口开始,深入看看 Spring Boot 在启动时都做了些什么。

阅读全文 »

前段时间拿 ConcurrentHashMapTimer 简单整了个带过期功能的缓存,那用都用了,顺便就看看 Timer 这玩意是咋实现的。

阅读全文 »

在实现一个双检锁单例的时候,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 组网。

阅读全文 »

这两天又捡起来了之前开的一个老坑,继续完成 X 岛揭示板的 iOS 客户端,而且刚刚完成了从 JSON 初始化版面列表的功能。
这部分感觉最难的还是上手 Alamofire,因为它返回结果不像我平时做 Web 开发那样通过方法返回(也有可能是我没学到位),而是要把反序列化得到的对象传给一个回调方法。而这个思路的差异也导致我刚开始学的时候非常的痛苦,因为怎么也找不到我想要的那种返回方式。
我相信应该不止我一个人会遇到这种情况,所以打算在这里把完整的实现过程记录在这里,并希望后面有类似情况的同志能因为这篇文章而少掉几根头发。

阅读全文 »
0%