Go 1.22 对 slice 泛型函数的改进
引言 自从Go 1.18版本引入了对泛型的支持,允许编写通用、灵活的代码。相对其他语言丰富的库函数相比,也可以补齐一些常用函数不足的短板。 Go 1.21 的发布带来了很多增强功能,比如新的内置函数min 、max、clear,新的标准库包 slices 用来处理任意类型的切片,提供了很多常见的切片操作,如Index、Reverse、Delete、Equal等。值得一提的是,slices.Delete函数的实现在下一个版本即1.22版本就做了性能上的优化。下文就日常如何使用该函数以及功能实现原理的角度来尝试解释官方这样做的原因。 ...
golang的context是如何取消超时的
引言 Go 在1.7版本引入了context,直译就是「上下文」,在go里面是 goroutine 的全局上下文。 日常的开发中,我们会经常使用 ctx 作为函数的第一个参数,ctx 提供了一种机制可以控制跨多个 goroutine 的请求的生命周期、取消和数据传递。 ...
云南游记
写在前面 自从毕业那年赶上疫情😷,三年以来担心旅途会受到管制的a影响,以及工作期间仅有的几个长节假不想赶上所谓的「人山人海」,向往的远方一直也没有真正的在路上。 这一次,趁着辞掉工作,结束了持续大半年忙碌状态的空档期,让身体和心灵来得到松弛和洗涤。 于是,在离职的那天晚上,我和女朋友甚至都没有做攻略,就订了第二天✈️昆明的机票。 ...
通过Docker部署OpenWrt做家用旁路由
写在前面 想满足家里多设备自由上网的需求,主要有手机,ipad,主机,电视,switch这些,省去在不同的设备端挨个配置代理的麻烦,解决方案还是使用旁路由更加舒心。至于为什么不使用软路由来实现透明代理,主要是考虑到家人日常使用,避免软路由出现故障而影响到他们。旁路由只要设置网关和 DNS 服务器,配置成本不高。 ...
再也不用费劲去配置clash的代理规则了
前言 主要是出于工作和日常生活的原因,不可避免地需要使用代理。曾经自己买过海外的VPS搭建过代理服务器,但是稳定性不甚理想和加上防火墙的不定期封禁,后面就开始逐渐转向使用机场(代理服务提供商)的代理。首先,机场很多优点,比如节点种类多,速度足够快,稳定性有保障等。但是,用了三年之后,有件事情开始令我头痛。因为机场提供的订阅链接为了方便大多数用户使用,配置文件中的规则集是预设好的,有些分流规则和策略难免不符合自己的需求,这种时候就需要自己手动添加一些规则。但是每次更新订阅的配置文件,就会得到官方的配置文件,导致自己原先维护的一些自定义的分流规则就被丢掉了,久而久之,维护自定义规则就变成了一个痛点。 ...
SHA-256是什么?
什么是SHA-256 SHA-2(Secure Hash Algorithm 2)是世界上最流行的哈希算法标准,SHA-256便是其中之一。 加密过的哈希是由单独输入的文本生成得到的一个几乎独一无二的字符串,它也通常被称为“摘要”,“指纹”或者是“签名”。SHA-256会生成长度为256-bit(32-byte)的签名。 ...
为什么编程语言的排序喜欢选择快排
前言 在计算机操作中,对数据序列的排序可以说是非常重要且常见的一种操作。相信很多编程语言的函数库里都有自己的排序算法的实现,本文的标题有些标题党,当然并不是所有的编程语言,主流的编程语言例如C++,JavaScript,Golang等。当然,目前上述语言的标准库里采用的排序算法,不仅仅只是单一的快速排序(Quick Sort),而是插入排序(Insertion Sort),甚至还有堆排序相结合的方式,主体思想是当待排序列较小的时候(长度一般小于$2^8$,即64)采用插入排序。下面本文将来探究一下为何要这样做。 ...
Hello World
重新出发 Hello,这是我的新博客。也是从大学时代到现在,可能是我折腾过的第四个博客,过程很曲折,但是也见证了自己对博客的认识逐渐从无知到成熟。所以,今天再次下定决心开始写博客,同时会坚守以下两点原则。 ...