编程小窍门
静谧之心
专业摩的佬
业余吉他手
退役喷子
展开
-
每期一个小窍门 golang中 CGO_ENABLED 含义
总结起来,使用CGO_ENABLED=0编译会慢一些是因为编译器需要额外的时间来处理CGO相关的代码,并且无法使用C语言的优化技术,同时还需要处理更多的Go代码。CGO_ENABLED是一个环境变量,用于控制Go编译器是否启用CGO(C语言调用Go函数)功能。当CGO_ENABLED=0时,表示禁用CGO功能。原创 2024-08-26 17:39:10 · 431 阅读 · 0 评论 -
每期一个小窍门: 关于 golang 2006年1月2日15时4分5秒 这个时间彩蛋
在Go语言中,time.Format方法的参数使用的是一种固定的格式化布局,这个布局是以Go的发布日——2006年1月2日15时4分5秒(对应于常量Mon Jan 2 15:04:05 MST 2006)为模板来指示时间的格式。在使用 time.Format 方法时,必须使用上面这个准确的时间来指定你想要的格式,因为Go语言将使用这个布局字符串中的数字位置来识别相应的时间部分。比如,如果你想要小时和分钟,你就使用 “15:04” 作为格式字符串。原创 2024-08-22 11:15:58 · 247 阅读 · 0 评论 -
每期一个小窍门 k8s版本的 Prometheus + grafana + alertmanager 三件套部署监控落地
不要局限于组件本身 比如这一套组件要目标导向的去找组件 比如我想监控什么metrics 这个metrics 的安全阈值是多少 监控要不要做 高了代表什么 会产生什么级联影响 指标要有个重要性排序 最致命的肯定告警优先级要特殊对待 这些可能要和开发一同去设计 去排序优先级 只有拥有全链路的重要瓶颈的监控指标 业务接口才是真正运维侧可视化的 才会让团队放心原创 2024-05-29 14:37:00 · 400 阅读 · 0 评论 -
每期一个小窍门: AutoDL 开启关闭学术加速
【代码】每期一个小窍门: AutoDL 开启关闭学术加速。原创 2024-05-17 12:49:51 · 420 阅读 · 0 评论 -
vscode 通过ssh 远程执行ipynb +可以切换conda env
主要是保证几个点。原创 2024-05-14 23:00:43 · 616 阅读 · 1 评论 -
Fastchat + vllm + ray + Qwen1.5-7b 在2080ti 双卡上 实现多卡推理加速
Ray 是一个高性能的分布式计算框架,由UC Berkeley RISELab 开发,支持Python 语言,并可与PyTorch 等机器学习框架结合使用。在隐私计算方面,Ray提供了数据隐私保护,支持数据共享和协作,同时允许在不泄露原始数据的情况下进行深度学习模型训练。OpenAI API提供OpenAI兼容的API服务,接受请求后,先向Controller获取Model Worker地址,再向Model Worker实例发送请求生成文本,最后返回OpenAI兼容的报文。执行情况如下 并发速度还不错。原创 2024-05-11 14:56:39 · 3202 阅读 · 2 评论 -
每期一个小窍门: 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 · 291 阅读 · 0 评论 -
每期一个小窍门: 重置kafka 消费者的偏移量
【代码】每期一个小窍门: 重置kafka 消费者的偏移量。原创 2024-01-03 17:08:08 · 640 阅读 · 0 评论 -
每期一个小窍门: Graphviz 配合 pprof 分析 go 性能问题
graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。graphviz也提供了供其它软件使用的库。graphviz是一个自由软件,其授权为Eclipse Public License。看 fmt.print 被我们找到了。采样过后会自动跳转到浏览器。原创 2023-09-06 17:03:54 · 286 阅读 · 0 评论 -
每期一个小窍门: 一文助你理解火焰图
让我们从 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 · 246 阅读 · 0 评论 -
每期一个小窍门: mac 重装 homebrew
【代码】每期一个小窍门: mac 重装 homebrew。原创 2023-08-31 16:13:51 · 213 阅读 · 0 评论 -
go: 高性能json工具 easyjson 简介
【代码】go: 高性能json工具 easyjson 简介。原创 2023-08-27 13:40:48 · 762 阅读 · 0 评论 -
每期一个小窍门: 自己实现 go语言的对象pool 对比自带的 sync.pool 区别分析
对象池在一些特定情况下 可以提高我们程序运行的效率(如果你用的位置合适)首先我们自己手写一个对象池运行结果:前十个可以正常取出正常放回还可以再正常取出但是只有十个 如果连续取第十一个会 timeout。原创 2023-08-20 10:00:00 · 89 阅读 · 0 评论 -
每期一个小窍门: go 实现单例
go语言实现单例很简单 不需要类似java的double check 双重锁这种。通过 sync.Once 的once.Do() 只运行一次来实现。原创 2023-08-19 10:30:00 · 84 阅读 · 0 评论 -
每期一个小窍门: 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 阅读 · 0 评论 -
每期一个小窍门: 通过 两个小例子 玩转go channel
通道类似一个没有持久化功能的, 完全基于内存的, 消息队列原创 2023-08-15 00:15:32 · 195 阅读 · 0 评论 -
每期一个小窍门: 玩转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中的接口更加灵活。原创 2023-08-12 21:51:42 · 126 阅读 · 1 评论 -
每期一个小窍门: go语言的两种接受者
在 Go 语言里,方法和函数只差了一个,那就是方法在 func 和标识符之间多了一个参数。我们可以看到,方法是在 func 和 notify 之间多了一个 user 类型的参数 u ,这个 u 就称作接收者。原创 2023-08-12 16:51:11 · 204 阅读 · 0 评论 -
每期一个小窍门: go中通过函数式编程, 将目标方法计时
【代码】每期一个小窍门: go中通过函数式编程, 将目标方法计时。原创 2023-08-09 23:30:45 · 84 阅读 · 0 评论 -
每期一个小窍门: 关于 go 的 iota 计数器
准确的说:iota出现在const语句块中的第几行,那么它就是几,当然这里的行数的索引也是以0为开始。因为iota一般出现在const语句块的第一行,不少的初学者会将之认为iota就是0,这是不对的。const中每新增一行常量声明将使iota计数一次,当然前提是iota在const中出现。iota是常量的计数器,可以理解为const定义常量的行数的索引,注意是行数。原创 2023-08-08 17:48:46 · 167 阅读 · 0 评论 -
每期一个小窍门: 获取全部带有自定义方法注解的类和方法
比如我自定义了MqListener注解。我就需要获取全部被注解方法。启动时自动加载所有消费者。原创 2023-08-08 17:42:07 · 235 阅读 · 0 评论 -
每期一个小窍门: 通过JavaPoet 生成泛型类
最近使用javapoet 遇到了个小问题。原创 2023-04-03 11:15:46 · 450 阅读 · 1 评论 -
每期一个小窍门: java线程池的几种任务拒绝策略
当线程都满了,且队列也满了的情况下,会调用该方法来拒绝任务,有多种策略可以选择,或者自定义实现原创 2022-12-05 17:55:12 · 6288 阅读 · 1 评论 -
通过生产环境流量录制/线下回放 配合基于云原生的灰度发布 实现保质保量的持续集成
流量回放/复制, 从测试的角度, 本质是:通过把线上的真实流量复制到线下环境,解决测试环境模拟不够真实,或覆盖不够全面的问题。原创 2022-08-15 10:04:57 · 897 阅读 · 1 评论 -
每期一个小窍门: 灰度重启 mongodb 复制集
k8s/非容器化 的 mongodb复制集的灰度重启原创 2022-08-01 15:55:27 · 538 阅读 · 0 评论 -
每期一个小窍门: jenkins 生产环境流水线 标准构建方案
Jenkins 生产线 的比较正规的流水线解决方案原创 2022-07-26 17:06:45 · 363 阅读 · 0 评论 -
每期一个小窍门: k8s容器亲和性的小例子
很多情况下 我们希望某些pod 禁止运行到一些worker节点上, 可以利用容器亲和性来实现例如下面 设置此pod调度在非ip为10.0.40.3的节点上, 而其他节点都可以 spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressio原创 2022-05-27 15:55:24 · 580 阅读 · 3 评论 -
每期一个小窍门: 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 阅读 · 0 评论 -
每期一个小窍门: 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 阅读 · 0 评论 -
每期一个小窍门: 简单文件摘要工具类
有时候我们程序内部要进行文件传输, 为了安全考虑, 需要摘要校验.比如想传递文件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 评论 -
每期一个小窍门: 压测工具 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 评论 -
每期一个小窍门(006): k8s创建顶级权限cluster role
apiVersion: rbac.authorization.k8s.io/v1beta1metadata: name: admin annotations: rbac.authorization.kubernetes.io/autoupdate: "true"roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.iosubjects:- kind: ServiceA原创 2021-10-27 09:43:41 · 764 阅读 · 1 评论 -
每期一个小窍门(005) 如何快速排查启动失败的pod?
相信很多k8s的使用者都会被pod的报错信息所困扰这里写个小窍门帮助大家来越过这个大坑pod的生命周期和内部的指令是相同的, 这个指令优先级这里就不做讨论排查思路本质上就是用一个长生命周期的指令替代我们的业务命令, 因为长生命周期的指令可以让我们有足够的时间进入pod, 进入pod就好排查各种异常了, 可以手动重新执行业务命令看报错, 也可以查看挂载, 网络等情况.例如deployment的命令可以这样替换 command: - /bin/bash args: - '-c'原创 2021-10-26 15:10:13 · 553 阅读 · 0 评论 -
每期一个小窍门(004) 关闭selinux 和 swap
关闭swap分区【虚拟内存】并且永久关闭虚拟内存。swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab关闭SELinuxsetenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config原创 2021-10-14 10:02:15 · 478 阅读 · 0 评论 -
每期一个小窍门(003): mycat实现单库按月分表 (可以跨年)
在这一期的小窍门里, 分享一个简单好用的分库小中间件, mycatrules.xml (请增量式的修改, 不建议随意删除自带算法)这里声明了算法的监控字段, 注意这个sBeginDate, 要和后面配置文件的相对应, 不能早于或者晚于<?xml version="1.0" encoding="UTF-8"?><!-- - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not原创 2021-10-12 17:53:32 · 1164 阅读 · 0 评论 -
每期一个小窍门(002): 通过idea 配置自动生成 序列化ID
File -> Settings -> Editor -> Inspections -> 搜索 Serialization issues ,找到 Serializable class without ‘serialVersionUID’ ->打上勾,Apply->OK位置效果原创 2021-08-10 17:59:13 · 340 阅读 · 0 评论 -
每期一个小窍门(001): 一个简单优雅的redis 工具类 (最简单版本)
最近决定新开一个每期小窍门专栏, 向志同道合的朋友们互相分享一些小窍门, 小经验,这一期, 给大家一个非常简单好用的redis工具类, 非常轻量, 砍掉了很多不必要的功能, 如果需要比如过期的相关功能, 私信或下方评论发送.需要如下maven依赖, 如果用的其他的包管理工具, 也很容易找到, 都差不多的<dependency> <groupId>org.springframework.boot</groupId> <artifa原创 2021-08-10 18:23:06 · 373 阅读 · 3 评论
分享