- 博客(477)
- 资源 (5)
- 收藏
- 关注
原创 Go:测试框架GoConvey 简介
GoConvey是一个完全兼容官方Go Test的测试框架,一般来说这种第三方库都比官方的功能要强大、更加易于使用、开发效率更高,闲话少说,先看一个example:看着复杂, 一层层的嵌套,如果你使用IDE的话你可以点到源码里面看一下其方法注释,其实已经说的非常清楚了,这里摘取部分看一下:这个用法相对简单了,Convey定义了一个局部的作用域,在这个作用域里面我们可以定义变量,调用方法,然后重复继续这个操作,low-level的Convey会继承top-level的变量。了解之后,我们来扩展一下这个例子
2023-08-21 21:52:45
1343
1
原创 每期一个小窍门: 自己实现 go语言的对象pool 对比自带的 sync.pool 区别分析
对象池在一些特定情况下 可以提高我们程序运行的效率(如果你用的位置合适)首先我们自己手写一个对象池运行结果:前十个可以正常取出正常放回还可以再正常取出但是只有十个 如果连续取第十一个会 timeout。
2023-08-20 10:00:00
89
原创 D2: 基于go实现的一个DSL 绘图工具 高手效率神器
D2 是一种声明式流程图的领域特定语言 (DSL),声明式只需要描述你想要的流程图即可,它就会自动生成对应的图像。
2023-08-19 15:08:48
545
原创 每期一个小窍门: go 实现单例
go语言实现单例很简单 不需要类似java的double check 双重锁这种。通过 sync.Once 的once.Do() 只运行一次来实现。
2023-08-19 10:30:00
84
原创 每期一个小窍门: 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
96
原创 深入理解 go协程 调度机制
Go 启动的时候,会有一个守护线程 G0,计数,会记录每个 Processor 运行完成的协程的数量,如果发现某一个 Processor 在一段时间内没有发生变化(阻塞),就会往这个协程的任务栈里面插入一个特殊的标记,当协程运行遇到非内联函数,就会读到这个标记,将自己中断下来,插到等待协程队列的队尾,切换到其他队列的队尾。内核线程是由CPU直接调度,如果一个用户线程对应一个内核线程,调度效率来看肯定是快于多个用户线程对应一个内核线程的。当协程被中断的时候,它在寄存器中的运行状态,也会保存在协程对象中;
2023-08-14 14:08:58
647
原创 每期一个小窍门: 玩转go mod 命令
这个工具类的 package name = util666。这个工具类的 物理路径是 = test666/util。可以使用下面两个命令来确保依赖正常加载。挎包调用需要大写 方法/变量 首字母。test666 是自身的mod名称。当然 你也可以使用别名来调用。main中引用了 一个工具类。
2023-08-13 21:58:35
486
2
原创 每期一个小窍门: go处理异常的一些小窍门
判断异常时, 异常逻辑在前, 即使有复杂业务逻辑判断, 也同样是扁平结构。go设计者更偏向于C的error处理方式, 快速失败是更简单高效的。我们可以利用error接口和多返回值来实现异常传递。error可以利用变量来复用 等价判断。没有类似java的exception。
2023-08-13 13:05:04
148
1
原创 每期一个小窍门: go语言的两种接受者
在 Go 语言里,方法和函数只差了一个,那就是方法在 func 和标识符之间多了一个参数。我们可以看到,方法是在 func 和 notify 之间多了一个 user 类型的参数 u ,这个 u 就称作接收者。
2023-08-12 16:51:11
204
原创 每期一个小窍门: 关于 go 的 iota 计数器
准确的说:iota出现在const语句块中的第几行,那么它就是几,当然这里的行数的索引也是以0为开始。因为iota一般出现在const语句块的第一行,不少的初学者会将之认为iota就是0,这是不对的。const中每新增一行常量声明将使iota计数一次,当然前提是iota在const中出现。iota是常量的计数器,可以理解为const定义常量的行数的索引,注意是行数。
2023-08-08 17:48:46
167
原创 每期一个小窍门: 获取全部带有自定义方法注解的类和方法
比如我自定义了MqListener注解。我就需要获取全部被注解方法。启动时自动加载所有消费者。
2023-08-08 17:42:07
235
原创 mysql 指定线程数 并行查询单表
在MySQL中,并行查询是一个非常重要的概念,可以加快查询速度。下面我们将介绍如何在MySQL中使用并行查询。在MySQL中,我们可以根据需要调整并行查询的进程数。总之,在MySQL中使用并行查询可以极大地提高查询速度,但需要合理选择并行查询进程数,并注意系统硬件资源的使用情况。然后,我们可以在查询中使用并行执行选项来启用并行查询。这条查询语句可以同时启动4个进程来查询employee表中的数据,从而大大加快查询速度。当然,如果您的系统硬件配置不足,那么开启太多的并行查询进程可能会拖慢系统的响应速度。
2023-07-18 10:49:34
1440
1
原创 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
560
原创 每期一个小窍门: java线程池的几种任务拒绝策略
当线程都满了,且队列也满了的情况下,会调用该方法来拒绝任务,有多种策略可以选择,或者自定义实现
2022-12-05 17:55:12
6288
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
1707
2
原创 报错 maun.dylib (mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e))))
最近换了m1芯片的笔记本遇到了这个问题使用graalvm 编译 jar 包的时候遇到的。
2022-10-17 16:53:23
617
1
原创 Istio 架构的演进,为什么会有 istiod ?
尽管之前一直被人抱怨存在各种问题,但 Istio 社区的开发脚步没有停歇,我们看到了一次又一次的版本发布从未间断,伴随着各种大大小小的功能更新和优化。就网易杭研而言,轻舟微服务将 Istio 引入生产环境也是极为审慎,事实上也曾遇到了运维和开发的困惑,而 istiod 架构设计的回归让我们彻底松了一口气,拥抱 Istio 实现服务网格的思路更加坚定。
2022-10-10 11:33:06
1966
原创 mongodb 单事务内使用多线程加速的简单例子
下面是java 操作 mongo 实现单事务内使用多线程的例子。事务内 如果有重复性比较强且线程安全的重复性循环操作.可以考虑使用并行来替代循环。
2022-09-15 10:51:17
838
原创 深入了解 istio: 调整 max_body_size
nginx 可以设置 client_max_body_size,那么在 istio 场景下如何调整客户端的最大请求大小呢?
2022-09-14 09:42:53
762
原创 谈谈 SRE 和 DevOps 的区别
SRE 全称 Site Reliability Engineering.DevOps 全称 Development and OperationsDevOps是开发拥抱运维,开发人员需要学习运维的相关知识能够承担运维的工作. 本质偏向开发Googel的SRE是运维侧发起的,运维去拥抱开发,运维的人员需要具备一定的开发能力. 本质偏向运维...
2022-06-21 15:41:49
519
原创 每期一个小窍门: k8s容器亲和性的小例子
很多情况下 我们希望某些pod 禁止运行到一些worker节点上, 可以利用容器亲和性来实现例如下面 设置此pod调度在非ip为10.0.40.3的节点上, 而其他节点都可以 spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressio
2022-05-27 15:55:24
580
3
原创 mysql8.0 Innodb cluster 日常运维: 集群搭建, 异常节点回归, 数据备份/恢复
innodb cluster 部署架构图生成mysqlrouter的配置文件mysqlrouter --bootstrap root@mysql-122:3306 --directory=/etc/mysqlrouter --user=root --conf-use-sockets --force备份数据(可用于恢复集群数据)注意: 数据量过大时, 推荐挂载磁盘mysqldump -uroot -p -q --single-transaction --master-data=2 mpt_cr
2022-05-15 17:31:36
6310
1
原创 failed to obtain in-memory shard lock
问题原因:出现这个问题的原因是原有分片未正常关闭和清理,所以当分片要重新分配回出问题节点的时候没有办法获得分片锁。这不会造成分片数据丢失,只需要重新触发一下分配恢复指令curl -XPOST http://localhost:9200/_cluster/reroute?retry_failed查看详情curl -XGET http://localhost:9200/_cluster/allocation/explain...
2022-03-20 23:06:45
1663
原创 每期一个小窍门: filebeat 简单日志文件抓取到es
一般不用k8s环境的情况下, filebeat 可以解决大部分的日志问题下载filebeat: 6.2.4, 其实这个不像elk一样需要严格的三版本一致, 差不多就行curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-linux-x86_64.tar.gz解压, 如今的linux发行版已经不需要指定解压方式了 xvf 足够tar xvf filebeat-6.2.4-linux-x86_6
2022-03-05 14:13:55
3298
1
原创 每期一个小窍门: 利用 supervisor 保证进程级别的简单高可用
supervisor安装supervisor 是一个简单好用的 进程级别的监控组件, 可以帮助我们保证进程的高可用.下面是supervisor的安装与使用方法.安装supervisoryum install -y supervisor开机自启systemctl enable supervisord; systemctl start supervisordvi /etc/supervisord.conf此段落可以开启supervisor可视化页面, 端口自定[inet_http_serv
2022-03-04 15:33:44
358
原创 每期一个小窍门: mongodb 通过正则 匹配删除数据库
有时候我们想删除很多名字具有相似性的正则时, 可以利用下面的函数来匹配删除var dbs = db.getMongo().getDBNames()for(var i in dbs){ db = db.getMongo().getDB( dbs[i] ); if (db.getName().match(/^yourdbname/)) { print( "dropping db " + db.getName() ); db.dropDatabase()
2022-02-26 10:51:45
477
原创 每期一个小窍门: 简单文件摘要工具类
有时候我们程序内部要进行文件传输, 为了安全考虑, 需要摘要校验.比如想传递文件A, 获取了文件A的摘要a, 对方在读取此文件时, 用同样的摘要算法算出a的话就证明文件A没有被篡改, 反之就是被篡改了(摘要码不匹配)下方是工具类的使用import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.File;import java.io.FileInputStream;import java.io.IOExcepti
2022-02-15 12:01:00
173
1
原创 GoLang 快速入门 合理实用常量
go的常量很方便iota 是一个只能在常量表达式中使用的一个标识符, 是一个常量计数器, 初始值为0, 新增一行, 下面的常量会+1下面是关于常量的小例子package constant_testimport "testing"/*constant 012*/const ( a = iota + 1 // 1 b // 2 c // 3)/*constant 可以跳过*/const ( a = iota + 1 // 1
2022-02-15 11:27:19
371
1
原创 每期一个小窍门: 压测工具 Apache ab 安装与使用
使用yum 安装 Apache abyum -y install httpd-tools因为默认的Apache ab 是不支持 http1.1及以上的版本, 我们的线上环境使用的是http1.1标准. 所以, 需要敲入下方命令, 使之支持http 1.1perl -pi -e 's/HTTP\/1.0/HTTP\/1.1/g' /usr/bin/ab压测之前需要编写压测数据, Apache ab 通过读取文本格式的文件作为他的请求体的:比如:模拟form表单请求, 需要文件中写入参数, 参
2022-02-11 16:27:50
1324
1
原创 Kafka 实现动态goupId 实现广播消息
有些场景下 我们需要广播消息, kafka在partition上的每条消息, 便宜想是按照group为单位做副本的, 所以针对每条消息, 每组groupId对应的消费者都会分别消费一次, 这也是我们通过动态groupId来实现 多副本jar的广播消费的原理
2022-01-06 10:00:03
2863
6
原创 MySQL索引失效的七种情况
转载: https://blog.csdn.net/weixin_39129067/article/details/121315567模 型 数 空 运 最 快口诀字面意思就是,要运送一个产品模型的话,要用空运,不要用陆运和海运,数空运最快。叫作:模型数空运最快。下面我拆开逐字讲解一下:模:模糊查询的意思。like的模糊查询以%开头,索引失效。比如:SELECT * FROM user WHERE name LIKE ‘%老猿’;型:代表数据类型。类型错误,如字段类型为varchar,whe
2021-12-27 11:02:14
776
5
原创 Docker 反向导出 DockerFile
最近发现个有意思的东西 可以让docker可以反向导出dockerfile在 Docker 的日常运维过程中,可能会构建很多不同的镜像。维护一些基础 Docker 镜像,有些时候没有保存 Dockerfile,但是想查看一些公开仓库的 Docker 镜像是怎么构建的,或因为长时间不维护找不到当时构建镜像的 Dockerfile,或者因为网络无法查看时,就非常希望能从镜像导出 Dockerfile,这时可以试试whaler 命令先设置别名:alias whaler="docker run -t --rm
2021-12-09 15:46:36
1886
2
apache-doris-1.0.0-incubating-bin.tar.gz
2022-06-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