斜杠golang

golang实现设计模式之观察者模式-优缺点,适用场景

`观察者模式`是一种行为型模式,其定义一种订阅机制, 可在对象事件发生时通知多个 “观察” 该对象的其他对象。 观察者模式常用 `订阅/发布机制`,即发布者持有所有订阅者,当发布者状态变更或者特定行为时,通知所有订阅者。 **结构** * 1.发布者。属性及行为:属性,订阅者列表,行为,添加、删除订 ......

golang中make与new的区别

# golang中make与new的区别 ## new函数 new官方文档的描述: ~~~~~~go // The new built-in function allocates memory. The first argument is a type, // not a value, and th ......
golang make new

Golang 配置代理

通过 go get 命令下载各种依赖时,经常需要访问 github/google 等网站。配置好代理后,可以快速稳定的访问。 常用的 go 代理 goproxyhttps://goproxy.io/zh/ 阿里云https://mirrors.aliyun.com/goproxy/ 七牛云https ......
Golang

golang IOT 服务端基本架构

1. 简图 2. 网关功能 2.1 通用功能 负责和硬件端建立并维护TCP连接 黑白名单 熔断,限流 和后端业务服务交换处理数据 2.2 业务功能 自定义协议解析 设备上下线(绑定,注册等) 3. 底层环境 基于K8S+Rancher多POD 发布工具JK 镜像仓库:register ......
架构 golang IOT

Golang环境搭建

1、go环境下载地址:https://studygolang.com/dl 2、查看go安装状态: go version 3、学习指南 https://tour.go-zh.org/welcome/1 4、环境变量和相关配置 4.1 Windows环境下安装 # 1、配置Go环境变量-GOROOT ......
环境 Golang

go-tc golang tc 工具包

go-tc 是基于golang 的限速工具包,可以通过修改队列通过filter 以及类别进行限速处理,是一个听方便的golang 包类似的有基于cli 的wondershaper 可以通过cli 实现限速 参考资料 https://github.com/florianl/go-tchttps://g ......
工具包 工具 golang go-tc tc

golang导入私有仓库报错:“server response: not found:xxx: invalid version: git ls-remote -q origin in xxx“

1.问题:go get导入私有仓库报错 ➜ go get "devops.gitlab.xxx.com/test/kafka-utils" go: devops.gitlab.xxx.com/test/kafka-utils@v0.0.1: verifying go.mod: devops.gitl ......
仓库 ls-remote xxx response invalid

MQTT协议及其在Golang中的实现

# 引言: 在物联网(IoT)领域中,设备之间的通信是至关重要的。为了实现设备之间的高效、轻量级通信,MQTT(Message Queuing Telemetry Transport)协议被广泛采用。MQTT是一种基于发布/订阅模式的消息传输协议,被设计为简单、轻量级且易于实现。本文将介绍MQTT协 ......
Golang MQTT

数据结构 in Golang:Hash Tables(哈希表)

# 数据结构 in Golang:Hash Tables(哈希表) ### 场景 - 水果店的价格表: - 苹果 Apple:3元 - 香蕉 Banana:4元 - 桃子 Peach:2元 - 梨 Pear:3元 - 找到一种水果的价格: - 可以使用 binary search,通过名称来查找,耗 ......
数据结构 结构 数据 Golang Tables

golang并发channel实践

前言 在我前面一篇文章Golang受欢迎的原因中已经提到,Golang是在语言层面(runtime)就支持了并发模型。那么作为编程人员,我们在实践Golang的并发编程时,又有什么需要注意的点呢?下面我会跟大家详细的介绍一些在实际生产编程中很容易踩坑的知识点。 CSP 在介绍Golang的并发实践前 ......
channel golang

golang实现封装trycatch异常处理

