网站首页 成长录 “慢生活”不是懒惰,放慢速度不是拖延时间,而是让我们在生活中寻找到平衡。

Golang负载均衡
2020-06-09 19:06 admin golang负载

负载均衡*请求者向均衡服务发送请求__typeRequeststruct{fnfunc()int//Theoperationtoperform.cchanint//Thechanneltoreturntheresult.}_注意这返回的通道是放在请求内部的。通道是first-class值_*能很好的模拟一个请求者,一个...
阅读全文

Closure in Golang
2020-06-09 19:06 admin golangClosure

序言Golang遵循“少即是多”的设计哲学,同时又支持闭包(Closure),那么闭包对于Golang来说肯定有重要的价值。对于Golang的初学者来说,肯定会有下面的几个疑问:1.闭包是什么?2.闭包是怎么产生的?3.闭包可以解决什么问题?闭包在函数式编程中广泛使用,所以一提起闭包,读者必然会想起函数式编程,我们先简...
阅读全文

Go编码规范指南
2020-06-09 19:06 admin go编码

序言看过很多方面的编码规范,可能每一家公司都有不同的规范,这份编码规范是写给我自己的,同时希望我们公司内部同事也能遵循这个规范来写代码。如果你的代码没有办法找到下面的规范,那么就遵循标准库的规范,多阅读标准库的源码,标准库的代码可以说是我们写代码参考的标杆。格式化规范go默认已经有了`gofmt`工具,但是我们强烈建议...
阅读全文

Golang错误和异常处理的正确姿势
2020-06-09 19:06 admin golang姿势

序言错误和异常是两个不同的概念,非常容易混淆。很多程序员习惯将一切非正常情况都看做错误,而不区分错误和异常,即使程序中可能有异常抛出,也将异常及时捕获并转换成错误。从表面上看,一切皆错误的思路更简单,而异常的引入仅仅增加了额外的复杂度。但事实并非如此。众所周知,Golang遵循“少即是多”的设计哲学,追求简洁优雅,就是...
阅读全文

获取Goroutine Id的最佳实践
2020-06-09 19:06 admin goroutineId

序言在C/C++/Java等语言中,我们可以直接获取ThreadId,然后通过映射ThreadId和二级调度TaskId的关系,可以在日志中打印当前的TaskId,即用户不感知TaskId的打印,适配层统一封装,这使得多线程并发的日志的查看或过滤变得非常容易。Goroutine是Golang中轻量级线程的实现,由GoR...
阅读全文

Golang泛型编程初体验
2020-06-09 19:06 admin golang初体验

序言众所周知,Golang中不支持类似C++/Java中的标记式泛型,所以对于常用算法,比如冒泡排序算法,有些同学容易写出逻辑上重复的代码,即整型是第一套代码,字符串型是第二套代码,用户自定义类型是第三套代码。重复是万恶之源,我们当然不能容忍,所以要消除重复,使得代码保持在最佳的状态。本文通过一个实际使用的简单算法的演...
阅读全文

Golang事务模型
2020-06-09 19:06 admin golang事务

序言笔者在一文中,将通信系统软件的DDD分层模型最终演进为五层模型,即调度层(Schedule)、事务层(TransactionDSL)、环境层(Context)、领域层(Domain)和基础设施层(Infrastructure),我们简单回顾一下:ddd-layer-with-dci-dsl.png1.调度层:维护U...
阅读全文

Golang Stub初体验
2020-06-09 19:06 admin golang初体验

序言对于领域对象的UT测试来说,基础设施层(infra)的操作函数都应该被打桩。对于Golang来说,大家通常会想到GoMock。GoMock是由Golang官方开发维护的针对Golang的Mock框架,代码在github.com上托管。GoMock目前已经实现了较为完整的基于interface的Mock功能,能够与G...
阅读全文

Golang中巧用defer进行错误处理
2020-06-09 19:06 admin golang错误处理

问题引入毫无疑问,错误处理是程序的重要组成部分,有效且优雅的处理错误是大多数程序员的追求。很多程序员都有C/C++的编程背景,Golang的程序员也不例外,他们处理错误有意无意的带着C/C++的烙印。我们看看下面的例子,就有一种似曾相识的赶脚,代码如下:__funcdeferDemo()error{err:=creat...
阅读全文

认证流程(docker login)
2020-06-09 19:06 admin dockerlogin

*GET/v2/__GET/v2/HTTP/1.0Host:mydocker.comConnection:closeUser-Agent:docker/17.05.0-cego/go1.7.5git-commit/89658bekernel/3.13.0-32-genericos/linuxarch/amd64Upst...
阅读全文

下载新镜像流程(docker pull)
2020-06-09 19:05 admin dockerpull

GET/v2/__GET/v2/HTTP/1.0Host:mydocker.comConnection:closeUser-Agent:docker/17.05.0-cego/go1.7.5git-commit/89658bekernel/3.13.0-32-genericos/linuxarch/amd64Upstr...
阅读全文

下载已存在镜像流程(docker pull)
2020-06-09 19:05 admin dockerpull

GET/v2/__GET/v2/HTTP/1.0Host:mydocker.comConnection:closeUser-Agent:docker/17.05.0-cego/go1.7.5git-commit/89658bekernel/3.13.0-32-genericos/linuxarch/amd64Upstr...
阅读全文

上传新镜像流程(docker push)
2020-06-09 19:05 admin dockerpush

GET/v2/__GET/v2/HTTP/1.0Host:mydocker.comConnection:closeUser-Agent:docker/17.05.0-cego/go1.7.5git-commit/89658bekernel/3.13.0-32-genericos/linuxarch/amd64Upstr...
阅读全文

上传已存在镜像流程(docker push)
2020-06-09 19:05 admin dockerpush

GET/v2/__GET/v2/HTTP/1.0Host:mydocker.comConnection:closeUser-Agent:docker/17.05.0-cego/go1.7.5git-commit/89658bekernel/3.13.0-32-genericos/linuxarch/amd64Upstr...
阅读全文

Golang聊天室
2020-06-09 19:05 admin golang聊天室

*前期准备*需要import"net"包*IP类型,其中一个重要的方法是IP.ParseIP(ipaddrstring)来判断是否是合法的IP地址*TCPClient*`func(c*TCPConn)Write(b[]byte)(nint,erros.Error)`用于发送数据,返回发送的数据长度或者返回错误,是TCP...
阅读全文
顶部 底部