自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王仁一的博客

每天进步一点点

  • 博客(145)
  • 资源 (4)
  • 收藏
  • 关注

原创 pulsar集群部署流程及方案

未被消费确认的消息⼤存储⼤⼩默认为-1表示没有限制,可以通过set-message-ttl设置过期时间,防⽌磁盘爆满(未确认消息默认永久存储),保持默认需要通过set-message-ttl设置过期时间,防止磁盘爆满。web-service-url,web-service-url-tls,broker-service-url,broker-service-url-tls是pulsar节点IP。# 如果在同一设备上放置日志目录和 ledger 目录,性能会在频繁刷写的情况下大幅下降。

2024-04-03 10:46:28 1111 1

原创 pulsar升级流程

c.改变 /etc/systemd/system/pulsar.broker.service 中配置文件地址为pulsar新版本地址。c.改变 /etc/systemd/system/bookkeeper.service 中配置文件地址为pulsar新版本地址。b.查看是否停止 systemctl status pulsar.broker.service -l。f.查看启动状态 systemctl status pulsar.broker.service -l。

2024-04-02 18:14:07 279

原创 redis请求延迟排查

在同网段和不同网点测试网络延迟影响,如果同网段没问题就是网络问题。

2024-03-19 18:18:27 87

转载 golang interface 与 nil 的比较

Go语言以简单易上手而著称,它的语法非常简单,熟悉C++,Java的开发者只需要很短的时间就可以掌握Go语言的基本用法。interface是Go语言里所提供的非常重要的特性。任何类型只要它提供了Read和Write的绑定函数实现,Go就认为这个类型实现了这个interface(duck-type),而不像Java需要开发者使用implements标明。然而Go语言的interface在使用过程中却有一个特别坑的特性,当你比较一个interface类型的值是否是nil的时候,这是需要特别注意避免的问题。

2024-03-14 17:21:27 37

原创 golang数组和Slice地址

ageSlice切片变量本身的内存地址为0xc000008fa8,底层数组地址:0xc000220000。nameList数组中第二个元素的地址为0xc000123890。nameList数组中第一个元素的地址为0xc000123880。ageSlice切片中第一个元素的地址为0xc000220000。ageSlice切片中第二个元素的地址为0xc000220008。nameLists数组的内存地址为0xc000123880。

2024-03-08 18:58:48 525

原创 golang sync.Pool 指针数据覆盖问题

可以看到306行有p.free()代码,newPrinter()和free()之间进行数据处理,数据处理完成之后再把资源返回给sync.Pool。使用深复制,在put回sync.Pool中之前把数据复制返回,但这样资源池失去了意义,获取到资源后有进行了一次内存的申请。总结:不是任何场景都适合用sync.Pool,需要关注并发情况下资源池中数据同步修改影响的问题。参考 go/src/fmt/print.go 302行 Fprintln方法。可以看到使用了同一个指针地址,导致两次获取的数据互相影响。

2024-03-08 14:30:29 768 2

原创 golang kafka客户端 sarama,segmentio/kafka-go ,confluent-kafka-go,franz-go比较

golang kafka客户端 sarama,segmentio/kafka-go ,confluent-kafka-go,franz-go哪个更好

2023-05-30 16:21:57 1285

原创 golang kafka客户端 sarama 在 rebalance时异常如何解决

golang kafka客户端 sarama 在 rebalance时异常如何解决

2023-05-30 16:19:31 1247

转载 解读Pulsar的主题与订阅

接下来对上述四种订阅模式展开介绍。1.2.1 独占模式(Exclusive)Exclusive独占模式,一个订阅(对标Kafka/RocketMQ消费组)只允许一个消费者订阅,如果多个消费者尝试使用该订阅去消费消息会抛出异常,也就是说一个消费者处理主题的所有分区,如下图所示:这个是Consumer B启动时会报错,只有ConsumerA能收到消息。

2023-04-11 09:40:15 912 1

原创 the kafka reader got an unknown error reading partition

max_wait不是fetch data wait time,包中仅reader.go 1493行代码中,conn.ReadBatchWith()中超时作用,设置过短会导致io/timeout异常,conn频繁以为异常重建。github.com/segmentio/kafka-go consumer报以下异常。MaxWait 修改为 3*time.Second。

2023-03-14 14:45:38 398

原创 golang redis实现分布式锁

golang redis实现分布式锁

2023-03-08 18:13:00 1192

转载 为什么消费客户端频繁出现Rebalance?

kafka consumer rebalance

2023-02-16 11:09:15 198

原创 golang mysql: packets.go:37: read tcp 170.1.120.100:49798->192.1.0.121:3306: i/o timeout

看到无效连接,首先想到的是mysql服务端关闭,但是go db连接池中客户端为关闭导致的异常。我们可以看到,package中的日志是errLog.Print(err)打印的。最近使用gorm v1.22.5 报错 invalid connection。我们业务中拿到的日志是第39行返回的 ErrInvalidConn 无效连接。并且在38行代码中,dbConn先进行了关闭,所以连接池中的连接是正常的。

2022-12-29 11:48:44 943

原创 unsupported Scan, storing driver.Value type []uint8 into type

