自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (4)
  • 收藏
  • 关注

原创 Redis集群主备切换原因排查

Redis集群主备切换原因排查

2023-11-21 16:51:08 258

原创 Java 正则提取短信签名

使用java正则表达式提取短信签名。

2023-03-31 10:55:32 314 1

原创 java获取短链short-url最终跳转地址

【代码】java获取短链short-url最终跳转地址。

2023-03-30 11:31:36 688

原创 Redis 集群hash槽分配不均问题(实战)

公司redis集群采用3主3从分片集群,随着公司业务量增大,发现3个分片服务器占用内存相差很大,有2台服务器几乎把服务器内存占满了,另一个服务器基本上没有占用什么内存。

2023-03-10 17:46:48 889

原创 离线安装Docker镜像

部分线上服务器无法连接公网,或者服务器下载镜像比较慢,遇到这种情况要怎么解决?

2022-11-22 16:10:03 2676

转载 Springboot整合Nacos配置中心 多环境配置

Nacos多环境的配置

2022-11-21 16:22:13 2367 2

原创 mongodb 聚合Aggregation分组group汇总索引问题

mongo很多知识点在网上搜到的都是比较基础,很多都是告诉你Aggregation聚合基本用法,一些复杂一点的用法,还是得自己去看官方文档比较靠谱,之前遇到的几个MongoDB问题,都是通过查看官方文档解决的,官方文档也比较详细。

2022-11-09 22:03:21 2390

原创 springboot AOP记录操作日志(包含遇到的问题)

项目上需要对一些重要的接口记录操作日志,便于历史问题追踪、排查。主要记录的字段有操作人、请求ip、操作时间、模块、功能、请求参数、请求结果等。

2022-11-01 21:52:35 1361

转载 RocketMQ的消息优先级

有些场景,需要应用程序处理几种类型的消息,不同消息的优先级不同。RocketMQ是个先入先出的队列,不支持消息级别或者Topic级别的优先级。业务中简单的优先级需求,可以通过间接的方式解决,下面列举三种优先级相关需求的具体处理方法。......

2022-07-15 17:09:40 1800

原创 mongo 内存占用过大被系统自动关闭问题

线上有一个应用使用到mongo(v 4.4.4),平常系统业务量比较少,系统使用起来没有任何问题,最近今天系统业务量突然增多了。发现mongo挂掉了,重启之后,第二天又挂了。从查询结果可以看出来, “Out of memory: Kill process 24567 (mongod)”,表示mongod占用内存过高,系统自动kill掉mongo了。通过查阅资料(In-Memory Storage Engine — MongoDB Manual),mongo存储引擎默认最大内存为服务器内存50%-1GB

2022-06-12 19:31:21 1473

原创 记一次MQ并发消费导致任务状态异常问题

项目中有一个短信群发任务(例如1次要发送1W条短信),系统会获取任务中每一条短信的MQ并发发送短信。任务默认状态是未发送(状态码:0),需要在这一批任务发送第一条短信的时候,将任务状态修改为发送中(状态码:1),在任务发送结束将状态修改为发送完成(状态码:2)。伪代码如下,通过redis记录当前任务已发送了多少条,如果是第一条,则将任务状态更新为发送中,如果已发送条数等于任务总条数,将状态更新为发送完成代码这么写,简单测试了两个任务,发现没有问题实际线上运行的时候,发现部分任务始终是发送中状态,错误日

2022-06-12 09:28:57 472

原创 java json字符串转map 字段顺序错乱问题

<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.73</version></dependency>默认可以使用JSON.parseObject将字符串转成Map,但是如果json中有多个key-value,则转换后的顺序可能颠倒。如下 p.

2022-05-18 17:38:53 2036 2

原创 java提取文本中的url(没有http或https也能提取)

java 提取文本中的url

2022-04-18 16:09:55 2357 4

原创 mongodb大批量删除数据的方案对比

