Golang
文章平均质量分 82
文振熙
八年年技术研发经验、五年后端技术架构经验,曾带领管理过45+技术团队和技术架构团队,从零到一帮助公司组建了后端团队、 运维团队和大数据团队,并且不断演进推广前沿技术;
多年来一直坚持产出优质原创博文,全网阅读量破百万,并且被CSDN开源社区授予CSDN认证专家,
参加或主导多个开源项目研发(PhalApi、GoCore、GoRSA、KT-connect);
展开
-
【Go知识点】Gorm Hook 无侵入实现 数据表防篡改
Hi,开门见山的说,这次给大家带来的是关于 Gorm Hook 机制的落地场景,笔者也是在Gorm官方文档中了解到有Hook机制的存在,不过一直没有找到过太多合适的场景来使用。所以就有了今天的文章内容。原创 2023-06-11 14:53:21 · 1701 阅读 · 0 评论 -
【Go知识点】如何重置 context.WithTimeout 超时时间但不丢失trace value?
我们在业务编程中常常会使用 context.WithTimeout 来对超时时间进行控制,来保障处理时效是在所控制的范围内,但对于Go原生的 context.WithTimeout 使用中存在一些限制,比如:超时时间只能改短不能改长或重置。原创 2023-05-27 15:46:52 · 1139 阅读 · 0 评论 -
【爬坑指南】文件中心 AWS S3 预签名URL 前端直传
开门见山的说,笔者已经被AWS坑的体无完肤了,文档难找、SDK版本繁多老版本没有注释、例子不全还有误导的情况、MD5-Hex不用一定要用MD5-Base64等等各种问题导致在使用的过程中各种卡壳,不过好在最终还是把问题解决,才有了今天给大家带来了【爬坑指南】,我们先从要做一件什么事情开始说起:资源汇总:首先上传文件并不难,from-data谁还不会呢?但是要把文件传好传安全很难,考虑点会非常多:在根据业务的不同还有更多的扩展性要求。如果当业务遇到文件上传场景的时候把这一套做了一遍,然后另外一个业务也需要使用原创 2022-10-24 10:24:52 · 5414 阅读 · 0 评论 -
【开源库推荐】go-linq 强大的语言集成查询库如,ORM一般丝滑处理内存数据
在业务开发过程中除了业务逻辑、数据库之外主要就是数据转换处理过滤等相关的内容,比如合法性验证(可以使用”go-playground/validator“)但是golang在数据处理上面尤其是对结构体上官方几乎没有提供一些便捷的方式,大部分都只能使用for、if等方式自己来处理,也有研发用偷懒的方式全部交给数据库写出了N张表的关联导致了数据库瓶颈等问题。那么有没有什么更加方便好用的方法来更加方便的处理数据又能够降低代码复杂度,写出更加可读的代码呢?原创 2022-09-19 09:38:06 · 968 阅读 · 0 评论 -
如何提高“可读性”和“可单测” 降低代码复杂度?& Golang 代码复杂度检测工具 gocyclo
作为一名合格的程序员我们都知道代码可读性的重要性,所以会尽量不写出非常复杂的代码,这里面就有很多方法论了,什么分层、抽象、条件前置、依赖前置等等。拿有没有一个标准作为复杂度的衡量依据呢?这里就要提到一个名词“圈复杂度”,“圈复杂度”是用于表示程序复杂度的软件度量的一种方式。它是通过代码的线性独立路径数量的定量度量。它由Thomas J. McCabe, Sr.于 1976 年开发。1 - 10 程序简单,风险小11 - 20 更复杂,中等风险21 - 50 复杂、高风险。原创 2022-09-07 09:30:00 · 1425 阅读 · 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 · 1834 阅读 · 0 评论 -
依赖注入的正确打开方式 bilibili/kratos × google/wire
依赖注入相信大家都不陌生也不是什么新鲜的概念了,笔者初次深切体会依赖注入这种设计模式是在16年笔者在学习phalapi框架时使用的DI()函数,简单来说就是将所有的资源初始化集中在一起,通过统一的容器对外提供,而不是通过全局变量或到处New的方式。最近在学习kratos又看到一个团队的历史项目都使用wier,一个是正面教材一个是反面教材也有一些自己的思考,希望能够分享出来和大家交流交流。......原创 2022-08-07 12:56:34 · 534 阅读 · 0 评论 -
【gock】 无侵入的 Http Mock 工具
笔者最近和应该是抄了单测老家,各种mock、打桩场景都遇到很多,近期就遇到了一个需要httpmock的场景,主要是在一个环境中有几个依赖服务应为一些原因没法提供,但是有需要再这个环境上来验证一些其他的服务组件是否正常。单独写个http-service提供mock能力,修改服务发现地址在程序启动时启动一个http端口提供mock服务,在改写服务请求地址在逻辑层进行判断读取相关返回参数还有一个就是我提出的通过gock无侵入来mockhttpshttps。...原创 2022-07-31 11:23:49 · 1066 阅读 · 0 评论 -
如何做好单元测试?Golang Mock”三剑客“ gomock、monkey、sqlmock
单元测试一直是一个研发过程中老生常谈的话题,能够把单元测试做的比较好的公司也寥寥可数。最近同事开玩笑说最不喜欢的两件事情”接手的代码没有单测和别人让我写单测“,也能看得出大家对单测是又爱又恨。但真实情况是单测确实能够提高质量,一般公司架构团队或TL会要求业务研发有单测指标,但很容易因为”成本“问题最终以失败收尾,那怎么能够降低单测成本又能享受到单测带来和好处就是本文的”目的“了。代码可测性低成本mock逻辑断言工具httpsmonkey原理解读httpshttps。...原创 2022-07-17 12:17:56 · 3550 阅读 · 0 评论 -
[Golang软件推荐] Golang通用连接池
连接池在编程中并不少见,链接数据库,redis等操作都需要连接池,否则就会出现并发问题,如果每次操作都建立一条新的链接将会大大消耗资源,笔者也是在使用thrift-Clinet链接Service端使用的时候出现了并发问题,然后找到了一个通用的连接池的库在这里分享给大家.附上:喵了个咪的博客:w-blog.cn go-commons-pool-Github地址:github.com/j...原创 2018-03-10 11:32:51 · 3225 阅读 · 1 评论 -
[Golang软件推荐] RSA公私钥加解密(解决Golang私钥加密公钥解密问题)
安全是软件开始中很重要的一个环节,在金融场景以及设计资产的场景下更是如此,在加密算法中主要使用较多加密方式分别是对称加密和非对称加密,对称加密中的代表是AES,DES,3DES等,非对称加密中使用比较多的是RSA,ECC等,最近火热的比特币中就使用ECC椭圆曲线算法,本篇文章主要是笔者在使用Golang在使用RSA中使用私钥加密公钥解密中遇到的问题,以及寻找的解决方案进行阐述,希望可以帮助到大...原创 2018-02-26 17:54:16 · 6705 阅读 · 2 评论 -
Goalng软件包推荐
前言哈喽大家好呀! 马上要迎来狗年了大家是不是已经怀着过年的心情了呢? 今天笔者给大家带来了一份礼物, Goalng的软件包推荐, 主要总结了一下在go语言中大家开源的优秀的软件, 大家了解之后在后续使用过程有遇到如下软件可以解决的问题可以来本篇文章寻找对于的软件PS:这里的软件笔者并未全部测试过但是标有(已使用)的字样是笔者在实际过程中有使用到的请大家放心使用PS:这里提供的...原创 2018-02-09 15:27:50 · 1486 阅读 · 0 评论 -
[喵咪Golang(2)]安装和Helloworld
[喵咪Golang(2)]安装和Helloworld前言哈喽大家好啊!今天我们紧接着来学习关于Go语言的安装和使用Go打印出helloworld,本节内容将会讲解关于Go语言在Liunx下怎么安装,环境变量怎么配置分别起到了什么作用,然后我们把go运行起来并且打印出helloworld,那么就开始今天的Go语言之旅吧!附上:喵了个咪的博客:w-blog.cnphalgo地址:github.com/w原创 2016-06-29 14:10:15 · 725 阅读 · 0 评论 -
PhalGo-介绍
PhalGo-介绍phalgo是一个Go语言的一体化开发框架,主要用于API开发应为使用ECHO框架作为http服务web程序一样可以使用,牛顿曾经说过”如果我比别人看得远,那是因为我站在巨人的肩膀上”,既然Golang有那么多优秀的组件为什么还要重复造轮子呢?所以就有了一个把一些优秀组件整合起来降低开发成本的想法,整合了比较好的组件比如echo,gorm,viper等等PhalGo的目的PhalG原创 2016-06-29 14:13:12 · 929 阅读 · 0 评论 -
PhalGo-初识PhalGO
PhalGo-初识PhalGOPhalGo是一个API开发框架,因为使用了Echo框架同样也能用于MVC的开发,MVC具体可以参考Echo官方文档,对于PhalGo来说可以使用推荐的结构来设计的API接口,也可以按照自己的需求来处理,这都是灵活的,如何使用取决于开发者目录结构│├── Api //API业务层入口,所有API业务存放于此│ └── us原创 2016-06-29 14:13:38 · 484 阅读 · 0 评论 -
PhalGo-ADM思想
PhalGo-ADM思想关于ADM思想主要是指在API开发中使用API,Domain和Model三层结构,PhalGo从PhalApi中学习并且推崇这种设计模式,这种模式的好处在于分工明确,业务复用,数据复用可以减少复杂业务重复的代码量,**很多框架关心性能,而不关心人文;很多项目关心技术,而不关注业务。**ADM设计就是从业务的角度出发建立的开发规范.ADM分工协作ApiApi层可以理解为是请求开原创 2016-06-29 14:14:01 · 501 阅读 · 0 评论 -
PhalGo-Viper获取配置
PhalGo-Viper获取配置viper项目地址:https://github.com/spf13/viper什么是viperviper是国外大神spf13编写的开源配置解决方案,viper拥有一下功能以及特性如下:设置默认值从JSON,toml YAML,HCl,和java属性配置文件从环境变量env读取值读缓冲区远程读取配置文件key不区分大小写为什么用viperviper不用担原创 2016-06-29 14:14:27 · 2884 阅读 · 0 评论 -
PhalGo-Echo路由
PhalGo-Echo路由Echo官网地址:https://labstack.com/echoEcho是PhalGo最核心的组件,负责了整体的请求路由返回等功能,并且Echo支持HTTP2协议以及HTTPS协议为什么选择Echo在初期笔者考虑过Echo,gin以及beego来尝试实现自己的项目,最终还是选择了使用Echo来作为PhalGo的主要路由框架让我决定的因素是应为Echo支持使用fastht原创 2016-06-29 14:15:04 · 963 阅读 · 0 评论 -
PhalGo-Request
PhalGo-RequestPhalGo-Request对Echo进行了封装,目的是为了减少获取请求参数,转换类型,判断请求参数有效此类重复操作带来的代码量,PhalGo-Request支持Get,Post,Json三类请求参数,并且使用连贯操作来获取API需要的参数减少重复代码量,.Request初始化PhalGo是灵活的你可以使用PhalGo-Request也可以使用Echo原生的参数获取(在使原创 2016-06-29 14:17:32 · 449 阅读 · 0 评论 -
[喵咪KafKa(2)]单机模式运行KafKa
PhalGo-参数验证过滤phalGo 的参数过滤使用 beego 提供的独立模块 validation 进行封装改造 , 从而达到可以和 request 一同使用的效果 , 通过统一的报错机制对不匹配的参数进行处理.连贯操作当我们自己进行参数验证时,我们需要先获取参数,在判断参数是否存在,判断长度是否在制定范围内,在判断是否符合我们所需要的格式,尤其在Go语言需要花费大量的代码量来实现这一系列功能原创 2017-11-10 14:11:53 · 560 阅读 · 0 评论 -
PhalGo-参数验证过滤
PhalGo-参数验证过滤phalGo 的参数过滤使用 beego 提供的独立模块 validation 进行封装改造 , 从而达到可以和 request 一同使用的效果 , 通过统一的报错机制对不匹配的参数进行处理.连贯操作当我们自己进行参数验证时,我们需要先获取参数,在判断参数是否存在,判断长度是否在制定范围内,在判断是否符合我们所需要的格式,尤其在Go语言需要花费大量的代码量来实现这一系列功能原创 2017-11-10 14:13:19 · 295 阅读 · 0 评论 -
PhalGo-Respones
PhalGo-Respones在处理请求 Api 请求中 , 除了对 Request 之外最重要的就是 Response 了 , PhalGo 支持两种格式的参数返回一种是 Josn 一种是 XML , 在 PhalGo 中默认使用JSON进行返回 , 可以在入口文件进行全局返回参数配置或在摸个接口内部指定此接口返回的参数类型Response初始化Response 和 Request 一样需要在 A原创 2017-11-10 14:13:51 · 291 阅读 · 0 评论 -
[喵咪Golang(1)]Go语言开篇
[喵咪Golang(1)]Go语言开篇前言哈喽大家好啊!喵咪我今天又来开坑了,最近学习和使用了go语言了一段时间,也在组合一些好的组件编写phalgo开发框架.在想是不是可以来写一个套关于go语言的文章和一些好的组件的介绍使用,虽然自己也是半桶水但是我相信在编写的过程中能给自己很多收获,最好也能帮助大家了解和熟悉golang这门语言,话不多说那么就开始今天的go语言之旅吧~附上:喵了个咪的博客:w-原创 2016-06-29 14:09:54 · 1146 阅读 · 0 评论
分享