对开源系统的认知,你在第几层?

今天在看毛老师的课程,看到了grpc,脑子里突然问了自己一个问题。 Q:你对grpc有多了解? A:我想了一下,我并没有深度使用过gRPC,在公司参与的项目中,我只简单使用过一次gRPC。大概能说一点它是个啥:谷歌开源的RPC框架,支持多语言,数据传输使用HTTP 2.0和protob……

阅读全文

架构基础(一):理解架构

架构基础(一)——理解架构 极客时间从0开始学架构学习笔记 架构是什么 首先,先梳理一下和架构关系密切的一些概念 系统 定义:系统是一群有关联的个体组成,根据某种规则运作,能完成个体不能单独完成的工作的群体。 特征: 个体之间有关联 规则运作 个体和系统能力上的差异 举例: 团队也是一个系统 家庭也是一……

阅读全文

【Go单元测试】停止使用gomock.any()

应该避免在单元测试中使用gomock.any(),使用gomock.any()让你的单元测试更容易通过的同时也会降低单元测试的可信度。 举个例子 业务描述 一个简单的新增学生信息功能,记录一个学生的时候,除了基本信息外,还需要从评价系统获取该学生的评价信息存入数据库。 domain层 type Student……

阅读全文

同步替代配置文件

最近参与的一个项目,涉及到给所有应用统一刷配置的功能,我们并没有使用配置文件实现这个功能,我们采用的方式是同步。觉得这种实现很有意思,也很有用,所以借这篇文章分享出来。 需求 首先简单介绍一下需求,现有一个监控系统,已经接入了100个应用,现在需要将这100个应用统一配置相同的告警规……

阅读全文

博客回归

这一篇是来立flag的,正式回归个人博客。接下来的博客我想主要以系列为主。就从最近学习的李云华老师的架构课开始。课程是在极客上订阅的,其实是2020年订阅的,主要内容是今年3月份才看完的。 目前想到的一些系列主题: 《从0开始学架构》学习笔记+感悟系列 容器云相关 Devops相关 应用监……

阅读全文

【Gin】实现参数自动绑定

写在前面 如果你现在在用Go-Gin来写web系统,系统没有实现参数自动绑定,强烈建议你花几分钟看完此篇文章。 Gin介绍 在介绍如何实现自动绑定之前,我们来简单复习一下,用Gin来实现一个web系统 项目结构 . ├── app │ ├── controller │ │ ├── auto_bind_hello.go │ │ └── hello.go │ └── router │ ├── router.go │ └── wrap.go ├─……

阅读全文

【译】Go反射的三个原则(官方博客)

写在前面 本文翻译自Go官方博客,对翻译内容有疑问,请在评论指出。 介绍 计算机的反射是程序审查自身结构的能力,特别是通过类型来反射。反射也是元编程的一种形式。我们也总是被它搞得很迷惑。 这篇文章尝试通过介绍Go中的反射是如何工作的让大家理解反射。每个语言的反射模型是不一样的(甚至有很多……

阅读全文

【译】提升Go磁盘IO性能的尝试

写在前面 这是一篇译文,译者水平有限,如果对文章内容比较感兴趣,建议看一下原文An Attempt at Reducing Costs of Disk I/O in Go 0.概要 并发是个比较难理解的东西。Go是谷歌创建的一门编程语言,它通过轻量级线程(协程)提供了容易理解的并发抽象。减轻了并发编程的难度。为了支持这些Goroutine,Go使用run……

阅读全文

Java容器化资源限制问题

一、当前问题 1. JVM无法识别CGroup资源限制 Java 在容器化之后, jvm 感知的仍然是宿主机的内存 CPU, 默认情况下 JVM Xmx(最大堆大小)为宿主机内存的1/4 可以使用以下例子说明 docker 版本:18.06.0 jdk版本:1.8.0_181 ➜ ~ docker --version Docker version 18.06.0-ce, build 0ffa825 ➜ ~ docker run -ti -m 512M openjdk:8u181-jdk root@a069edb03118:/# java -XX:+PrintFlagsFinal -version | grep MaxHeapSize uintx MaxHeapSize := 524288000 {product} openjdk version "1.8.0_181"……

阅读全文