SF
后台 / 嵌入式全栈之路
后台 / 嵌入式全栈之路
注册登录
关注博客
注册登录
主页
关于
RSS
一种邪道的 Git 整洁之法——rebase & squash
amc
12 月 1 日
阅读 7 分钟
725
自从 Git 出现之后,分支管理就深入人心。但是随着我们团队在合并 master 分支时,开始优先采用 squash merge,事情还是有了变化。我也开始采用另一种不同于传统开发模式的分支合并方法。在此我简单撰文阐述一下。
SQL 稍复杂一点语法的学习笔记
amc
10 月 26 日
阅读 7 分钟
255
最近整理我手写的笔记, 其中有不少内容随着时代的变化, 用得越来越少了, 抑或是电子化了发到了我的博文中。然而我发现我当年学习的 SQL 笔记, 只电子化了特别基础和简单的 一篇, 后面还有一些躺在纸上。既然有点时间, 那我就把那些内容也都整理一下发上来吧。
为什么软件行业仍在重蹈 50 年前的覆辙?——《人月神话》读书笔记
amc
9 月 3 日
阅读 18 分钟
737
“人月神话” 这个词,你知道是什么意思吗?我的第一反应是当面阿姆斯特朗在月球上留下的人类的一大步。然而实质上,这是一本软件工程的经典书籍,它最大的影响是让 “人月” 这个概念传遍整个软件工程行业。
腾讯 tRPC-Go 教学——(7)服务配置和指标上报
amc
5 月 20 日
阅读 8 分钟
505
系列文章腾讯 tRPC-Go 教学——(1)搭建服务腾讯 tRPC-Go 教学——(2)trpc HTTP 能力腾讯 tRPC-Go 教学——(3)微服务间调用腾讯 tRPC-Go 教学——(4)tRPC 组件生态和使用腾讯 tRPC-Go 教学——(5)filter、context 和日志组件腾讯 tRPC-Go 教学——(6)服务发现腾讯 tRPC-Go 教学——(7)服务配置和指标上报…… 还会有更多,...
腾讯 tRPC-Go 教学——(6)服务发现
amc
5 月 2 日
阅读 4 分钟
464
距离上一篇文章居然已经过去两个月了,毕竟苦逼打工人忙得一点空都没有……本文我们来讲一讲对于微服务架构来说,最重要的一个点了:服务发现及其对应的名字服务功能。系列文章腾讯 tRPC-Go 教学——(1)搭建服务腾讯 tRPC-Go 教学——(2)trpc HTTP 能力腾讯 tRPC-Go 教学——(3)微服务间调用腾讯 tRPC-Go 教学——(4)tRPC ...
腾讯 tRPC-Go 教学——(5)filter、context 和日志组件
amc
3 月 4 日
阅读 10 分钟
976
本文咱们来介绍一下在 tRPC 中的 filter 机制、context 用法,以及在相关机制上可以实现的 tracing log 能力。说实话,这一部份是我个人最不喜欢的 tRPC 的实现模式,不过这不妨碍咱们使用它——只要把它封装成让人更为舒服的模式也未尝不可。系列文章腾讯 tRPC-Go 教学——(1)搭建服务腾讯 tRPC-Go 教学——(2)trpc HTTP ...
腾讯 tRPC-Go 教学——(4)tRPC 组件生态和使用
amc
2 月 6 日
阅读 6 分钟
1.1k
之前我花了三篇文章来介绍 tRPC 怎么用。而 tRPC 给开发者带来的便利, 在整整三篇文章中,我也只是介绍了它可以方便服务在 HTTP、trpc、grpc 三种协议之间灵活切换。诚然, tRPC 作为能够统一腾讯内开发框架的一个生态级产品,它的能力显然不止这些。这一篇文章,咱们来一起初窥 tRPC 的周边生态有哪些, 以及其中的第三方...
腾讯 tRPC-Go 教学——(3)微服务间调用
amc
1 月 30 日
阅读 5 分钟
917
前两篇文章(1、2),我构建了一个简单的 HTTP 服务。 HTTP 服务是前后端分离架构中,后端最靠近前端的业务服务。不过纯后台 RPC 之间,出于效率、性能、韵味等等考虑,HTTP 不是我们的首选。本文我们就来看看腾讯是怎么使用 tRPG-Go 构建后台微服务集群的。
腾讯 tRPC-Go 教学——(2)trpc HTTP 能力
amc
1 月 16 日
阅读 5 分钟
1.1k
上一篇文章 中我们快速搭建了一个 http API 服务,并且我们可以看到,对外提供了 URL query 和 application/json 两种服务模式。那么实际上,我们到底实现了什么、并且能够做些什么?读者可能还是没有直观的感受,因此必要先来简单 review 一下。就让我们先放下敲代码的小手,一起看看刚刚写出来的都是些什么玩意儿吧。
腾讯 tRPC-Go 教学——(1)搭建服务
amc
1 月 15 日
阅读 4 分钟
1.2k
2023 年底腾讯统一的 RPC 框架 tRPC 正式开源。遍观全网,似乎大部份是对 tRPC 概念上的宣传、架构上的设计,而如何开发、如何部署的文章凤毛麟角。于是笔者小试牛刀撰此文,或许会成为一系列,希望能抛砖引玉。
每天学点 Go 规范 - 代码不能写太宽,那么函数该怎么换行呢?
amc
2023-12-07
阅读 4 分钟
841
公司内部的 Go 代码规范中限制了每一行代码的宽度。为了满足这个规范,那些太宽的代码行就不可避免地需要换行。换行不是普通的回车就行,如何在换行的同时,保持代码优秀的可读性,笔者根据日常 code review 中看到的各种模式,提出一些建议。
逆微服务潮流?基于腾讯 tRPC-Go 单体化改造怎么节省上万核 CPU
amc
2023-11-08
阅读 6 分钟
692
但是在快速部署的时候,有时候,我们可能需要一些宏服务的优势。有没有一种方法,能够 “既要又要” 呢?本文基于 tRPC-Go 服务,提出并最终实践了一种经验证可行的方法。
三分钟, 让你学会 Go 泛型
amc
2023-10-26
阅读 5 分钟
762
Go 自从 1.18 版本正式推出泛型之后至今也超过半年了,但是笔者发现在实际业务开发中,大家没有如想象中那么广泛地使用泛型。于是决定简单撰一文,尽可能简单地讲解 Go 的泛型代码的写法。
每天学点 Go 规范 - 函数传参时,struct 应该传值还是引用
amc
2023-08-26
阅读 3 分钟
1.3k
现在团队里几乎所有的代码都需要经过 Code Review(代码审查)之后才允许合入主分支。笔者在 CR 中看到了不少不适合的问题,也看到了不少值得学习的点,于是决定一点一滴地记录这些做法、经验、教训,以飨读者。如有错误,也欢迎读者不吝指正。
每天学点 Go 规范 - context 类型的 key 有什么讲究?
amc
2023-08-16
阅读 3 分钟
1.5k
现在团队里几乎所有的代码都需要经过 Code Review(代码审查)之后,才允许合入主分支。作为 CR 负责人之一,在 CR 中看到了不少不适合的问题,也看到了不少值得学习的点。笔者决定从今天开始,一点一滴地记录这些做法、经验、教训,以飨读者。
Go http.Transport 主要参数说明
amc
2023-06-03
阅读 2 分钟
3.1k
在 Go 中创建一个 http client 时,一般会使用 Go http 包的 Transport 类型。本文主要说明 http.Transport 需要关注的主要参数。
JSON 这么可爱,让我们用千字短文吃透它吧!
amc
2022-10-21
阅读 6 分钟
2.5k
JSON,一个伟大的协议,前端工程师的卓越发明!相信 99% 的程序员都认识 JSON,它作为前后端交互的热门协议,因其易理解、简单、灵活和超强的可读性,得到了互联网的广泛欢迎,甚至很多微服务之间的传输协议中也得到应用。
作为 Gopher,你知道 Go 的注释即文档应该怎么写吗?
amc
2022-03-24
阅读 7 分钟
3.3k
点击徽章,就可以打开 https://pkg.go.dev/ 的网页,网页中给出了这个开源项目所对应的 Go 文档。在刚接触 Go 的时候,我一度以为,pkg.go.dev 上面的文档是需要开发者上传并审核的——要不然那些文档咋都显得那么专业呢。
Yaegi,让你用标准 Go 语法开发可热插拔的脚本和插件
amc
2021-10-28
阅读 6 分钟
11.3k
Go 作为一种编译型语言,经常用于实现后台服务的开发。由于 Go 初始的开发大佬都是 C 的老牌使用者,因此 Go 中保留了不少 C 的编程习惯和思想,这对 C/C++ 和 PHP 开发者来说非常有吸引力。作为编译型语言的特性,也让 Go 在多协程环境下的性能有不俗的表现。
如何在 Go 中优雅的处理和返回错误(1)——函数内部的错误处理
amc
2021-09-30
阅读 4 分钟
4.4k
在使用 Go 开发的后台服务中,对于错误处理,一直以来都有多种不同的方案,本文探讨并提出一种从服务内到服务外的错误传递、返回和回溯的完整方案,还请读者们一起讨论。
手把手教你用 reflect 包解析 Go 的结构体 - Step 3: 复杂类型检查
amc
2021-09-18
阅读 7 分钟
6.7k
上一篇文章我们完成了对结构体中基本数据类型的解析。这一篇文章,则是真正令人头疼的、在前两篇文章未处理的几个主题了:匿名成员结构体中嵌套结构体Go 切片Go 数组Go map结构体中的匿名成员我们回来看一下上一篇文章中的 marshalToValues 函数,其中有一行 “ft.Anonymous”: {代码...} 前文提过,这表示当前的字段是一...
手把手教你用 reflect 包解析 Go 的结构体 - Step 2: 结构体成员遍历
amc
2021-07-10
阅读 6 分钟
3.3k
上一篇文章我们学习了如何用 reflect 检查一个参数的类型。这一篇文章,咱们获得了一个结构体类型,那么我们需要探究结构体内部的结构以及其对应的值。
手把手教你用 reflect 包解析 Go 的结构体 - Step 1: 参数类型检查
amc
2021-07-10
阅读 5 分钟
4.8k
Go 原生的 encoding/json 的 Unmarshal 和 Marshal 函数的入参为 interface{},并且能够支持任意的 struct 或 map 类型。这种函数模式,具体是如何实现的呢?本文便大略探究一下这种实现模式的基础:reflect 包。
Go 语言原生的 json 包有什么问题?如何更好地处理 JSON 数据?
amc
2021-05-07
阅读 12 分钟
10.1k
Go 的 “玩家” 们看到这个题目可能会很疑惑——对于 JSON 而言,Go 原生库 encoding/json 已经是提供了足够舒适的 JSON 处理工具,广受 Go 开发者的好评。它还能有什么问题?但是,实际上在业务开发过程中,我们遇到了不少原生 json 做不好甚至是做不到的问题,还真是不能完全满足我们的要求。
Go time 包中的 AddDate 的逻辑避坑指南
amc
2021-03-24
阅读 2 分钟
8.1k
从 C++ 转 Go 后,当操作时间变量的时候,Go 原生的 time 包用起来简直不要太舒服,再也不用自己写轮子了。我之前就写过一篇文章介绍了 time 的常用用法。
用 Docker 在单台宿主机启动多个 etcd 节点
amc
2021-02-24
阅读 4 分钟
4.6k
在学习和开发基于 etcd 的服务和功能时,需要自己在本地部署一套 etcd 集群。原以为这是一个简单的事情,但意外地花了我几个小时才搞定……本文介绍有效的部署方法和踩过的一些坑。
入门 Kafka 你所需要了解的基本概念和开发模式
amc
2020-12-22
阅读 6 分钟
2.5k
团队在日常工作中,一般情况下使用的消息队列是腾讯云 CKafka。CKafka 提供了高可靠的开箱即用消息队列能力,让我们在日常能够放心使用,减少花在运维上的投入。不过即便如此,我们还是需要学习 Kafka 的一些基本概念和功能,从而在实际应用中嗯能够充分高效、高质量地利用 Kafka 的能力。
小面试官教你 MySQL——引擎、索引和算法
amc
2020-12-01
阅读 5 分钟
4.5k
我在面试中,经常喜欢针对 MySQL 的知识由浅入深地问下去,了解候选人对 MySQL 知识的了解到了哪一个层级。上一篇文章中的那些知识太基础了,我是不会拿来问的。因此我会问的第一个问题必然是 MySQL 的索引。
小面试官教你 MySQL —— 简介和功能
amc
2020-11-04
阅读 3 分钟
3.2k
MySQL 是我们作为后台开发中非常重要的软件。前段时间作为面试官,面试了几位后台开发的候选人——MySQL 的知识由浅入深一路问下去,并没有人能够完整地回答出来。
还在用 map[string]interface{} 处理 JSON?告诉你一个更高效的方法——jsonvalue
amc
2020-08-10
阅读 7 分钟
20.1k
本文介绍的是 jsonvalue 库,这是我个人在 Github 上开发的第一个功能比较多而全的 Go 库。目前主要是在腾讯未来社区的开发中使用,用于取代 map[string]interface{}。
1
(current)
2
3
4
下一页
1
(current)
下一页