gorm struct 查询报错:unsupported Scan, storing driver.Value type []uint8 into type问题原因:数据库字段名称为大写: 例如:NAMEstruct 定义也为大写:例如:type Demo struct { NAME string `json:"NAME" gorm:"column:NAME"`}解决方案:struct定义为小写:type Demo struct { NAME string `json:"name" gorm:

2022-06-28 17:36:28 1531

原创 golang mysql: packets.go:123: closing bad idle connection: EOF

测试代码如下:sqlDB, err := gormDB.DB()err = sqlDB.Ping()fmt.Println(err)异常结果如下:driver: bad connection该问题导致的原因是:mysql server端关闭了数据库连接,而golang gorm 客户端设置的 MaxLifetime 大于 mysql server端自动关闭连接的时间mysql 版本:5.7.32show global variables like 'wait_timeo

2022-02-24 18:13:27 2633

原创 centos windows gitlab 免密认证

1.centosvi $HOME/.netrcmachine gitlab.comlogin 用户名password TokenToken可以在User Settings/Access Tokens 生成2.windowsvi $HOME/_netrcmachine gitlab.comlogin 用户名password Token

2022-02-08 17:46:23 558

原创 golang plugin

作用:动态加载外部 go 文件加载方式:1.编译go程序GOOS=linux GOARCH=amd64 CGO_ENABLED=1 GOPROXY=https://goproxy.cn,direct GO111MODULE=on go build -gcflags="all=-N -l" main.go此处注意:使用go plugin时 CGO_ENABLED必须开启,添加 -gcflags="all=-N -l"2.定义加载的 struct和方法示例如下:impor...

2022-02-07 16:04:49 972

转载 更新应用时,如何实现 K8s 零中断滚动更新?

Kubernetes集群中,业务通常采用Deployment + LoadBalancer类型Service的方式对外提供服务,其典型部署架构如图1所示。这种架构部署和运维都十分简单方便,但是在应用更新或者升级时可能会存在服务中断,引发线上问题。今天我们来详细分析下这种架构为何在更新应用时会发生服务中断以及如何避免服务中断。图1 业务部署图为何会发生服务中断Deployment滚动更新时会先创建新pod,等待新pod running后再删除旧pod。...

2022-01-28 11:16:29 1210 1

原创 mysql Error 1040: Too many connections

环境:golang 1.16.13mysql 5.7.32orm gorm v1.22.5go-sql-driver/mysql v1.6.0排查步骤:1. show global variables like 'max_connections';查询 mysql 最大连接数,该属性指的是该mysql服务器中所有数据库连接数2. show global status like 'Threads_connected';查询 mysql 已使用连接数,已使用连接数最大

2022-01-24 15:10:31 985

原创 Error 1461: Can‘t create more than max_prepared_stmt_count statements

gorm 连接 msyql,执行 Exec 命令报错:Error 1461: Can't create more than max_prepared_stmt_count statements解决方法:PrepareStmt 设置为 false

2022-01-20 16:13:19 461

原创 windows10家庭版安装docker

基于 hyper1.安装 hyper复制下面脚本,创建 hyper.cmd文件,右键管理员运行后重启pushd "%~dp0"dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txtfor /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servici

2021-09-11 21:09:03 238

转载 Nginx限流方法

前言流量限制(rate-limiting),是Nginx中一个非常实用,却经常被错误理解和错误配置的功能。我们可以用来限制用户在给定时间内HTTP请求的数量。请求,可以是一个简单网站首页的GET请求,也可以是登录表单的POST请求。流量限制可以用作安全目的,比如可以减慢暴力密码破解的速率。通过将传入请求的速率限制为真实用户的典型值,并标识目标URL地址(通过日志),还可以用来抵御DDOS攻击。更常见的情况,该功能被用来保护上游应用服务器不被同时太多用户请求所压垮。下面将会介绍Ngin

2021-08-18 17:23:07 1185

转载 mysql使用utf8mb4经验

mysql使用utf8mb4经验吐血总结1. utf8 与 utf8mb4 异同先看 官方手册 https://dev.mysql.com/doc/refman/5.6/en/charset-unicode-utf8mb4.html 的说明:The character set named utf8 uses a maximum of three bytes per character and contains only BMP characters. The utf8mb4 charac.

2020-12-07 16:36:35 550

原创 centos7 静态网络配置

vi /etc/sysconfig/network-scripts/ifcfg-eth0TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noNAME=eth0UUID=d37be316-c02d-40ec-8b44-0350381b2c1eDEVICE=eth0ONBOOT=yesIPADDR=192.168.0.115NETMASK=255.2.

2020-06-05 15:52:36 353

原创 Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout

环境说明:windows10 使用 docker toolbox安装docker1.操作:docker search hello-world错误:Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout2.docker toolbox会使用 VMBo...

2020-05-02 17:38:57 1367

原创 Windows 中使用 make 命令和运行 makefile 文件

Windows 上运行 make 命令或 makefile 文件,必须有 GNU 编译环境,因此在 Windows 上获取它的唯一方法是安装类似 GNUWin32 提供的 Windows 版本。点击:http://gnuwin32.sourceforge.net/packages/make.htm下载安装,设置安装目录bin文件到环境变量...

2020-04-18 09:04:53 3724

原创 Golang 面试题总结

golang 基础1.切片实现原理,切片中的指针是存储在堆上还是栈上?切片的使用有哪些坑?2.map的实现原理?详细说一下拉链法?map是协程安全的吗?3.sync.Map的实现原理?4.写一个 golang 的单例实现?5.golang IO 是同步的吗?如果 CPU 只有一核会不会阻塞?6.golang 的内存管理机制?详细描述 GC 过程?7.defer 的使用方法?在 re...

2020-03-13 14:35:53 6854 3

转载 单点登录原理与简单实现

一、单系统登录机制1、http无状态协议  web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消  但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如...

2020-03-01 18:31:48 308

转载 gRPC 系列——grpc超时传递原理

引子有个业务方反馈说日志中偶尔出现 xorm 抛出来的context deadline exceeded的报错,想咨询下是什么原因。业务方实现的 gRPC Handler 大概代码如下: 12345678 func (s Svc) BizHandler(ctx context.Context, r *projectv1.BizHandle...

2020-01-19 20:29:55 6208

原创 java+swing打包jar转成exe并动态绑定jre再打包成安装文件

java打包jar成exe并动态绑定jre再打包成安装檔注:以下所有步骤的前提是,把jar文件,ico图示(pngImage文件夹),第三方jar包(lib活页夹),jre活页夹,放到同一个活页夹中。本例放在exe4j Install4j Inno setup活页夹下,如图0如图0首先,我们选用exe4j把jar执行文件转成exe文件exe4j.exe下载地址: http://...

2020-01-12 11:51:19 1127

原创 IntelliJ IDEA 插件 HTTP Client

使用教程:https://github.com/corningsun/yuchigong/blob/httpClient/httpClient/README.md踩坑历程: 设置 环境变量不生效问题https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html配置文件 http-client.en...

2020-01-11 20:30:33 3166

原创 close chan 激活其他同步chan,chan关闭

https://blog.csdn.net/weixin_42663840/article/details/81743709https://www.cnblogs.com/tobycnblogs/p/9935465.html不同于传统的多线程并发模型使用共享内存来实现线程间通信的方式,golang 的哲学是通过 channel 进行协程(goroutine)之间的通信来实现数据共享:这...

2019-12-12 22:55:03 414

转载 Gin 路由基数树

https://segmentfault.com/a/1190000019149860

2019-11-18 15:02:18 689

原创 navicat使用教程

https://github.com/DoubleLabyrinth/navicat-keygen/blob/windows/doc/how-to-use.windows.md

2019-11-18 13:58:35 2502

转载 CAS实现单点登录SSO执行原理

1、背景介绍单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS框架:CAS(Central Authentication Service)是实现SSO单点登录的框架。2、盗一张学习CAS绝大多都看过的图以及执行部分分析注:已分不清原创,此处就不给出地址了。从结构上看,C...

2019-11-12 20:37:20 142

转载 Java并发--Java中的CAS操作和实现原理

文章目录1.什么是CAS? 2.JAVA中的CAS操作实现原理 3.concurrent包中CAS的应用 4.小结1.什么是CAS?CAS:Compare and Swap, 翻译成比较并交换。看到这个定义,可以说是没有任何意义的一句话,但是确实最能概括CAS操作过程的一句话。CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。 如果内...

2019-11-12 20:26:41 137

原创 git 版本回退

回退命令:$ git reset --hard HEAD^ 回退到上个版本$ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前$ git reset --hard commit_id 退到/进到 指定commit的sha码强推到远程:$ git push origin HEAD --force...

2019-11-09 20:08:18 93

转载 阿里云的redis规范

一、键值设计1. key名设计(1)【建议】: 可读性和可管理性以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id(2)【建议】:简洁性保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:(3)【强制】:不要包含特殊字符反例:包含空格、换行、单双引号以及其他转义字符2. value设计...

2019-10-06 17:43:24 834

原创 golang 时间方法

//获取date本周周几的日期func getDateOfWeek(date time.Time, weekday time.Weekday) (time.Time) { var offset int switch weekday { case time.Sunday: //0 offset = int(time.Sunday-date.Weekday()) + ...

2019-09-17 19:48:21 380

原创 Neo4j安装和使用

创建环境变量 NEO4J_HOME设置path bin地址:%NEO4J_HOME%/bin启动neo4j : neo4j.bat console安装为服务: neo4j install-service启动服务: neo4j start关闭服务: neo4j stop重启服务: neo4j restart查询服务状态: neo4j status默认host:...

2019-08-27 09:45:31 148

GNU-WIN-MAKE-3.81.rar

GNUWin32 提供的 Windows 版本,http://gnuwin32.sourceforge.net/packages/make.htm

2020-04-18

java btrace线上代码调试工具

java btrace线上代码调试工具,可以用来在不关闭线上系统的情况下动态植入调试代码

2018-08-02

jcstress 线程测试工具

java多线程测试工具,可以用来测试多线程的执行状态。

2018-08-02

空空如也

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

TA关注的人

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