自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 @Lazy注解的原理

1.ContextAnnotationAutowireCandidateResolver是主要逻辑类2.当@Lazy与@Autowired或者@Resource合用时,依赖创建的是代理对象(目标对象是TargetSource),在执行时,执行的是代理对象,在invoke(Object proxy,Method method,Object[] args)中执行targetSource.getTarget()时才去beanFactory中依赖查找bean.3.@Autowired与@Lazy一起

2023-10-27 15:20:23 123

原创 @Qualifier注解的原理

自定义的bean上加了指定名称@Qualifier,再在@Autowired上同样加了指定相同名字的@Qualifier时,则会一起导入(bean名称刚好与@Qualifier中指定的名称相同的,也会一起导入)private List<xxxInterface> list;//list中包含A,B,D对象,不包含C对象。

2023-10-24 17:54:55 107

原创 @Value注解的原理

ConfigFileApplicationListener(最新版本是ConfigDataEnvironmentPostProcessor)是主要的实现类,它是在spring.factories中,在启动时加载进来的。环境变量可以设置为eim_tts_middlePlatform_url或者eim-tts-middlePlatform-url或者eim.tts.middlePlatform.url,也不区分大小写。如原变量@Value("${eim.tts.middlePlatform.url}")

2023-10-24 17:32:42 120

原创 @Autowired注解的原理

在bean的实例化过程中,执行doCreateBean方法中会调用MergedBeanDefinitionPostProcessor的postProcessMergedBeanDefinition方法,会填充RootBeanDefinition。在bean的实例化过程中,执行populateBean方法中会调用InstantiationAwareBeanPostProcessor的postProcessProperties方法。@Autowired注释的构造方法,requried=true的只能有一个。

2023-10-24 10:51:19 49

原创 @Resource注解的原理

在bean的实例化过程中,执行doCreateBean方法中会调用MergedBeanDefinitionPostProcessor的postProcessMergedBeanDefinition方法,会填充RootBeanDefinition。不存在则按类型查找,调用ListableBeanFactory的getBeanNamesForType()方法,存在多个则要去找@Primary标记的对象,否则报错NoUniqueBeanDefinitionException。

2023-10-24 10:16:19 53

原创 springboot中@Async的使用

原因是:AsyncAnnotationBeanPostProcessor没有实现接口SmartInstantiationAwareBeanPostProcessor中的getEarlyBeanReference(Object bean,String beanName)的方法,使得循环依赖早期暴露的对象不是代理对象,与最终的生成的代理对象不一致。注:由于执行的是代理对象,CGLIB创建的代理对象实际上是目标对象的子类,不能重写private方法,所以方法不能是private,否则报下面的错误。

2023-10-20 14:23:45 129

原创 springboot中@scheduled的使用

在postProcessAfterInitialization(Object bean,String beanName)方法中找到所有bean中有注解为@Scheduled的方法,组装成task,添加到调度线程池中。如果都没有找到,则用Executors.newSingleThreadScheduledExecutor()生成的调度线程池,此线程池核心数为1,线程名前辍默认的是scheduling-。如果找到多个这样的bean则要按固定的bean名字(taskScheduler)去找这个调度线程池。

2023-10-20 10:35:14 116

原创 springMVC中统一异常处理@ControllerAdvice

1.在DispatcherServlet中初始化HandlerExceptionResolver2.controller执行完成后执行processDispatchResult(processedRequest,response,mappedHandler,mv,dispatchException),有异常则处理异常3.ExcepitonHandlerExceptionResolver中执行方法doResolveHandlerMethodException4.ExceptionHan

2023-10-18 16:56:27 447

原创 spring中循环依赖

注:单例的非构造方法依赖注入才能解决循环依赖。

2023-10-13 15:08:07 26

原创 httpClient

如果服务端关闭连接,发送FIN包,在这个FIN包发送但是还未到达客户端期间,客户端如果继续复用这个TCP连接发送HTTP请求报文的话,服务端会因为在四次挥手期间不接收报文而发送RST报文给客户端,客户端收到RST报文就会提示NoHttpResponseException。2.设置一个定时线程,定时清理上述闲置连接,定时时间设置为keep alive timeout的一半以保证超时前回收。httpGet,httpPost也可以设置上面的三个属性,设置了后,则httpClient设置的此三个属性不生效。

2023-10-11 16:28:13 82

原创 AQS的理解

当parkNanos结束后,将自己添加到同步队列中,然后尝试从同步队列中获取锁,所以awaitNanos(long nanosTimeout)执行完后也不是马上执行后面的逻辑,可能同步队列中还有排在前面的thread节点。执行await()方法时,当前线程添加到condition队列中,同时唤醒同步队列中一个线程,自身也进行park(当在同步队列中且unpark后会尝试获取锁)NonFairSync 正常也是从同步队列中,从头到尾一个个的取线程节点,但新加的线程允许抢占式的获取,不排队。

2023-10-11 15:16:56 28

