11 2020 档案

摘要:1. Kafka介绍 1.1.1. Kafka是什么 kafka使用scala开发,支持多语言客户端(c++、java、python、go等) Kafka最先由LinkedIn公司开发,之后成为Apache的顶级项目。 Kafka是一个分布式的、分区化、可复制提交的日志服务 LinkedIn使用Ka 阅读全文
posted @ 2020-11-22 14:28 Terry- 阅读(983) 评论(0) 推荐(0)
摘要:Linux查看系统负载常用命令 参考: https://www.cnblogs.com/pengjt/p/11910572.html 阅读全文
posted @ 2020-11-22 00:09 Terry- 阅读(216) 评论(0) 推荐(0)
摘要:gRPC 阅读全文
posted @ 2020-11-22 00:07 Terry- 阅读(102) 评论(0) 推荐(0)
摘要:本文用假想的公司案例+图示 的方式,解释BFF和网关是什么,它们是怎么演化出来的。希望对架构师设计和落地微服务架构有所启发。 参考: https://www.cnblogs.com/qingyunzong/p/9004509.html 阅读全文
posted @ 2020-11-22 00:06 Terry- 阅读(128) 评论(0) 推荐(0)
摘要:BFF(Backend for Frontend)和网关Gateway是微服务架构中的两个重要概念,这两个概念相对比较新,有些开发人员甚至是架构师都不甚理解。 参考:https://www.cnblogs.com/dadadechengzi/p/9373069.html 阅读全文
posted @ 2020-11-22 00:04 Terry- 阅读(144) 评论(0) 推荐(0)
摘要:在开发过程中,map是必不可少的数据结构,在Golang中,使用map或多或少会遇到与其他语言不一样的体验,比如访问不存在的元素会返回其类型的空值、map的大小究竟是多少,为什么会报"cannot take the address of"错误,遍历map的随机性等等。 本文希望通过研究map的底层实 阅读全文
posted @ 2020-11-20 22:41 Terry- 阅读(366) 评论(0) 推荐(0)
摘要:1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。 IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠地传递数据包,使得网络上接收端收到发送端所发出的所有包, 阅读全文
posted @ 2020-11-20 22:23 Terry- 阅读(200) 评论(0) 推荐(0)
摘要:如今Docker的使用已经非常普遍,特别在一线互联网公司。使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力。在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如今在微服务架构越来越流行的情况下,微服务+Docker的完美组合,更加方便微服务架构运维部署落地。 阅读全文
posted @ 2020-11-20 22:04 Terry- 阅读(142) 评论(0) 推荐(0)
摘要:关于加密 在解释SSH、SSL与HTTPS协议之前我先介绍一下非对称加密协议。在1976年以前,所有的加密都采用对称加密,既A使用某种加密规则对信息加密,B收到信息后逆向加密规则解密数据。这通信方式产生了一个难以解决的问题:A如何安全的把加密规则通知B? 在1976年有两位数学家提出了一个崭新的非对 阅读全文
posted @ 2020-11-20 21:51 Terry- 阅读(212) 评论(0) 推荐(0)
摘要:slice是 Go 语言在数组之上提供的一个重要的抽象数据类型。在绝大多数需要使用数组的场合,切片都实现了完美替代。并且和数组相比,切片提供了更通用、功能更强大且便捷的数据序列访问接口。 1.什么是数组 Go 语言数组是一个固定长度的、容纳相同类型元素的连续序列。因此 Go 数组类型具有两个属性:元 阅读全文
posted @ 2020-11-20 20:44 Terry- 阅读(263) 评论(0) 推荐(0)
摘要:Go工程化 阅读全文
posted @ 2020-11-20 20:42 Terry- 阅读(117) 评论(0) 推荐(0)
摘要:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。(来自<<剑指offer>>) /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *righ 阅读全文
posted @ 2020-11-20 17:32 Terry- 阅读(232) 评论(0) 推荐(0)
摘要:package main import ( "fmt" ) type Student struct { id int name string } func main() { //比较 s1 := Student{1, "yy"} s2 := Student{2, "yang"} s3 := Stud 阅读全文
posted @ 2020-11-20 16:28 Terry- 阅读(312) 评论(0) 推荐(0)
摘要:logrus介绍 logrus配置 日志打印 HOOK机制 Gin日志 Fatal处理 线程安全 logrus介绍 golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数。对于更精细的日志级别、日志文件分割,以及日志分发等方面,并没有提供支持。在golang的世界 阅读全文
posted @ 2020-11-19 23:18 Terry- 阅读(634) 评论(0) 推荐(0)
摘要:为什么要使用日志 记录参数信息 猜测用户行为 复现系统bug并修复 func main() { // 禁用控制台颜色 gin.DisableConsoleColor() // 创建记录日志的文件 f, _ := os.Create("gin.log") gin.DefaultWriter = io. 阅读全文
posted @ 2020-11-19 19:19 Terry- 阅读(1284) 评论(0) 推荐(0)
摘要:什么是分组 对router创建Group(就是分组), 对同一分组会拥有同一前缀和同一中间件 写法 eg: r := gin.Default() v1 := r.Group("/v1") v1.POST("/login",loginEndpoint) v1.POST("/submit",submit 阅读全文
posted @ 2020-11-19 18:02 Terry- 阅读(1198) 评论(0) 推荐(0)
摘要:连接MySQL package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) // 定义一个全局对象db var db *sql.DB // 定义一个初始化数据库的函数 func initDB() (e 阅读全文
posted @ 2020-11-19 17:18 Terry- 阅读(128) 评论(0) 推荐(0)
摘要:Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。 Viper Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。 鉴于viper库本身的README已经写得十分详 阅读全文
posted @ 2020-11-18 22:34 Terry- 阅读(566) 评论(0) 推荐(0)
摘要:在多年的 Go 语言实践积累后逐渐形成了一种典型项目结构,如下图所示: 上面就是一个支持构建二进制可执行文件(在 src 下)的典型 Go 项目的结构。 1 src 目录: 存放项目要编译构建的可执行文件对应的 main 包的源文件。如果有多个可执行文件需要构建,每个可执行文件的 main 包单独放 阅读全文
posted @ 2020-11-18 13:07 Terry- 阅读(248) 评论(0) 推荐(0)
摘要:在http的功能里添加log_format模块,内容如下: log_format main escape=json '{ "@timestamp": "$time_iso8601", ' '"remote_addr": "$remote_addr",' '"request_time": "$requ 阅读全文
posted @ 2020-11-17 22:32 Terry- 阅读(762) 评论(0) 推荐(0)
摘要:一、HTTP基本认证 Basic Authentication——当浏览器访问使用基本认证的网站的时候, 浏览器会提示你输入用户名和密码。 http auth的过程: 客户端发送http请求 服务器发现配置了http auth,于是检查request里面有没有"Authorization"的http 阅读全文
posted @ 2020-11-17 21:45 Terry- 阅读(656) 评论(0) 推荐(0)
摘要:package Factory import "fmt" type Restaurant interface { GetFood() } type Donglaishun struct { } func (d *Donglaishun) GetFood() { fmt.Println("东来顺的饭菜 阅读全文
posted @ 2020-11-17 15:57 Terry- 阅读(108) 评论(0) 推荐(0)
摘要:MySQL基础 一、MySQL概述 1、什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2、什么是 MySQL、Oracle、SQLite、Access、MS SQL Server等 ? 答:他们均是一个软件,都有两个主要的功能: 将数据保存到文件或内 阅读全文
posted @ 2020-11-16 22:51 Terry- 阅读(88) 评论(0) 推荐(0)
摘要:组合 > 继承 Go中的设计,以为继承的被诟病,所以Golang的设计团队在语言的设计时并没有采用经典的OO模式 那Golang中各个部分是怎么联系到一起的呢 type ReadWriter interface { Reader Writer } 通过在interface中嵌入interface t 阅读全文
posted @ 2020-11-16 21:54 Terry- 阅读(216) 评论(0) 推荐(0)
摘要:内建函数 make 用来为 slice,map 或 chan 类型分配内存和初始化一个对象(注意:只能用在这三种类型上),跟 new 类似,第一个参数也是一个类型而不是一个值,跟 new 不同的是,make 返回类型的引用而不是指针,而返回值也依赖于具体传入的类型 make()函数在golang的代 阅读全文
posted @ 2020-11-16 18:17 Terry- 阅读(2280) 评论(0) 推荐(0)