工作纪实
差不多程序员
java程序猿
展开
-
Gitlab代码回滚
在当前branch上多次commit代码并且push后,发现不符合要求,需要回滚到特定的版本。步骤如下:1.git log 找到要回滚的提交版本2. git reset --hard {commitId}$ git reset --hard d580ea7dab097d8ea6d658adbc7e9d57ef22669a EAD is now at d580ea7da add a constellation test casegit push -f本地回滚之后,需要将改变推送到服务器,执原创 2021-07-02 17:09:00 · 779 阅读 · 0 评论 -
工作纪实53-log4j日志打印文件隔离
指定了包的日志输出,又指定了这个包下面子包的日志输出,如果在子包的定义标签上加上additivity=false,那么子包中的日志不会打印在父包中,只会在子包中输出。在项目中,我有一堆业务日志需要打印,另一部分的日志,是没有格式的,需要被云平台离线解析并收集到kafka或者hdfs、hive等,需要将日志隔离打印到不同的文件。算法同学希望单独在dump.log中进行日志打印,而后他们去配置采集的逻辑,发现web.log居然也有dump.log的日志,重复打印了;关键代码:additivity。原创 2024-07-19 17:38:57 · 377 阅读 · 0 评论 -
工作纪实52-jar包冲突
项目种RPC调用,引入服务方的jar包依赖不规范时,引入后会存在很多的包冲突。原创 2024-07-15 11:07:08 · 150 阅读 · 0 评论 -
工作纪实51-手撸AB实验分流策略
前几天写了一篇关于哈希算法的文章,起源就是在构思AB实验平台的时候,用到了哈希,所以对其做了深入的了解AB实验平台是一般互联网做策略、样式实验会用到的一个系统,一般开启某个实验之后,需要对线上流量进行分流:客户端->实验平台->策略平台->应用服务,大概是这个链路。原创 2024-06-28 18:02:10 · 1164 阅读 · 2 评论 -
工作纪实50-Idea下载项目乱码
下载了公司的一份项目代码,发现是gbk格式的,但是我的日常习惯又是utf-8,下载项目以后全是乱码,脑瓜子疼借用网友的一张图,如果是一个一个文件这么搞,真的是蛋疼,好几百个文件!原创 2024-05-28 21:59:16 · 300 阅读 · 0 评论 -
工作纪实49-集合业务数据合并
最近在做推荐相关的一些接口,核心处理流程:prepare=>process=>post;使用接口编程但是在prepare阶段往往存在很多的信息拼接的过程,而我想让整个外部的处理结构平顺,且不想让后续的同事掺杂私活;因此有了这个博客;再次说明一下我的场景:1.prepre阶段需要从两个数据源获取数据,都是Video数据,但是有不同的组成部分,拼接起来就是完整的Video,且都是多线程2.在process阶段必须要拿到完整的数据。原创 2024-05-22 10:49:28 · 310 阅读 · 0 评论 -
工作纪实48-log4j日志隔离
接到一个需求,需要对日志数据进行打印(区分主日志文件,只输出跟特定业务相关的数据),以便kafka可以对文件进行数据抽取,存储到hive;虽然log4j用的很多,但是有时候真自己配,还是有点生的,记录一下。原创 2024-05-16 19:15:46 · 311 阅读 · 0 评论 -
工作纪实47-关于线程使用的几点思考
在某些个人认为不是瓶颈的中间件使用比如redis的mget或者pipelineGet都偶尔超过10ms甚至30ms;最近线上存在一些cpu的锯齿情况,类似于推荐项目就一个核心接口,业务逻辑和计算链路很长;原创 2024-03-29 15:55:41 · 258 阅读 · 0 评论 -
工作纪实46-关于微服务的上线发布姿势
微服务,发布上线,升级原创 2024-03-07 15:39:09 · 399 阅读 · 0 评论 -
工作纪实45-记一段多线程批处理的代码
多线程、批处理原创 2024-02-29 13:49:38 · 108 阅读 · 0 评论 -
工作纪实41-多线程写了一段还不错的代码
最近换的部门,对接口性能要求非常高,单台机器的qps高峰大概在300左右,导致我非常谨慎,各种catch和兜底。遇见个场景,2个线程处理任务,必须都在10ms内返回(一共10ms),如果返回不了,就不处理;原创 2023-12-29 17:50:56 · 373 阅读 · 0 评论 -
工作纪实40-内存飙高(线上问题大乱斗)
内存飙高原创 2023-12-28 17:53:07 · 373 阅读 · 0 评论 -
工作纪实40-使用redis的几种姿势
线上查问题看某个redis的key值,记录一下。1.直接使用telnet进行连接(贼拉方便)2.使用redis-cli连接。网上一大堆,不做说明。原创 2023-12-28 14:50:49 · 666 阅读 · 0 评论 -
工作纪实39-排查CPU飙高(业务慢查询)
cpu飙高场景原创 2023-12-27 10:21:33 · 553 阅读 · 0 评论 -
工作纪实38-排查cpu彪高(死循环)
昨天晚上上线了一个服务,第二天发现CPU持续飙高到70~90%,触发平台的自动扩容,后定位出问题后降低到3%此处由于没有保留现场信息,实际查询的线程栈,可以观察到业务类的X行定位信息,定位死循环。0x926: 线程id,0x是16进制,926是第3步得到的线程id。2125是服务进程的pid,jps可以查看。4.查看对应线程栈信息。原创 2023-12-19 15:28:36 · 386 阅读 · 0 评论 -
工作纪实37-mybatis-plus关闭结果集输出log
1.springboot+mybatis-plus+logback.xml组合,运行mapper会把sql查询会把结果也打印出来),但是就是不想让它输出到控制台,今天就来记录一下如何操作才能不把sql结果集打印出来,当然sql语句还是会打印的。:注释掉yml中mybatis-plus configuration log-impl输出到控制台的配置;修改后再次查看sql打印情况,发现只有sql语句、参数、结果集中数据的数量被打印出了,效果达到。:在yml中增加log4j日志的配置。原创 2023-08-22 01:25:01 · 2194 阅读 · 0 评论 -
工作纪实36-ES查询条件过长
1.设置es配置文件elasticsearch.yml。错误信息提示:最大子句数量限制为1024。原创 2023-07-28 18:34:05 · 826 阅读 · 0 评论 -
工作纪实35-API做数据清洗限流
接口调用三方服务做异步数据清洗,但是怕把别人的服务调崩了,对接口加入Guava的限流策略。并发情况下,可以保证流速。原创 2023-07-28 10:45:37 · 109 阅读 · 0 评论 -
工作纪实34-emoji表情包存储异常,修改db的字段类型
线上问题,发现emojo表情写入数据库出现异常。修改mysql字段的字符集。原创 2023-07-27 22:38:55 · 205 阅读 · 0 评论 -
工作纪实33-给定数据区间对应的指标类型,根据当前值命中数据区间
背景: 给定一个数值value和数据连续区间[0,10,100],判断对应值是否达标。思路:左侧右侧各加入一个值,循环判断数据区间。原创 2023-06-30 11:20:02 · 117 阅读 · 0 评论 -
工作纪实-32-lambda多字段排序
参考文献:https://www.cnblogs.com/east7/p/17180704.html。原创 2023-06-15 19:24:38 · 97 阅读 · 0 评论 -
工作纪实-33-日期函数大乱斗
公司最近要做数据指标的统计,周同比和月同比一些时间换算分析,日期函数大乱斗。原创 2023-05-23 09:53:27 · 58 阅读 · 0 评论 -
工作纪实_32-倒排期需求python实用性上场
为了更好的将精力放在业务实现上,因此写了一个python来处理这种数据导入的问题,java写实在是太麻烦了,不管是POI还是easyExcel,而且最主要是这个后面完全会调三方接口来做,只是一个过渡期,大pyhton上场。产品提了一个倒排期需求,业务完成度和时间都有一定要求;必须完成,且有一部分数据是通过excel进行导入,且数据不算太大,但是列很多,一个月导一次。写个插入接口,齐活!原创 2023-05-12 14:27:15 · 129 阅读 · 0 评论 -
工作纪实-31-Excel之VLookUp函数关联查找合并两批数据
背景:有两批数据,第一批:任务总个数,第二批:任务完成数,需要统计出每个门店的任务完成率。原创 2023-05-05 23:33:23 · 414 阅读 · 0 评论 -
工作纪实_30-MQ消费redis延时处理合并消息
公司的上游数据,通过MQ给我们做数据同步,但是消息存在各个业务节点,且短时间内可能发送多次,并且我们收到消息反查上游服务时,他们的业务数据存在一定延时,这就导致收到的消息,并不一定是他们最新的。原创 2023-04-04 15:43:05 · 248 阅读 · 1 评论 -
工作纪实_29-SpringBoot启动配置使用jvm参数
【代码】工作纪实_29-SpringBoot启动配置使用jvm参数。原创 2023-03-28 20:07:43 · 812 阅读 · 0 评论 -
工作纪实_28-lambda复杂表达式
lambda复杂处理原创 2022-10-08 00:00:26 · 141 阅读 · 0 评论 -
工作纪实_27-ES处理text字段对应的List<String>存储以及精准/模糊搜索
最近在工作中需要对ES新增一个在java中属于List的es字段,搜索这块需要去处理精准和模糊匹配的问题。转载 2022-08-25 14:14:29 · 1923 阅读 · 0 评论 -
工作纪实_26-SpringCloud网关代理服务配置负载出现gateway IllegalStateException: Invalid host lb://xxxxx
SpringCloudGateway网关配置:spring: cloud: gateway: #开启基于注册中心的路由表且支持实例名小写 discovery: ## 是否可以通过其他服务的serviceId来转发到具体的服务实例。默认为false locator: enabled: false # 是否支持serviceId小写模式 lower-case-service-id:原创 2021-03-26 18:57:53 · 1109 阅读 · 0 评论 -
工作纪实_25-SpringCloud整合sentinel问题汇总
sentinel官方文档1.纠结于sentinel 包的引入很多文章、资料都贴着下面的包<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-annotation-aspectj</artifactId> <version>1.6.3</version></dependency><depen原创 2021-02-23 16:22:10 · 746 阅读 · 2 评论 -
工作纪实_24-使用@Sl4j注解但是确无法使用log.info打印日志
如果出现这种情况,第一时间先执行打包命令,这么做是为了检查log日志包是否齐全,此次我打包报错是找不到org.slf4j包,很明显,我们检查一下相关的依赖即可:<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>2.0.0-alpha1</version></dependency原创 2021-02-22 16:44:49 · 1858 阅读 · 1 评论 -
工作纪实_22-搭建分布式项目时使用spring-session替代token
分布式微服务`解决方案分布式环境下,用户登录后的状态信息,一般有两种解决方案:1.Token步骤:使用公钥、私钥对token进行相应的解密和加密操作,再通过网关层将用户信息通过header传递到各个服务,客户端服务接收到请求时候,解析header即可2.服务之间的feign远程调用,通过网关层传递的请求中的header信息,解析出用户信息的同时,利用fein将用户信息透传到其他服务2.分布式Session单体服务下,session可以很好的帮助我们解决用户身份的会话状态问题,因为此刻我们只原创 2021-01-21 17:26:02 · 713 阅读 · 0 评论 -
工作纪实_21-搭建脚手架对spring注解bean顺序管理引发的思考
最近在给公司搭建一套脚手架,其中有对一些通用功能,比如shiro授权模块的代码,以及网关解析token的代码做一些封装,发现对于spring的bean关系管理,存在一些值得记录的问题场景 1.A类代码中,依赖于B类中注入的一个bean如果搭建过项目的工具包,封装过一些功能的同仁肯定会遇见这个问题,举个小列子:@Configurationpublic class A{ @Bean public B b() { return new B(); }}@Configurationp.原创 2020-12-18 16:34:35 · 117 阅读 · 2 评论 -
工作纪实_20-Lombok实体注解@Builder出现的问题
想要使用lomobok的构造器模式@Builder注解来构建对象,但是使用之后,经常性的检查性和运行报错,总结了一下,使用@Builder注解时,全参和无参都加上就可以了!@Data@Builder@NoArgsConstructor@AllArgsConstructor...原创 2020-12-07 14:00:22 · 198 阅读 · 0 评论 -
工作纪实_19-微服务Feign调用实现header透传
工作背景项目框架:cloud微服务、gateway网关、openfeign需求:服务间调用,网关层面我使用jwt做了用户的认证,登录后的token以及用户信息,网关层会在请求的header进行添加,token、user_info,如果是网关->A服务,此时是可以在A服务中拿到header的token、user_info字段的,但是如果是网关->A服务->B服务,在B服务中想要拿到token和user_info,则在A->B服务的过程中,需要对介质Feign(http+ribbo.原创 2020-12-04 11:50:05 · 1247 阅读 · 1 评论 -
工作纪实_18-微服务Feign调用出现的各种异常解决方案
feign调用问题汇总1. feign调用微服务get请求提示post not supportedfein定义和controller接口的请求方法不一致[一定要都是get方法才行]如果排除掉第一个问题,fein接口的Get方法接口,此时请求参数前面没有加上@RequestParam也会有此报错【我也不知道为什么,但就是这样解决的】2.feign调用微服务超时服务器、feign、ribbon的超时通用设置#默认为10sfeign.client.config.default.connectT原创 2020-12-02 18:09:52 · 2395 阅读 · 1 评论 -
工作纪实_17-正则表达式收藏
1.只能输入英文<input type="text" onkeyup="value=value.replace(/[^a-zA-Z]/g,'')">2.只能输入中文、英文、数字、@符号和.符号 <input type="text" onkeyup="value=value.replace(/[^a-za-z0-9u4e00-u9fa5@.]/g,'')">3.只能输入字母和汉字<input onkeyup="value=value.replace(/[d]/原创 2020-11-13 18:08:18 · 89 阅读 · 0 评论 -
工作纪实_16-Spring项目集成SkyWalking打印traceId
使用shiro登录后,用户的权限信息,在调用接口时,会自动的根据缓存内容判断,是否含有权限信息,但是如果用户在不退出的情况下,修改了权限接口的部分数据,那么shiro里面的授权数据其实就是过期了的,用户必须先退出再登录才能获取最新的授权数据,为了用户体验,我增加了以下两段代码,来控制用户在登录过程中,授权数据发生变化后的处理策略我使用的是自定义的角色授权过滤器,继承原生filter/** * @author liulei * @version 1.0 */@AllArgsConstructo.原创 2020-09-10 17:42:21 · 1113 阅读 · 0 评论 -
工作纪实_15-SpringBoot诡异的无法加载properties文件配置问题
今天被这个问题搞的头疼,我是在异常处理拦截器中,使用到一个properties配置文件,來解析对应的code错误码,返回给前端,但是由于之前的一次无心的操作,差点整自闭掉,开始的时候,异常捕获已经解析都是正常的,直到我在pom.xml配置了一下打包的环境:红色部分的打包配置,是我遗漏掉的,直接导致了我在项目其他地方,无法通过正常的操作来读取properties配置文件,如果有遇到这种问题的朋友,可以留心一下子!我也总结了一下,正常无法加载properties文件有以下几种情况:没有对resourc原创 2020-08-26 16:07:03 · 1124 阅读 · 0 评论 -
工作纪实_14-Seata分布式事务框架调研【dubbo/cloud和AT/TCC模式源码提供】
这里写目录标题一、简介背景二、理论依据CAP原则`BASE`理论基本可用最终一致性【有延迟】三、柔性事务解决方案一、两阶段型1.1 XA两段式【基础】阶段一:提交事务请求阶段二:执行事务提交总结1.2 三段式【变种】阶段一:`CanCommit`阶段二:`PreCommit`阶段三:`doCommit`总结二、TCC补偿型`Try` 阶段`Confirm ` 阶段`Cancel` 阶段三、异步确保型四、`MQ`事物消息五、主流分布式事务中间件5.1 `SEATA`【推荐】简介事务组成TC-事务协调者TM-事原创 2020-07-29 17:59:26 · 350 阅读 · 3 评论