自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(361)
  • 资源 (2)
  • 收藏
  • 关注

原创 硅基流动 邀请码 q8glc7IA

硅基流动 注册邀请码大模型调试 在线训练免费DeepSeek 在线聊天网站

2025-02-18 14:07:04 275

原创 网络带宽检测

client执行:iperf3 -c serverip。当前节点,根据连接统计流量:iftop -i eth0。当前节点,根据程序统计流量:nethogs。当前节点,实时的进出带宽统计:nload。server执行:iperf3 -s。测试两个节点之间的带宽上限。

2024-12-05 14:16:53 141

原创 go sync.WaitGroup

通过原子操作对协程计数器加减,若协程计数变为0,则将等待计数设置为0,并释放所有被信号量阻塞的协程。计数器:原子变量,高32位用于为协程计数,低32位为等待计数(被Wait阻塞等待)。若协程计数非0,则通过CAS将等待计数+1,并通过信号量阻塞协程。若协程计数为0,则直接跳过。信号量:用于阻塞协程。

2024-11-26 14:33:44 356

原创 go T 泛型

Go 语言在 1.18 版本引入了泛型(Generics)特性,可以编写更通用、可复用的代码,泛型可以用于:泛型函数、泛型结构体、泛型接口。

2024-11-12 11:44:40 600 1

原创 go reflect 反射

返回的是实际的值,它不仅封装了类型信息,还封装了该值的实际数据。此外,它还要处理值的可变性、指针封装等因素,因此它的开销通常大于。Go 的运行时会通过反射把数据和类型信息组合在一起,从而允许我们在运行时动态地访问或修改数据。它仅仅是对静态类型信息的封装,因此开销相对较低,特别是当类型信息已经在程序启动时加载到内存中的时候。对象,该对象封装了传入对象的实际数据(指向底层数据的指针)以及该数据的动态类型。会包含关于该类型的元数据信息,包括类型的大小、字段、方法等。的结构体,它是类型信息的底层实现。

2024-11-11 16:23:03 695

原创 go map 映射

它的数组是由一组桶组成,每个桶是一个链式结构,可以存储8个键值对,当发生hash冲突时首先存在桶内,如果桶满了,就在桶后面连接溢出桶来存储键值对。如果达到负载因子值或溢出桶的数量超过正常桶的数量(或者超过上限值1

2024-11-08 17:53:46 543

原创 go channel 通道

调度器会负责管理协程的状态,协程被channel阻塞时进入等待队列,此时调度器可以将其他可运行的 goroutine 调度到 CPU 上。:当一个 goroutine 执行接收操作时,Go 调度器会检查 channel 的状态,接收的 goroutine 会被挂起,并加入到。发送和接收队列是FIFO队列,阻塞线程按先进先出顺序被调度,活跃线程优先于阻塞队列中的线程被调度。:当一个 goroutine 执行发送被阻塞时,发送的 goroutine 会被挂起,并加入到。发送与接收是相对于协程而言的。

2024-11-05 18:01:43 425

原创 go sync.Cond 条件变量

条件判断:判断条件是否满足,满足则向下执行,不满足则执行wait方法,释放锁,并阻塞当前协程,等待条件满足。具体地,Go 的调度器会将该 goroutine 加入到一个等待队列,并让其挂起,直到条件变量被通知。:当一个等待的 goroutine 被唤醒时,调度器会将它的状态恢复为可执行状态,并将其重新调度。:当条件变量被通知时,当前 goroutine 会从挂起的状态中恢复执行,并重新获取锁,继续执行剩下的代码。)控制的,因此在被唤醒后,goroutine 会重新获取锁,然后继续执行。

2024-11-05 16:30:20 898

原创 Golang GC 三色标记+混合写屏障

三色标记

2024-11-03 16:14:11 1110

原创 安装 hbase(伪分布式)

安装伪分布式 hbase

2024-06-03 21:11:59 1294

原创 nginx 正向代理

nginx 正向代理

2024-06-01 18:08:24 813

原创 mysql 慢查询

开启慢查询日志

2024-05-23 17:15:27 243 1

原创 yum 报错:error: rpmdb: BDB0113 Thread/process 32266/140516331530304 failed: BDB1507 Thread

【代码】yum 报错:error: rpmdb: BDB0113 Thread/process 32266/140516331530304 failed: BDB1507 Thread。

