自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 微服务框架 micro 源码分析 - 中间件的加载

一个限流中间件的例子func TestRateClientLimit(t *testing.T) { b := ratelimit.NewBucketWithRate(float64(limit), int64(limit)) //... c := client.NewClient( // set the selector client.Selector(s...

2019-07-04 18:26:33 589 1

原创 go 反射机制

反射是什么静态类型语言的程序要编译成可执行文件才能执行,在编译阶段变量类型信息(元信息)被擦除,只剩地址和长度.要想访问元信息需要通过特殊的办法–反射.而动态类型的语言通过解释执行的,源码一直存在,所以能轻松的访问到元信息.Go 语言提供了一种机制在运行时更新变量和检查他们的值,调用它们的方法,但是在编译时并不知道这些变量的具体类型,这称为反射机制.<< Go 程序设计语言 &...

2019-06-17 19:20:18 339

原创 remote vscode 实现远程开发 史上最精简

vscodesshrmate安装vscode 和插件 (客户端)下载 VSCode Insiders并解压到要安装的目录vscode `ctrl+shift+x" 搜索 Remote - SSH 并安装,搜索 Remote VSCode 并安装,ssh (客户端/服务端)客户端win10win+x/应用和功能/管理可选功能/添加功能/Open SSHlinu...

2019-05-08 14:24:09 4618

原创 go 切片的内存预分配算法

一个例子看 go slice 的内存预分配例子package mainimport "fmt"func main() { s := []int{} fmt.Println("len", "cap") for i := 0; i < 1; i++ { s = append(s, i) fmt.Printf("%2d%4d\n", len(s), cap(s)) }...

2019-04-16 16:12:16 837

原创 win 工具

powertoys 快捷键工具snipaste 截图编辑工具7zip 解压缩工具 https://www.7-zip.orgOBS Studio 录屏软件notion 笔记工具XMind 脑图draw.io 画图

2021-07-15 20:55:22 117

原创 服务治理-服务发现

服务发现是指使用一个注册中心来记录分布式系统中的全部服务的信息,以便其他服务能够快速的找到这些已注册的服务.服务发现是支撑大规模 SOA 和微服务架构的核心模块,它应该尽量做到高可用.目的让消费者查找服务(定位服务),进而访问服务(使用服务).## 发展过程硬编码和配置文件 -> DNS -> 服务发现高可用性CAP 定理,分布式计算机系统只能同时满足一致性(consi...

2019-07-01 16:05:31 1221

原创 go module

Go module环境变量 GO111MODULEGO111MODULE值模式off<GOPATH mode>on<module-aware mode>auto/空<GOPATH mode>在 GOPATH/src 之内. <module-aware mode> 在 GOPATH/src 之外 而且 本目...

2019-06-30 14:45:54 855

原创 B 站微服务框架 kratos --文末有高能彩蛋

[//]: <> (图 bilibili_kratos_00.png)B 站大事你懂的事件开源 kratos有个坑!!! github.com/urfave/cli 库年久失修了,导致 go get -u github.com/bilibili/kratos/tool/kratos 不成功.kratos 框架组件描述HTTP Blademaster...

2019-06-26 12:29:24 6497

原创 go 错误处理

“可对值进行编程,而错误是值,因此可对错误进行编程.错误不像异常,因为错误没有什么特别之处,而未处理的异常可能导致程序崩溃.”–Rob Pike错误的分类和处理机制广义错误(errors) 非期望的行为未捕获错误(untrapped error 异常) 未知错误,未定义的错误类型 --> 段错误可捕获错误(trappend error) 已知错误,预定义的错误类型...

2019-06-03 20:19:03 1409

原创 go 性能测试

例子package main//func FibRaw(x int) int { if x == 0 { return 0 } else if x <= 2 { return 1 } else { return FibRaw(x-2) + FibRaw(x-1) }}//var cache = make(map[int]int)func FibCach...

2019-05-29 18:01:32 1367

原创 go 单元测试

基础测试简单快速,可用于测试驱动开发表格测试精心购键的一组输入,包含关注点,特别是边界条件是否满足随机测试随机输入扩展测试的覆盖范围.预期的结果的获得.算法清晰但性能不佳的函数来得到可信结果,再和被测试函数的输出比较构建符合特定规律的输入,就能知道结果,再和被测函数的输出比较例子源码文件//memoize.gopackage memoizeFibtype Fibfun...

2019-05-25 12:35:33 515

原创 go 测试

测试 ( go test )自动化测试 ( 参数 -run=. )单元测试 ( 测试对象的基础元件 )集成测试 ( 测试对象的部件的关系 )功能测试 ( 测试对象的功能的正确 )白盒测试 ( 测试对象的内部 )黑盒测试 ( 测试对象的外部 )基础测试 ( 测试对象的一个特定的输入输出 )表格测试 ( 测试对象的一组特定的输入输出 )随机测试 ( 测试对象的一组随机的输入输出...

2019-05-24 20:23:32 642

原创 go interface 类型用法

接口定义接口实现接口零值 nil表达式实现接口的方法,可以赋值给接口变量实例赋值给接口指针赋值给接口接口赋值给接口T 型值方法集 (t T)*T 型值方法集 (t T) 和 (t *T)判等,可赋值,可判等类型断言 t = x.(T)断言是具体类型断言是接口类型断言失败,崩溃断言空接口值,肯定失败,崩溃断言返回二元组,如果成功返回...

2019-05-22 13:27:04 2397

原创 git 忽略文件 .gitignore

深入浅出 .gitignore组成# 开头的行是注释其他的都是模式不含 / 的是 shell glob 模式含 / 的是 非 shell glob 模式glob 模式类似 shell 使用的简化版正则表达式结论* 匹配 0 到 n 个字符,但是不匹配 /** 匹配 0 到 n 个字符,匹配 /? 匹配任意单个字符[abc ]匹配 a,b,c 任意...

2019-05-17 20:49:40 165

原创 go tool 用法

go version go1.12.4 linux/amd64开发run 编译并运行build 编译clean 清楚fmt 格式化bug 报告bugtest 测试generate 生成文档模块和包mod 模块管理list 显示模块fix ...

2019-05-15 14:42:52 892

原创 go struct 类型用法

值类型零值各字段的零值组成字面量具名字段嵌入字段/匿名字段嵌入字段和具名字段同名时,带上类型名嵌入字段和具名字段不同名时,不带类型名值方法指针方法package mainimport "fmt"type data struct { id int name string addr string}type family struct { father s...

2019-05-13 22:58:36 1000

原创 ssh 远程登录 一文弄懂

服务端安装sudo apt install openssh-server客户端安装sudo apt install openssh-client生成公钥/密钥对haha@st ~/.ssh $ ssh-keygenGenerating public/private rsa key pair.Enter file in which to save the key (/home/...

2019-05-11 15:13:16 446

原创 go chan 类型用法

引用类型零值 nil<发送/写>型 chan<-<接收/读>型 <-chan双向型 chan构造/初始化 make()关闭 close()可作左值判等 ==<发送/写>数据 chan <- send_date<接受/读>数据 recv_data := <- chanchan 关闭或有数据,读操作不阻塞...

2019-05-10 23:39:29 3962

原创 go map 类型用法

零值nil字面量make()rangelen()例子package mainimport ( "fmt")func main() { //零值nil var m0 map[int]int //字面量 var m1 = map[int]int{0: 10, 2: 12, 4: 14} //make() var m2 = make(map[int]int,...

2019-05-09 15:14:06 875

原创 systemd 的组成和使用

systemd 是linux的系统与服务管理器主要组成资源限制当作为系统实例运行时system.conf 配置文件system.conf.d 配置目录当作为用户实例运行时user.conf 配置文件user.conf.d 配置目录环境限制系统单元目录/etc/systemd/system/usr/local/lib/systemd/system/...

2019-05-07 01:30:02 746

原创 go slice 类型用法

[//注释] <> (go 切片用法)字面量make()append()copy()rangelen()cap()nil ==例子package mainimport ( "fmt")func main() { //字面量 var s0 []int //s0: nil var s1 = []int{0, 1, 2} //...

2019-05-05 15:13:14 481

原创 go 数组和切片

go 数组和切片数组长度是固定的,类型包括长度(如: [3]int ).切片长度是变化的,类型不包括长度(如: []int ),可以用 make 函数构造.例子代码package mainimport "fmt"func main() { var arr1 = [3]int{0, 1, 2} var arr2 = [...]int{0, 1, 2, 3} fmt.Pr...

2019-04-30 22:16:08 145

原创 vscode 写个 c 程序

vscode 写个 c 程序vsocde windows-1.33.1-64bitmingw64 MinGW-W64 GCC-8.1.0安装编译器解压 mingw64 (x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z) 到想要的目录,如 D:\c\win\mingw64\bin添加目录 D:\c\win\mingw64\bin 到环境变量...

2019-04-26 19:09:10 1333

原创 vscode 常用插件和配置

vscode 配置//#基本//集成在vscode的shell<ctrl + `>"terminal.integrated.shell.windows": "C:\\Windows\\System32\\bash.exe",//本地的shell<ctrl + shift + c>"terminal.external.windowsExec": "C:\\...

2019-04-22 13:27:53 774 1

原创 git diff 用法

#git diff$ echo RRR > b$ git commit -a -m "RRR"$ cat bRRR$ echo III >> b$ cat bRRRIII$ git add .$ git status -sM b$ echo WWW >> b$ git status -sMM b现在git中文件b的情况 ...

2019-04-10 17:02:25 171

原创 git 配置

git 配置用户、邮箱git config --global user.name "xxx"git config --global user.email xxx@yyy.com常用配置git config --global core.editor vimgit config --global core.quotepath false #支持utf-8编码git config -...

2019-04-09 19:39:04 521

原创 git 各区的关系

git 各区的关系 +----------------------+ +----------------------+ | repository | | remote repository | ...

2019-04-09 12:32:56 292

原创 git detached HEAD 状态最优雅的解救

git ‘detached HEAD’ 状态的解救detached HEAD 状态是指 HEAD 指针不指在任何分支的索引(比如 master、dev)。进入 detached HEAD 状态后 git 会创建一个临时分支。如果想退回直接 git checkout 想要的分支。否则操作后,要 git add、git commit 然后 git checkout -b 新的分支,不然临时分...

2019-04-08 12:35:25 4830

原创 git 操作分类

git 一些操作组合拳git merge BXgit addgit commitgit rebase -i CXgit rebase --continuegit rebase --abort后悔药git reset git reset --merge补丁其他git branch -m 原名 新名git branch -m 新名 比较清理git clean...

2019-04-07 12:07:53 1002

原创 vscode 快捷方式

vscode 快捷方式查看快捷方式ctrl + k + s界面ctrl + shift + e 文件资源管理ctrl + shift + f 跨文件搜索ctrl + shift + g 源代码管理ctrl + shift + d 启动和调试ctrl + shift + x 管理扩展ctrl + shift + ...

2019-04-06 13:13:59 1146

原创 vscode 配置 go 开发环境

VScode and go2019 vscode 配置 go 开发环境起因由于墙的原因,更新 vscode go 开发环境各种FAILED,网上看了很多材料没解决。ctrl+shctrl+p,输入go:install/update toolsInstalling 16 tools at /home/sfw/go/bingocodegopkgsgo-outlinego-symbol...

2019-04-03 08:14:38 1740

原创 git add . git add -A 和 git add -u的区别

git add . git add -A 和 git add -u的区别git add . 操作的对象是当前目录下的所有变更,. 表示当前目录。git add -A 操作的对象是整个工作区的所有变更,无论当前位于那个目录下git add -u 操纵的对象是正个工作区已经跟踪的变更,无论当前位于那个目录下当前的文件sfw@pro4 ~/win_desktop/git_add_exa...

2019-04-01 13:01:10 839

原创 Windows Subsystem for Linux 简称 WSL

Windows Subsystem for Linux 简称WSL安装方式两种先启用WSL,方式控制面板->启用或关闭windows功能->适用于Linux的Windows子系统。lxrun /install (早期)AppStoreWSL管理套件在C:\WINDOWS\system32下:wsl.exewslconfig.exeWSL启动方式五种开始-&...

2019-03-30 20:17:33 984

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除