业务背景系统中有个mongodb集合每天增长上千万,时间长了,系统中这个集合已经有几亿数据了,需要写一个定时任务,把集合中三个月前的数据删除,并且后面每天凌晨执行这个定时任务.方案分析方案一使用Mongo的游标MongoCursor,遍历获取集合id获取id列表idList,然后根据idList批量删除方案二使用mongoTemplate.find,每次查询1万条数据,遍历获取集合id获取id列表idList,然后根据idList批量删除代码片段方案一 /**

2021-09-10 17:57:49 3731

原创 Redis+Lua限制发送量及遇到的坑

业务中需要限制每个账号每天发送短信数量,如果没有超过设置的发送量,则正常发送,否则返回失败。解决思路:将账号ID+yyyyMMdd组成redis的key,value为当天的发送量。 在发送前获取账号ID+yyyyMMdd的值,如果没有超过发送量,则账号ID+yyyyMMdd对应的值+1,发送短信,如果账号ID+yyyyMMdd对应的值大于发送量,则返回失败。 设置账号ID+yyyyMMdd的过期时间为1天。 考虑并发问题,“查询账号ID+yyyyMMdd的值”和“账号ID+yyyyMMdd对应

2021-08-25 17:39:40 533

原创 Springboot快捷导入/导出excel

目前见过最方便的导入/导出excel的方法,直接上代码。pom引用: <dependency> <groupId>com.pig4cloud.excel</groupId> <artifactId>excel-spring-boot-starter</artifactId> <version>0.4.1</version> ..

2021-08-12 18:11:31 606

原创 java 手机号运营商号段正则匹配(长期更新)

import com.cq.mysmscommon.enums.SpTypeEn;import java.util.regex.Pattern;public class MobileOperator { /** * 中国移动号码正则 * 139、138、137、136、135、134、147、150、151、152、157、158、159、178、182、183、184、187、188、198、195、172 * 虚拟运营商号段: 1703、1705、170.

2021-08-12 17:56:59 588

转载 zabbix 配置企业微信告警群机器人告警

一、企业微信端配置1、创建微信群机器人在需要接收告警信息的企业微信群上右键(注意群里成员至少要3人以上),选择“添加群机器人”,设置机器人名称,系统自动生成此机器人的webhook地址,请记住该地址,不要随便给其他人,以免无关人员通过此地址推送垃圾信息!2、查看群机器人webhook信息,后面需要用到。二、告警脚本配置ps:zabbix利用python脚本给企业微信机器人推送告警信息~1、登录zabbix server服务器,查找并进入zabbix告警脚本调用目录g

2021-04-07 09:00:40 3040

原创 zabbix 5.0 监控内存、CPU、磁盘空间

内存vm.memory.free[percent] 100*last("vm.memory.size[available]")/last("vm.memory.size[total]")CPUsystem.cpu.util[,,]{Template OS Linux by Zabbix agent:system.cpu.util[,,].last()}>=80磁盘空间vfs.fs.size[/,free]{Templ...

2021-04-07 08:54:58 3705

原创 java文本敏感词、关键字搜索检测

背景在做一些跟内容相关的项目的时候,经常需要对内容文本中的内容进行检测,检测文本中是否包含某个敏感、违法等词汇,例如“贷款”、“发票”之类的。有些狡猾的用户可能知道“贷款”在你的系统中是敏感词,不能审核通过,便使用“贷 款”、“贷$款”、"贷;款"等这种方式故意欺骗你的系统,让你的系统无法简单找出这些敏感词。解决方案解决方案一:使用List的contains方法检测文本中是否有敏感词这个是最容易想到的,将所有敏感词存放在List中,每次需要检测文本中是否有敏感词的时候,for循环list列表

2021-03-30 20:07:31 7667

原创 linux 端口转发工具rinetd安装和使用

在服务器上做端口转发,用得最多的就是nginx,我所在的项目中大部分前端、后端路由也都是通过nginx转发的。大致流程为:但是我个人使用nginx最多的还是http转发,如下图,/api/back开头的路径转发到http的8105端口,其他的路径转发到前端/home/admin/back/dist目录下但是实际项目中,经常会遇到一些非http协议的转发,例如netty客户端和服务端的连接,中间需要做一个中间转发层,搜索资料说可以使用nginx的Stream配置(大概代码如下),但是实际在实践

2021-03-27 17:45:56 3375 2

原创 nginx格式化工具

有时经常在服务器上修改nginx配置文件nginx.conf,然后执行nginx检查命令./nginx -t,没什么问题就执行./nginx -s reload重启。虽然也没有什么问题,但是时间长了,修改的次数多了,nginx.conf格式变得很乱,不方便排查问题或者下次修改的时候容易修改错。于是在网上搜索怎么格式化nginx.conf文件,大概搜到以下几种办法:1、在线格式化http://www.html580.com/tool/nginx/index.php试用了下,可以使用,但是有两点

2021-03-27 17:07:30 5864 2

原创 springboot mongodb 批量(bulkOps)插入或更新(upsert)数据

参与的项目中有一个业务场景,有两个消费者从kafka中拉取数据消费:1、订单消费者:从订单队列中拉取订单数据,插入到mongodb,集合名称为order(主要包含id、orderNo、orderName、status)2、订单状态消费者:从订单状态队列中拉取数据,更新order集合中的状态字段(status)存在问题:1、订单状态消费者消费依赖于订单消费者,如果订单消费者消费速度慢了,订单还没有插入到mongodb中,订单状态根据订单号orderNo去更新数据,则会找不到订单数据...

2021-02-25 17:00:19 13201 1

原创 springboot基于caffeine多级缓存设计

目前参与的项目中有一个对外接口,客户通过apikey请求接口,项目中需要判断apikey是否存在我们系统中,为提升apikey判断速度,决定用caffeine将apikey->User缓存在本地。大致校验流程如下:具体代码如下:CacheConfig.java定义userCache和errorApikeyCache两个缓存,其中userCache用来存apikey->User数据,errorApikeyCache用来存无效的apikey(设置一定过期时间),防止客户用相同无

2021-02-24 11:22:37 364

原创 Java 动态创建枚举

定义动态枚举创建工具类package com.cq.xxx.util;import sun.reflect.ConstructorAccessor;import sun.reflect.FieldAccessor;import sun.reflect.ReflectionFactory;import java.lang.reflect.AccessibleObject;import java.lang.reflect.Array;import java.lang.reflect.Fie

2021-02-24 10:46:24 1333 2

转载 mongodb 性能调优

1. 性能优化分类mongodb性能优化分为软件层面和操作系统层面。软件层面,一般通过修改mongodb软件配置参数来达到,这个需要非常熟悉mongodb里面的各种配置参数;而操作系统层面,相对简单点,主要是修改操作系统参数,比如说:关闭传输页缓存、使用SSD替代机器硬盘等等。2. 软件层面优化2.1设置WiredTiger的cacheSizeGB通过cacheSizeGB选项配置控制WiredTiger引擎使用内存的上限,默认配置在系统可用内存的60%左右。如果一台机器上只部.

2021-02-20 15:38:03 5165

原创 springboot redis使用lettuce配置多数据源

目前项目上需要连接两个redis数据源,一个redis数据源是单机模式,一个redis数据源是分片集群模式,这里将具体配置列一下。项目用的springboot版本为 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <ve

2021-02-20 15:12:20 2055

原创 redis内存清理实践

在日常开发过程中,经常将一些缓存数据临时缓存在redis中,但是如果redis中的缓存数据忘记设置过期时间,随着时间的推移,我们会发现redis所在的机器占用内存越来越多,这时必须要找出redis中占用内存过多的数据,并清理。当遇到redis内存占用过多情况时,大概从以下几个步骤分析:一、查看系统内存使用情况[xxx@xxxxxxx bin]$ ./redis-cli -p 9001 info memory# Memoryused_memory:22504000856used_mem

2021-02-20 14:58:43 2120

原创 ODPS for-each 循环功能使用

背景:业务场景中有个任务每天运行一次,在第二个月的时候,需要把上一个月的某个任务每天重跑一次。正常情况下,需要在第二个月,手动补数据,选择补数据时间为上个月第一天到最后一天,重跑即可。由于不想每个月都手动重跑,查了下ODPS文档,觉得for-each这个功能应该是能满足需求。具体实现过程:1、定义一个日期表,包含月份和日期CREATE TABLE IF NOT EXISTS dim_everyday( month STRING COMMENT '月份,yyyyMM',

2020-08-21 17:05:55 3589

原创 ODPS 分组排序 筛选第一条数据

ODPS分组排序与普通SQL语法类似,可参考以下SQLSELECT * FROM ( SELECT err_code , chan , desc_cn , ROW_NUMBER() OVER (PARTITION BY err_code,chan ORDER BY err_code) AS rn FROM dim_yp_sms_error_code_format) tmpWHERE rn =1;根据err_code和chan分组排序,然后取分组排序后每组第一条数据。my

2020-08-21 16:34:39 2369

原创 ODPS 补数据 周月实例空跑周期 问题

在ODPS上补数据的时候,补按周运行或按月运行的任务的数据的时候,会经常出现“周月实例空跑周期”,例如:某个任务指定每月4号运行一次于是设置补数据时间为2020-05-04查看补数据结果的时候,会发现状态为“周月实例空跑周期”正确做法是补数据的时候选择指定时间的前一天,例子中的任务应该选“2020-05-03”才可以正常补数据。...

2020-08-21 16:27:23 861

原创 ODPS 将列中逗号分隔的数据展示为多行数据

ODPS 中有的列有数据是逗号分隔的数据,需要转化为多行数据,方便与其他表关联查询。效果如下:原表err_code desc_cn chans ST001 签名匹配失败 -1,-2,-3 结果表err_code desc_cn chan ST001 签名匹配失败 -1 ST001 签名匹配失败 -2 ST001 签名匹配失败 -3 可以借助ODPS mapjoin和自增表实现该功能。实现主要参考.

2020-08-21 16:19:04 2358 1

原创 AWS marketplace 卖家使用指南

什么是 AWS Marketplace China?AWS Marketplace China是宁夏西云数据科技有限公司(“西云数据”)专为AWS中国区域云服务部 署并运营的在线软件商店。客户可以在AWS Marketplace China查找、订购并立即使用用于构建产品 和经营业务所需的软件和服务。简单点说,就是卖家在自己的操作系统上将自己的相关产品安装到操作系统上,打包成镜像,发布到AWS marketplace上供买家使用。买家在启动一个新的AWS EC2服务器实例的时候,可以选择自...

2020-06-13 09:04:51 1926 2

原创 阿里云实时计算 开发流程

这里主要结合自己使用阿里云实时计算平台的经验,介绍下阿里云实时计算开发流程,虽然阿里云实时计算有官方文档,但有些地方对于新手来说可能有些难于理解。第一次使用阿里云实时计算的同学可以参考。我所在的项目使用阿里实时计算大概的一个链路是:程序在服务器打印log日志—>阿里云日志服务收集各服务器日志解析—>阿里云实时计算平台实时统计各参数指标—>统计结果回流到mysql库—&gt...

2020-04-04 23:16:54 610

原创 实时计算 Watermark概念

Watermark中文翻译为“水位线”,在流计算中用得很多。如下图,是我在使用阿里实时计算平台代码中用到的水位线。CREATE TABLE log_submit ( aid VARCHAR, bid VARCHAR, …… WATERMARK FOR log_time AS withOffset (log_time, 10000) -- to add your columns...

2020-04-04 22:50:03 782

转载 MySQL gap锁(next-key lock)

mysql在可重复读(Repeatable Read)隔离级别下,会产生间隙锁(gap lock),其他隔离级别不会产生这个问题。问题描述表初始化CREATE TABLE z ( id INT PRIMARY KEY AUTO_INCREMENT, b INT, KEY b(b)) ENGINE = InnoDB DEFAULT CHARSET = utf8;...

2020-03-22 21:48:55 1357 1

原创 mybatis-plus 根据数据库主键定义字段类型

查看mybatis-plus源代码IdTypepackage com.baomidou.mybatisplus.annotation;public enum IdType { AUTO(0), //数据库自增 依赖数据库 NONE(1), //表示该类型未甚至主键类型 (如果没有主键策略)默认根据雪花算法生成 INPUT(2), ...

2020-03-22 21:38:42 1775

原创 mysql 读写速度测试工具 sysbench

为了测试mysql的读写速度(tps、qps、iops),可以使用sysbench测试,从阿里云RDS的官方文档可以发现,阿里云的RDS也是采用该工具测试。具体使用方法:1.准备数据sysbench /usr/local/Cellar/sysbench/1.0.16/share/sysbench/oltp_read_only.lua --mysql-host=xxx --mysq...

2020-03-22 21:30:39 1163

转载 JAVA 性能调优相关命令

线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top 三连,然后依次jstack、jmap伺候,具体问题具体分析即可。CPU一般来讲我们首先会排查cpu方面的问题。cpu异常往往还是比较好定位的。原因包括业务...

2020-03-22 21:06:19 428 1

原创 odps MAPJOIN操作

MaxCompute SQL不支持在普通JOIN的ON条件中使用不等值表达式、OR逻辑等复杂的JOIN条件,但是在MAPJOIN中可以进行上述操作。SELECT /* + MAPJOIN(b) */ a.err_code ,a.desc_cn ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.chans,',',b.Au...

2020-03-21 00:59:46 2596 1

excel-demo.zip

springboot 上传下载excel,目前见过最方便的处理方式。在普通查询方法上添加一个注解即可下载成excel,在参数上加一个注解即可自动解析上传的excel。

2021-08-12

springboot-stripe-demo.zip

使用springboot 开发Stripe支付的一个demo,大家可以下载参考一下,博客地址:https://blog.csdn.net/maxi1234/article/details/105002346

2020-09-08

sysbench-1.0.zip

mysql读写测试工具,可以测试数据库的读写速度(tps、qps、iops),该软件在读写速度测试方面用的比较多,阿里云rds文档中也是用这个软件进行测试的。

2020-06-13

将逗号分隔的字符串转换为行记录.rar

excel将逗号分隔的字符串转换为行记录,使用excel宏(VBA)循环实现,亲测可用,欢迎下载使用!!!

2019-11-26

空空如也

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

TA关注的人

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