自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wzbwzt的博客

个人邮箱:shsxywzb131@163.com

  • 博客(106)
  • 收藏
  • 关注

原创 Apisix的ext-plugin-pre-req 中的trace 关联zipkin插件的trace

apisix 链路追踪

2022-09-20 20:29:31 823

原创 nacos docker部署的各种问题

Nacos docker+mysql 部署问题

2022-07-23 16:33:56 1233 1

原创 go container/heap源码解析

//heap的接口类:使用时候需要实现它的方法type Interface interface { sort.Interface Push(x any) // add x as element Len() Pop() any // remove and return element Len() - 1.}//shifDown()//堆化(heapify):如果一个节点比它的子节点小(最大堆)或者大(最小堆),那么需要将它向下移动func down(h Interface, i0, n.

2022-04-16 15:53:11 512

原创 数据结构-堆

数据结构-堆原文地址:https://github.com/raywenderlich/swift-algorithm-club/tree/master/Heap堆就是用数组实现的二叉树,所以它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。堆的常用方法:构建优先队列支持堆排序快速找出一个集合中的最小值(或者最大值)堆属性堆分为两种:最大堆和最小堆,两者的差别在于节点的排序方式。在最大堆中,父节点的值比每一个子节点的值都要大。在最小堆中,父节点的值

2022-04-16 13:25:11 150

原创 Go 工程化标准实践

Go 工程化标准实践本文参考 Go 微服务框架 go-kratos/kratos的项目结构及相关最佳实践标准项目结构/cmd|-- cmd |-- demo |-- demo +-- main.go +-- demo1 |-- demo1 +-- main.go项目的主干,每个应用程序目录名与可执行文件的名称匹配。该目录不应放置太多代码。/internal|-- internal +-- demo

2022-04-10 14:33:59 1105

原创 MQTT简介

MQTT全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是一种基于发布/订阅范式的“轻量级”消息协议,由 IBM 发布。MQTT 可以被解释为一种低开销,低带宽占用的即时通讯协议,可以用极少的代码和带宽的为连接远程设备提供实时可靠的消息服务,它适用于硬件性能低下的远程设备以及网络状况糟糕的环境下,因此 MQTT 协议在 IoT(Internet of things,物联网),小型设备应用,移动应用等方面有较广泛的应用。IoT 设备要运作,就必须连接到互

2022-04-08 20:23:28 1199

原创 分布式锁实现(基于etcd)

地址:github.com/wzbwzt/dlock下载库:go get -u github.com/wzbwzt/dlock使用事例:etcd := etcd.NewRegister(etcd.WithTimeOut(time.Second * 5))lock := dlock.NewDlock(dlock.WithRegister(etcd))//获取etcd的客户端// etcdclient:=etcd.GetEtcdClient()path := "/lock/a"lock.L

2022-03-18 13:00:10 400

原创 go1.18发布

20220316凌晨,Go 1.18 发布了。Go 1.18 是一个大型版本,其中包括新功能、性能改进以及对该语言的最大更改。毫不夸张地说,Go 1.18 的部分设计始于十多年前第一次发布 Go 时。所以,Go1.18 原计划 2 月份发布,结果拖到了 3 月中旬。具体来说,包含以下几大特性:泛型模糊测试(Fuzzing)工作空间(Workspaces)20% 性能提升:Apple M1、ARM64 和 PowerPC64 用户开心了!由于 Go 1.17 的寄存器 ABI 调用约定扩展到这些

2022-03-16 14:45:00 208

原创 Linux 网络状态工具 ss