原创 PriorityQueue

2.每次添加元素(实现comparable接口)时,调整堆顶是最小的元素,取元素是取的堆顶元素,取完后再调整堆顶元素是最小值。1.数组存放的堆数据,堆顶数据最小,左右节点比父节点大。

2023-10-11 14:18:38 19

原创 tomcat中ThreadPoolExecutor

3.已提交未完成的任务数大于当前线程数,线程不够用,直接创建线程,不会直接进入阻塞队列(通过TaskQueue中重写offer(Runnable)方法返回false实现)tomcat中的ThreadPoolExecutor通过继承java中ThreadPoolExecutor来实现定制化的。2.创建线程池时就已经预初始化了核心线程。1.设置了阻塞队列的长度。

2023-10-11 14:08:44 29

原创 ReservedThreadExecutor

jetty中为实现EatWhatYouKill的线程策略,目的是同一个线程侦测I/O事件和处理I/O事件,充分利用了CPU缓存,并减少了线程切换的开销。_capacity指定了最大执行EatWhatYouKill策略的线程数。

2023-10-11 13:50:25 51

原创 jetty中的QueuedThreadPool线程池

(5)QueuedThreadPool中非核心线程的回收是按idleTimeout间隔一个个回收的(即串行),而ThreadPoolExecutor中非核心线程是按每个线程poll(keepAliveTime,TimeUnit.NANOSECONDS)来回收的(即并行)(3)QueuedThreadPool中当空闲线程不够时,直接创建新的线程,而ThreadPoolExecutor要等到阻塞队列满的时候才创建新的线程。(2) 每新建一个线程,启用的线程数加1,空闲的线程数加1。

2023-10-11 10:40:02 164

原创 ScheduledThreadPoolExecutor

执行完一个任务后再把这个任务添加到DelayedWorkQueue中,任务执行用的是FutureTask,任务执行过程中如果有异常抛出则会影响新任务的添加,所以我们在处理业务逻辑时要自己try catch异常。2.用scheduledFutureTask当一个task,它继承FutureTask,使用方法runAndReset()返回的boolean值来判断是否添加新的任务到阻塞队列中。schedule方法只执行一次,其它的两个周期性执行,根据private final long period;

2023-10-11 09:53:15 31

原创 ThreadPoolExecutor

默认情况下,当空闲时,核心线程保持alive,非核心线程会超时回收掉,超时时间用参数keepAliveTime控制。参考tomcat中的线程池ThreadPoolExecutor,重写execute(Runnable command)方法,在里面增加数据,重写afterExecute(Runnable r,Throwable t),在里面减少数量。

2023-10-09 17:14:28 27

原创 DelayQueue

2.peak()(只查出来,不删除)出首元素时,判断getDelay()是否小于等于0,只有小于等于0时才取出,否则等待剩余的时间awaitNanos(long nanosTimeout)1.底层是一个PriorityQueue队列(数组,堆结构),每次添加元素(实现Comparable接口)时,调整堆顶是最小的元素,取元素是取的堆顶元素,取完后再调整堆顶元素是最小值。4.非公平锁,所以是竞争成为leader。

2023-10-09 14:21:25 19

原创 FutureTask

runAndReset方法执行成功后不会设置返回结果,也不会通知waitNode队列中的线程unpark,会返回执行成功与否的状态,用于重复多次执行的场景。(在ScheduledThreadPoolExecutor中使用)run方法执行成功后会设置返回的结果及通知waitNode队列中的线程unpark.

2023-10-09 14:06:01 18

原创 jetty中springMVC的contoller返回DeferredResult的理解

