plantUML
B站:https://www.bilibili.com/video/BV1wb4y1d7XP?t=3.7
Gitee: https://gitee.com/lastinglate/PlantUML-Samples
官网—中文文档:https://plantuml.com/zh/
流程图
> 设置节点背景填充颜色
1234skinparam activity { BackgroundColor #fff BorderColor #000}
case:
12345678910111213141516171819202122232425@startuml xxxskinparam activity { BackgroundColor #fff BorderColor #000}start:输入数据集、k_max、k_min、H_T、m、i、采样比例;while (i < m) is (Y) :求最小信息熵及对应k值; if (最小信息熵 < H_T) then (Y) :KNN分类 ...
jwt - go
摘抄:https://learnku.com/go/t/52399
身份验证使应用程序知道向应用程序发送请求的人是谁。JSON Web 令牌(JWT)是一种允许身份验证的方法,而无需在系统本身实际存储任何有关用户的任何信息(与基于会话的身份验证相反 )。
在本文中,我们将演示基于 JWT 的身份验证的工作原理,以及如何在 Go 中构建示例应用程序以实现该示例。
如果你已经知道 JWT 的工作原理,并且只想看一下实现,则可以 跳过,或者在 Github 上查看源代码 。
JWT 格式
假设我们有一个名为的用户 user1,他们尝试登录到应用程序或网站。一旦成功,他们将收到一个看起来像这样的令牌:
1eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InVzZXIxIiwiZXhwIjoxNTQ3OTc0MDgyfQ.2Ye5_w1z3zpD4dSGdRp3s98ZipCNQqmsHRB9vioOx54
这是一个 JWT,由三部分组成(以分隔.):
第一部分是标题 header(eyJhbGciOiJIUzI1NiIsInR5c ...
设计模式(golang)
摘抄:https://github.com/mohuishou/go-design-pattern
课程:极客时间《设计模式之美》
pending…
connection pool
一次 HttpClient 连接池设置不当,引发服务雪崩
gRPC 客户端调用服务端需要连接池吗?
Go 语言使用 grpc 时,是否需要 grpc 连接池?
linux日常笔记
BSD & System V 风格
BSD(Berkeley Software Distribution)和 System V 都是 Unix 操作系统的重要分支和变体,它们在 Unix 的发展历程中有着重要地位,在系统架构、功能特性和应用场景等方面存在一定差异,以下是具体介绍:
BSD
起源与发展:BSD 起源于 20 世纪 70 年代末的加州大学伯克利分校。它是在 AT&T 的 Unix 基础上进行开发的,添加了许多新的特性和功能。在发展过程中,产生了如 FreeBSD、NetBSD、OpenBSD 等多个衍生版本,这些版本在服务器、嵌入式系统等领域都有广泛应用。
特点
网络功能强大:BSD 在网络方面的支持非常出色,它率先实现了许多重要的网络协议和功能,如 TCP/IP 协议栈的完善和优化,为现代网络通信奠定了基础。像 FreeBSD 就因其强大的网络性能,常被用于构建网络服务器和防火墙等设备。
开源与社区活跃:BSD 及其衍生版本大多采用开源的方式发布,拥有活跃的社区。社区成员积极参与开发和维护,不断为系统添加新功能、修复漏洞,使其技术不断更新和进步。
可移 ...
golang并发编程
摘抄自极客时间课程
go并发编程实战课:https://b.geekbang.org/member/course/intro/100061801
检查程序的工具:
race detector
vet工具
一、开篇词
学习 Go 并发编程,有哪些困难? 那学习 Go 并发会有哪些困难呢?
主要总结为 5 大问题。
在面对并发难题时,感觉无从下手,不知道该用什么并发原语来解决问题。
如果多个并发原语都可以解决问题,那么,究竟哪个是最优解呢?比如说是用互斥锁,还是用 Channel。
不知道如何编排并发任务。并发编程不像是传统的串行编程,程序的运行存在着很大的不确定性。这个时候,就会面临一个问题,怎么才能让相应的任务按照你设想的流程运行呢?
有时候,按照正常理解的并发方式去实现的程序,结果莫名其妙就 panic 或者死锁了,排查起来非常困难。
已知的并发原语都不能解决并发问题,程序写起来异常复杂,而且代码混乱,容易出错。
怎么提升 Go 并发编程能力?
学习这件事儿,最怕的就是不成体系,即使知识点之间是彼此独立的,也必定存在着联系。我们要做的,就是找出逻辑关系,拎出知识线。关于 ...
Prometheus
B站视频
Prometheus 是一个生态。
1. 概述
Prometheus Server,主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。
client libraries,用于检测应用程序代码的客户端库。
push gateway,用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。
exporters,收集监控样本数据,并以标准格式向Prometheus 提供。例如:收集服务器系统数据的node_exporter,收集MySQL监控样本数据的是MySQL exporter 等等。
alertmanager,用于告警通知管理。
Pushgateway 是Prometheus 生态中一个重要工具,使用它的原因主要是:
Prometheus 采用pull模式,可能由于不在一个子网或者防火墙原因,导致Prometheus 无法直接拉取各个target 数据。
在监控业务数据的时候,需要将不同数据汇总,由Prometheus 统一收集。
当exporter不能满足需要时,也可以通过自定义(python、shell、java)监控我们想要 ...
go包管理
https://cnblogs.com/songhaibin/articles/15512953.html
1. 三种包管理方式
使用go path问题
代码开发必须在go path src目录下,不然,就有问题。
依赖手动管理
依赖包没有版本可言
从这个看, go path不算包管理工具
govendor
解决了包依赖,一个配置文件就管理
依赖包全都下载到项目vendor下,每个项目都把有一份。拉取项目时,开始怀疑人生。
go mod介绍
go modules 是 golang 1.11 新加的特性。现在1.12 已经发布了,是时候用起来了。Modules官方定义为:
模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
2. go mod基本说明
下面设置go mod和go proxy
12go env -w GO111MODULE=ongo env -w GOPROXY=https:// ...
SQLBoiler
SQLBoiler入门指导1-最好用的Go ORM框架
SQLBoiler官方文档翻译–最好用的Go ORM框架
SQLBoiler 是一个根据数据库表生成对应的 Go ORM 代码的工具。
它是一个数据库先行的 ORM 框架,也就是说你需要先设计你的数据库,而不是像 gorm 那样先设计 struct。
1. 环境
这里使用 MySQL 作为数据库,其他数据库配置和依赖可能会有所不同。
环境要求:
Go 1.13以上
表名列名使用蛇形命名法snake_case
蛇形命名法
特点
全部小写:所有字母都使用小写。
单词间隔:单词之间使用下划线(_)来分隔。
数据库表结构
123456789CREATE TABLE `user` ( `id` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT, `username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `password` varchar(64) CHARACTE ...
Gin
https://www.liwenzhou.com/posts/Go/gin/
中文文档
一、下载与示例
下载并安装Gin:
1go get -u github.com/gin-gonic/gin
例子:
1234567891011121314151617181920package mainimport ( "github.com/gin-gonic/gin")func main() { // 创建一个默认的路由引擎 r := gin.Default() // GET:请求方式;/hello:请求的路径 // 当客户端以GET方法请求/hello路径时,会执行后面的匿名函数 r.GET("/hello", func(c *gin.Context) { // c.JSON:返回JSON格式的数据 c.JSON(200, gin.H{ "message": "Hello world!", ...