自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 golang 1.22新特性

可以简单写为for i:=range 10。再也不用写v:=v这样经典的代码了。1 for不再共享循环变量。2 for支持整数范围。

2024-06-12 16:21:25 217

原创 mongodb 查询优化方法

全表扫描COLLSCAN,扫了全部文档,拉取文档83203多个。由于耗时多,且有写语句,导致让步次数650次。存在deviceid的索引,subscriber.key的索引,但是mondo并不会使用,会使用其他的。2.2 可能索引区分度很低,这时候意义不大,分库或者改变数据模型,或者上缓存。索引命中,已经没有优化空间。responseLength 返回的字节大小 (越小越好,可以只拿需要的数据)1 尽可能添加索引,走索引查询,防止回表可以构建联合索引。主键查询,2亿数据,写也多,导致numYield较多。

2024-06-12 14:50:03 527

原创 MySql在线分库双写方案

Mysql在线分库双写方案

2023-05-17 21:22:33 244

原创 iperf 测试发包

上面是两方连接关闭时的总结 18秒一共发了27G数据,宽带时6G,抖动了0.004毫秒(4us), 有0.5的连续丢失。但是由于网络设计不合理、网络存在安全漏洞等原因,都会导致网络带宽利用率不高。要找到网络带宽利用率不高的原因,就需要对网络传输进行监控,此时就需要用到一些网络性能评估工具,而Iperf就是这样一款网络带宽测试工具。网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,本地 172.28.0.26 网卡最大流量为7G/s。默认 5001 端口。

2023-04-05 10:52:25 661

原创 perf简明使用

注:perf的使用需要容器的特权,需要在容器启动时添加参数 --privileged。k8s中添加参数:给容器的spec指定securityContext.privileged=true但特权容器存在安全隐患,特权容器能访问宿主机上的所有设备(逃逸:容器挂载宿主机磁盘,然后切换根目录)。man文档查看: man perf-top。

2023-04-05 10:47:46 1225

原创 grpc分析

grpc简单分析

2023-04-05 10:01:00 333

原创 Mutex解析

锁的实现一般会依赖于原子操作、信号量,通过atomic包中的一些原子操作来实现锁的锁定,通过信号量来实现线程的阻塞与唤醒。加锁:通过原子操作cas加锁,如果加锁不成功,根据不同的场景选择自旋重试加锁或者阻塞等待被唤醒后加锁解锁:通过原子操作add解锁,如果仍有goroutine在等待,唤醒等待的goroutine自旋:cpu率高,但不用进行上下文切换,适合短时间内的等待。条件:cpu核数大于1。有空闲的P。规定最大自旋次数4。锁不处于饥饿模式。本地运行队列为空。

2023-04-05 10:00:45 243

原创 neovim安装

如果本机已经有了旧版本的neovim需要先卸载。

2023-04-05 10:00:24 238

原创 gorm v2版本

为了确保数据一致性,GORM 会在事务里执行写入操作(创建、更新、删除)。如果没有这方面的要求,您可以在初始化时禁用它,这将获得大约 30%+ 性能提升。如果在没有任何条件的情况下执行批量更新,默认情况下,GORM 不会执行该操作,并返回 ErrMissingWhereClause 错误。v2版本其实是 v1.20之后的版本,用法有很大的改变。可以使用 Unscoped 找到被软删除的记录。v1 不支持批量插入,v2支持批量插入。v2在连接配置里面修改。

2023-04-04 16:19:10 442

原创 golang log日志库优化

通过在此基础上构建高级SugaredLogger,zap允许用户选择何时需要计算每个分配,以及何时他们更喜欢更熟悉、类型松散的API。基于反射的序列化和字符串格式昂贵得令人望而却步——它们是CPU密集型的,并进行许多小的分配。换句话说,使用encoding/json和fmt.Fprintf来记录大量的interface{}s会使您的应用程序变慢。正如其自身的基准套件所衡量的那样,zap不仅比可比的结构化日志包性能更高,而且比标准库更快。zap日志输出,确定类型的输出确实很快,那么不确定类型会怎么处理呢?

2023-04-04 16:18:18 361

原创 go fmt分析

从部分源码中可以看出,需要先构建pp一个结构体,结构体中包含一个 buf来存需要标准输出的内容。常用的函数Println调用Fprintln,Printf调用Fprintf。

2023-04-04 16:16:36 79

原创 go testing

当一个测试的测试函数返回时, 又或者当一个测试函数调用 FailNow 、 Fatal 、 Fatalf 、 SkipNow 、 Skip 或者 Skipf 中的任意一个时, 该测试即宣告结束。一个基准测试在它的基准测试函数返回时,又或者在它的基准测试函数调用 FailNow、Fatal、Fatalf、SkipNow、Skip 或者 Skipf 中的任意一个方法时,测试即宣告结束。但跟单元测试不一样的是,为了避免基准测试的结果受到日志打印操作的影响,基准测试总是会把日志打印出来。

2023-04-04 16:12:29 93

原创 tc流量限制

控制处理对像:qdisc(排队规则)、class(类别)、filter(过滤器)。普通延迟一般在20ms~30ms,丢包率 45%以内,抖动20ms左右。1~30ms:极快,几乎察觉不出有延迟,玩任何游戏速度都特别顺畅。51~100ms:普通,对抗类游戏能感觉出明显延迟,稍有停顿。31~50ms:良好,可以正常游戏,没有明显的延迟情况。100ms:差,无法正常游戏,有卡顿,丢包并掉线现象。

2023-04-04 16:11:31 615

原创 golang ioc容器

