MongoDB——TTL索引 (yance.wiki)
MongoDB 有几种很实用的特殊索引,在特定场景中可以达到事半功倍的效果,TTL 索引即其中之一。

过期特定数据是一种常见场景,对 IoT 设备日志、网站 session 等数据而言,我们一般只关心一定时间内的数据,过期数据需要及时删除,TTL 索引很适合用于该场景。

by @技术头条 2023-04-28 22:01 查看详情
S3协议入门 (yance.wiki)
S3是AWS服务最早推出的几项服务之一,也是使用最为频繁的几个AWS服务之一。官网文档以及网上文章零零散散看了不少,实际使用中也用过S3的大多数功能,但“纸上得来终觉浅,绝知此事要躬行”,决定给自己挖个坑,结合已读资料和实际使用经验,系统地来梳理一下S3的已有功能。
by @技术头条 2023-04-28 22:01 查看详情
git 整体提交记录(rabase)后合并(merge) (blog.frytea.com)
无论是 rebase 还是 merge 都是一项危险操作,请确保充分理解的命令的含义,并确保每一行代码无误后再继续。如果不确定,请一定记得做好数据备份!!!
by @技术头条 2023-04-28 22:00 查看详情
浅议 EF Core 分库分表及多租户架构的实现 (blog.yuanpei.me)
这篇博客主要探讨了 EF 在分库、分表及多租户架构上实施的可能性。分库、分表的目的是为了提高数据库的查询性能,在这个过程中,我们可以考虑范围、Hash和配置三种路由策略,它们各自有自己的优缺点,需要使用者结合业务场景去衡量。虽然分库、分表在面对百万级别以上的数据时,不失为一种提高性能的方案,可世间万物都是双刃剑,它同样带来了一系列新的问题,譬如跨库写带来的分布式事务问题,跨库读带来的Join、Count()、排序、分页等问题,数据迁移问题等等,而如果希望通过Hash(Id)来进行拆分,还需要解决全局Id唯一的问题。所以说,这是一个没有标准答案的问题,需要使用者自己去进行取舍。多租户架构、读写分离均可以看作是特殊的分库场景,EF Core 中新增的HasQueryFilter()方法则帮助我们解决了单数据库的多租户架构问题。
by @技术头条 2023-04-28 21:59 查看详情
ASP.NET Core 搭载 Envoy 实现微服务身份认证(JWT) (blog.yuanpei.me)
本文主要分享了如何利用 Envoy 实现容器级别的 JWT 认证服务,在实现过程中,我们分别了解了 JWT 和 JWKS 这两个概念。其中,JWT 即JSON Web Token,是目前最为流行的跨域认证方案,一个 JWT 通常由 header、payload 和 signature 三个部分组成,JWT 的 JSON 主要体现在header和payload这两个 JSON 对象上,通过 Base64Url 算法实现串化,而 signature 部分则是由header和payload按照签名函数进行生成,主要目的是防止数据篡改。JWKS 可以利用密钥或者公/私钥对令牌进行验证,利用这一原理,Envoy 中集成了 JWKS ,它表示一组可以校验任意 JWT 的公钥,同样是一个 JSON 对象。为了获得可用的 JWKS,我们可以通过 Identity Server 4 或者 Keycloak 中提供的地址来获得这一信息,方便起见,本文选择了更为便捷的 Keycloak。最终,我们实现了一个通用的、容器级别的认证网关,调用方在消费这些 API 资源时都必须带上从认证中心获得的令牌,进而达到保护 API 资源的目的,更好地保障系统和软件安全。
by @技术头条 2023-04-28 21:59 查看详情
Flutter 产物分析与减包方案 (me.ursb.me)
在混合开发场景下,Flutter 的包增量略大一直是被大家诟病的一点,但 Google 官方明确表示了 Flutter 不会支持动态化,而且目前 Flutter SDK 官方还没有提供一套定制方案。因此想要瘦身,那么只能自己动手丰衣足食了。
所谓减包,前提条件是必须知道产物内容有什么?产物里有哪些部分可以减?被减掉的部分我们要怎么加回来?因此本文将围绕“产物分析”与“减包方案”两个主题来分别论述 iOS 与 Android 两端的 Flutter 减包原理与方案。
by @技术头条 2023-04-28 21:58 查看详情
使用三年后我来聊聊双拼输入法 (blog.wangmao.me)
改变来自于一篇文章,做少数派中的少数派:双拼输入快速入门,当时工作中空闲时间比较充裕,索性就开始了练习,在练习半小时后我意识到双拼将改变我的输入习惯,并且进一步提升我的打字速度。我更换了我所有设备上的输入法换成了双拼输入法,一方面是用于练习,另一方面是切断自己后路——「不会打字你就别聊天」。
by @技术头条 2023-04-28 21:56 查看详情
再话 AOP,从简化缓存操作说起 (blog.yuanpei.me)
本文分享了通过 AOP 来简化缓存操作的一种思路,考虑到常规的缓存代码写法,读/写缓存与业务代码严重耦合在一起,而博主心目中的缓存应该像水、电、煤气一样普普通通,你只需要告诉我哪些数据需要缓存,而无需关心这些数据怎么缓存。基于这样一种考虑,博主基于DispatchProxy实现了一个针对缓存的 AOP 方案,我们只需要在接口上打上[Cachable]标签,它会自动对方法的返回值进行缓存,从而简化我们平时使用缓存的流程。
by @技术头条 2023-04-28 21:54 查看详情
你不可不知的容器编排进阶技巧 (blog.yuanpei.me)
本文分享了Docker及Docker-Compose中的进阶使用技巧,主要探索了服务编排场景下容器的启动顺序、健康检查、网络模式三类问题。默认情况下,Docker-Compose的depends_on选项,取决于容器是否处于running状态,因此,当我们有多个服务需要启动时,实际上启动顺序并不会受到depends_on选项的影响,因为此时容器都是running的状态。为了解决这个问题,官方提供了 wait-for-it 的方案,这是一种利用 Netcat 对TCP和UDP进行检测的机制,当检测条件被满足的时候,它会执行由用户指定的启动脚本。从这里看,其实已经有了一点健康检查的影子,而官方的健康检查,则允许用户使用更加自由的命令或者脚本去实现检测逻辑,所以,从这个角度上来讲,HEALTHCHECK结合depends_on,这才是实现容器启动顺序控制的终极方案。Docker的网络是一个相对复杂的概念,所以,这里就是简单的介绍了下常见的四种网络模式,更深入的话题比如网络驱动等,还需要花时间去做进一步的探索。
by @技术头条 2023-04-28 21:54 查看详情
golang数据类型转换汇总 (wiki.eryajf.net)
golang作为强类型语言,我们在日常开发过程中,遇到类型转换的场景也非常多,本文整理我在工作开发中遇到过的类型转换实践。
by @技术头条 2023-04-28 21:53 查看详情
Istio 升级后踩的坑 (crossoverjie.top)
本次定位修复 Istio 升级后带来的指标系统问题收获巨大,之前对 Istio 一直只停留在理论阶段,只知道他可以实现传统微服务中对接口粒度的控制,完美弥补了 k8s 只有服务层级的粗粒度控制;
这两周下来对一个现代云原生监控系统也有了系统的认识,从 App->Pod->sidecar->VictoriaMetrics(Prometheus)->Grafana 这一套流程中每个环节都可能会出错;
所以学无止境吧,幸好借助公司业务场景后续还有更多机会参与实践。
by @技术头条 2023-04-28 21:52 查看详情
职场罗生门 (hiwannz.com)
在我这几年的工作经历中,应该算是真真切切的感悟了“职场罗生门”,尤其是把自己抽离成“旁观者角色”去审视这个团队,会发现世界可太复杂了!当事情发生之后自己可能会主动或被动的听说无数版本,每个人的描述和解决问题的方式也都只是基于他自己内心认定的心里基础之上。每个人在叙述故事的时候也都会不由自主的站到自己的立场上进行描述。也正因如此,我在听故事的过程中会不由自主的感觉到每个人的利益,角色,感受,面子等不同“第三方情感”。
by @技术头条 2023-04-26 00:10 查看详情
再谈如何面试产品经理 (hiwannz.com)
产品经理这种创意类岗位并不是一个标准化的职业,由于产品经理的“成功”往往会受到公司与以往环境的巨大影响,不同公司里对产品经理的专业能力要求,工作内容分配与企业需求都可能是不一样的,所以只用产出来衡量产品经理的能力并不是十分合理。此外,产品经理这种岗位也很难用一些外部的证书或者资质(比如 PMP,NPDP,项目管理师等等)来衡量专业度好坏,更别提获取产品经理相关知识的渠道五花八门(公众号,知乎,即刻,播客,微博等等),也很难通过某一些产品经理是否有过相关 KOL 或者知识理论的了解来衡量。