老外的分享 package main import ( "reflect" ) type TryCatch struct { errChan chan interface{} catches map[reflect.Type]func(err error) defaultCatch func(err ......
trycatch golang

Golang中如何控制goroutine的执行顺序?

首先说明一下原理:前后协程之间通过通道去相互限制,后一个线程尝试去获取一个channel的值,当channel中没有值时,就会一直阻塞,而前一个协程则负责关闭channel,当前一个协程完成了这个操作,后一个协程才可以结束阻塞,继续执行。 示例代码: package main import ( "f ......
goroutine 顺序 Golang

算法 in Golang:Breadth-first search(BFS、广度优先搜索)

# 算法 in Golang:Breadth-first search # (BFS、广度优先搜索) ## 最短路径问题 Shortest-path problem - 从 A 到 F 点有多条路径 ## 解决问题的算法 Breadth-first Search(广度优先搜索) 1. 将问题建模为图 ......
广度 Breadth-first 算法 Breadth Golang

算法 in Golang:Quicksort(快速排序)

# 算法 in Golang:Quicksort(快速排序) ## Quicksort(快速排序) - 快速排序 O(nlog2^n),比选择排序要快 O(n²) - 在日常生活中经常使用 - 使用了 D & C 策略(分而治之) ## 使用 Quicksort 排序数组 - 不需要排序的数组(也就 ......
算法 Quicksort Golang in

算法 in Golang:Recursion(递归)

# 算法 in Golang:Recursion(递归) ## 递归算法 ### 场景:在套娃中找到宝石 ### 可以这样做 - while 没找到: - if 当前项 is 宝石: - return 宝石 - else if 当前项 is 套娃: - 打开这个套娃 - if 当前项 is 宝石: ......
算法 Recursion Golang in

在开发过程中,C#中@的用法,对C#程序设计来说有不错的借鉴价值。一下介绍了四种用法。 @是取消字符串中的转义符。和斜杠作用一样,可以出来了字符串中的特殊子字符串

在开发过程中,C#中@的用法,对C#程序设计来说有不错的借鉴价值。一下介绍了四种用法。 原文链接:https://www.cnblogs.com/likui-bookHouse/p/9109872.html 在开发过程中,C#中@的用法,对C#程序设计来说有不错的借鉴价值。一下介绍了四种用法。 1、 ......
字符串 字符 斜杠 转义 程序设计

20个Golang片段让我不再健忘

本文使用代码片段的形式来解释在 go 语言开发中经常遇到的小功能点,由于本人主要使用 java 开发,因此会与其作比较,希望对大家有所帮助。 ......
片段 Golang

Golang中关于Channel读写的一些细节

我们知道,对于一个已经关闭的channle来说,如果channel内部还有值的话,可以继续执行读操作,读出channel里的元素,但是不能执行写操作; 相反,如果关闭后,channel里已经没有元素可读的情况,再执行读操作的话会读出channel的零值,同样,也不能执行写操作。 首先,先让我们通过代 ......
细节 Channel Golang

golang中for select时,如果channel关闭会怎么样?

首先,如果对于一个已经关闭的channel来说,如果此时channel里还有值,则会正确读到channel里的值,且返回的第二个bool值为true;如果关闭前,channel里的值已经被读完,则最后返回的则是channel的零值; 那么针对该问题,我们通过代码来验证一下: package main ......
channel golang select for

golang sqlite3 cgo 静态编译方法

https://xiazemin.github.io/MyBlog/golang/2020/04/13/statically.html go build -o release/main_linux_amd64 -ldflags '-linkmode "external" -extldflags "- ......
静态 sqlite3 方法 golang sqlite

golang打包成windows和linux

1.先用 go env 命令查看当前信息 如果GOOS=windows代表当前打包环境是windows的 go build -o 包名 main.go 打包直接为exe程序 打包linux需要执行 set GOOS=linux 将打包环境改为linux 这样打包就是linux的了 ......
windows golang linux

gosec 基于ast 的golang 安全检查工具

gosec 基于ast 的golang 安全检查工具,核心是基于了一些rule 进行安全的处理 参考使用 安装 官方提供了对应操作系统的包,安装就可以了,也可以使用go install 命令安装 使用 当然gosec 还有其他命令可以选择,具体可以通过gosec 查看 gosec . 参考资料 ht ......
工具 golang gosec ast

算法 in Golang:Selection sort(选择排序)

# 算法 in Golang:Selection sort(选择排序) ## Selection Sort(选择排序) 假设有一个数组,它里面有6个元素,它的顺序是乱的,现在我们想对这个数组进行排序,就是从小到大进行排序。 选择排序是挨个遍历元素,把最小的放在最前面,再把剩余的遍历,把最小的放在后面 ......
算法 Selection Golang sort in

Golang高性能编程--slice的学习总结

在go语言中,数组变量属于值类型,因此当一个数组变量被复制或者传递时,实际上会复制整个数组。eg,将a赋值给b,修改a中的元素,并不会修改b中的元素。为了避免复制数组,一般会传递指向数组的指针。 package main import "fmt" func main() { a := [...]in ......
高性能 Golang slice

golang中关于websocket的使用的一些高级用法

很多网站都实现了“推送”功能,都会用到轮训这个技术,轮询就是每隔一段时间客户端就向服务器发送请求,来获得最新的数据。这种方式的缺点十分明显,浏览器每次发出的请求都含有比较大的header数据,浪费带宽资源。在这种背景下,HTML5定义了websocket协议,能够更好的节省服务器资源和带宽,而且可以 ......
websocket golang

算法 in Golang:D & C(分而治之)

# 算法 in Golang:D & C(分而治之) ### D & C 算法(策略) - Divide & Conquer - 属于递归算法的一种 - 其实它更像是一种思路、策略 ### 递归 - 递归 Recursion - 基线条件 Base Case - 递归条件 Recursive Cas ......
算法 Golang amp in

Golang Web--中间件的学习总结

关于在golang中的中间件,可以翻阅笔者之前的博客,在这里不予详细说明。这里简单介绍下中间件的高级用法: 1.如果每个路由分别要配置多个中间价,该如何处理 2.如果有多个路由分别要配置多个中间件,该如何处理 3.尝试不定义结构体开发中间件 package main import ( "contex ......
中间件 Golang Web

极客时间--golang并发编程实战课--Cond的学习总结

Go标准库的Cond目的是:为等待/通知场景下的并发问题提供支持。Cond通常应用于等待某个条件的一组goroutine,等条件变为true的时候,其中一个goroutine或者所有的goroutine都会被唤醒。 Cond是和某个条件相关,这个条件需要一组goroutine协作共同完成,当条件还没 ......
实战 时间 golang Cond

极客时间--golang并发实战课--Mutex的常见使用错误场景

1.Lock/Unlock 没有成对出现,就意味着会出现死锁的情况,或者是因为 Unlock 一个未加锁的 Mutex 而导致 panic。 2.第二种误用是 Copy 已使用的 Mutex。 Package sync 的同步原语在使用后是不能复制的。原因在于,Mutex 是一个有状态的对象,它的 ......
实战 场景 常见 错误 时间

极客时间--golang并发编程实战课--WaitGroup学习总结

什么是WaitGroup? WaitGroup解决的就是并发-等待问题:现在有一个goroutineA在检查点等待一组goroutine全部完成,如果 在执行任务的这些goroutine还没全部完成,那么goroutine A就会阻塞在检查点,知道所有goroutine都完成后才能继续执行。 Gol ......
实战 WaitGroup 时间 golang