- 博客(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
3137
原创 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
1757
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
316
原创 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
128
原创 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
2074
原创 spring自定义集合,实现策略模式
在学习spring选择器的时候,找到了这篇文章:https://zhuanlan.zhihu.com/p/100035474里面用到了spring的注入功能,使用注解来实现依赖注入,这里自定义了列表,然后把两个service注入进去。其中用到了CustomCollectionEditor类,这个类继承了jdk的PropertyEditorSupport类。PropertyEditorSupport类是用来实现属性值的转换功能。比如说处理xml文件里面字符串到java对象的转换。同类型的service
2020-09-09 16:10:16
369
原创 spring监听使用小结
1、使用@EventListener注解,函数名字不能是onApplicationEvent且类实现了ApplicationListener接口,不然会发两遍事件。2、@Component和@EventListener,不用实现接口ApplicationListener接口。3、可以使用context.addApplicationListener注册监听器。4、@EnableAsync和@Async可以使能异步处理。如果不自己定义线程池,将使用spring-boot默认线程池。...
2020-08-04 15:04:09
150
原创 TaskDecorator的使用
无意间看到了TaskDecorator这个类,就学习了一下。现记录一下学习内容。TaskDecorator是用于线程间传递数据。从主线程拷贝数据到子线程。具体数据实际上是封装到threadlocal里面的。引用一下拷贝MDC的例子:这里使用了slf4j-api的jar包里面的一个MDC的类。通过查看源码发现,该类实际上是封装了threadlocal。子线程runnable执行前,通过静态方法getCopyOfContextMap获取主线程里面的数据,在子线程里面,通过setContextMap方法
2020-08-04 10:35:20
6232
原创 spring cloud nacos获取Nacos服务端的配置信息过程解析
bootstrap的上下文创建:SpringApplication.java:run----->prepareEnvironment----->EventPublishingRunListener发送ApplicationEnvironmentPreparedEvent事件----->BootstrapApplicationListener接收事件,调用onApplicationEvent方法(事件机制)----->bootstrapServiceContext创建boot
2020-08-03 10:34:57
1151
原创 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
181
原创 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
478
原创 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
226
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人