在 Java 中如何实现在多个线程全部完成后再执行后续的代码
面试的时候被问到,如何在 5 个线程全部执行完毕之后,再继续执行后续的代码。迫于对多线程的东西了解不多,只答出一个 CountDownLatch
,还大概答出一个用 Future
的思路。回来痛定思痛,请出了万能的 ChatGPT,学到了其他的几种方法。
面试的时候被问到,如何在 5 个线程全部执行完毕之后,再继续执行后续的代码。迫于对多线程的东西了解不多,只答出一个 CountDownLatch
,还大概答出一个用 Future
的思路。回来痛定思痛,请出了万能的 ChatGPT,学到了其他的几种方法。
昨天面试的时候被问到 Java 中的 synchronized
关键字是什么原理,虽然凭着记忆打出来是通过控制对象头的 Monitor 来实现,但是毕竟没吃透这个知识点,还是没啥底气。干脆,这次就从字节码上看看,用了 synchronized
关键字的方法,到底是怎么执行的。
迫于手上有张 KnowRoaming 的卡用来收短信,但是为了这玩意再照顾个手机又很烦,正好看到合宙有卖 4G 模块,还有人已经实现了短信转发功能。本着生命在于折腾的精神,果断下单了一张开始搞。
还记得我之前买了个猫棒来替换光猫么?用了一个来月,发现这玩意真的不稳定,短则几分钟长则一两天它必定自己重启一次,导致我的网络时不时就会断线。这玩意不好使,我也没有别的光猫,只好找电信装维师傅给我改桥接。可哪成想一个师傅踢皮球让我找另一个师傅,另一个一听我说是悦me
直接就说不能改,只有 SDN 光猫能改。那你们逼我的,我自己改。
今天刷 141. Linked List Cycle和 142. Linked List Cycle II学到了两个新的判断链表是否存在环的算法 - Floyd龟兔赛跑算法
和 Brent判圈算法
。
我之前宽带一直都是光猫拨号,电脑和 NAS 直连光猫,光猫下挂个二级无线路由器来给其他设备联网,但我早就对这个拓扑不爽了,主要原因是自己花大钱买的 AC86U 派不上用场,只能干点边缘的杂活,而且搞两套局域网怎么看都挺恶心的。之前也试过把路由器改成 AP 模式,让所有设备都直连光猫,但是万恶的电信光猫限制了设备数,只有前 5 台机器能上网,其它的机器虽然能拿到地址,但是上网必定超时。那现在既然有了台服务器,那干脆装个软路由。
软路由系统我打算玩玩 RouterOS
,毕竟 iKuai
听说过没用过,据说还出过劫持流量这种问题,不敢用也不想用;OpenWRT
以前玩过,没啥新鲜感,而 RouterOS
,之前装着玩的时候就觉得倍有逼格,早就想搞搞它玩玩了。
本篇为二手 MicroServer Gen8 折腾记的第二篇,记录配置猫棒和搭建 RouterOS 软路由的过程。
迫于 Tailscale 官方的中继节点在国内几乎没法用,于是在轻量云香港区自建了一个 DERP 服务。
最近在折腾 iOS 开发的时候,想实现在切换 TabView
的 tab 时触发震动反馈,因为一边写一边学嘛,基础不牢,只能在网上瞎搜,试了各种方法都不奏效。直到前两天看到 Ice Cubes: for Mastodon 的这段代码,豁然开朗。
.well-known
目录编辑 config.yml
,添加如下配置:
1 | include: |
Damus 生成的 npub
开头的公钥不能直接用,要先转换成十六进制格式的公钥。可以用这个网站来转换。
把 npub
开头的公钥粘贴进 damus key
一栏,hex key
会自动计算出来,复制 hex key
的内容备用。
在 source
目录下新建一个名为.well-known
的目录,然后在.well-known
目录中创建 nostr.json
,填写如下信息:
1 | { |
在本地运行 hexo clean && hexo g
,生成成功后检查 public
目录中是否存在.well-known/nostr.json
文件,如存在则说明配置正确。
提交代码并部署成功后,即可在 nostr
客户端配置 NIP-05
认证,本文以 Damus
为例。
点击左上角头像,进入 Profile
,点击 Edit
,在 NIP-05 VERIFICATION
一栏中填写你的username@你的博客网站
,比如我填写的是 boris1993@www.boris1993.com
,最后点击 Save
。
如果一切正常的话,在你的 Profile 页面就能看到一个对勾图标,代表验证成功。
突然就对短链接服务的原理来了兴趣,于是就查了些资料,自己实现了一个很简陋的演示性的短链接服务。