- 博客(23)
- 收藏
- 关注
原创 《如何优雅的关闭一个线程》
一、如何优雅的关闭一个线程所谓的“优雅”,指的是给其他被关闭的线程一个机会料理后事,而不是被一剑封喉。二、如何理解两阶段终止模式所谓的两阶段终止模式,是指第一个阶段,线程T1向线程T2发送终止指令,而第二阶段则是线程T2响应终止指令。三、线程的状态转换图从这个图里你会发现,Java线程进入终止状态的前提是线程进入Runnable状态,而实际上线程也可能是在休眠状态,也就是说,我们想要终止一个线程,首先要把线程的状态从休眠状态转换到Runnable状态,这个需要使用Java Thread
2021-01-16 16:09:45
625
原创 《Spring MVC源码分析》
一、Spring MVC 框架快速体验1.1 配置web.xml1.2 创建Sring 配置文件的applicationContext.xml1.3 创建model1.4 创建controller二、源码分析2.1 ContextLoaderListenerContextLoaderListener的作用是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就
2021-01-03 10:57:06
220
2
原创 《Spring AOP源码分析》
一、AOP的概述1.1 AOP的概念切面 (aspect ):规则,一系列的方法统一的规则连接点(JoinPoint):在程序执行过程中的一点,例如方法的执行或异常的处理。通知(Advice) :代理对象执行规则业务的方法切点 (PointCut): 需要代理的具体方法,target的某一个方法目标对象:需要被代理的对象target织入(Weaving) :织入是将切面和业务逻辑对象连接起来, 并创建通知代理的过程。1.2 几个通知类型前置通知:PointC
2020-12-27 11:38:54
186
原创 《SpringBoot启动源码分析》
一、整体过程说明1.1 启动入口方法SpringApplication.run(LoySpringBootApplication.class,args);2.1 总体过程1.获取并启动监听器2.构建容器环境3.创建容器4.实例化SpringBootExceptionReporter,用于支持报告异常的错误5.准备容器6.刷新容器7.刷新容器后的扩展接口2.2 整体过程代码 /** * 运行一个spring应用,创建并刷新一个ApplicationContext */
2020-12-20 11:38:39
174
2
原创 《Spring源码分析之Bean的创建过程》
一、创建过程概览1.1 prepareRefresh();// Prepare this context for refreshing.// 准备待刷新的上下文环境1.2 obtainFreshBeanFactory();// Tell the subclass to refresh the internal bean factory.// 通知子类刷新内部的bean工厂1.3 prepareBeanFactory(beanFactory);// Prepare the bean
2020-12-14 18:56:34
190
原创 《Spring源码分析之BeanDefinition的创建过程》
一、Spring的几个类说明1.1 BeanDefinitiom1.2 Resource1.3 BeanFactory1.4 ApplicationListener
2020-12-07 23:37:56
160
原创 《Loy解说SpringCloud之Zuul》
一、简介 路由是微服务中不可或缺的一部分,例如/可以路由到我们的web服务下,而/api/order,可以路由到我们的订单服务,/api/product,可以路由到我们的商品服务。Zuul是Netflix公司提供的基于JVM的路由器和服务器端的负载平衡器。二、Zuul主要解决的问题 动态路由 鉴权 服务迁移 压力测试 三、如何使用Zuul 3.1 要想将Zuul引入到项目中,可以添加如下jar包的依赖 <!-- 依...
2020-11-28 23:34:28
180
原创 《Loy解说Hystrix》
1.1Hystrix项目搭建1.1.1 依赖相关jar// 新增hystrix依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency>1.1.2 hystrix 相关配置 ...
2020-11-22 22:39:05
138
原创 《Loy解说Eureka客户端源码(一)》
01 | 搭建Eureka客户端1. 依赖相关jar <!-- 引入eureka客户端端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId&g..
2020-11-17 00:08:41
130
原创 《Loy解说Eureka服务端源码(二)》
01 | 说明 接着上一篇文章,上一篇主要讲解了Eureka的搭建过程,已经自动配置类的一些相关配置,本篇重点说明以下内容服务端是如何接收客户端请求的?02 | 服务端如何接收客户端请求Jersey过滤器 该过滤器的作用类似于Spring-MVC,用于拦截API请求 与Spring-MVC不同的是,Spring-MVC使用拦截器进行请求拦截,而Jersey使用过滤器拦截。 实例化过程 ...
2020-11-15 23:42:22
134
原创 《Loy解说Eureka服务端源码(一)》
Eureka服务端源码分析(一)01 | Eureka服务端的作用服务注册 提供服务注册表 同步状态 Eureka Client 通过注册、心跳机制和Eureka Server 同步当前客户端的状态 Eviction 服务剔除 Cancel 服务下线 Eureka Client 在程序关闭时向Eureka Server 发送取消请求,发送请求后,该客户端实例信息将从Eureka Server 的实例注册表中删除 02 | 搭建Eureka服务端应用创建一个eureka-..
2020-11-15 17:10:09
126
原创 《Loy解说SpringBoot的注解》
一、Conditional 条件注解说明@ConditionOnBean 当容器下有指定的bean条件下 @ConditionOnClass 当类路径下有指定的Class条件下 @ConditionOnExpression 基于表达式条件为true时,才实例化 @ConditionOnMissBean 当容器下没有指定的bean条件下 @ConditionOnMissClass 当类路径下没有指定的class条件下 @ConditionOnWebApplication 当项目为web项目条件下
2020-08-03 18:29:46
153
原创 《码农时光的飞行日记》
| 生活不止于眼前的代码,还有诗与远方的BUG时光轴:》 2014-10-08 在岁月的褶皱里,透过阳光的空隙,穿越至此刻时,激动满怀的我正式成为了一名码农。》 2015-02-27 漫步于世界的某个角落,然后用脚步丈量世界的每个角落,在繁华的街市里,终于踏足于深圳。》 2019-11-04 开启博客之旅。个人喜好:篮球、阅读...
2019-11-04 19:39:33
200
原创 《搭建ElasticSearch服务》
一、搭建ElasticSearch服务1、下载elasticSearch压缩文件下载地址:https://www.elastic.co/downloads/elasticsearch下载相对应的版本2、将下载的文件解压我的路径是 /app/tools/elasticsearch-6.5.4.tar.gz3、启动服务cd /app/tools/elasticsea...
2018-12-29 14:49:47
276
原创 《elasticSearch的填坑记录》
一、Springboot整合elasticSearch的过程1、添加依赖 <!-- Spring Boot Elasticsearch 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <a...
2018-12-27 18:16:08
1196
原创 《搭建SpringBoot的基本步骤》
1、检查环境 (1)查看jdk版本 java -version (2) 查看maven版本 mvn -version 2、创建maven 项目 目录结构为: 3、加入springboot相关jar包的依赖4、创建运行主类5、创建控制层类6、运行application类7、运行结果说明:供学习记录使用。8、总结(1)需要检查环境(2)pom.xml文件中引入s...
2018-06-05 19:07:36
973
原创 《HashMap的常用操作》
package com.sufow.test;import java.util.HashMap;import java.util.Map;/*** * HashMap的一些常用方法的使用 * @author Administrator * */public class MapTest2 { public static void main(String[] args) {
2017-02-24 17:32:28
454
原创 《Map中HashMap与TreeMap的排序以及四种遍历方式》
一、Map概述1、Map是将键映射到值( key-value )的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。2、Map与Collection的区别 (1)Map 是以键值对的方式存储元素,键唯一,值可以重复。 (2)Collection存储的是单列元素,子接口Set元素唯一,子接口List可以重复。 (3)Map的数据结构针对键有效,跟值无关
2017-02-24 16:24:12
1990
原创 《提高SQL查询效率的30种方法》
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: selec
2017-02-23 11:27:07
428
转载 Java程序员应该知道的10个调试技巧
调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷。对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程序,更需要学会如何调试程序。本文介绍了Java程序员必知的10个调试技巧,保证让你受益匪浅!调试可以帮助识别和解决应用程序缺陷,在本文中,作者将使用大家常用的的开发工具Eclipse来调试Java应用程序。但这里介绍的调试方法基本都是通用的,也适用于NetBea
2017-02-15 16:29:58
175
原创 JAVA中classpath的作用与获取方式
一、classpath的作用1、当需要编译JAVA源文件时,设置classpath 可以解决需要编译的class不在当前目录下的问题。 例如当前目录是D:/java/demo,而需要执行的文件在E:/java/classes/Test.class。 javac -classpath E:/java/classes/Test.java 当需要执行jav
2016-11-03 16:09:32
674
原创 ibatis中SqlMapClientTemplate与SqlMapClient的区别
一、SqlMapClientTemplateSqlMapClientTemplate是由Spring框架用于支持ibatis的一个类。 SqlMapClientFactoryBean是SqlMapClientTemplate的使用基础,必须在配置文件配置相关bean<bean id="sqlMapClient" class="org.springframework.orm...
2016-11-02 16:20:36
1862
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人