自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

咸鱼老罗的博客

干活人的责任就是快速干活

  • 博客(187)
  • 资源 (4)
  • 收藏
  • 关注

原创 Prometheus MySQL 性能监控

Prometheus 是一种开源的监控系统和时序数据库,旨在收集和处理大量数据并提供可视化、监控警报等功能。它支持多种语言、多种部署方式,并且非常灵活,而且社区支持非常活跃,为用户提供了很多优秀的解决方案。MySQL 是一种流行的关系型数据库管理系统,用于存储和管理结构化数据。MySQL 数据库对于 web 应用程序、企业级应用程序和数据仓库等应用场景都非常适用。

2023-03-09 18:38:11 2809 2

原创 瞎更新,container_cpu_usage_seconds_total{job=“cadvisor“} 怎么没有啦

Container_cpu_usage_seconds_total(CCU)是容器资源监控中非常重要的一个指标,它可以帮助用户诊断容器应用程序的负载情况。它是定期统计容器已使用 CPU 时间总和,确切地计算容器中每个核心总体占用时间。这对于监视容器内运行的应用程序和进程的性能、优化性能以及准备扩展到容器集群和大规模架构来说,都是非常有用的。

2023-02-22 19:36:31 1164

原创 [golang] 实现 jwt 方式登录

JSON Web Token(缩写 JWT)是目前流行的跨域认证解决方案,原理是生存的凭证包含标题 header,有效负载 payload 和签名组成。用户信息payload中,后端接收时只验证凭证是否有效,有效就使用凭证中的用户信息。签名是通过标题 header,有效负载 payload 和密钥(后端保存,不可泄露)生成。JWT 介绍:https://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html。

2023-02-13 14:09:28 920

原创 grafana 画富集多个指标 label 的表格

grafana 表格 富集 指标合并

2022-11-27 11:46:39 1848

原创 linux 盘格式化并挂载

如果 linux 要格式化盘,需要先解挂,才能格式化,格式化的速度比 rm -rf 会快,作用一样。如果是初始化机器挂载盘(不要解绑操作),直接查看第三章挂载和第四章验证下面是需要涉及到的命令。

2022-11-09 07:43:52 3019

原创 prometheus 告警机制 - 我的告警为什么重发

为什么告警总在重复发,有时不重复发,怎么避免告警会在两种情况下重发告警 group 列表中告警有变更(增加或者减少)告警持续到 repeat_interval 配置的重发时间。告警 group 列表理解:在 alertManager 中,同 group 的告警,在 group_interval 的时间段内触发,会聚合到一个列表,如图一。当 prometheus 下次扫描告警规则时,发现告警列表中的告警(新增/恢复),才会触发告警。比如一个 group 的告警 A, B,C 在 30s 触发,聚

2022-03-24 00:02:45 2391

原创 prometheus 告警机制 -(为什么告警发的不及时)

为什么告警有时发的及时,有时发的慢监控发现异常到发出告警的时间与多个参数相关,包括采集间隔,扫描间隔,group 发送间隔,规则 for 等。告警的生命周期定期采集监控数据定期扫描告警规则,发现告警发给 alertmanager,prometheus 页面能看到 alert ,状态为 pending多次发送到 alertmanager,持续时长超过告警告警规则的 for 的 alert,prometheus 页面看到状态为 firing,准备发送。firing 状态的 alert 等待 gro

2022-03-24 00:01:36 2919

原创 Prometheus 实现 podDown 实时告警

一、需求每个 pod 重启/删除时,都能发出告警。要及时和准确。二、告警架构集群部署在 k8s 上,告警使用 Prometheus + alertManager + prometheusManager,helm 方式部署。实现根据 pod 容器状态判断,容器状态为 notReady 时,触发告警。需要注意的是缩短采集间隔到 15s,让重启 pod 数据别漏过去。告警规则alert: PodDown # 15s 采集 + 15s 扫描规则,规则是1分钟前存在 pod 为 not ready

2022-01-04 22:35:55 4005 2

原创 Elasticsearch 解决 log4j 安全漏洞 - 升级镜像

