代码改变世界

随笔分类 -  Go

一篇理解什么是CanSet, CanAddr?

2020-10-27 12:38 by 轩脉刃, 867 阅读, 收藏, 编辑
摘要: 什么是可设置( CanSet ) 首先需要先明确下,可设置是针对 reflect.Value 的。普通的变量要转变成为 reflect.Value 需要先使用 reflect.ValueOf() 来进行转化。 那么为什么要有这么一个“可设置”的方法呢?比如下面这个例子: var x float64 阅读全文

collection v1.3.1升级全记录

2020-10-22 13:27 by 轩脉刃, 410 阅读, 收藏, 编辑
摘要: collection v1.3.1升级全记录 项目地址: https://github.com/jianfengye/collection 欢迎star。 collection 手册地址: http://collection.funaio.cn/ collection库升级到v1.3.1版本。 从v 阅读全文

使用golang理解mysql的两阶段提交

2020-04-07 08:49 by 轩脉刃, 2184 阅读, 收藏, 编辑
摘要: 使用golang理解mysql的两阶段提交 文章源于一个问题:如果我们现在有两个mysql实例,在我们要尽量简单地完成分布式事务,怎么处理? 场景重现 比如我们现在有两个数据库,mysql3306和mysql3307。这里我们使用docker来创建这两个实例: 在mysql3306中 我们有一个us 阅读全文

Golang最强大的访问控制框架casbin全解析

2020-01-16 11:09 by 轩脉刃, 29220 阅读, 收藏, 编辑
摘要: Golang最强大的访问控制框架casbin全解析 Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。目前这个框架的生态已经发展的越来越好了。提供了各种语言的类库,自定义的权限模型语言,以及模型编辑器。在各种语言中,golang的支持还是最全的,所以我们就研究ca 阅读全文

golang实现依赖注入

2019-12-30 19:24 by 轩脉刃, 8856 阅读, 收藏, 编辑
摘要: golang实现依赖注入 依赖注入是软件工程中经常使用到的一种技术,它提供了一种控制反转的机制,把控制权利交给了调用方。调用方来决定使用哪些参数,哪些对象来进行具体的业务逻辑。 它有几个好处: 1 它让调用方更灵活。 2 大量减少定义类型的代码量 3 增加代码的可用性,因为调用方只需要关注它需要的参 阅读全文

你技术这么好,总要改变点什么把!

2019-10-07 15:40 by 轩脉刃, 4029 阅读, 收藏, 编辑
摘要: 你技术这么好,总要改变点什么把! 这篇文章我很早就想写了,工作至今(10年)我对于技术这个东西的体会也越来越多。今天触发我动键盘敲字的是一个事情:我在准备做一个golang内存模型的ppt,准备节后给组内同学分享。但是过程中遇到问题,就谷歌了一下,搜出了我自己16年写的一篇文章。。。我才记起来,16 阅读全文

k8s学习 - 概念 - Deployment

2019-07-19 10:22 by 轩脉刃, 3152 阅读, 收藏, 编辑
摘要: k8s学习 概念 Deployment 有了 ReplicaSet 还需要有 Deployment 的原因是希望有一个控制器能管理部署更新时候的版本控制问题。一个 Deployment 可以管理多个 ReplicaSet, 一个 ReplicaSet 可以管理多个 Pod。最通用的场景是当我们对某个 阅读全文

k8s学习 - 概念 - ReplicaSet

2019-07-18 19:17 by 轩脉刃, 6355 阅读, 收藏, 编辑
摘要: k8s学习 概念 ReplicaSet 首先,ReplicaSet 和 ReplicationController 基本上一样,除了上篇说到的selector有不同之外,没有啥区别。(官网也是这么说的)。但是为什么官方建议的不是ReplicaController + Deployment的集合呢?咋 阅读全文

k8s学习 - 概念 - ReplicationController

2019-07-17 08:48 by 轩脉刃, 1912 阅读, 收藏, 编辑
摘要: k8s学习 概念 ReplicationController 我们有了 pod,那么就需要对 pod 进行控制,就是同一个服务的 podv我需要启动几个?如果需要扩容了,怎么办?这里就有个控制器,ReplicationController(简称rc)。 不过我们看官网: 这里告诉我们,Replica 阅读全文

k8s学习 - 概念 - Pod

2019-07-16 09:45 by 轩脉刃, 2350 阅读, 收藏, 编辑
摘要: k8s学习 概念 Pod 这篇继续看概念,主要是 Pod 这个概念,这个概念非常重要,是 k8s 集群的最小单位。 怎么才算是理解好 pod 了呢,基本上把 pod 的所有 describe 和配置文件的配置项都能看懂就算是对 pod 比较了解了。 Pod 我们通过调用一个 可以查看某个 pod 的 阅读全文

k8s学习 - 概念 - master/node

