研发笔记📒
文章平均质量分 86
文振熙
八年年技术研发经验、五年后端技术架构经验,曾带领管理过45+技术团队和技术架构团队,从零到一帮助公司组建了后端团队、 运维团队和大数据团队,并且不断演进推广前沿技术;
多年来一直坚持产出优质原创博文,全网阅读量破百万,并且被CSDN开源社区授予CSDN认证专家,
参加或主导多个开源项目研发(PhalApi、GoCore、GoRSA、KT-connect);
展开
-
【Go知识点】Gorm Hook 无侵入实现 数据表防篡改
Hi,开门见山的说,这次给大家带来的是关于 Gorm Hook 机制的落地场景,笔者也是在Gorm官方文档中了解到有Hook机制的存在,不过一直没有找到过太多合适的场景来使用。所以就有了今天的文章内容。原创 2023-06-11 14:53:21 · 1615 阅读 · 0 评论 -
【爬坑指南】文件中心 AWS S3 预签名URL 前端直传
开门见山的说,笔者已经被AWS坑的体无完肤了,文档难找、SDK版本繁多老版本没有注释、例子不全还有误导的情况、MD5-Hex不用一定要用MD5-Base64等等各种问题导致在使用的过程中各种卡壳,不过好在最终还是把问题解决,才有了今天给大家带来了【爬坑指南】,我们先从要做一件什么事情开始说起:资源汇总:首先上传文件并不难,from-data谁还不会呢?但是要把文件传好传安全很难,考虑点会非常多:在根据业务的不同还有更多的扩展性要求。如果当业务遇到文件上传场景的时候把这一套做了一遍,然后另外一个业务也需要使用原创 2022-10-24 10:24:52 · 4795 阅读 · 0 评论 -
【开源库推荐】go-linq 强大的语言集成查询库如,ORM一般丝滑处理内存数据
在业务开发过程中除了业务逻辑、数据库之外主要就是数据转换处理过滤等相关的内容,比如合法性验证(可以使用”go-playground/validator“)但是golang在数据处理上面尤其是对结构体上官方几乎没有提供一些便捷的方式,大部分都只能使用for、if等方式自己来处理,也有研发用偷懒的方式全部交给数据库写出了N张表的关联导致了数据库瓶颈等问题。那么有没有什么更加方便好用的方法来更加方便的处理数据又能够降低代码复杂度,写出更加可读的代码呢?原创 2022-09-19 09:38:06 · 909 阅读 · 0 评论 -
singleflight 防止缓存击穿、并发结果共享(golang官方包和go-zero实现对比)
缓存”详细大家都不陌生,在高并发系统设计中缓存是个必不可少的因素,它能够帮助按照一定规则保存处理好的解耦从而提高系统吞吐量和响应速度,我们常见的缓存组件包括Redis、ES等。但今天并不是来介绍缓存组件的,而是在实现过程中大家都会关注到的一个问题"缓存击穿",什么是缓存击穿呢?缓存击穿:平常在高并发系统中,会出现大量的请求同时查询一个key的情况,假如此时这个热key刚好失效了,就会导致大量的请求都打到数据库上面去,这种现象就是缓存击穿。原创 2022-09-13 09:30:00 · 752 阅读 · 0 评论 -
Go 限流控制《滑动窗口&令牌桶》:time/rate、TokenLimit、PeriodLimit
流量控制基本是《微服务》和高并发系统设计的入门课,即便是在早期各种负载均衡和网络组件(如nginx、iptable、TC)都有提供基础的QPS限制能力,如今演进到微服务框架、Sentinel、Service Mesh和Serverless都已经具备完备的配置化的限流的能力已经能够满足大多数场景了,但如果我们在一些不以服务作为颗粒的方式可能就不太适用了,比如以下几个场景:- 调用外部三方服务存在频率限制原创 2022-09-05 09:30:00 · 1466 阅读 · 0 评论 -
【开源软件推荐】gorm 数据库反向生成status结构工具 gormt
Gorm是比较经常使用的orm基础库,也是从2017年到现在5年时间从beego、sqlx、xorm、gorm等数据库操作框架中跑出来的一个比较好用的orm库,但随着go-zero、Kratos等框架的逐渐流行,所谓是在数据库操作上百花齐放,go-zero通过生成的方式非常好的集成了数据库和cache之间的打通,Kratos则Facebook 开源的Ent定义数据操作。但他们都是可选项如果你熟悉传统的orm的方式gorm将会是你的不二之选。原创 2022-08-21 15:16:03 · 1760 阅读 · 0 评论 -
依赖注入的正确打开方式 bilibili/kratos × google/wire
依赖注入相信大家都不陌生也不是什么新鲜的概念了,笔者初次深切体会依赖注入这种设计模式是在16年笔者在学习phalapi框架时使用的DI()函数,简单来说就是将所有的资源初始化集中在一起,通过统一的容器对外提供,而不是通过全局变量或到处New的方式。最近在学习kratos又看到一个团队的历史项目都使用wier,一个是正面教材一个是反面教材也有一些自己的思考,希望能够分享出来和大家交流交流。......原创 2022-08-07 12:56:34 · 477 阅读 · 0 评论 -
【gock】 无侵入的 Http Mock 工具
笔者最近和应该是抄了单测老家,各种mock、打桩场景都遇到很多,近期就遇到了一个需要httpmock的场景,主要是在一个环境中有几个依赖服务应为一些原因没法提供,但是有需要再这个环境上来验证一些其他的服务组件是否正常。单独写个http-service提供mock能力,修改服务发现地址在程序启动时启动一个http端口提供mock服务,在改写服务请求地址在逻辑层进行判断读取相关返回参数还有一个就是我提出的通过gock无侵入来mockhttpshttps。...原创 2022-07-31 11:23:49 · 950 阅读 · 0 评论 -
如何做好单元测试?Golang Mock”三剑客“ gomock、monkey、sqlmock
单元测试一直是一个研发过程中老生常谈的话题,能够把单元测试做的比较好的公司也寥寥可数。最近同事开玩笑说最不喜欢的两件事情”接手的代码没有单测和别人让我写单测“,也能看得出大家对单测是又爱又恨。但真实情况是单测确实能够提高质量,一般公司架构团队或TL会要求业务研发有单测指标,但很容易因为”成本“问题最终以失败收尾,那怎么能够降低单测成本又能享受到单测带来和好处就是本文的”目的“了。代码可测性低成本mock逻辑断言工具httpsmonkey原理解读httpshttps。...原创 2022-07-17 12:17:56 · 3342 阅读 · 0 评论 -
阿里云微消息队列 MQTT
前言因为工作上的事情比较繁忙,近期的博客更新率已经创了新低,所以想着把一些工作上的调研笔记????进行一些分享,希望可以帮助到想了解特定知识的小伙伴。今天推荐给大家的是阿里云的MQTT队列服务,笔者早期发不过去EMQ-MQTT系列,但是现在整个集群连接规模已经破了百万,也涌现出了很多问题:集群稳定性堪忧,大流量会导致雪崩使用iptable限流也只能缓解安全性堪忧,密码规则认证过于简单,虽然有TLS证书配置但是相比之下资源消耗是不加TLS的四倍,如果用TLS终结前置服务器最少16台也是恐怖的支出和维原创 2021-03-14 10:47:36 · 1121 阅读 · 0 评论