《Go语言精进之路:从新手到高手的编程思想、方法和技巧1》1-3章笔记
第一部分 熟知Go语言的一切 第1条 了解Go语言的诞生与演进 1.1 Go语言的诞生 1.2 Go语言的早期团队和演进历程 1.3 Go语言正式发布并开源 一只由Rob Pike的夫人Renee French设计的地鼠(见图1-2),从此地鼠成为世界各地Go程序员的象征。Go程序员也被昵称为Gopher(后文会直接使用Gopher指代Go语言开发…
Protocol Buffers的扩展工具:Buf
解决的问题 API 设计通常不一致 依赖管理通常是事后才想到的 不强制执行向前和向后兼容性 proto文件分发是一个困难的、未解决的过程 工具生态系统是有限的 Buf Schema Registry proto文件的托管平台,方便proto文件的分发 buf CLI 一种新开发的高性能 Protobuf 编译器。 强制执行良好的 API 设计选择和…
强大的序列化工具:Protocol Buffers
概述 Protocol Buffers 为结构化数据的序列化向前兼容,向后兼容,提供了语言中立、平台无关、可扩展机制的途径。类似JSON,但比JSON更小、更快。 通过.proto文件来定义,生成接口代码、特定语言的运行库,以及数据的序列化格式。 解决了什么问题 网络包的序列化格式 ,高达几兆大小的结构化数据,适用于网络传输和长期的数据存储。面对变…
服务器cpu高导致ssh无法连接
正文 近期ssh连不上服务器,找服务器厂商客服得知是cpu高导致的,但是没法看到进程信息,不清楚是哪个进程导致的。 分析了下,服务器上的应用都是docker部署的,而最近部署了监控服务赫兹跳动,就出现这个问题了。于是对该容器进行cpu资源限制,看看能否解决。 服务器是4核心的,通过--cpus 1限制监控服务容器最多使用“一核心”,也就是100%c…
Kubernetes的client-go库
前言 client-go是一个调用kubernetes集群资源对象API的客户端,即通过client-go实现对kubernetes集群中资源对象增删改查等操作。大部分对kubernetes进行前置API封装的二次开发都通过client-go这个第三方包来实现。 RESTClient 最基础的,封装了指定资源URL访问Kubernetes API的…
Google的 DI 框架 Wire
前言 以下内容来自 Wire 官方文档,花了一天把英文的 readme 啃了遍,发现存在几个问题: 记住的不多 后面遇到问题需要再来看readme,但是个人英语阅读效率太低,又要花很多时间 将来复习时,去看英文文档,没有中文的直观。 所以在这里记录以下。 介绍 Wire是一个代码生成工具,使用依赖注入自动连接组件。组件之间的依赖关系在Wire中表示…
A/B测试vs灰度测试vs蓝绿部署
A/B测试 简单来说,A/B测试是一种比较两个版本的测试,以确定哪个版本的性能更好。 在A/B测试中,部分用户会接收到“版本A”,其他用户则会接收“版本B”。 这是一个可控的过程。为了进行实验,用户组被分成两组。“A组”通常被称为“对照组”,继续接收现有的产品版本。而“B组”通常被称为“实验组”,根据待测量指标,收到不同的实验数据。 最后,比较两组…
LeetCode:所有可能的路径_797
思路 很基本的深搜,还没有环,省了isVisited判断 go的数组还是不太熟悉,在求得一条路线时,需要加入到路线集合中,这里需要深拷贝,没留意到,导致出现了一些意料之外的问题,看了题解才发现的 go的闭包挺香的,不用使劲传参,或者使用全局变量 题目 给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0&nbs…
LeetCode:特殊等价字符串组_893
思路 第一次用Go刷题,主要熟悉下Go的语法 这题有窍门,奇数下标的字符可以交换,如何判断交换后的字符是否相等成为了关键。如果定义一个字符串为终态,另一个去调整,趋向于终态,这很麻烦。不如主动定义一个共同的终态,两个字符串都往这个终态调整。答案是排序。特殊等价字符串奇数下标的字符串排序后是相同的。同理可以判断偶数下标的字符串,奇数偶数都符合条件了,…