ss命令用于显示socket状态。他可以显示 PACKET sockets,TCP sockets,UDP sockets,DCCP sockets,RAW sockets,Unix domain sockets等等统计。它比其他工具展示等多tcp和state信息。SS命令可以提供如下信息:所有的TCP sockets所有的UDP sockets所有ssh/ftp/ttp/https持久连接所有连接到Xserver的本地进程使用 state(例如:connected,synchronize.

2022-01-05 12:42:52 347

原创 图片base64格式解析

//base64格式解析,返回后缀,和解析结果func GetPictureFormat(imageData string) (string, []byte, error) { //如果有,去掉头部信息 idx := strings.Index(imageData, ",") if idx > -1 { imageData = imageData[idx+1:] } //替换回车 imageData = strings.ReplaceAll(imageData, "\n", "")

2021-11-02 15:05:21 2777

原创 git:Pull Request工作流

Pull Request 介绍Pull Requests是Bitbucket上方便开发者之间协作的功能。 提供了一个用户友好的Web界面,在集成提交的变更到正式项目前可以对变更进行讨论。当要发起一个Pull Request,你所要做的就是请求(Request)另一个开发者(比如项目的维护者) 来pull你仓库中一个分支到他的仓库中。这意味着你要提供4个信息以发起Pull Request: 源仓库、源分支、目的仓库、目的分支。Pull Request可以和功能分支工作流、Gitflow工作流或For

2021-07-14 18:20:01 666

原创 Go基础学习-main包拆分为多个文件

前言:当将main拆分为多个文件时,在main.go中编写了main函数,main函数调用了在其他文件中定义的函数或变量,执行go run main.go 时报错:变量/函数未定义;目录结构:main---main.go---print.go将Go的main包拆分为多个文件的写法和普通包是完全一致的,其使用规则也相同;但是当运行go run mian.go时报错,这时需要将main包相关的所有文件都显式的列出;go run main.go print.go ##部分go版本支持go

2021-07-13 10:25:39 1658

原创 GO 编码windows二进制文件,执行时区报错问题解决

问题描述需要编译在windows下的可执行文件,当程序跑起来时时区错误解决方法确保go版本不可以过低;最好是1.15版本以上执行命令GOOS=windows GOARCH=amd64 go build -v -tags timetzdata或者设置环境变量ZONEINFO,指向$GOROOT/lib/time/zoneinfo.zip;也可以代码设置环境变量 err := syscall.Setenv("ZONEINFO", `C:\Go\lib\time\zoneinfo.zip`) if

2021-05-29 18:40:05 732

原创 释放端口

释放端口#查看指定端口netstat -ano |grep 9000#-t (tcp) 仅显示tcp相关选项#-u (udp)仅显示udp相关选项#-n 拒绝显示别名,能显示数字的全部转化为数字#-l 仅列出在Listen(监听)的服务状态#-p 显示建立相关链接的程序名:进程号/程序名#查看端口所属进程:lsof(list open files)lsof -i:9000COMMAND PID USER FD TYPE DEVICE SIZE/OFF NOD

2021-05-20 18:42:12 197

原创 RabbitMQ实现发布订阅

发布订阅与工作队列恰恰相反:工作队列是每条消息只有一个消费者,不存在一个任务被多个worker领取;发布订阅是将向多个消费者传递一个消息,一条消息被多次消费Exchanges(交换器)完整的消息传递模型:核心思想是生产者从不将任何消息直接发送到队列。实际上,生产者经常甚至根本不知道是否将消息传递到任何队列。相反,生产者只能将消息发送到交换器。交换器是非常简单的东西。一方面,它接收来自生产者的消息,另一方面,将它们推入队列。交换器必须确切知道如何处理接收到的消息。它应该被附加到特定的队列吗?还

2021-04-20 18:50:29 973

原创 RabbitMQ实现工作队列

RabbitMQ是一个消息代理:它接受并转发消息。使用RabbbitMQ实现工作队列功能:使用任务队列的优点之一是能够轻松并行化工作。如果我们的工作正在积压,我们可以增加更多的工人,这样就可以轻松扩展。消息分发默认情况下,RabbitMQ将按顺序将每个消息发送给下一个消费者。平均而言,每个消费者都会收到相同数量的消息。这种分发消息的方式称为轮询。也可以设置告诉RabbitMQ不要一次向一个worker发出多个消息。或者,换句话说,在处理并确认前一条消息之前,不要向worker发送新消息。相反,

2021-04-20 18:41:30 509

原创 python基础学习-类与对象

类与对象对象=属性+方法对象是类的实例。换句话说,类主要定义对象的结构,然后我们以类为模板创建对象。类不但包含方法定义,而且还包含所有实例共享的数据。封装、继承、多态'''1.封装:信息隐蔽技术2.继承:子类自动共享父类之间数据和方法的机制3.多态:不同对象对同一方法响应不同的行动'''import random# 1class Turtle: # Python中的类名约定以大写字母开头 """关于类的一个简单例子""" # 属性 color =

2021-04-16 16:19:39 121

原创 JWT跨域认证

摘要JWT(JSON Web Token):一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,多用于OAuth2.0业务场景下;(OAuth2.0:授权机制,用来授权第三方应用,获取用户数据,详见:)Cookie-Session验证方式:用户在浏览器端填写用户名和密码,并发送给服务端服务端对用户名和密码校验通过后会生成一份保存当前用户相关信息的session数据和一个与之对应的标识(通常称为session_id)服务端返回响应时将上一步的session_id写入用户浏

2021-04-15 18:58:13 930

原创 python基础学习-函数

函数在 Python 里有两类函数:第一类:用 def 关键词定义的正规函数第二类:用 lambda 关键词定义的匿名函数def'''1. 函数以 def 关键词开头,后接函数名和圆括号()。2. 函数执行的代码以冒号起始,并且缩进。3. return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None 。def functionname(parameters): "函数_文档字符串" function_suite return [e

2021-04-02 16:50:01 140

原创 python基础学习-异常处理

标准异常总结:BaseException:所有异常的 基类Exception:常规异常的 基类StandardError:所有的内建标准异常的基类ArithmeticError:所有数值计算异常的基类FloatingPointError:浮点计算异常OverflowError:数值运算超出最大限制ZeroDivisionError:除数为零AssertionError:断言语句(assert)失败AttributeError:尝试访问未知的对象属性EOFError:没有内建输入,到达E

2021-04-01 18:00:35 143

原创 python基础学习-流程控制、推导式

流程语句# 条件语句'''if expression: expr_true_suiteelif expression2: expr2_true_suiteelse expr_false_suite1.使用缩进而不是大括号来标记代码块边界,因此要特别注意 else 的悬挂问题。2.单个 if 语句中的 expression 条件表达式可以通过布尔操作符 and , or 和 not 实现多重条件判断。e.g.'''if 2 > 1 and not 2 &gt

2021-04-01 17:33:28 118

原创 python基础学习-可变类型与不可变类型

可变类型与不可变类型序列是以连续的整数为索引,与此不同的是,字典以"关键字"为索引,关键字可以是任意不可变类型,通常用字符串或数值。字典是 Python 唯一的一个 映射类型,字符串、元组、列表属于序列类型。那么如何快速判断一个数据类型 X 是不是可变类型的呢?两种方法:麻烦方法:用 id(X) 函数,对 X 进行某种操作,比较操作前后的 id ,如果不一样,则 X 不可变,如果一样,则X 可变。便捷方法:用 hash(X) ,只要不报错,证明 X 可被哈希,即不可变,反过来不可被哈希,

2021-04-01 17:17:55 334

原创 python基础学习-string、tuple

string#字符串'''1. 字符串被定义为引号之间的字符集合支持使用成对的 单引号 或 双引号。2. 是不可变类型''''''常用转义字符\\ 反斜杠符号\' 单引号\" 双引号\n 换行\t 横向制表符(TAB)\r 回车''''''原始字符串只需要在字符串前边加一个英文字母 r 即可。'''print(r'C:\Program Files') # C:\Program Files'''python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符

2021-04-01 17:10:36 394

原创 python基础学习-set、list、dict

set#集合'''set 与 dict 类似,也是一组 key 的集合,但不存储 value 。由于 key 不能重复,所以,在 set 中,没有重复的 key集合的两个特点:无序 (unordered) 和唯一 (unique)。注意, key 为不可变类型,即可哈希的值。'''num = {}print(type(num)) # <class 'dict'>num = {1, 2, 3, 4}print(type(num)) # <class 'set'>

2021-04-01 17:10:24 477

原创 python基础学习-print

# print函数介绍'''print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)1. 将对象以字符串表示的方式格式化输出到流文件对象file里。其中所有非关键字参数都按 str() 方式进行转换为字符串输出;2. 关键字参数 sep 是实现分隔符,比如多个参数输出时想要输出中间的分隔字符;3. 关键字参数 end 是输出结束时的字符,默认是换行符 \n ;4. 关键字参数 file 是定义流输出的文件,可以是标准的系

2021-04-01 10:22:11 118

原创 python基础学习-helloWord、运算符、变量

注释how_many_snakes = 1# 多行注释,用三个单引号或者三个双引号snake_string = """Welcome to Python! ____ / . .\\ \ ---< \ / __________/ /-=:___________/"""# 表示注释,作用于整行print(snake_string * how_many_snakes)运算符'

2021-04-01 10:17:04 180

原创 协程池的设计及代码

协程池的设计Created: Mar 13, 2020 4:57 PMSub-Tags: 发布Tags: WorkUpdated: Mar 13, 2021 6:03 PM前言: 尽管go官方宣称用golang写并发程序的时候随便起个成千上万的goroutine毫无压力;但是每个协程都会分配最小2k的内存,根据需要进行扩容,最大1G,哪怕最小的2k,当协程数达到一定数量时,内存会暴涨,所带来的就是gc的压力,频繁地进行gc也会给性能带来影响;此外内存暴涨,造成无内存可用时,Go调度器就会阻塞

2021-03-13 18:13:28 355

原创 单元测试框架:go convey

前言Welcome to GoConvey, a yummy testing tool for gophers.go convey是一个支持golang的单元测试框架go convey能够自动监控文件修改并启动测试,并可以将测试结果实时输出到Web界面go convey提供了丰富的断言简化测试用例的编写特点:直接与 go test 集成巨大的回归测试套件可读性强的色彩控制台输出完全自动化的 Web UI:桌面提醒(可选);半自动化书写测试用例:http://localhost:808

2021-03-10 20:08:34 2313 1

原创 Shell学习-正则表达式

定位符:同时锚定开头和结尾,做精确匹配;单一锚定开头或结尾或者不锚定的,做模糊匹配。^ :锚定开头 ^a 以a开头 默认锚定一个字符$ :锚定结尾 a$ 以a结尾 默认锚定一个字符匹配符:匹配字符串. :匹配除回车以外的任意一个字符 ( ) :字符串分组 [ ] :定义字符类,匹配括号中的一个字符 [ ^ ] :表示否定括号中出现字符类中的字符,取反。 \ :转义字符 | : 或e.g.1)精确匹配 以a开头c结尾 中间任意 长度为三个字节的字符串[root@zutua

2021-02-27 13:04:40 1105

原创 Redis笔记

redis启动方式默认配置启动运行启动redis-server --configKey1 configValue1 --configKey2 configValue2配置文件启动redis-server /opt/redis/redis.conf#配置文件以redis.conf自带的模板进行修改;当一台机器启动多个redis时,将配置文件返在指定文件夹下统一管理redis客户端连接交互方式redis-cli -h{host} -p {port}#host和port默认是127

2021-02-27 13:00:19 296

原创 git-lfs使用笔记

Git-LFSGit LFS:(Large File Storage)把音乐、图片、视频等指定的任意文件存在 Git 仓库之外,而在 Git 仓库中用一个占用空间 1KB 不到的文本指针来代替文件的存在,通过把大文件存储在 Git 仓库之外,可以减小 Git 仓库本身的体积,使克隆 Git 仓库的速度加快,也使得 Git 不会因为仓库中充满大文件而损失性能;核心思想:把需要进行版本管理、但又占用很大空间的那部分文件独立于 Git 仓库进行管理。从而加快克隆仓库本身的速度,同时获得灵活的管理 LFS

2021-02-25 12:17:38 6917

原创 SQL系统学习笔记之集合运算

集合运算定义:集合在数学领域表示“(各种各样的)事物的总和”,在数据库领域表示记录的集合。具体来说,表、视图和查询的执行结果都是记录的集合。分为两种:一种是表之间的行集合运算(UNION、INTERSECT 等);另一种是表之间的列为单位的运算;行为单位的集合注意事项:1、作为运算对象的记录的列数必须相同;2、作为运算对象的记录中列的类型必须一致;3、可以使用任何 SELECT 语句,但 ORDER BY 子句只能在最后使用一次UNION 并集运算会对交集的部分进行去重展示SELE

2021-01-23 23:44:27 126

原创 SQL系统学习笔记之函数

函数算术函数(用来进行数值计算的函数)ABS——绝对值MOD——求余SQL Server 不支持该函数:使用% 取余 SELECT n, p, n % p AS mod_col FROM SampleMath;ROUND——四舍五入ROUND(对象数值,保留小数的位数)字符串函数(用来进行字符串操作的函数)||——拼接如果其中包含 NULL,那么得到的结果也是NULL。可以拼接多个字符串|| 函数在 SQL Server 和 MySQ

2021-01-23 23:43:52 362

原创 SQL系统学习笔记之视图

视图关键字:CREATE VIEW使用视图时并不会将数据保存到存储设备之中,而且也不会将数据保存到其他任何地方。实际上视图保存的是 SELECT 语句。我们从视图中读取数据时,视图会在内部执行该 SELECT 语句并创建出一张临时表创建好视图之后,只需在 SELECT 语句中进行调用,就可以方便地得到想要的结果了。特别是在进行汇总以及复杂的查询条件导致 SELECT 语句非常庞大时,使用视图可以大大提高效率CREATE VIEW 视图名称(<视图列名1>, <视图列名2&g

2021-01-23 23:43:31 222

原创 SQL系统学习笔记之数据库、表创建与基础查询

数据库的创建CREATE DATABASE <数据库名称>;表的创建CREATE TABLE <表名>(<列名1> <数据类型> <该列所需约束>, <列名2> <数据类型> <该列所需约束>, <列名3> <数据类型> <该列所需约束>, <列名4> <数据类型> <该列所需约束>,... <该表的约束1>,

2021-01-23 23:43:07 203 1

原创 SQL系统学习笔记之数据插入、删除、更新、事务

数据插入关键字:INSERT INTO将列名和值用逗号隔开,分别括在()内,这种形式称为清单:列清单、值清单INSERT INTO <表名> (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……);

2021-01-23 23:42:43 432

原创 SQL系统学习笔记之数据库概述与SQL简介

数据库简介数据库(Database,DB):通过计算机加工而成的可以进行高效访问的数据集合数据库管理系统(Database Management System,DBMS):用来管理数据库的计算机系统称为数据库管理系统DBMS种类(主要通过数据的保存格式(数据库的种类)来进行分类)层次数据库(Hierarchical Database,HDB)最古老的数据库之一,它把数据通过层次结构(树形结构)的方式表现出来。层次数据库曾经是数据库的主流,但随着关系数据库的出现和普及,现在已经很少使用

2021-01-23 23:42:07 180

原创 git使用笔记

#查看远程git地址git remote -v#修改远程git地址git remote set-url origin git地址#git升级更新git update-git-for-windows

2020-12-17 14:55:30 263 1

原创 go.etcd.io/etcd/clientv3 安装报错:undefined: resolver.BuildOption;

安装go.etcd.io/etcd/clientv3时报错# github.com/coreos/etcd/clientv3/balancer/resolver/endpoint$GOPATH\pkg\mod\github.com\coreos\etcd@v3.3.25+incompatible\clientv3\balancer\resolver\endpoint\endpoint.go:114:78: undefined: resolver.BuildOption$GOPATH\pkg\mod\

2020-12-06 16:23:55 805

原创 Vim使用篇

使用vim已经很久了,记得当初促使我学习使用vim的原因是因为长时间频繁的挪动肩膀(鼠标与键盘之间的来回切换)导致我一天工作下来,无亚于做了一天的体力活(:,虽然有尝试记住编辑器(goland)的一些快捷键来缓解肩膀的压力,但是始终无法做到”面面俱到“ , 这里记录下使用的...

2020-12-01 00:16:37 382

空空如也

空空如也

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

TA关注的人

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