自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (1)
  • 收藏
  • 关注

原创 RocketMQ的定时消息设计与思考

rocketMQ的定时消息与局限本文rocketmq的版本是基于4.5.2熟悉rocketmq的朋友都知道rocketmq有一个延迟消息机制,该机制在消息重试过程中就有使用,基本原理为:用一个内部的SCHEDULE_TOPIC_XXXX来存放所有的延迟消息,该topic里的Queue与延迟级别一一对应,也就是说有多少个延迟级别该topic就有多少个Queue。利用Timer定时任务管理来对每个Queue里的消息进行扫描,时间到了的就放回到原本的topic里去,等待消费者执行。局限性也就是只能在rocke

2020-08-30 19:08:08 558 3

原创 面向切面打印feign接口的耗时

最近项目中关联方接口比较多,时不时的会出现一些接口不稳定,调用很耗时,这就需要将每个接口的耗时打印出来,以便于找关联方解决问题,feign接口在项目中没有具体的实现,所以不可能在接口的前后将耗时打印出来,在具体调用的地方打印的话需要添加的重复代码太多,不想写那么多的无用的代码,而且也影响项目的可读性,另外控制起来也不方便,生产上并不需要打印这些日志。so,面向切面就闪亮登场了,先上代码:@As...

2020-02-23 14:30:44 2564 3

原创 java项目重构时新旧方法对比框架

近期在做老项目的重构,需要对原有的业务方法进行优化和重构,但需要保持原有逻辑不变,故想写个对比框架,能实时对新老方法进行对比测试。1、实现远程调用,对两个不同服务的方法进行对比测试。自定义一个注解,用于标注需要对比的方法。从spring容器中获取对象并调用。2、通过注解标明需要进行对比的字段。对标注了注解的方法进行切面处理。3、对比结果如何展示更优雅。4、如何异步进行对比。

2024-04-08 23:03:27 158

原创 常用SQL

【代码】常用SQL。

2023-06-26 18:36:27 64

原创 实用小工具

工作常用的小工具

2022-08-10 21:44:57 271

原创 通过@ControllerAdvice处理全局异常

通过@ControllerAdvice处理全局异常

2022-06-29 23:04:17 107 1

原创 @ConditionalOnProperty注解的一个使用场景

@ConditionalOnProperty的是使用场景

2022-06-23 23:37:59 244

原创 获取eureka注册中心微服务的IP地址