2024-04-30 12:54:40 256 2

原创 docker 容器迁移

docker 容器迁移

2024-04-12 11:04:53 893

原创 linux 配置服务开机启动

可以通过创建一个自定义的 Dockerfile,并在其中使用CMD或ENTRYPOINT指令来指定启动时运行的命令。编辑 /etc/rc.local 文件,并在exit 0语句之前添加你的应用程序路径。在运行docker run命令时,可以使用-d参数后跟启动命令来确保进程在后台运行。systemctl enable myapp.service #配置开启启动。ExecStart=/path/to/myapp #启动命令。WantedBy=multi-user.target #依赖。

2024-04-11 15:59:13 574

原创 Mysql 事物阻塞

查看现有事物(锁),批量生成 kill 命令

2024-04-10 16:18:04 381

原创 安装 windows 版 dash —— zeal

安装 windows 版 dash —— zeal

2024-04-08 18:23:47 854

原创 tcpdump 命令

tcpdump

2024-03-04 11:29:24 422

原创 redis 限流

redis 限流

2023-06-28 20:23:46 612

原创 centos8 升级 nginx

centos8 升级 nginx

2023-04-26 23:42:23 532

原创 使用 nvm 安装管理 node

使用 nvm 安装管理 node

2023-03-21 23:31:11 79

原创 空间索引-点在线上

空间索引,点在线上

2022-11-09 23:40:35 366

原创 ip范围和cidr相互转换

根据ip范围计算cidr

2022-09-09 03:04:38 2063

转载 github下载慢

github下载慢

2022-08-07 23:09:26 4774

原创 go 二分查找、上下边界

