HomeLab 玩法简单分享
大学毕业之前一个冲动买了台式机,又一个冲动买了台 Linux 主机。到现在它已经运行了四年多了,简单分享下自己的玩法。 背景 毕业之前在公司附近租了房,再加上受到了网络的蛊惑,于是陷入了“买一台 NAS 来大幅提高生活质量”的念头之中。看了很多成熟的 NAS 方案(比如群辉或威联通),最后还是在高昂的价格面前望而却步。 当时的我,傻乎乎地认为品牌 NAS 的平台只是“SMB + RAID + 媒体服务器”而已,那么既然成熟的方案那么贵,为什么不搞个 Linux 自己折腾呢?脱离了平台的束缚,反而可能有更多的可能性。 最后,我决定自己买硬件搭一台 Linux 主机,做一个 HomeLab. 硬件选型 选择主机硬件的时候考虑了自己的需求,大致如下: 价格便宜:我只是个穷学生,看他们玩虚拟化的都上了 E..
更多Golang 类型断言的分类和例子
因为对表达式断言和赋值断言的理解不够清晰,所以写了这篇博客来加深理解。为了更好地理解类型断言的例子,后面的内容都遵循以下惯例:大写 I:表示接口类型;小写 i:表示接口值。大写 S:表示具体类型;小写 s:表示具体类型值。大写 T:表示具体类型和接口类型其中一种;小写 t:表示具体类型值和接口值其中一种。表达式断言表达式断言的语法为:i.(T),其中 i 为接口值,T 为具体类型或接口类型。发生错误时,为运行时错误。当 T 为具体类型时,作用是把接口值转换为具体类型值当 i 的具体类型是 T 时,断言成功:1 2 3 4 5 type I interface{} type S struct{} var i I = S{} _ = i.(S) // i 的具体类型是 S,所以断言成功。 表达式返回一个新值,..
更多Asrock B460M Pro 安装 BigSur
硬件名称型号价格备注主板Asrock B460M Pro600可以考虑换B560MCPUi5-10600K1300买 10600 也可以,因为跑不满,主板也有BFB之类的功能CPU散热器利民AK120 plus130双塔压i5 10600k问题不大,平时使用没啥声音集显Intel UHD 6300集显又不是不能用内存海盗船 16x2 3200MHz800血亏,主板和CPU限制最高 2666MHz…,换B560M还能超硬盘三星 PM981 128G100?很久以前的硬盘了,又不是不能用蓝牙/WiFiFV T919180咸鱼二手,黑果免驱,支持 AirDrop 和 handoff,windows需要下载驱动机箱先马 趣造 钛灰350jd这家自营店态度太拉了,不如咸鱼买全新电源-60?咸鱼60包邮,不能再多了内..
更多设计高可用的ElasicSearch索引
前言最近又是学习的爆发期,我戒除了上班划水和看知乎故事会,也戒除了游戏和小说 也戒除了频繁参加外面的无用活动,也逐渐修复了寂寞侵蚀内心的恐惧 将心思逐渐稳定下来,所以,我本月开始到年底,将会爆发式更新blog和歌曲 请大家和我一起学习吧!对了,如果有机会,请不要忘记帮我看看是否有合适的工作 我最近在换工作,走过路过,也别忘记我找份工作。 开始! 123456789101112131415从不去关心他人的定位对我喜欢讨厌或者是敬畏始终在不停的韬光养晦为我喜欢的事鞠躬尽瘁妈妈问我每天是否疲惫生活似好似坏前路隐晦希望的濒危物种不令人敬佩只想和路过的你说声幸会 当我们在说Es索引设计时,我们在说什么?在我的开发生涯中,我使用过Mysql,Etcd,Mo..
更多使用ECharts绘制网址径向树状图
an.rustfisher.com有很多内容,很多页面。如果用一个树状图把所有页面展示出来会是什么效果?第一时间想到了ECharts。最后效果: https://an.rustfisher.com/an-tree.html数据处理数据来源于配置文件。我们只需要把内容读出来,整理成ECharts需要的格式并保存为文件。ymlAndroid站用的框架是Mkdocs,网址都设置在mkdocs.yml里。关键配置如下1234567nav: - Android basic: - 开始: - 新建工程: android/startProject/start_new_project.md - 使用Kotlin: android/startProject/as-use-kotlin.md ..
更多Topuino - 你愿意在办公桌上放一个监控服务器的小摆件吗?
我做了一个用来监控服务器的桌面小摆件什么是 TopuinoTopuino 是我 DIY 的一个桌面小摆件,可以实现通用服务器或计算机的数据监控,包括 CPU 占用、RAM 占用、两个硬盘的可用空间、硬盘读写速度、网络 IO 速率。为什么叫 Topuino在 Linux 系列服务器上,我们通常使用 top 命令查看 CPU 内存占用,我最初的设想也是将 top 命令实物化,这就是 Topuino 中 Top 的由来。在选型的时候,为了兼顾开发效率和成本,我选用了大名鼎鼎的 ESP8266 单片机,配合了 Arduino 开发框架,Arduino 则是 Topuino 中 uino 的由来。Topuino 有哪些亮点先看图解:我觉得它挺好看,哑光黑的 PCB 底板富有科技感,红绿蓝三色 LED 层次分明,指示..
更多写一个高可用Rpc服务(基础知识篇)
前言最近实在是太忙啦,每天都加班,这是开博这么久首次,一个月都没UPDATE,my bad,这个月保证日更三篇,补上补上。 久违的freestyle时间,(虽然我现在玩爵士了) 123456789101112131415每天reload存档似乎总会是一样加班就像是吃饭一样平常内心是否总想这样看不见未来的远方迷雾它层层阻挡思绪飞扬总在寂寞的晚上让我来静静的品尝 为什么要写这篇文章首先是因为我自己,最近非常的忙,但是我又在想,我他喵的忙了个什么 汇报一下最近(这一个月)的战果 从无到有编写完成了一个RPC服务,并且开源给全公司的项目使用 完成了一个CEPH多站点数据同步的开发(我在想这玩意到底有什么用) 完成了一个ElasticSearch项目的开..
更多Golang 1.10 到 1.17 期间发生的语言规范改动
因为 Golang 1.10 到 1.17 期间发生了相当多的语言规范改动,所以写了这篇博客来记录它。Golang 1.10无类型常量移位确定了无类型常量移位这种极端场景的处理方法。允许这样的索引表达式:x[1.0 << s],其中 s 是无符号整数。方法表达式放宽了方法表达式的语法。允许任何类型的表达式作为接收器。如:struct{io.Reader}.Read。Golang 1.11语言规范没有改动。Golang 1.12语言规范没有改动。Golang 1.13现代化的数字字面量前缀二进制整数:使用前缀 0b 或 0B。如:0b1011;八进制整数:使用前缀 0o 或 0O。如:0o660.0。原来以 0 为前缀的八进制表示法仍然有效,如0666;十六进制浮点数:使用前缀 0x 或 0X。..
更多通过修改 Mach-O 文件解决闭源组件符号冲突问题
# 符号冲突影响程序运行的正确性 这里我以一个例子说明这个问题。工程结构如下: example ├── foo │ ├── call_lib_foo.c │ ├── call_lib_foo.h │ ├── foo.c │ └── foo.h ├── main.c ├── my_foo.c └── my_foo.h foo 的目录有两个文件,内容分别为: // foo.c void foo(void) { printf("foo in lib\n"); } // call_lib_foo.c void call_lib_foo(void) { foo(); } 构建命令如下: clang -c foo/foo.c -o build/foo/foo.o clang -c f..
更多状态码造成微信公众号“该公众号提供的服务出现故障”
bug描述我们使用NestJS写后台代码,给微信公众号提供服务。用户给公众号发消息时,公众号会显示“该公众号提供的服务出现故障”。虽然后台代码可以正常处理业务,但这个提示非常影响用户体验。检查根据微信公众号文档给的提示,出现这个问题的原因是没有给微信服务器返回正确的信息。微信服务器需要的是success或者空的字符串。不能是json格式的字符串。搜了一下其他文章,有的说xml里也不能带有空格;有的说公众号绑定了第三方平台,要去解绑。但这些和我们的情况不一致。给公众号的接口是默认返回success的。查看运行log,发现用户发送1条消息给公众号,我们的服务端会收到4条一模一样的消息。这4条消息的MsgId是一样的。网上也有人提供了防止重复消息的办法。于是尝试以下方法维护一个map,key是MsgId。接收到..
更多