概论Apache Log4j 2 被披露出存在严重代码执行漏洞,目前官方已发布正式安全公告及版本,漏洞编号:CVE-2021-44228,漏洞被利用可导致服务器被入侵等危害。公司 ES 使用 Log4j 2 组件,存在安全问题,升级 ES 镜像中的 Log4j 2 版本解决该问题。原理java 项目只用替换编译出来的 jar 包就可以。快速教程下载 log4j-core-2.16.jar 和 log4j-api-2.16.jarhttps://repo.maven.apache.org/ma

2021-12-15 11:01:29 3323

原创 jar 迁移 mvn 私有库

将 jar 从一个 mvn 拉取,并上传到另一个 mvn 库去。拉取配置创建拉取项目文件夹,文件夹下创建 pom.xml,settings.xml 两个文件,填写拉取的 jar 和 mvn 库地址,执行 mvn install -s settings.xml 拉取 jar 到本地。创建 pom.xml<project> <modelVersion>4.0.0</modelVersion> <groupId>net.coding<

2021-11-02 13:10:38 211

原创 fluent-bit 按 pod 名生成不同索引

1. 实现效果如果 pod 名为 prod,输出索引名为 prod-2021.01.24EFK 版本:es 7.12, fluent-bit 1.7.5, kibana 7.122. 实现方式读取日志数据中 kubernetes.labels.app 数据,根据该数据直接生产新索引。fluent-bit 1.7 以上版本通过 output 中 Logstash_Prefix_Key 字段实现输出动态索引名比如采集日志为 {"key1": 1234, "kubernetes": {"labels

2021-10-11 20:45:37 1272

原创 springcloud trace SDK 自研方案

SDK 形式,利用 threadlocal 实现 trace。http, grpc, rabbitMQ, springcloud-gateway, 异步线程池这类常见场景。客户端在协议 header 中增加 x-request-id,服务端解析 header 中 x-request-id,存储在 threadlocal,日志框架格式化输出。java 服务只用依赖 common-tracing.jar lib。日志格式化输出 traceId 可以使用 MDC,各种协议支持可以考虑 springBoot

2021-08-24 16:47:03 483

原创 AI 写代码来了 - github 的 AI 写代码插件 copilot 发布

以前老在调侃 AI 自动写代码,没想到这么快就成现实。这几天 github 出了 AI 写代码插件,支持 vscode 编辑器,js,py,go 等语言,看了介绍,感觉可以满足生产使用,能节省很多工作量。不过还没有开放使用,需要提交审核。github-copilot AI 代码编辑器可以跟据方法名自动生成对应代码,节省代码编写时间;对于使用新语言,新框架的码农也有很大帮助,不用再去谷歌写法;还能自动写测试。审核通过后,一定要试用下。https://copilot.github.com/,官网预览介绍:

2021-06-30 11:56:29 9562

原创 OOM 很可怕吗 -- minio-client 上传文件触发 OOM 排错

不要把 OOM 问题当作一个可怕的难题,也许对着报错堆栈日志看代码就能解决。问题描述线上服务出现 OOM 的日志,日志显示是 minio-client 的错误。使用 minio-client 版本是 3.0.10。看代码得知是文件上传接口报错,在测试环境删除上传文件大小限制,上传 6G 文件,复现该问题。解决方案,client 升级到 7.0.2,手动设置分片大小。发生原因minio-client 对于没有指定大小的文件上传,会认为流大小为 5T,进行分片上传,每片大小为 5G。上传逻辑是将分片的

2021-03-29 11:13:38 1647 2

原创 一看就懂的 RabbitMQ 使用教程

一天,阿强接到一个需求,将公网的服务的执行结果通知到内网的服务上。阿强一想,很简单阿,只要在公网搭一个简单的消息服务,给公网系统提供一个存储消息接口;给内网系统提供一个查询消息接口,消息存在 mysql。内网服务跑个定时器,轮询查询接口。他麻溜的搭好服务,实现业务并通过自测。嗯,奈斯。这个项目的负责人阿明同学,看了阿强的实现,认为添加新服务增加维护部署成本,轮询每次都要查询数据库降低性能,推荐使用 RabbitMQ,并说服了阿强。阿强用 docker 启动一个单节点的 RabbitMQ,在管理台进行配

2021-02-25 15:14:03 660

原创 K3s 无法下载镜像 failed to authorize/ failed to fetch anonymous token/ unexpected status/ 401 Unauthorized

我需要部署公司功能节点进行测试,考虑自己的 mac pro 内存很小只有 16g, k8s 运行需要大量内存,电脑可能要卡死。周边同学推荐装 k3s,它可以看作 k8s 的精简版,删除了 k8s 许多不需要的功能,消耗内存小,适合笔记本运行测试。我通过 mulitupass 安装 k3s,教程,mulitupass 像个虚拟机,设置好内存和硬盘,里面安装k3s,我设置了的是 3g 内存。k3s 上通过 helm 拉取私有库的镜像,一直拉取失败,错误提示显示没有权限,“failed to authorize

2020-10-24 23:15:24 4934

原创 Cannot add task wrapper as a task with that name already exists - 问题解决

问题描述项目使用 ./gradle build 去打包,报错 Cannot add task 'wrapper' as a task with that name already exists ,使用 ./gradle clean,同样报错,使用linux服务器。Configuration on demand is an incubating feature.FAILURE: Build failed with an exception.* Where:Build file '/root/xx

2020-05-29 13:41:02 5372 1

原创 [微服务感悟] 很好理解的分布式事务

分布式事务跨服务的事务的处理。对于分布式事务,处理起来都比较麻烦,首先应该考虑是否可以避开分布式事务,如因为服务拆分过细而出现分布式事务,就应该把微服务合并成一个,并处理本地事务。tcc和事务管理器是两种十分常见的分布式事务模式,前者更适用于分布式的场景,后者无实现成功,框架可以傻瓜的解决一切。tcc分布式事务tcc是Try - Confirm - Cancel的简写,使用这种分布式事务,需...

2020-04-15 14:59:48 591

原创 参加2020Jam初赛记录与部分题目解答

Google Jam大赛是谷歌举办的一年一届的在线答算法题的的比赛。初赛比赛时长27小时,一共有5道算法题,总分100分,获得分数30分和以上者,就能晋级下一轮比赛。在这27小时内,选手可以多次进入jam的比赛链接,查看题目和提交代码,每道题可以提交多次。提交后,页面会实时反馈代码运行测试用例结果(通过/未通过),不过不会展示测试结果集。参加Jam的选手,进入前一千名有T恤发放;前三名奖励现金,一...

2020-04-12 15:15:03 488

原创 [微服务感悟] 服务雪崩与熔断器

介绍了微服务雪崩产生的原因,现象,简述两种解决方式,熔断器/仓壁模式

2020-01-14 16:49:05 339

原创 [微服务感悟] 服务发现与常见架构

文章目录什么是服务发现服务发现原始架构服务内集成网关架构统一网关架构(总线架构)service mesh微服务架构什么是服务发现既然要调用其他服务,首先知道每个调用的服务的ip和端口。怎么知道服务的地址,这个就是服务发现的作用。服务发现原始架构以前的做法是让运维给每个服务都配置一个域名,把域名映射到对应的每个节点服务器上,开发在项目的配置文件中写上每个服务和其域名,代码中拿配置文件的配置的...

2020-01-10 15:43:33 377

原创 [微服务感悟] 为什么会出现微服务

在以前大家都是在一个项目进行开发,所有的业务都在一起,全端和后台也在一起,那时这种开发模式称为单体程序开发。大家都开发在一个单体程序开发时,一部署也是整个服务一起部署,就必须保证每次上线不能存在一丁点儿的问题,因为一旦部署失败,整个服务都无法运行。而开发总会是存在bug的,所以每次开发结束,都有一次很长的测试并修复bug的阶段.我这前在一家软件开发公司,项目经理在分析需求之后,会设定一个又一个...

2020-01-06 17:16:38 601

原创 [代码优化]null校验的优美处理

我们写java代码的时候,使用对象前,都会下意识先判断对象非null,这是防止NPE的无奈之举,毕竟入门写代码时都写过npe的代码。这么做真的好吗,每层方法中都有这null的判断,导致很多null的判断都是重复的,我们对每个方法的返回都持有一个怀疑不确定的态度,是导致代码各个地方都有非null校验的原因。在严格的面向接口编程的语义中,通过接口方法我们就应该了解返回的是否会存在没有数据的情况,只有...

2020-01-03 11:58:57 980 1

原创 [微服务架构]及联问题和断路器

及联问题是一个很严重的问题,它的现象是多个业务共用一个资源池,如果其中一个业务访问外部系统,当外部系统响应缓慢,且访问量大的时候,这个业务会占用所有的资源池 ,导致其它所有的业务都无法工作。在微服务中,由于服务越来越多,从概率上说,其中某个服务发生概率的情况就越来越大。对于每个对其它服务的请求,我们都要考虑它可能会出问题,设计时考虑会不会产生及联问题,和发生了应该怎么处理,之前我在工作中就出现过...

2019-12-18 18:00:41 166

原创 [mockito使用教程]部分/内部方法

mockito有两种API实现部分/内部方法mock,分别是spy与callRealMethod()。spyspy会创建一个真实的对象,对象的方法都会被调用,除非你将某个方法打桩(stage),这个方法才不执行,走mock数据,下面是例子。List list = new LinkedList();List spy = spy(list);//对size打桩:when(spy.size...

2019-12-16 16:09:19 3811 1

原创 hashCode,MD5,SHA-1的区别和碰撞量级

在java中,默认使用hashCode生成对象的hash值,它在一定程度上可以作为对象的唯一表示。同时还有MD5,SHA-1这些也可以计算文件/对象的hash值,标志唯一,那它们之间有什么区别呢。hashcode,md5,SHA-1都是散列加密算法,其中hashcode长度为32位,md5为128位,sha-1为160位。位数越大,这个数据的数据量就越大,重复的几率越小,但是运算起来越复杂,消耗...

2019-11-19 14:49:09 4447 2

原创 源码追踪 - Gson解析部分属性值为null

接口返回的json数据,有些key的值是null,而断点调试返回对象是有数据的。原因是springMVC采用的gson做json解析,gson解析对象为json字符串时,对于对象中匿名内部类属性,会设Null值。解决方法是不使用匿名内部类对象。前端接收数据,实际对象是有值的。{ 'code':0, 'data': { 'filter':[ null, n...

2019-11-04 15:14:07 1123

原创 docker使用学习笔记

docker介绍docker是个容器,采用沙盒启动,类似虚拟机。docker的架构是C/S,远程仓库存放image(镜像),本地下载image(镜像),并根据image(镜像)本机创建container(容器),一个容器就是一个运行的系统。docker可以执行--help来查看命令APIdocker start --helpdocker下载后需要启动守护进程,它会跑着本机后台,启动...

2019-10-31 14:47:03 342

原创 macos命令行启动docker服务

通过 launchctl 查看 docker server, 记住docker server 名launchctl list | grep docker111117 0 com.docker.docker.2388然后关闭和启动它。launchctl stop com.docker.docker.2388 && launchctl start com.d...

2019-10-31 14:25:12 51545 8

原创 java多线程实现原理

java内存模型java的内存模式 线程 - 工作内存 - 主存。线程会读写工作内存,CPU会周期性的将工作数据刷入主存,如果多个线程写工作内存,就会导致每个线程的工作内存、主存内存数据都不一致,最终导致执行结果无法预期。线程1 —|工作内存|—> [ ] [ 主存 ]线程2 —|工作内存|—> [ ]happen...

2019-08-13 17:37:33 351

原创 分布式锁的实现以及在定时器中的应用

分布式锁是为了保证分布式各系统对于资源的强占,独占。分布式锁的设计与多线程锁设计一样,都是通过一个信号量,对它进行CAS(compare and set)原子操作来实现乐观锁,或通过一个独占锁实现悲观锁,悲观锁不推荐。乐观锁乐观锁的核心是通过信号量代表资源,通过CAS的操作去标志改信号被占用。CAS成功,代表资源没有被占用,执行任务;CAS失败,代表资源被占用或处理过,不执行改资源。ture...

2019-06-27 11:41:38 834

原创 java自测心得、技术选型和实现方式

程序员自测是很重要的一个环节,我认同测试驱动开发的理念,经过一段时间的测试代码的编写,发现测试代码需要保证几点,1.测试代码可重复跑,不能跑过一次,改了数据库数据就不能跑了。2.测试代码写好后,尽可能保持不变,哪怕代码变后,直接跑测试就能验证修改是否正确,而不是把测试代码,测试数据再改一遍。service层测试要与数据库解耦,不能因为数据库数据的变化影响测试,我曾经使用int.sql去对数据库做i...

2019-05-15 10:41:55 978

原创 jdk源码-HashMap

AbstractMapAbstractMap是Map接口的抽象实现类,通过抽象方法keySet()实现了get(key),remove(key),containsKey(key),containsValue(value)的基本算法,遍历加equals。HashMapHashMap是AbstractMap的一个实现类,1.8之后对其进行了重写,加入TreeNode的结构,原因是存在使用不当的h...

2019-04-18 16:47:43 202

原创 jdk源码-Map与HashTable

Mapmap是一个接口,是一个映射着key和value关系的容器,从定义上看,map不能包含重复的key,一个key最多只能映射一个value。map是否有序取决于它的实现类,treeMap是有序的,hashmap是无序的。对于map不支持的操作,会报UnsupportedOperationException。map接口不会限制key和value是否可以为null,不会限制一定用equals...

2019-04-18 16:44:35 159

原创 Python股票实时查看告警工具

需求设计股票实时查看告警工具需求每次想看股票的时候都要拿出手机,或者打开股票软件,这个过程一般都比较长,很容易打断连贯的代码思路,并且股票软件都有太多广告信息,诱惑信息,让人忍不住去点,浪费很长时间,同时也杂多的信息,容易让人陷入FOLO的心态,活生生成了韭菜。第二个需要一个告警通知,某某股票到了我设定的告警值,我可以加仓或者斩仓了。功能查看实时自选股票价格股票阀值告警实时自选股...

2019-04-12 20:59:04 1706

原创 Python上手学习

python的语法简单,可以很好提高个人生产力。我花了2天的时间重零开始学习python,目前已经能做爬虫了。这篇博客是不管原理,直接干,直接梭的学习博客。安装pythonmac系统中默认安装一个python,一般是python2,但是python2已经过时,需要下载python3。打开终端,输入python --version # 查看python version brew sear...

2019-04-01 11:26:24 704

原创 jdk源码追踪-LinkedList

关于List接口的类结构和AbstractList的讲解,可以看看上一篇文章jdk源码追踪-ArrayList。AbstractSequentialListAbstractSequentialList使用迭代器来实现get(int index), remove(int index), add(int index, E e)基本算法。迭代器是实际调用抽象方法listIterator,需要子类实现...

2019-03-29 16:30:21 244

原创 jdk源码追踪-ArrayList

ListList是有序列,所以定义的接口中都有基于index的各种方法。public interface List<E> extends Collection<E> { E get(int index); E set(int index, E element); void add(int index, E element); E remo...

2019-03-29 16:29:14 327

原创 jdk源码追踪-Collection

CollectionCollection接口是java最基础,重要的接口之一,它有List,Set,Queue等Java最常用的子接口,这里主要解析Collection这个接口以及它最常用的类的源码实现。上面是collection的类图Collection是集合的父接口,它规约了集合有add(E e),remove(Object o),size(),toArray(),iterator()...

2019-03-29 15:16:13 198

原创 ArrayList为什么要自己实现迭代器

ArrayList的父类AbstractList已经实现了Iterator接口,而且LinkedList使用AbstractList的Iterator,而ArrayList要自己实现Iterator接口?ArrayList实现Iterator,是为了避免ArrayList在迭代过程中数组结构发生变化的而产生的问题,这个处理机制称为Fail-Fast机制,实际是一个乐观锁,实现如下。ArrayL...

2019-03-07 18:44:52 1121

清除百度广告的浏览器插件

清除百度广告的浏览器插件,开发教程:http://blog.csdn.net/luo4105/article/details/77193828;源码地址:https://github.com/programluo/cleanbaidu

2017-08-28

dubbo-admin-ROOT.zip

这个是dubbo管理工具dubbo-admin,拿出来就可以用,0分分享给大家了,如果要分了,告诉我,我来改

2017-04-20

comment2name.vbs

把powerdesign的comment转成name的脚本,我自己写的,0分分享给大家了,使用方法:https://blog.csdn.net/luo4105/article/details/51383416

2016-05-17

name2comment.vbs

powerdesigner的名字转成comment的vbs,我自己写的,0分分享给大家了,使用方法:https://blog.csdn.net/luo4105/article/details/51383416

2016-05-17

空空如也

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

TA关注的人

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