在微服务开发中,如何让定时任务在某一个实例上运行。面对这个问题比较普遍的做法就是引入分布式锁,谁能拿到锁就获得执行,其余的空跑。引入锁的同时将项目架构也变得复杂了,下面教大家一个通过获取eureka注册中心微服务的IP地址,来让某一个固定的实例来跑定时任务。public class getEurekaMicoServiceIP { @Autowired private DiscoveryClient discoveryClient; @Autowired private I

2022-04-04 23:23:00 2362

原创 springBoot自定义拦截器

1、自定义拦截器示例package com.syygl.test.study.springTest.interceptorAndFilter;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.config.annotation.Inter

2021-12-26 16:37:18 111

原创 mybatis之Interceptor插件开发总结

1、Interviewceptor插件开发的demo先记录下,mybatis的加载过程和执行过程下次再补上package com.syygl.test.study.mybatis;import org.apache.ibatis.executor.Executor;import org.apache.ibatis.plugin.*;import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;import org.spr

2021-12-26 11:32:21 148

原创 平安保险基于spi机制的rocketmq 定制化应用

1、为什么选用RocketMQ首先跟大家聊聊我们为什么会选用rocketMQ,在做技术选型的过程中,应用场景应该是最先考虑清楚的,只有确定好了应用场景在做技术选型的过程中才有明确的目标和衡量的标准。像异步、解耦、削峰填谷这些消息中间件共有的特性就不一一介绍了,这些特性是决定你的场景需不需要使用消息中间件,这里主要讲述下在确定使用消息中间件后,又是如何去选择哪款消息中间件的。1.1同步双写,确保业务数据安全可靠不丢失​我们在搭建消息中间件平台时的定位是给业务系统做业务数据的传输使用,对业务数据的很重要的

2021-09-04 11:18:34 221

原创 图解设计模式之单例模式

1单例模式的UML图注:本文中的UML图是根据自己的想法绘制的,并不是直接照抄,仅供学习参考2.单例模式几种写法的比较2.1 饿汉式/** * 饿汉式 * 类加载到内存后,就实例化一个单例,JVM保证线程安全 * 简单实用,推荐使用! * 唯一缺点:不管用到与否,类装载时就完成实例化 */public class Singleton01 { private static final Singleton01 INSTANCE = new Singleton01(); p

2020-10-15 00:06:12 627

原创 通过单例枚举类创建线程池的应用

在项目开发中经常需要提高并发线程数来优化性能,或者通过异步线程来提高应用的吞吐,在使用线程的过程中,线程池的使用必不可少,可是该如何使用好线程池呢?以下是自己在实际项目中使用线程池的一个案例,如有更好的使用方式,欢迎一同探讨。public enum EnumCreateThreadPool { threadPoolInstance; private static ThreadPoolExecutor tpe; // 静态代码块,项目初始化时将线程池一并初始化好,对于一些变量可以通过配

2020-10-14 23:21:20 450

原创 rocketMQ使用注意点

1.同步双写时建议还是用ReentrantLock,将useReentrantLockWhenPutMessage属性设置为true2.提高消息发送成功率的几个参数,主要目的就是让消息多等一会,因为在高并发情况下偶尔会有brokerBusy的异常,修改以下配置,在10W TPS下消息能全部落盘成功。sendThreadPoolQueueCapacity=100000 #默认10000改为100000提高queue的等待数量waitTimeMillsInSendQueue=2800#默认200改为280

2020-09-03 21:28:18 434

原创 记一次OOM的排查以及代码的修改

发现问题今天上午( 周一早晨)吃完早餐伸个懒腰准备开始一天美好(苦逼)的代码生活,突然测试MM发来消息说应用不可用了,说周末加班就不能使用了(周末的班白加了)。接到消息立马打开error日志,一看原来是OOM了,莫名的有点兴奋,终于在实际应用逮到你了。二话不说看了下gcutil,发现FGC 70000次左右,YGC 2000次左右,我滴乖乖,一直在FGC啊,那肯定是某个对象内存溢出了,一直回收不了。看了下堆内存实例数的统计,果然有个对象实例数是400多万,找到了对象,是一个配置信息的对象,问题还是比较好定

2020-08-18 00:04:52 291 1

原创 maven使用的几个小点

1.maven禁止依赖传递<dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> <exclusions> <exclusion> ...

2020-04-16 23:35:36 117

原创 CommandLineRunner&ApplicationRunner的使用总结

1.CommandLineRunner&ApplicationRunner的作用2.CommandLineRunner&ApplicationRunner的区别3.如何使用以及注意点

2020-04-16 00:10:26 1012 1

原创 数据结构与算法

1推荐的网站https://www.cs.usfca.edu/~galles/visualization/Algorithms.htmlhttp://www.rmboot.com/

2020-04-12 23:26:17 96

原创 java开发中的小技巧

try()catch带资源的try语句(try-with-resource)的最简形式如下,try块退出时,会自动调用res.close()方法,关闭资源,不需要写finally。try (SqlSession mySqlSession = MySqlSessionFactory.openSession()) {} catch (Exception ex) { LOGGER.er...

2020-03-30 00:01:12 100

原创 Linux常用命令

viw存盘,Q退出,dw删除单词dd删除一行o插入一行大写O:向上插入一行。替换:查找按「ctrl」+「b」:屏幕往"后"移动一页。按「ctrl」+「f」:屏幕往"前"移动一页。按数字「0」:移到文章的开头。按「G」:移动到文章的最后。catmore...

2020-03-29 23:38:26 91

原创 JVM常用的命令

常见垃圾回收器组合参数设定:(1.8)-XX:+UseSerialGC = Serial New (DefNew) + Serial Old小型程序。默认情况下不会是这种选项,HotSpot会根据计算及配置和JDK版本自动选择收集器-XX:+UseParNewGC = ParNew + SerialOld这个组合已经很少用(在某些版本中已经废弃)https://stacko......

2020-03-21 19:35:31 242

原创 synchronized的总结

最近学习总结synchronized的时候做了个小实验,感觉挺有意思的,总结下其中的原理,先看下实现的小程序吧。public class Test { Object oo = new Object(); public static void main(String[] args) { Test test = new Test(); long l =...

2020-03-08 22:55:01 122

原创 多线程与高并发

synchronized1.锁升级 偏向锁 》 自旋锁 》 重量级锁2.sync锁的是对象,静态类锁的是classvolatile1.保证线程可见性2.禁止指令重排序CASatomicreentrantcountDownLatch...

2020-02-27 19:10:54 118

原创 图解设计模式

1单例模式实现:饿汉式 静态内部类式2策略模式3工厂模式4抽象工厂模式5门面模式6装饰模式7观察者模式创建型模式主要用于创建对象工厂模式结构型模式主要用于处理类或对象的组合行为型模式主要用于描述对类或对象怎样交互和怎样分配职责...

2020-02-27 09:58:07 145

原创 spring使用的各种小技巧

1.快速调用service方法在写了某个service之后需要对其进行测试,这时通常的写法就是写个controller方法,启动项目,浏览器、postman或者swagger去调用,可是我的service只是个简单的测试,不需要这么折腾的,在springBoot项目中可以通过以下方法调用写的service,通过项目启动的上下文获取需要测试的service,直接调用service的方法,是不是很简...

2020-02-23 15:17:43 284

原创 java中泛型使用总结

泛型是用来使接口、类、方法更具有通用性,更抽象,通过 <>尖括号声明泛型,泛型在接口、类、方法上的作用域不一样,跟java中定义的变量的作用域不一样类似,泛型接口和泛型类相似,作用域在整个类上,接口当然就是在整个的实现类上。更高级的用法:<? extends T>:是指上界通配符(Upper Bounds Wildcards)传入的是T的子类<? sup...

2020-02-23 14:57:45 180 1

XML的生成与解析

如何将String类型的XML文件解析获得所需的数据

2013-12-23

空空如也

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

TA关注的人

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