但无论如何,我们还是可以在面试中找到一些“能够帮我们优中选优”的思路,提升面试的效率。
by @技术头条 2023-04-26 00:09 查看详情
利用Caddy快速分享Linux服务器上的文件 (www.aihoom.com)
单纯作为下载机的Linux服务器下载完成了,但是想打包发给朋友,考虑到性能问题,怎么快速分享成了一个难题。这里我们使用到了caddy轻量级http服务器,里面自带目录便览。开始链接你的Linux...
by @技术头条 2023-04-26 00:05 查看详情
Windows10利用winsw将应用封装成系统服务后台启动 (wiki.eryajf.net)
接到一个需求,是基于 Jenkins 给 unity 打包,unity 则需要在 Windows 环境下构建,因此实现这个需求的第一步,就是需要解决给主 Jenkins 添加一个 Windows 节点的 slave。而 slave 基于Java启动,如何将这个Java启动的命令放到后台启动,就成了一个问题!
by @技术头条 2023-04-26 00:04 查看详情
vscode开发前端项目时如何tab补全自定义HTML标签 (wiki.eryajf.net)
当我们在GitHub中冲浪时,遇到优秀的项目经常会为之点赞,但就像网络上经常说的玩笑一样:收藏等于会了。其实我们不应该让这些已被自己赏识过的项目石沉大海,那么,如果有一个项目能把自己过去star过得项目自动整理并归类就好了。本文就将介绍如何利用GitHub Actions来实现这个功能。
by @技术头条 2023-04-26 00:04 查看详情
mac电脑安装Java开发环境 (wiki.eryajf.net)
本文介绍如何在Mac上配置jdk与maven环境。
by @技术头条 2023-04-26 00:04 查看详情
使用retry-go给项目添加重试机制 (wiki.eryajf.net)
在编写分布式应用程序时,有时会出现一些短暂的错误,例如网络问题、服务端连接中断等。这些错误可能会导致函数执行失败,但在稍后重新尝试时可能会成功。在这种情况下,我们可以使用重试机制。retry-go 是一个轻量级的 Golang 库,它使重试代码块变得更加简单。它通过提供一个简单的 API 来实现这一点,这使得开发人员可以在代码中轻松地添加重试逻辑。
by @技术头条 2023-04-26 00:04 查看详情
go-cache包的使用简析 (wiki.eryajf.net)
平时用 go 写一些小工具的时候,如果数据的敏感性没有那么强,那么一些热数据就可以考虑放在 cache 当中,cache 也没必要用外置服务,那就直接使用本机内存进行存储即可。 go-cache 就是一个用于本地缓存的 Go 语言库,它支持过期时间和自动清理。它使用了一个内部的 goroutine 来检查缓存项是否过期,并在需要时自动清理过期的缓存项。使我们能够很方便地将一些数据放在缓存当中。
by @技术头条 2023-04-26 00:04 查看详情
【译】Goland 中的隐藏宝石 (crossoverjie.top)
在日常使用 Goland 时,团队收集了一些可以帮助我们专注于创造的同时减少重复工作的小技巧。

如果你是在 IDEA 中使用的 Go 插件,或者其他 IntelliJ 的产品,同样也有这些特性。
by @技术头条 2023-04-26 00:02 查看详情