1.servlet会请求两次一个是public void handle(HttpChannel channel);另一个是public void handleAsync(HttpChannel channel)第一次是在httpConnection中通过onFillable()方法调用HttpChannel的handle()方法(正常请求都是通过此执行的)第二次在httpchannelState中的dispatch方法(添加httpChannel任务到线程澉中,会再次调用handle()方法

2021-09-03 18:14:24 142

原创 Thread ThreadLocal InheritableThreadLocal

ThreadLocal解决的是变量在不同线程间的隔离性,在同一线程中的共享.InheritableThreadLocal 可以在子线程中取得父线程继承下来的值,继承的值可以再修改1.Thread 中有两个成员变量,分别是如下,其数据结构是一致的 /* ThreadLocal values pertaining to this thread. This map is maintained * by the ThreadLocal class. */ ThreadLoca......

2021-04-02 13:04:57 135

原创 数据结构

1.树 二叉树 平衡二叉树 二叉排序树 (AVL树) 平衡二叉排序树2.树的遍历先序遍历(波兰式)中序遍历后序遍历

2021-03-30 10:18:29 66

转载 activeMQ

如果要修改控制台的登录用户名密码,可以在conf/jetty-realm.properties文件中修改 1、activemq.xml新增账号密码(broker标签下添加) &lt;simpleAuthenticationPlugin&gt;     &lt;users&gt;         &lt;authenticationUser username="...

2018-07-17 17:20:08 214

转载 linux中网络

vi /etc/resolv.conf 设置域名解析服务器hostname可以查看主机名vi /etc/sysconfig/network 修改此文件可以修改主机名,修改完成后要重启服务器。一台服务器能ping通,但用telnet访问一个开启了的端口时不通,可能原因是开启了防火墙,关闭掉就行在线安装telnetyum install telent -y  telnet ip port 的返回值来确...

2018-07-05 10:47:59 119

转载 Centos忘记了root密码的处理方法

虚拟机安装了Centos,忘记了root密码,如何处理(1)重新启动Centos,在启动过程中,长按“ESC”键,进入GNU GRUB界面  (2)选择要进入的系统,按“E”键(在启动之前编辑命令)。    (3)选择第二项操作系统的内核“kernel”,按"E"键(在引导顺序编辑选定的命令)(4)在 “rhgb quiet”后面间隔,输入“1”或者“single”,按Enter键保存。(向内核传...

2018-07-05 10:37:46 240

原创 docker

docker的安装1.确保yum是最新的yum update2.添加 yum 仓库tee /etc/yum.repos.d/docker.repo &lt;&lt;-'EOF'[dockerrepo]name=Docker Repositorybaseurl=https://yum.dockerproject.org/repo/main/centos/$releasever...

2018-07-03 16:34:31 149 1

转载 国外著名java论坛

 www.sun.com-不用多说吧。www.apache.org-apache很多开源项目,无论是拿来用还是看源代码都很不错http://java.sun.com/docs/books/tutorial/来自SUN公司的官方Java指南 - 对于了解几乎所有的java技术特性非常有帮助. http://www.javablogs.com互联网上最活跃的一个Java...

2018-05-09 09:45:46 1693

转载 nfs

服务端配置 1. 安装nfs-utils和rpcbind复制代码代码如下:yum install nfs-utils rpcbind2.设置开机启动服务复制代码代码如下:chkconfig nfs on chkconfig rpcbind on3.启动相关服务复制代码代码如下:service rpcbind start service nfs start4.创建共享目录复制代码...

2018-05-06 17:43:54 169

转载 jenkins

1.jenkins的war包直接启动nohup java -jar jenkins.war --httpPort=10090 &amp;1.首先要在jenkins中添加svn的用户名和密码:打开“Credentials2.装maven插件3.配置maven路径4.默认的安装路径为/root/.jenkinshttps://blog.csdn.net/kefengwang/article/detai...

2018-04-28 09:17:43 116

转载 tomcat中session共享

在tomcat的context.xml中添加如下配置         host="127.0.0.1"                     port="6379"                   password="ermacharity@13714001947#189"                            database="1"  

2017-02-24 11:52:13 200

转载 linux中nfs

在服务器端中编辑/etc/exports文件,添加如下内容:/usr/local/tomcat/apache-tomcat_city/webapps/upload/ 10.26.42.209(rw,no_root_squash)/usr/local/tomcat/apache-tomcat_city/webapps/upload/ 10.27.193.22(rw,no_root_squ

2017-02-15 15:04:17 210

转载 linux中代理服务器软件squid

服务端配置1. 安装 squidyum -y install squidchkconfig --level 35 squid on 使用默认的/etc/squid/squid.conf 的配置文件即可,默认端口是3128,默认只允许内网IP代理访问上网2. 初始化和启动 squid –zservice squid

2016-09-23 13:36:51 1239

原创 java中常用单词

mutable  易变的,不定的:例如;org.springframework.core.env.MutablePropertySources priority  优先,例如:org.springframework.core.PriorityOrdered PostProcessor ,后处理器(名词) resolver,分解器,解析器(名词) customize,...

2016-08-09 09:48:28 2373

转载 spring

org.springframework.core.io.support.PropertiesLoaderUtilsspring中加载属性配制文件的工具类,也可以加载xml文件本质上还是调用jdk的Properties与XMLUtils类

2016-07-30 11:51:45 469

转载 tomcat

Tomcat服务器配置文件uri编码设置 URIEncoding="UTF-8"/>

2016-07-20 16:56:48 162

转载 FTP

配置系统用户能够通过ftp登录,然后禁用该用户直接登录系统,并且修改用户主目录usermod  -d  /home/posadm/   ftpadmin

2016-02-23 10:22:58 829

转载 iptables与firewall

-A:指定链名   -p:指定协议类型   -d:指定目标地址   --dport:指定目标端口(destination port 目的端口)   --sport:指定源端口(source port 源端口)   -j:指定动作类型  只修改/etc/sysconfig/iptables 使其生效的办法是修改好后先service iptables res

2015-11-19 15:22:31 344

转载 weedfs

1

2015-10-27 13:54:28 460

转载 redis

1

2015-10-27 13:53:12 335

转载 gearmand

1.

2015-10-27 13:47:25 487

空空如也

空空如也

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

TA关注的人

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