自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 git cherry-pick -m使用

工作中经常用到cherry-pick这个命令,如果只是单独拿一两个commit,直接使用git cherry-pick commitId 就可以了。如果拿好几个连续的commit,并且还包含了merge提交信息(可以理解为空提交),比如下面这个提交历史:89bbf6d (HEAD -> master) F Merge branch 'test1'a96556c (test1) E4002b22 D052b177 Bb67e532 (test6, test5) A假如我们想cherry-

2022-03-05 02:10:59 2986

原创 Tomcat的appBase和docBase解析

tomcat配置文件server.xml中,Host标签中可以配置Context标签。我们在实际项目使用中,配置不对,会遇到服务重复部署的问题。原因是tomcat默认解压webapps的war包并部署。如果我们通过配置Context,指定的war包也在webapps目录下,那就有可能会存在重复拉起服务的问题。而对Context的配置,主要涉及到appBase和docBase这两个参数的使用。现说明一下参数的使用。为了解决重复拉起问题,我们只需要把拉起的服务的war包,不放到默认的webapps目录下,然

2021-09-17 15:06:59 1633 1

原创 Redisson分布式锁解析

这里主要从源码角度分析一下Redisson分布式锁的实现。以RedissonLock类为例,分析一下。现在开始分析加锁方法lock(),该方法最终会调用到void lock(long leaseTime, TimeUnit unit, boolean interruptibly) throws InterruptedException方法。 private void lock(long leaseTime, TimeUnit unit, boolean interruptibly) thro

2021-02-01 14:50:10 255

原创 java8时间处理

记录一下,常用的时间转换,后面慢慢补充:public class TimeUtils { public static void main(String[] args) { String str = "2020-12-11 14:35:44"; long l = getLongTime(str); System.out.println(l); String s = toStrDate(new Date()); Syst

2020-12-11 15:19:21 100

原创 json转换失败

json转换遇到的问题总结json转换失败json转换失败最近在使用fastjson做json字符串转jsonobject对象的时候,遇到一个异常信息:java.lang.String cannot be cast to com.alibaba.fastjson.JSONObject。研究了一下,是自己构造的json字符串,不是标准的形式。多了转义字符和双引号。比如这样:String jsonStr ="\"{\\\"number\\\":\\\"1\\\"}\"";修改为:jsonStr =

2020-12-09 09:19:02 1912

原创 spring自定义集合,实现策略模式

在学习spring选择器的时候,找到了这篇文章:https://zhuanlan.zhihu.com/p/100035474里面用到了spring的注入功能,使用注解来实现依赖注入,这里自定义了列表,然后把两个service注入进去。其中用到了CustomCollectionEditor类,这个类继承了jdk的PropertyEditorSupport类。PropertyEditorSupport类是用来实现属性值的转换功能。比如说处理xml文件里面字符串到java对象的转换。同类型的service

2020-09-09 16:10:16 306

原创 spring监听使用小结

1、使用@EventListener注解,函数名字不能是onApplicationEvent且类实现了ApplicationListener接口,不然会发两遍事件。2、@Component和@EventListener,不用实现接口ApplicationListener接口。3、可以使用context.addApplicationListener注册监听器。4、@EnableAsync和@Async可以使能异步处理。如果不自己定义线程池,将使用spring-boot默认线程池。...

2020-08-04 15:04:09 129

原创 TaskDecorator的使用

无意间看到了TaskDecorator这个类,就学习了一下。现记录一下学习内容。TaskDecorator是用于线程间传递数据。从主线程拷贝数据到子线程。具体数据实际上是封装到threadlocal里面的。引用一下拷贝MDC的例子:这里使用了slf4j-api的jar包里面的一个MDC的类。通过查看源码发现,该类实际上是封装了threadlocal。子线程runnable执行前,通过静态方法getCopyOfContextMap获取主线程里面的数据,在子线程里面,通过setContextMap方法

2020-08-04 10:35:20 6120

原创 spring cloud nacos获取Nacos服务端的配置信息过程解析

bootstrap的上下文创建:SpringApplication.java:run----->prepareEnvironment----->EventPublishingRunListener发送ApplicationEnvironmentPreparedEvent事件----->BootstrapApplicationListener接收事件,调用onApplicationEvent方法(事件机制)----->bootstrapServiceContext创建boot

2020-08-03 10:34:57 1099

原创 java classloader的理解

classloader的个人理解1、classloader是用来加载class文件的。2、不同的classloader可以加载不同位置但相同名字的class文件。3、线程默认的classloader是AppClassloader,即SystemClassloader。4、若两个线程的classloader不同,一个线程要加载另一个线程里面加载的class文件,需要使用Thread.currentThread().setContextClassLoader(classLoader),把另一个线程的cl

2020-07-30 10:33:43 148

原创 spring cloud alibaba源码解析:Nacos配置更新

配置更新代码框架:当Nacos server上的配置更新的时候,nacos客户端就会去拉取新的配置。原理是:客户端会用定时器定时去拉取配置,找出发生变化的配置,然后更新到本地缓存中。定时器相关代码如下:executor.scheduleWithFixedDelay(new Runnable() { @Override public void run() { try { checkConfigInfo(); } catch (Thr

2020-07-29 14:37:30 409

原创 spring cloud alibaba基础:使用Nacos做配置中心

spring cloud alibaba基础:使用Nacos做配置中心1、安装并启动Nacos服务创建配置文件example.properties2、创建spring boot的maven工程创建配置文件bootstrap.properties完整的pom文件java代码Application代码Controller代码1、安装并启动Nacos服务创建配置文件example.properties2、创建spring boot的maven工程创建配置文件bootstrap.propertiessp

2020-07-28 15:44:41 168

空空如也

空空如也

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

TA关注的人

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