
工作笔记
冬子一定要努力
你可以菜,但不能不努力呀
展开
-
CompletableFuture&CopyOnWriteArrayList 多线程查询优化
1原创 2022-12-27 14:40:42 · 402 阅读 · 1 评论 -
两个list循环统计次数
需求:在一个list中,找到每个对象里面包含另一个lis关键词的次数。 public static void main(String[] args) { String res = "你的我的春天啊的大撒发生我爱大方,撒饭撒的方式阿多少钱dsfd324大方三分大赛的我的的好嘎嘎"; StringBuilder a = new StringBuilder(); long timeMillis1 = System.currentTimeMillis()原创 2022-05-23 15:48:01 · 492 阅读 · 0 评论 -
jsonStrig 带有下划线的对象转换成javabean
1.将某个string转化成对象,但是string是带有下划线:[{"item_title": "(买一送一) 浅米灰(加绒加厚)情侣鞋", "item_cnt": 182, "item_unit_price": 10058.63, "item_all_price": 1830670, "item_id": 1, "rel_item_id": 3832160003872, "source_type": 99, "rel_shop_id": 0},{"item_title": "(买一送一) 三元灰(四原创 2022-04-13 21:10:33 · 1469 阅读 · 0 评论 -
工具类:统一获取打点信息
1. 封住工具类,获取具体哪个方法哪个地方出问题打点。public class PerfUtils { /** * rpc方法执行异常打点 */ public static void perfRpcErr(Exception e) { String[] serviceArr = Thread.currentThread().getStackTrace()[2].getClassName().split("\\."); String原创 2021-11-24 17:23:28 · 784 阅读 · 1 评论 -
BufferTrigger分享记录
1、基本功能把多次操作合并成一次操作批量执行,类似于Hystrix的请求合并。2、基本api及使用方式// 构建一个缓冲队列private BufferTrigger<String> bufferTrigger = BufferTrigger.<String> batchBlocking() // 队列最大容量 .batchSize(5) // 每隔n秒消费一次 .li原创 2021-11-17 11:16:49 · 3846 阅读 · 0 评论 -
JSON- string的对象数组转对象
public static void main(String[] args) { String str = "[{\"liveId\":8676034705,\"time\":1634622000,\"gmvAmt\":141120,\"watchCnt\":1075," + "\"addFansCnt\":46,\"payItemCnt\":0,\"payBuyerCnt\":8,\"clickPayRatio\":0,\"perKWatchGmvAmt\.原创 2021-10-19 20:24:25 · 456 阅读 · 0 评论 -
二分查询最左侧匹配(适合list)
public static void main(String[] args) { A b = new A(2, 3); A c = new A(4, 38); A d = new A(9, 77); List<A> res = new ArrayList<>(); res.add(d); res.add(c); res.add(b); List<A&.原创 2021-10-13 15:37:17 · 179 阅读 · 0 评论 -
completableFutures并行执行
切记:写的用CopyOnWriteArrayList public static void main(String[] args) { ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(4, 5, 3000, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(5)); System.out.println("等等")原创 2021-09-10 21:47:28 · 1008 阅读 · 0 评论 -
将时间做分割
按照时间做分割/** * 按照天数分割时间 * 例如:1-9 按3天分。[1-4,4-7,7-9] */ public static List<RanTime> cutRangTime(RanTime ranTime, long t) { List<RanTime> ranTimes = new ArrayList<>(); long oneDay = 1000 * 60 * 60 * 24;原创 2021-09-08 21:11:03 · 372 阅读 · 0 评论 -
(转)轻松在java程序中使用protobuf
转自大佬:https://mp.weixin.qq.com/s/I4jXZUn9sNfoOof0uO8pSg简介Protocol Buffer是google出品的一种对象序列化的方式,它的体积小传输快,深得大家的喜爱。protobuf是一种平台无关和语言无关的协议,通过protobuf的定义文件,可以轻松的将其转换成多种语言的实现,非常方便。今天将会给大家介绍一下,protobuf的基本使用和同java结合的具体案例。为什么使用protobuf我们知道数据在网络传输中是以二进制进行的,一转载 2021-08-24 18:15:48 · 1642 阅读 · 0 评论 -
搭建一个springboot的web项目
一:新建一个springboot这个比较简单。就不多说。二:修改pom文件。为web项目(web的可以用postman访问)<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:原创 2021-08-24 11:11:46 · 514 阅读 · 1 评论 -
贪心算法 -判断能否满足时间填充
import java.util.Arrays;/** * @author * Created on 2021-05-01 */public class GreedyUtils { /** * 贪心算法工具类 * 实现:一个时间轴是否被其他片段时间充满 * 例如: * A:2-20 * B:中有多个片段 2-7,7-15,15-21 是否能够充满A */ public static boolean video...原创 2021-07-30 14:53:15 · 185 阅读 · 0 评论 -
记录下好的文章-统一异常处理
转自:https://mp.weixin.qq.com/s/AtTyHIdcLo2od12FmoLYqQ前言本篇文章主要介绍的是SpringBoot项目进行全局异常的处理。SpringBoot全局异常准备说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码。开发准备环境要求 JDK:1.8 SpringBoot:1.5.17.RELEASE 首先还是Maven的相关依赖:<properties><p...原创 2021-06-01 10:11:04 · 178 阅读 · 1 评论 -
mysql使用union做查询集合汇总
场景: 需要查每天是否有活动,前端给的是时间范围代码:public List<Integer> getTimeRangeCount(String startTIme, String endTime) throws ParseException { //计算时间差的天数:例如2020-01-01 00:00:00 到2020-01-03 02:00:00计算结果为[2020-01-01,2020-01-02] int daysBetween = DateU原创 2021-03-18 17:44:59 · 468 阅读 · 0 评论 -
备战
参考:https://mp.weixin.qq.com/s/SOErvCCrmPaAVUphSO2Wqw简历制作模版:https://www.polebrief.com/index算法这个该刷还是得刷,别偷懒,我个人感觉刷完下面几个已经够了,大家可以根据自己的基础情况选择1.剑指Offer:https://www.nowcoder.com/ta/coding-interviews2.刷Leetcode,刷Leetcode,刷Leetcode!重要的事情说三遍,Leetcode前20.原创 2021-02-23 16:15:27 · 464 阅读 · 0 评论 -
jvm案例和排查套路
YGC:经典排查案例:https://mp.weixin.qq.com/s/O0l-d928hr994OpSNw3oow1.收到超时告警,调用服务超时。查看服务监控耗时变长,从平时的几十毫秒完成变为百几毫秒。2.摘掉一个节点,通过命令dump了堆内存文件保留现场 jmap-dump:format=b,file=heap pid3.查看jvm参数配置 ps aux | grep "applicationName=adsearch" jmap-heap pid...原创 2020-07-15 12:52:00 · 305 阅读 · 0 评论 -
restTemplate发送put请求,postman和本地调用可以,服务器不行
HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);headers.add("Authorization", authorizationToken);headers.add("Host", host);headers.add("User-agent", agent);headers.setAccept(Arrays.asList(MediaType.APPLICATI.原创 2021-02-22 10:32:51 · 1686 阅读 · 1 评论 -
java简单的定时任务
@Scheduled 定时任务可以有很多写法,我觉得最简单的就是用注解的方式,如果你的项目用的是spring boot框架,就可以三步完成:一,添加@EnableScheduling注解到入口类声明上面 /** * 启动 * */ @SpringBootApplication @EnableScheduling public class Application { public static void ma...原创 2021-01-13 14:58:24 · 163 阅读 · 1 评论 -
redis分布式锁做切面,一个注解统一使用锁
1. 自定义注解import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;@Retention(RetentionPolicy.RUNTIME)public @interface RedisLock { String[] keyPieces(); int expireTime() default 5;}2.aop切面@Slf4j@Aspect@Compone原创 2020-11-27 19:34:39 · 679 阅读 · 0 评论 -
mac配置java环境,解决错误zsh: command not found
1)输入命令:cd ~ 即可进入/Users/**目录;【其中**表示MacOs用户的账号】2)创建.bash_profile文件: touch .bash_profile;【注:/Users/**下若有.bash_profile文件即可跳过此步骤,直接进行第3)步】3)输入命令:open .bash_profile 打开open .bash_profile文件4)在open .bash_profile文件中添加【你所需要配置的环境变量】如:JAVA_HOME=/Library/J...原创 2020-11-09 19:46:16 · 4617 阅读 · 3 评论 -
springcloud alibaba组件nacos学习笔记
注册中心:eureka、consul、nacos、zookeeper、etcdconsul、eureka、nacos对比配置中心eureka 不支持 consul 支持 但用起来偏麻烦,不太符合springBoot框架的命名风格,支持动态刷新 nacos 支持 用起来简单,符合springBoot的命名风格,支持动态刷新注册中心eureka 应用内/外:直接集成到应用中,依赖于应用自身完成服务的注册与发现, ACP原则:遵循AP(可用性+分离容忍)原则,有较强的...原创 2020-11-09 11:28:07 · 316 阅读 · 0 评论 -
spring-cloud-netflix-eureka-client整合springboot启动报错
java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.([Ljava/lang/Object;)V如果在搭建springboot项目的时候遇到过这样的问题,那么这个问题就是版本兼容问题。还有一种情况就是关于绑定的问题。提示binder failed,问题大概类似。这个问题也困扰了我很久。上周五搭建报表项目的时候也突然又遇到这个问题了,所以周六日回去研究了一番,也参考了一些博客关.原创 2020-09-29 20:55:12 · 2359 阅读 · 0 评论 -
总结工作中枚举的使用
1.概览在本文中,我们将看到什么是 Java 枚举,它们解决了哪些问题以及如何在实践中使用 Java 枚举实现一些设计模式。enum关键字在 java5 中引入,表示一种特殊类型的类,其总是继承java.lang.Enum类,更多内容可以自行查看其官方文档。枚举在很多时候会和常量拿来对比,可能因为本身我们大量实际使用枚举的地方就是为了替代常量。那么这种方式由什么优势呢?以这种方式定义的常量使代码更具可读性,允许进行编译时检查,预先记录可接受值的列表,并避免由于传入无效值而引起的意外行为。.原创 2020-08-14 17:21:16 · 252 阅读 · 0 评论 -
并发扣减库存(小游戏抽奖使用)工作笔记自用
/** * 加载优惠券缓存 * * @param key 缓存key * @param expireTime 过期时间 s * @param supplier 数据源 * @return {@link java.util.List<CouponStockBO>} */ private List<CouponStockBO> loadCouponFormCache(String key...原创 2020-07-02 17:12:45 · 512 阅读 · 1 评论 -
小游戏项目分布式锁代码(留个纪念)
package com.jd.car.member.service.index.impl;import com.alibaba.fastjson.JSON;import com.jd.car.member.common.contant.Constants;import com.jd.car.member.common.exception.CarMemberErrorEnum;import com.jd.car.member.common.exception.GameException;impo.原创 2020-06-28 15:00:13 · 305 阅读 · 1 评论 -
idea生成代码神器
转自:作者:HeloWxl jianshu.com/p/e4192d7c6844Easycode是idea的一个插件,可以直接对数据的表生成entity,controller,service,dao,mapper,无需任何编码,简单而强大。1、安装(EasyCode)我这里的话是已经那装好了。建议大家在安装一个插件,叫做Lombok。Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashco...原创 2020-05-18 09:38:40 · 301 阅读 · 0 评论 -
多级调用事务回滚删除缓存TransactionSynchronizationManager使用
1.业务场景:一个大service里面,调用多个service假设a,b,c。 其中a成功,b里面失败。但是a中有操作数据库和异步放redis缓存操作,所以需要监听事务如果失败,需要回到a中删除缓存。2.原理:同aop环绕通知,在事务执行前后我们需要做一些细节处理。使用TransactionSynchronizationManager提供很多方法可以帮我们解决。3.伪代码1.多个service:服务Apublic interface ConsumeCode...原创 2020-05-09 22:21:45 · 2195 阅读 · 0 评论 -
巧用枚举转换
1.业务场景:8条数据每个状态标识不一样,一个对象包含8个属性,每个属性对应一个标识。需要判断标识对应的属性的属性值判断权限执行业务逻辑;2.数据库数据: 勋章类型 1: 轮胎, 2:机油, 3: 京加油, 4:车载电器, 5: 维修保养, 6:汽车装饰, 7: 摩托车达人, 8: 敬请期待', `name` varchar(100) DEFAULT NULL COMMENT '勋章名称',3.实体类:4.枚举类:package com.jd.car.me...原创 2020-05-09 21:00:01 · 619 阅读 · 0 评论 -
java好文章汇总
1.java编码规范:https://mp.weixin.qq.com/s/ZqNDjLPrxGMcgSOOeRTxaA2.1.8Optional空指针使用:https://mp.weixin.qq.com/s/MuyLkWi3htrXzJffUyLdHg3原创 2020-04-12 11:24:16 · 227 阅读 · 0 评论 -
并发执行查询汇总返回结果集
需求: 做数据统计,但是有的sql执行太慢。然后优化添加索引,再用线程池去执行各自sql。汇总结果集package com.jd.car.laserbeak.web.controller.consume;import com.google.common.util.concurrent.ThreadFactoryBuilder;import java.util.concurrent.*...原创 2020-03-23 11:21:36 · 1236 阅读 · 0 评论 -
SpringBoot @Valid 注解结合Exception 实现参数验证(转)
作者|超级小豆丁http://www.mydlq.club/article/49/原创 2020-03-12 13:44:57 · 166 阅读 · 0 评论 -
枚举类使用-工作笔记
1.两个code相互转换的:通过第二个code,获取第一个codepackage com.jd.car.laserbeak.common.contant;/** * @author xyd * @description 京东验证码状态 * @date 2020/2/14 18:22 **/public enum ConsumeCodeStatusEnum { //状...原创 2020-02-29 18:41:04 · 163 阅读 · 0 评论 -
Mock单元测试-工作使用
1.测试类:test包下package com.jd.car.laserbeak.service.consume;import com.google.common.collect.Lists;import com.jd.car.laserbeak.common.cache.CacheKey;import com.jd.car.laserbeak.repository.dao.cons...原创 2020-02-26 22:49:47 · 547 阅读 · 0 评论 -
aop做日志收集,且不同外部接口入参种获取某一个特定标识(请求外部接口,需要收集出入参且失败成功都需要插入记录)
业务场景:通过aop的环绕模式,做请求外部接口的请求和响应日志收集。其中不同接口入参不一样,但是我需要获取一个唯一标识作为业务id。1.定义一个注解:注入到方法package com.jd.car.laserbeak.infrastructure.jd.jsf.logrecordaop;import java.lang.annotation.ElementType;import j...原创 2020-02-24 20:09:19 · 601 阅读 · 0 评论 -
easypoi实现高大上导出excel
1.引用jar包:当时犯了一个低级错误,我在项目最完成引用了,但是拉不下jar包。最后放在外层pom和里层connon里加就ok了。先确定自己的中央仓库有没有这个jar包,看maven的setting文件的仓库地址登录进去搜索jar包名称就知道。<!--excel操作--><dependency> <groupId>cn.aftertur...原创 2020-02-22 15:15:39 · 1525 阅读 · 0 评论 -
poi实现excel导出
最近做一个百万数据excel导出。然后记录下来。供自己工作使用如果是百万级别,看到很多文章提到使用压缩文件方法。对导出还有很多可以优化:分页sheet,线程等。由于还没到那个时候,就简单记录下一个demo使用把。后期再来完善1.引用jar包<!-- poi依赖 --> <dependency> <...原创 2020-02-21 15:31:22 · 257 阅读 · 0 评论 -
springboot+tk.mybatis加上mapper.xml-个人工作总结使用
1.引用配置mybatis: #包扫描 mapper-locations: classpath:mapper/*Mapper.xml #开启映射,就是驼峰命名按照规则把查询结果对应到实体类(数据库的user_name=实体类接收的userName) configuration: map-underscore-to-camel-case: true...原创 2020-02-19 19:21:22 · 547 阅读 · 0 评论 -
PageHelper分页使用
1.springboot项目:引用分页插件 pagehelper-spring-boot<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter&l...原创 2020-02-19 19:10:26 · 319 阅读 · 0 评论 -
@Builder(toBuilder=true) 使用
@Builder(toBuilder=true)1.类前加@Builder 可以使用对象方便如果加true,可以修改这个对象属性值。默认false原创 2020-02-18 18:28:00 · 12914 阅读 · 0 评论 -
aop+定向发送三次请求
1.自定义一个注解2.做一个切面,选择around@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)@Documentedpublic @interface Retry { /** * 重试次数 ,默认为1 */ int retryTimes() default 1;...原创 2020-01-16 10:47:35 · 309 阅读 · 0 评论