在JAVA开发过程中, 我们经常会使用到ThreadLocal类,该类主要用于存储于线程相关的数据,并且数据只能够通过线程获取。其他线程是无法拿到数据的。但是有这么一个场景,父线程创建了一个子线程,希望子线程能够共享父线程ThreadLocal中的变量数据,这应该怎么做呢? InheritableThreadLocal 在JAVA中,有InheritableThreadLocal这个类,该类根据名称就可以知道,其实就是可继承的ThreadLocal. 下面我们通过实例的方式查看该类应该怎么使用。 public cl…

4月 5, 2022 0条评论 294点热度 1人点赞 阅读全文

最近在做业务开发的时候,线上出现了定时任务实行失败的异常,查看日志,最主要的原因是提示: connection holder is null, 经过代码排查了,是由于druid的连接池导致,所以记录下这个原因排查详细过程。 环境配置 由于之前的项目是比较老的,所以对druid的版本相对要老一点,使用的是1.1.7版本,具体maven如下: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid<…

3月 26, 2022 0条评论 413点热度 2人点赞 阅读全文

Java本身属于面向对象编程语言,面向对象的四个特性: 继承,封装,抽象,多态。其实这里的抽象与今天所说的抽象类其实不是一个意思。特性中的抽象是对实现业务的抽象,可以通过抽象类,接口或者其他的方式对实现抽象。所以抽象类更多的是强调具体的实现。而特性抽像更多的是一种思想。 Java中同时支持了抽象类和接口的语法实现,在工作中也常常会用到。那么我们思考以下几个问题: 接口和抽象类的区别是什么? 什么时候用抽象类?社么时候用接口? 抽象类和接口存在的意义是什么?解决了那些编程问题? 抽象类vs接口,区别在哪里? 这里主要…

3月 16, 2022 0条评论 321点热度 0人点赞 阅读全文

在日常开发中,总是会涉及到对IO相关的操作,而在JAVA中,网络编程包含了BIO、NIO、以及AIO这几种类型,今天这篇文章主要讲解在JAVA BIO的工作模式,以及针对BIO的常见的优化方式。 实现 在较早的开发中,BIO的开发其实还是很简单的,还是以例子的方式加以说明: /** * 该测试类主要通过bio的方式创建, 接收客户端,并处理消息 * * @author <a href="mailto:xianglj1991@163.com">xianglujun</a> * @since 2…

2月 13, 2022 0条评论 384点热度 0人点赞 阅读全文

在项目开发中,在使用spring-boot时,有时会希望通过注解的方式,来控制装配的顺序。在查看源码过程中,发现有@AutoConfigureAfter与@AutoConfigureBefore两个注解能够实现。因此写两个DEMO实现功能用作测试。 注解区分 我初次使用时,让我产生了误区,具体装配执行顺序的,一下说明: @AutoConfigureBefore: 该注解的作用载体为当前Configuration类,配置在AutoConfigureBefore中的类,会比当前Configuration类后装配执行 @…

9月 6, 2021 0条评论 943点热度 2人点赞 阅读全文

搜集过程 初始标记(CMS-initial-mark) 并发标记(CMS-concurrent-mark) 预清理(CMS-concurrent-preclean) 可被终止的预清理(CMS-concurrent-abrotable-preclean) 重新标记(CMS-remark) 并发清除(CMS-concurrent-sweep) 并发重置状态等待下次CMS触发(CMS-concurrent-reset) 初始标记(CMS-initial-mark) 该阶段是整个CMS流程中第一个stop-the-worl…

6月 30, 2021 0条评论 383点热度 0人点赞 阅读全文

最近学习jvm相关知识中,OpenJDK提供了asmtools工具,可以操作字节码,因此自己从源码编译一个版本! 安装环境 ant 1.8版本以上 jdk1.8版本以上 asm-tools源码   安装步骤 Ant环境安装 # 配置ant环境 vim /etc/profile # 加入以下配置 export ANT_HOME=/home/apache-ant-1.9.15 export ANT_LIB=$ANT_HOME/lib # 验证ant环境是否正常 ant -version Java环境安装 vi…

5月 12, 2021 0条评论 379点热度 0人点赞 阅读全文

/** * 拼接字符串 * * @author xianglujun * @date 2021/5/12 14:31 * @since 1.4.4 */ public class StringConcatTest { @Test public void testConcat() { System.out.println("" + null); } } 在以上的输出中,最终输出结果为null.  这个地方的并没有抛出NullPointerException的错误, 这个需要通过查看字节码的方式,查看原因: 通过执行j…

5月 12, 2021 0条评论 394点热度 0人点赞 阅读全文

Spring Bean 基础 什么是BeanDefinition 定义Bean的配置元信息接口 Bean的类名 Bean的行为配置元素,如作用域,自动绑定的模式,生命周期回调等 其他Bean引用,有可称作合作者(Collaborators)或者依赖(Dependencies) 配置设置,比如Bean属性(Properties) BeanDefinition元信息 属性 说明 Class Bean全类名,必须是具体类,不能用抽象类或接口 Name Bean的名称或者ID Constructor arguments B…

5月 8, 2021 0条评论 367点热度 1人点赞 阅读全文

作用域 来源 说明 prototype 原型作用域,每次依赖查找和依赖注入生成新bean对象 singleton 默认Spring Bean作用域,一个BeanFactory有且仅有一个实例 request 将Spring Bean 存储在ServletRequest上下文中 session 将Spring Bean存储在HttpSession中 application 将Spring Bean存储在ServletContext中 singleton Bean作用域 prototype Bean 作用域 Sprin…

5月 7, 2021 0条评论 339点热度 0人点赞 阅读全文