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

浙公网安备 33010602011771号