1、标准库的二分查找func upperBound0(nums []int, target int) int { //upper := sort.SearchInts(nums, target) upper := sort.Search(len(nums), func(i int) bool { return nums[i] >= target }) return upper}func lowerBound0(nums []int, target int) int { //

2022-02-13 14:43:13 609

原创 go string和[]byte对比

1、性能对比string 是常量,修改值会重新分配内存地址做内存拷贝,本质是一个结构体,含指针、len;[]byte 是变量,修改值不触发内存地址变动,扩容时是2倍策略,因此减少了频繁的内存拷贝,本质是一个结构体,含指针、len、cap。2、特性string 可以进行比较,可以作为map的key[]byte 不能进行比较,不能作为map的key[]byte和string区别golang string和[]byte的对比...

2022-02-11 20:37:55 1198

原创 go 文件流转发

先读入内存再返回的方式,不仅耗时,而且会占用较大的内存; 直接通过文件流方式,读一点,返回给前端一点,这样的方式更高效。package testimport ( "fmt" "io" "io/ioutil" "log" "net/http" "os" "testing")func TestServer(t *testing.T) { http.HandleFunc("/download/remote/stream", downloadRemote...

2022-02-09 01:18:22 1112

原创 go 性能监控(pprof、profile、gc、trace)

2、对于接口性能测试,可以使用wrk进行压测:(https://github.com/wg/wrk 或 https://github.com/adjust/go-wrk)访问 http://localhost:8080/debug/pprof,可以查看相关性能参数,但是这里不是图形化的,看起来不直观。其中,profile的分析需要设置总采样时间,不设置的话默认是30s,采样频率默认是100,即10ms。1、导入 pprof 包,开启 pprof 的web服务,启动程序。

2022-01-25 00:31:29 170

原创 mysql 并发问题

1、查看并发连接数show processlist; -- 正在执行线程的列表show global status like 'Threads%'; -- 正在执行的线程的数量 Threads_connectedshowglobal status like '%connections%'; -- 查看历史最大连接数show global status like '%Max_used_connections%'; -- 查看历史最大连接数及其发生时间 Max_used_connections ..

2022-01-20 16:25:14 670

原创 gorutine 的9种状态

_Gidle = iota // 0_Gidle means this goroutine was just allocated and has not yet been initialized._Gidle 表示这个 goroutine 刚刚被分配,还没有被初始化。_Grunnable // 1_Grunnable means this goroutine is on a run queue. It is not currently executing user code. The sta

2022-01-15 23:49:40 1051

原创 go GMP调度原理

gmp

2022-01-12 00:19:08 5400

原创 go slice 切片

(1)扩容方式:当切片容量256时,约1.25倍扩容(1.25x+192)。(2)append 和 reslice 取片段,如果不引发扩容,就共用底层数组及cap(向后扩展),只是起始位置可能不一样,对新 slice 的操作会影响旧 slice。(3)append 和 reslice 取片段,如果引发扩容,新 slice 与原 slice 指向不同的底层数组。

2022-01-02 14:36:08 129

原创 幂等问题总结

1、什么是幂等接口幂等性是指用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。幂等是指一个操作无论执行多少次,产生的效果是一样的。幂等与是不是分布式高并发都没有关系,关键是所执行的操作是不是幂等的。2、开发中的幂等场景(1)页面上快速点击按钮重复提交表单、重复刷新页面,导致产生了多条重复的数据、放大了更新增量导致错误的结果。(2)接口调用超时,通常会增加重试。第一次请求接口超时了,请求方没能及时获取返回结果(此时有可能已经成功了),为了避免返回

2022-01-02 01:37:52 565

原创 Mysql 按逗号拆分

1、建测试表create table table_to_split ( `id` int unsigned auto_increment primary key, `name_list` VARCHAR(64));2、插入测试数据insert into table_to_split (id, name_list) values (1, 'name01,name02'), (2, 'name03,name04,name05');3、查询select * fro...

2021-12-22 13:02:13 1795

原创 mysql 备份表

1、备份​​​​​​​mysqldump -u xxx -p xxx -h 127.0.0.1 -P 6379 dbName tbName> tbName.sql2、脚本#!/bin/bashdatetime=$(date "+%Y%m%d_%H%M%S")echo ${datetime}user=rootpass=roothost=127.0.0.1port=6379db=dbNamemysqldump -u ${user} -p${pass} -h ${hos

2021-12-01 16:35:10 895

原创 go 编译部署问题

1、go get 出现如下错误x509: certificate signed by unknown authority(1)切换代理GOPROXY=https://goproxy.ioGOPROXY=https://goproxy.cn

2021-11-27 15:01:18 303

转载 go 错误处理

对于Go语言(golang)的错误设计,相信很多人已经体验过了,它是通过返回值的方式,来强迫调用者对错误进行处理,要么你忽略,要么你处理(处理也可以是继续返回给调用者),对于golang这种设计方式,我们会在代码中写大量的if判断,以便做出决定。func main() { conent,err:=ioutil.ReadFile("filepath") if err !=nil{ //错误处理 }else { fmt.Println(string(conent)) }}

2021-11-22 22:45:47 159

原创 go 发布依赖到 git

1、新建本地项目,创建 module使用 github 标准格式:github.com/用户名/仓库名go mod init github.com/xiaozhu/hello // 指定名称,创建 module2、安装依赖,编写代码go tide // 安装缺少的依赖,清理无用的依赖go get // 安装缺少的依赖go get "xxx@v1.0.0" ...

2021-11-20 16:47:12 609

原创 git stash

1、暂存git addxxxgit stash #只会暂存已经 add(tracked)的内容,因此最好先 addgit stash save '暂存的名称' #指定暂存的名称2、查看所有暂存git stash list3、恢复暂存(1)指定暂存号恢复,并从 list 中删除git stash pop stash@{index}(2)指定暂存号恢复,但不从 list 中删除(建议)git stashapply stash@{i...

2021-11-11 14:35:48 3058

原创 gorm 事物锁

1、先读再写func UpdateUser(db *gorm.DB, id int64) error { tx := db.Begin() defer func() { if r := recover(); r != nil { tx.Rollback() } }() if err := tx.Error; err != nil { return err } user :=

2021-11-11 09:37:40 1097

leach+pegasis_ns234.patch

安装依赖:ubuntu10.04、ns-2.34 全过程详细配置:https://blog.youkuaiyun.com/weixin_41565755/article/details/88381605 打补丁方式安装,亲测可行,保证成功!

2020-01-16

stm32F407 SPI1/SPI2 DMA 方式读写 CH376S

内含SPI1/SPI2两个接口的读写版本,都是用的DMA方式,通信速度还不够快,好像几十KB吧,具体忘了多少了。下载者可以试着优化一下,速度还可以提高的。部分测试结果:https://blog.youkuaiyun.com/weixin_41565755/article/details/83115489

2019-01-03

空空如也

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

TA关注的人

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