Code Life

boris1993的个人博客

前两天赶上阿里云搞活动,薅了一个99一年的ECS。因为要接进咱的探针,就得跟我的服务器组个网。之前都是用NAS上装的wgeasy,这回想想,咱的RouterOS也有Wireguard,那干脆吃个螃蟹,看看能不能直接在软路由上组,慢慢的逐步把wgeasy淘汰掉,顺便正经的学学Wireguard组网。

阅读全文 »

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

阅读全文 »

这两天给我的窗边岛项目实现了X岛揭示板网页中的防剧透功能。这个功能本质上就是,当鼠标悬浮在文字上时显示原本的内容,当鼠标移出文字时则用黑块代替。即

X岛揭示板 窗边岛

虽然说起来很简单,但是好像网上并没有针对这个需求有什么相关的内容,所以在这里记录下我的实现,权当抛砖引玉。

阅读全文 »

之前我一直把博客的图片放在个人的OneDrive上,然后用嵌入功能得到外链放在博客里。但是考虑到国内访问OneDrive的延迟还是偏高,以及不折腾不舒服的心理作祟,于是乎在三月份的时候,我把博客的图片从OneDrive迁到了Backblaze对象存储。

阅读全文 »

昨天收到Vercel发的报警邮件,说我自己部署的分析平台umami部署失败。检查之后发现是umami有个大版本升级,而升级脚本失败导致新版本部署失败了。那既然报错了,就修呗。

虽然不是什么复杂的问题,但还是记录一下好了,也当是水一篇文。

阅读全文 »

依旧是面试查漏补缺。这次是MySQL的最左匹配原则。

废话不多说,直接看MySQL官方文档给出的例子。

有这么一个表:

1
2
3
4
5
6
7
CREATE TABLE test (
id INT NOT NULL,
last_name CHAR(30) NOT NULL,
first_name CHAR(30) NOT NULL,
PRIMARY KEY (id),
INDEX name (last_name, first_name)
);

可以看出,表里面有一个联合索引(last_name, first_name)。那么,查询的时候,这些语句就可以成功走索引:

1
2
3
4
SELECT * FROM test WHERE last_name = 'Doe';
SELECT * FROM test WHERE last_name = 'Doe' AND first_name = 'John';
SELECT * FROM test WHERE last_name = 'Doe' AND (first_name = 'John' OR first_name = 'Jane');
SELECT * FROM test WHERE last_name = 'Doe' AND first_name >= 'M' AND first_name < 'N';

而这些查询就无法使用这个索引:

1
2
SELECT * FROM test WHERE first_name = 'John';
SELECT * FROM test WHERE last_name = 'Doe' OR first_name = 'John';

也就是说,上面例子中的last_name列就是索引的最左前缀,如果要在查询中使用这个索引,那么条件中必须包含last_name,或者同时包含last_namefirst_name

MySQL can use multiple-column indexes for queries that test all the columns in the index, or queries that test just the first column, the first two columns, the first three columns, and so on. If you specify the columns in the right order in the index definition, a single composite index can speed up several kinds of queries on the same table.

昨天面试的时候被问到Java中的synchronized关键字是什么原理,虽然凭着记忆打出来是通过控制对象头的Monitor来实现,但是毕竟没吃透这个知识点,还是没啥底气。干脆,这次就从字节码上看看,用了synchronized关键字的方法,到底是怎么执行的。

阅读全文 »
0%