- 博客(8)
- 资源 (13)
- 问答 (1)
- 收藏
- 关注
原创 关于代码质量退化的思考
一个软件项目从探索阶段到发展方向明确阶段,会经历从简单到复杂的一个过程,需求的不断叠加,会让系统越来越庞大,功能繁多,公司业务的扩展也让软件系统的生命周期变的更长。在业务变复杂软的过程中,各种原因的驱使,代码质量会退化,维护和开发新功能的成本也会相应的变高,推倒重新开发的成本也是高的吓人。代码质量退化的步骤大多情况下编码设计质量最高的时候是根据第一版需求进行编码实现的时候,但只要需求一变更,...
2022-01-10 09:55:00
55
原创 一次奇怪的的bug排查过程
公司对底层基础库进行了重构,线上稳定跑了几天,在查看订单系统的log时,有几条error信息非常的奇怪,orderID:80320180 statemachine error: no event [Revoked] at current state [Paid]orderID:81983045 statemachine error: no event [Refund] at current...
2021-11-30 10:00:00
57
原创 分解uber依赖注入库dig-源码分析
上一篇帖子 分解uber依赖注入库dig-使用篇 把如何使用dig进行代码示例说明,这篇帖子分析dig的源码,看他是如何实现依赖注入的。dig实现的中心思想:所有传入Provide的函数必须要有除error外的返回参数,返回参数供其他函数的形参使用。比如上一篇的第一个例子里,一个函数func() (*Config, error)返回Config 另一个函数func(cfg *Config...
2021-05-08 09:36:00
102
原创 分解uber依赖注入库dig-使用篇
golang的依赖注入库非常的少,好用的更是少之又少,比较好用的目前有两个谷歌出的wire,这个是用抽象语法树在编译时实现的。uber出的dig,在运行时,用返射实现的,并基于dig库,写了一个依赖框架fx本系列分几部分,先对dig进行分析,第一篇介绍dig的使用,第二篇再从源码来剖析他是如何通过返射实现的的依赖注入的,后续会介绍fx 的使用和实现原理。dig主要的思路是能过Prov...
2021-05-06 09:43:00
71
原创 dot 语法总结
在使用pprof分析go的项目时,经常会查看各项指标的有向图原理是使用Graphviz(Graph Visualization Software)解析生成的dot脚本得到最终展示给我们的图信息。dot是Graphviz用于画有向图和无向图语言,语法简单。dot的抽象语法[ strict ] (graph | digraph) [ ID ] '{' stmt_list '}'dot支持无向图...
2021-03-29 09:46:00
201
原创 grpc系列- protobuf详解
Protocol Buffers 是一种与语言、平台无关,可扩展的序列化结构化数据的方法,常用于通信协议,数据存储等等。相较于 JSON、XML,它更小、更快、更简单,因此也更受开发人员的青眯。基本语法syntax = “proto3”;package model;service MyServ { rpc Query(Request) returns(Reply);}messag...
2020-12-30 13:46:00
92
原创 c++ 解析yaml文件
一直用c++操作`ini`做配置文件,想换成`yaml`,在全球最大的同性交友网站`github`上搜索,看有没有开源的库,功夫不负有心人,找到了[yaml-cpp](https://github.com/jbeder/yaml-cpp),试着解析了一个`yaml`文件,给个满分。分享一下如何使用他。 先`git clone git@github.com:jbeder/yaml-cpp.gi...
2020-12-15 10:33:00
89
原创 白话k8s-Pod的组成
k8s的所有功能都是围绕着Pod进行展开的,我们经常会看到类似这样一张图告诉我们,Pod是一组container的集合,container之间可以通过localhost:port的方式直接访问。感觉很神奇,明明是不同的container怎么做到共用一个IP的,在随便一个容器内通过localhost访问就能访问其他容器的服务,通过例子和阅读源码找到了原因:创建一个简单的PodapiVers...
2020-10-20 11:58:00
54
程序员的数学
2013-10-31
c++ 头文件定义数组 实现文件初始化 问题
2015-01-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人