2019-07-15 09:29 by 轩脉刃, 18675 阅读, 收藏, 编辑
摘要: k8s学习 概念 master/node 在k8s中,有各种各样的概念和术语。这些概念是必须要学习和掌握的。我们先罗列下所有概念,然后再一个个看具体实例。 大概说一下这些概念: Master: k8s的主控组件,对应的对象是node。 Node: 是k8s集群的机器节点,相当于master node 阅读全文

k8s学习 - API

2019-07-12 10:00 by 轩脉刃, 4564 阅读, 收藏, 编辑
摘要: k8s学习 API 之前对k8s并没有很深入的了解,最近想把手头一个项目全部放到k8s上,以方便部署,需要研究。这里记录一下自己研究过程中头脑中的理解。 k8s 和 docker 首先,需要先理解下docker。镜像把你要的应用和环境打包在一个容器里面,有了容器之后,部署,扩容等操作就很方便了。但是 阅读全文

collection包1.1.0都升级了什么功能

2019-05-24 13:05 by 轩脉刃, 585 阅读, 收藏, 编辑
摘要: collection包1.1.0都升级了什么功能 jianfengye/collection(https://github.com/jianfengye/collection) 这个包喜迎第一个子版本升级,从1.0.1升级到了1.1.0。这次还是做了不少改动的。 支持int32 这个需求是这个iss 阅读全文

Golang项目的测试实践

2019-05-22 13:23 by 轩脉刃, 5300 阅读, 收藏, 编辑
摘要: Golang项目的测试实践 最近有一个项目,链路涉及了4个服务。最核心的是一个配时服务。要如何对这个项目进行测试,保证输出质量,是最近思考和实践的重点。这篇就说下最近这个实践的过程总结。 测试金字塔 按照Mike Cohn提出的“测试金字塔”概念,测试分为4个层次 最下面是单元测试,单元测试对代码进 阅读全文

一个让业务开发效率提高10倍的golang库

2019-05-06 10:18 by 轩脉刃, 5625 阅读, 收藏, 编辑
摘要: 一个让业务开发效率提高10倍的golang库 此文除了是标题党,没有什么其他问题。 这篇文章推荐一个库,https://github.com/jianfengye/collection。 这个库是我在开发业务过程中 Slice 的频繁导致业务开发效率低,就产生了要做一个 Collection 包的想 阅读全文

GopherChina第二天小结

2019-04-29 07:35 by 轩脉刃, 1533 阅读, 收藏, 编辑
摘要: GopherChina第二天小结 今天继续昨天的文章,参加了第二天的GopherChina,例行完成总结。 基于MINIO的对象存储方案在探探的实践 关于对象存储,之前用过seaweedfs,但是对MINIO这个项目真是一无所知。于乐分享了下东道主探探在使用MINIO的整个过程。现在回想下来,最具有 阅读全文

slice是什么时候决定要扩张?

2019-04-16 08:58 by 轩脉刃, 697 阅读, 收藏, 编辑
摘要: slice是什么时候决定要扩张? 网上说slice的文章已经很多了,大都已经把slice的内存扩张原理都说清楚了。但是是如何判断slice是否需要扩张这个点却没有说的很清楚。想当然的我会觉得这个append是否扩张的逻辑应该隐藏在runtime中的某个函数,根据append的数组的长度进行判断。但是 阅读全文

gorm的日志模块源码解析

2019-04-02 09:57 by 轩脉刃, 2949 阅读, 收藏, 编辑
摘要: gorm的日志模块源码解析 如何让gorm的日志按照我的格式进行输出 这个问题是《如何为gorm日志加traceId》之后,一个群里的朋友问我的。如何让gorm的sql日志不打印到控制台,而打印到自己的日志文件中去。正好我实现了这个功能,就记录一下,并且再把gorm的logger这个线捋一下。 首先 阅读全文

记录最近遇到的几个问题

2019-04-01 08:48 by 轩脉刃, 1205 阅读, 收藏, 编辑
摘要: 记录最近遇到的几个问题 Gin 中间件没有使用next会是什么反应? 周末老王提了一个问题,如果Gin中间件里面如果我忘记写context.Next了会有什么结果呢? 我第一个反应是直接不会执行后面的handler了呗。我印象中gin的middleware也是个handler,然后维护一个handl 阅读全文

测试用例是开发人员最后一块遮羞布

2019-03-25 13:49 by 轩脉刃, 3612 阅读, 收藏, 编辑
摘要: 测试用例是开发人员最后一块遮羞布 最近一周写一个比较复杂的业务模块,越写到后面真心越心虚。操作越来越复杂了,代码也逐渐凌乱了起来。比如一个接口,传入的是一个比较复杂的大json,我需要解析这个大json,然后根据json中字段进行增删改查,调用第三方服务等操作。告诉前端接口已经完成的时候,总是有点没 阅读全文