绑定对象,是将抽象的实现引入ioc容器的过程。过程中可以确定解析类型、单例或者瞬态。此ioc框架将抽象绑定到具体实现中。可以通过通过函数、变量和结构解决。

2023-04-04 16:10:21 182

原创 pprof alloc含义解释

heap profile: 16(当前对象): 56010272 (程序申请的内存,堆) [323889(曾经分配过内存的对象): 594740816(曾经分配过的内存)] @ heap/1048576。PauseNs PauseEnd | 每个周期中GC的开始unix时间戳和结束unix时间戳 , 一个周期可能有0次GC,也可能有多次GC,如果是多次,只记录最后一个。有个细节是,如果一个span中可包含多个object,只要一个object在使用,那么算的是整个span。

2023-04-04 16:10:15 349

原创 stable diffusion使用简明教程

一般来说大部分时候采样部署只需要保持在20~30之间即可,更低的采样部署可能会导致图片没有计算完全,更高的采样步数的细节收益也并不高,只有非常微弱的证据表明高步数可以小概率修复肢体错误,所以只有想要出一张穷尽细节可能的图的时候才会使用更高的步数。CFG很难去用语言去描述具体的作用,很笼统的来说,就是给你所有的正面和反面提示词都加上一个系数,所以一般CFG越低,画面越素,细节相对较少,CFG越高,画面越腻,细节相对较多。设置之后记得点击上方的保存设置,VAE是通用的,可以和任何模型组合。

2023-04-04 16:08:06 6346

原创 AI绘画工具简明教程

挑选左侧的一个NEWCOMER ROOMS进入,然后再输入栏输入’/’ 或者 '/imagine’就会出现带prompt弹出栏,回撤确认再输入tag就能生成图片了。所以想用Midjourney,就要先注册一个Discord,然后进入Midjourney的Discord频道。Midjourney 是 AI 生成算图工具,输入文字就会自动产生图像,目前架设在Discord频道上。Midjourney的使用方式是:通过给频道内的聊天机器人发送对应文本,聊天机器人返回对应的图片。选择底层模型来生成图片。

2023-04-04 16:02:16 259

原创 mysql水平分库分表,以及线上分表方案

将每个表的初始id确定,0 - 500万, 500 - 1000 ,1000- 1500, 1500 - 2000。在通常业务中,新用户的活跃度是远高于老用户的,意味着热点数据全部分配在同一张表上,存在部分的资源浪费情况;在业务量不大的情况下,通常使用单表在进行操作,但是随着表数据越来越大,性能也越来越差;情况1则会出现数据不一致,但是原表更新成功,可以通过数据迁移完成同步,也是可以接受的。如出现情况2,则代表本次更新失败,但是数据是一致的,是可以接受的。在排除断电等极端情况下,插入失败只会是出现重复,

2023-04-04 15:56:27 473

原创 mysql死锁线上快速排查方案

mysql死锁线上快速排查三种方案;表查询;日志查询;云服务控制台查询

2022-11-10 11:52:25 287

原创 后端服务常见问题解决方案

1 token生成 token = md5(uid+timestamp+nance) 存到redis,根据业务设置不同的有效时间。2 消息合法性(防篡改) 数字签名 e.g. req:{ uid int param1 int param2 int sig string } sig = md5(uid+param1+param2+token) 也可参考: kong插件hmac-auth3 幂等 方案一:...

2021-12-13 17:38:38 2568

原创 常用游戏服务架构(tcp/ws,golang技术栈) 篇二

上一篇概述房间类型游戏架构(无场景)。本篇概述mmorpg。大地图是逻辑意义上面的无缝地图,其背后的本质还是地图分割,单个服务节点一个地图块。常用九宫格划分,不过也可以根据具体的场景容纳人数,高峰人数来划分。场景服务(战斗服): 主要为多人位置(技能)同步,伤害计算判定等(范围检测),基本都是广播。场景管理服务:玩家场景切换,无缝地图场景切换(具有中间态)。ai服务:mmo大多有大量的野怪,ai寻路,ai行为树等很吃CPU,可用navmesh。对于服务来说,ai和玩家本质上没有.

2021-12-13 16:15:59 3931

原创 常用游戏服务架构(tcp/ws,golang技术栈) 篇一

房间类型游戏服务常用架构

2021-12-09 11:51:45 6652

原创 常用游戏服务架构(http,golang技术版)

常用游戏服务架构(http,golang技术版)

2021-12-08 17:16:09 991

原创 操作系统以及应用层内存管理

内存管理概述;glibc->malloc->brk/mmap->vmalloc->buddy;slab->buddy;

2021-12-08 15:12:23 278

原创 docker制作golang开发环境,以及代码检查

docker制作golang开发环境

2021-12-08 14:03:37 471

原创 docker部署zookeeper,redis,pg,nginx,mysql,jaeger

docker部署常用组件

2021-12-08 13:55:16 2383

原创 docker部署Prometheus+Grafana

docker部署Prometheus+Grafana

2021-12-08 11:50:00 98

原创 docker部署kong,konga,插件

docker部署kong,konga,kong插件

2021-12-08 11:04:16 288

原创 NSIS + QT 实现安装卸载程序

NSIS+QT 实现安装卸载程序

2021-12-08 10:53:08 937

原创 protobuf for lua

protobuf for lua,实现C++反射处理protobuf,C++构造Lua表,C++读取Lua表,C++静态处理protobuf

2021-12-08 10:47:48 134

原创 C# Ringbuffer 实现+cacheline不同写法性能测试

不同内存布局的ringbuffer性能测试

2021-12-08 10:39:43 529

空空如也

空空如也

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

TA关注的人

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