- 博客(457)
- 资源 (5)
- 收藏
- 关注
原创 每期一个小窍门: Graphviz 配合 pprof 分析 go 性能问题
graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。graphviz也提供了供其它软件使用的库。graphviz是一个自由软件,其授权为Eclipse Public License。看 fmt.print 被我们找到了。采样过后会自动跳转到浏览器。
2023-09-06 17:03:54 188
原创 D2: 基于go实现的一个DSL 绘图工具 高手效率神器
D2 是一种声明式流程图的领域特定语言 (DSL),声明式只需要描述你想要的流程图即可,它就会自动生成对应的图像。
2023-08-19 15:08:48 283
原创 通过生产环境流量录制/线下回放 配合基于云原生的灰度发布 实现保质保量的持续集成
流量回放/复制, 从测试的角度, 本质是:通过把线上的真实流量复制到线下环境,解决测试环境模拟不够真实,或覆盖不够全面的问题。
2022-08-15 10:04:57 751 1
原创 深入理解k8s operator 机制
Kubernetes 提供了一种扩展机制,允许我们定义自己的资源类型,称为自定义资源。在集群上运行一个 pod 来监控某种类型的自定义资源并基于它管理其他资源,这就是 Operator模式。
2021-12-07 16:33:43 5024
原创 通过PowerMockito来模拟时钟回拨, 验证改进版雪花算法是否起效
改进版雪花算法详见上篇传送门简单说明: 通过PowerMockito来mock雪花算法中获取时间的算法, 从而实现伪造时间覆盖.测试类import org.junit.Assert;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.powermock.api.mockito.PowerMockito;import org.powermock.core.classlo
2021-04-21 17:56:15 2651 3
原创 硬核讲解JDK1.8的ConcurrentHashMap为何放弃分段锁改用CAS + synchronized
jdk1.7分段锁的实现和hashmap一样,在jdk1.7中ConcurrentHashMap的底层数据结构是数组加链表。和hashmap不同的是ConcurrentHashMap中存放的数据是一段段的,即由多个Segment(段)组成的。每个Segment中都有着类似于数组加链表的结构。关于SegmentConcurrentHashMap有3个参数:initialCapacity:初...
2020-04-15 04:21:03 38593 13
原创 模型的训练三阶段 Pretraining SFT RLHF
人工先介入,通过对同一个Prompt生成答案的排序来训练一个Reward Model。再用Reward Model去反馈给SFT Model,通过评价生成结果的好坏,让模型更倾向于生成人们喜好的结果。最终生成的Model叫做RLHF model。给模型海量的文本进行训练,99%的计算量花费在这个阶段,输出的模型叫做base model,能做的事情就是像成语接龙一样不断的完成一段话。人工介入,给出高质量的文本问答例子。经过问答式训练的Model叫做SFT model,就可以正常回答人的问题了。
2024-03-25 01:08:12 289
原创 CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate‘.解决方案 亲测有效
【代码】CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate‘.解决方案 亲测有效。
2024-03-24 16:49:52 209
原创 每期一个小窍门: go不同项目之间的引用
那么你有一个包moda, 放在/home/aio/moda下面, 然后你想用go mod, 那么会执行go mod init A包名。然后你的modb也需要用go mod, 所以你执行go mod init modb。然后你就得到了go.mod文件。不出意外的话, 应该就引用到了。
2024-01-28 13:02:54 184
原创 Mac os docker login : error getting credentials
2、修改 $home/.docker/config.json 的配置,删除 “credsStore”: “desktop” 或者 将值改为"osxkeychain"第二步的 credsStore 是 docker 的存储身份凭证的设置。osxkeychain 是钥匙串。1、修改钥匙串的 docker 关键字相关设置,解决访问策略问题, 允许所有应用程序访问。但遇到了新的问题,重启 docker 后,还是会恢复这个配置,目前。
2024-01-27 15:17:20 518
原创 golang视角下 protobuf 的安装 从proto文件到go文件
Protocol Buffers(protobuf)是一种由Google开发的轻量级、高效的数据序列化格式。它设计的目的是为了在不同系统之间进行数据交换,同时保持数据的结构化和高效传输。
2024-01-25 18:27:01 592
原创 QA 这个职位在中国有前途么?转自知乎
纯手工的测试工程师逐渐被削弱地位和裁减. 但是他们不会灭绝, 依然有不少的领域或者基础的工作是要靠大量的纯手工测试来保证的. 取而代之的, 是一种广被欢迎的测试开发工程师. 他们不仅可以做手工测试, 也可以做测试技术的应用. 所以他们能发现更深层的问题, 和研发的思路也接近. 同时在质量保证上有自己的独特经验和能力. 他们的主要技能是自动化, 性能分析 业务分析. 用于解决日常的测试需求. 他们也会开发适当的测试工具.使用qtp,selenium,watir,或者是其他的技术框架来自动化测试工作的。
2024-01-05 11:16:30 434
原创 每期一个小窍门: mysql的四个系统库的作用
“information_schema”是 MySQL 系统自带的数据库,主要保存 MySQL 数据库服务器的系统信息,比如数据库的名称、数据表的名称、字段名称、存取权限、数据文件所在的文件夹和系统使用的文件夹,等等。“performance_schema”是 MySQL 系统自带的数据库,可以用来监控 MySQL 的各类性能指标。“sys”数据库是 MySQL 系统自带的数据库,主要作用是,以一种更容易被理解的方式展示 MySQL 数据库服务器的各类性能指标,帮助系统管理员和开发人员监控 MySQL
2023-10-17 23:28:15 169
原创 每期一个小窍门: 一文助你理解火焰图
让我们从 perf 命令(performance 的缩写)讲起,它是 Linux 系统原生提供的性能分析工具,会返回 CPU 正在执行的函数名以及调用栈(stack)。通常,它的执行频率是99Hz(每秒99次),如果99次都返回同一个函数名,那就说明 CPU 这一秒钟都在执行同一个函数,可能存在性能问题。上面的代码中,perf record表示记录,-F 99表示每秒99次,-p 13204是进程号,即对哪个进程进行分析,-g表示记录调用栈,sleep 30则是持续30秒。
2023-09-06 16:35:07 163
原创 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at:
Mac 下执行命令时,报错。
2023-08-31 16:18:15 374
原创 Go:测试框架GoConvey 简介
GoConvey是一个完全兼容官方Go Test的测试框架,一般来说这种第三方库都比官方的功能要强大、更加易于使用、开发效率更高,闲话少说,先看一个example:看着复杂, 一层层的嵌套,如果你使用IDE的话你可以点到源码里面看一下其方法注释,其实已经说的非常清楚了,这里摘取部分看一下:这个用法相对简单了,Convey定义了一个局部的作用域,在这个作用域里面我们可以定义变量,调用方法,然后重复继续这个操作,low-level的Convey会继承top-level的变量。了解之后,我们来扩展一下这个例子
2023-08-21 21:52:45 1066 1
原创 每期一个小窍门: 自己实现 go语言的对象pool 对比自带的 sync.pool 区别分析
对象池在一些特定情况下 可以提高我们程序运行的效率(如果你用的位置合适)首先我们自己手写一个对象池运行结果:前十个可以正常取出正常放回还可以再正常取出但是只有十个 如果连续取第十一个会 timeout。
2023-08-20 10:00:00 63
原创 每期一个小窍门: go 实现单例
go语言实现单例很简单 不需要类似java的double check 双重锁这种。通过 sync.Once 的once.Do() 只运行一次来实现。
2023-08-19 10:30:00 53
原创 每期一个小窍门: go 中 不确定的select语句
由于 goroutine 的执行顺序不确定,所以这里也不确定到底是该输出 42 43 还是 The default case!,可以用下面的脚本执行 5000 次看看(大家把下面的脚本保存成 for.sh,然后 chmod a+x for.sh,接着 ./for.sh)然后到 for.txt中看输出,大部分都是 default,很小部分是 42 和 43。所以他还是会优先的选择 case 去执行,只是我们不要写这种 select,一旦写了,我们大抵要为这种不确定性付出代价。
2023-08-15 23:24:40 67
原创 深入理解 go协程 调度机制
Go 启动的时候,会有一个守护线程 G0,计数,会记录每个 Processor 运行完成的协程的数量,如果发现某一个 Processor 在一段时间内没有发生变化(阻塞),就会往这个协程的任务栈里面插入一个特殊的标记,当协程运行遇到非内联函数,就会读到这个标记,将自己中断下来,插到等待协程队列的队尾,切换到其他队列的队尾。内核线程是由CPU直接调度,如果一个用户线程对应一个内核线程,调度效率来看肯定是快于多个用户线程对应一个内核线程的。当协程被中断的时候,它在寄存器中的运行状态,也会保存在协程对象中;
2023-08-14 14:08:58 545
原创 每期一个小窍门: 玩转go mod 命令
这个工具类的 package name = util666。这个工具类的 物理路径是 = test666/util。可以使用下面两个命令来确保依赖正常加载。挎包调用需要大写 方法/变量 首字母。test666 是自身的mod名称。当然 你也可以使用别名来调用。main中引用了 一个工具类。
2023-08-13 21:58:35 242 2
原创 每期一个小窍门: go处理异常的一些小窍门
判断异常时, 异常逻辑在前, 即使有复杂业务逻辑判断, 也同样是扁平结构。go设计者更偏向于C的error处理方式, 快速失败是更简单高效的。我们可以利用error接口和多返回值来实现异常传递。error可以利用变量来复用 等价判断。没有类似java的exception。
2023-08-13 13:05:04 122 1
原创 每期一个小窍门: go语言的两种接受者
在 Go 语言里,方法和函数只差了一个,那就是方法在 func 和标识符之间多了一个参数。我们可以看到,方法是在 func 和 notify 之间多了一个 user 类型的参数 u ,这个 u 就称作接收者。
2023-08-12 16:51:11 166
原创 每期一个小窍门: 关于 go 的 iota 计数器
准确的说:iota出现在const语句块中的第几行,那么它就是几,当然这里的行数的索引也是以0为开始。因为iota一般出现在const语句块的第一行,不少的初学者会将之认为iota就是0,这是不对的。const中每新增一行常量声明将使iota计数一次,当然前提是iota在const中出现。iota是常量的计数器,可以理解为const定义常量的行数的索引,注意是行数。
2023-08-08 17:48:46 111
原创 每期一个小窍门: 获取全部带有自定义方法注解的类和方法
比如我自定义了MqListener注解。我就需要获取全部被注解方法。启动时自动加载所有消费者。
2023-08-08 17:42:07 164
原创 mysql 指定线程数 并行查询单表
在MySQL中,并行查询是一个非常重要的概念,可以加快查询速度。下面我们将介绍如何在MySQL中使用并行查询。在MySQL中,我们可以根据需要调整并行查询的进程数。总之,在MySQL中使用并行查询可以极大地提高查询速度,但需要合理选择并行查询进程数,并注意系统硬件资源的使用情况。然后,我们可以在查询中使用并行执行选项来启用并行查询。这条查询语句可以同时启动4个进程来查询employee表中的数据,从而大大加快查询速度。当然,如果您的系统硬件配置不足,那么开启太多的并行查询进程可能会拖慢系统的响应速度。
2023-07-18 10:49:34 951
原创 Mysql 不同版本online DDL的处理策略
关于DDL的ONLINE和OFFLINE,通俗的讲:ONLINE:在执行DDL时允许DML操作OFFLINE:在执行DDL时不允许DML操作在生产上的场景就是业务正在运行,DBA需要在表中添加新的字段同时不能影响该表的写操作就是ONLINE DDL。也就是说,所谓的ONLINE和OFFLINE更准确是针对 ALTER TABLE 语句。
2023-07-12 10:11:08 320
原创 每期一个小窍门: java线程池的几种任务拒绝策略
当线程都满了,且队列也满了的情况下,会调用该方法来拒绝任务,有多种策略可以选择,或者自定义实现
2022-12-05 17:55:12 6234 1
原创 macbook m1 无法启动mysql服务
macbook m1 无法启动mysql服务,提示ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘解决方法:
2022-11-09 17:38:19 1473 2
apache-doris-1.0.0-incubating-bin.tar.gz
2022-06-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人