自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ConstXiong

记录编程实践...

  • 博客(790)
  • 资源 (7)
  • 收藏
  • 关注

原创 梳理一下分布式系统的问题

分布式系统设计的考点不外乎:理论、分布式事务、分布式服务、分布式存储、分布式缓存、消息队列、高可用、监控、日志、容器化持续集成与交付。问题细化下: CAP 理论及其证明 为什么分布式系统的一致性和可用性不能同时满足 CP 和 AP 架构的取舍 Base 理论及其与 CAP 的关系 如何理解Paxos 算法 Zookeeper 对 Zab 协议的应用,Zab 与Paxos的联系与区别 分布式事务的解决方案 解决分布式...

2021-05-13 09:07:07 716 3

原创 项目中如何用 Spring 和 Spring MVC 框架的?

如果你在企业的项目中用过 Struts2 框架,那说明你搞 Java 可能在 5 年以上了。在 Spring MVC 火之前,Struts2 + Spring + Hibernate 就是传说中的 SSH 框架,也有 Struts2 + Spring + MyBatis 即 SSM。后来渐渐就演化到 Spring + SpringMVC + MyBatis 成为了主流。再后来大家就都知道了。Spring 成为后端开发框架的标准早已是事实。使用 Spring 最大的好处它的 IoC 和 AOP 功能,项目

2021-04-25 13:12:44 1031

原创 Spring 框架用到了哪些设计模式?

工厂模式:Spring 使用工厂模式,通过 BeanFactory 来创建对象 单例模式:Bean 默认就是单例模式 策略模式:Resource 的实现类,针对不同的资源文件,实现了不同方式的资源获取策略 代理模式:Spring 的 AOP 功能用到了 JDK 的动态代理和 CGLIB 字节码提升 模板方法模式:父类生成代码骨架,具体实现延迟到子类,如 JdbcTemplate、RestTemplate 适配器模式:Spring AOP 中的 Advic..

2021-04-25 13:11:28 1100

原创 Spring 如何自定义注解?

Spring 中最简单的自定义注解的方式就是使用现有的注解,标注在自定义的注解之上,复用原注解的能力。/** * 自定义注解,继承自 @Component * * @author ConstXiong */@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Componentpublic @interface CustomComponent { String value() def

2021-04-25 13:10:12 1077

原创 如何用 Spring 加载资源?

Spring 中定义了资源接口: 只读资源 Resource 输入流 InputStreamSource 可写资源 WritableResource 带编码的资源 EncodedResource 上下文资源 ContextResource 内建了几种实现: BeanDefinitionResource ByteArrayResource ClassPathResource FileSystemResource .

2021-04-25 13:08:57 207

原创 如何用 Spring 实现国际化?

JDK 内一套国际化的标准 ResourceBundle 抽象类 PropertyResourceBundle propertes 文件获取国际化信息的实现类 MessageFormat 可以对文本进行格式化 Spring 在此基础上进行了整合,内建了ResourceBundleMessageSource、ReloadableResourceBundleMessageSource、StaticMessageSource、DelegatingMessageSourc...

2021-04-23 10:09:32 376

原创 如何用 Spring 实现事件驱动编程?

JDK 中事件编程标准接口 事件对象 java.util.EventObject 事件监听器 java.util.EventListener Spring 中的事件对应的类是 ApplicationEvent,事件的处理方式如下:1、实现ApplicationListener 接口,可以在onApplicationEvent 方法上处理ApplicationEvent2、@EventListener 注解加载事件处理的方法上需要将ApplicationLi...

2021-04-23 10:08:17 423 1

原创 Spring AOP 是如何实现的?

首先,Spring AOP 有一些特性: 纯 Java 实现,无编译时特殊处理、不修改和控制 ClassLoader 仅支持方法级别的 Joint Points 非完整的 AOP 框架 与 IoC 进行了整合 与 AspectJ 的注解进行了整合 使用层面,有三种编程模型: <aop: 开头的 xml 配置。 • 激活 AspectJ 自动代理:<aop:aspectj-autoproxy/> •配置:<aop:..

2021-04-21 16:03:31 309

原创 Spring Advice 有哪些类型?

Before Advice:在连接点(Join point)之前执行 After Advice:当连接点退出的时候执行 Around Advice:环绕一个连接点的增强,这是最强大的一种增强类型。可以在方法调用前、后完成自定义的行为、是否继续执行连接点、是否进行原逻辑、是否抛出异常来结束执行 AfterReturning Advice:在连接点正常完成后执行的增强,如果连接点抛出异常,则不执行 AfterThrowing Advice:在方法抛出异常退出时执行的增..

2021-04-21 09:14:26 1205

原创 Spring 如何解决 bean 的循环依赖?

原型模式下的循环依赖是无法无法解决的 构造方法注入 + 单例模式,仅可以通过延迟加载解决 setter 方法和属性注入 + 单例模式下,可以解决 核心逻辑如下:AbstractAutowireCapableBeanFactory.allowCircularReferences=true通过三级缓存(或者说三个 Map 去解决循环依赖的问题),核心代码在 DefaultSingletonBeanRegistry#getSingletonprotected Object ..

2021-04-21 09:10:51 282

原创 介绍一下 Spring 容器的生命周期

BeanFactory 是 Spring IoC 底层容器,ApplicationContext 是它的超集有更多能力,所以这里以重点说下ApplicationContext。ApplicationContext 生命周期的入口在 AbstractApplicationContext#refresh 方法(参照小马哥的 Spring 专栏课件)1、应用上下文启动准备。AbstractApplicationContext#prepareRefresh 启动时间 startupDate .

2021-04-06 14:20:05 1465

原创 介绍一下 Spring bean 的生命周期

Bean 的生命周期按最详细的来说如下(参照小马哥的 Spring 专栏课件),其实细节还远不止如此,都在代码 AbstractBeanFactory#doGetBean 里,可以自己走起!1、Spring Bean 元信息配置阶段。xml、properties 配置文件中配置 bean 的信息;代码中使用注解标识 bean;代码中使用 api 设置 BeanDefinition 的属性值或构造方法参数。2、Spring Bean 元信息解析阶段。BeanDefinitionReader 的三种实现

2021-04-06 14:18:02 416

原创 MySQL 递归查询

初始化脚本CREATE TABLE t_depart (id int,pid int,name VARCHAR(100));insert INTO t_depart VALUES(1, NULL, '1级');insert INTO t_depart VALUES(2, 1, '1.1级');insert INTO t_depart VALUES(3, 1, '1.2级');insert INTO t_depart VALUES(4, 2, '1.1.1级');insert INT

2021-04-01 16:14:24 390

原创 自定义 Bean 作用域

Spring 实现自定义的 bean 作用域实现Scope 接口 调用AbstractBeanFactory#registerScope 方法 bean 配置的地方指定作用域,如 <bean scope=""> 或 @Scope("")以下实现一个线程级别的 bean 的作用域先看 Scope 接口的实现/** * 线程级别 scope * * @author ConstXiong */public class ThreadLocalScope impl...

2021-03-12 09:29:28 474 2

原创 Bean 的作用域

Spring bean 的作用域包含singleton prototypeweb 应用中再加上request session application websocket基于上一篇的应用进行改造,加入 bean,设置作用域。spring xml 加入 prototype 的 User<bean id="user2" class="constxiong.User" scope="prototype"/>在 Controller 中加入各种作用域bean 的请求.

2021-03-11 17:39:31 219 1

原创 maven 集成 tomcat 以 jar 的方式打包 web 应用

maven 集成 tomcat 以 jar 的方式打包 web 应用,需要插件,pom.xml 如下<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/mave

2021-03-10 14:11:27 1487 3

原创 Spring 依赖注入与依赖查找来源的区别

依赖查找的来源:xml <bean> BeanDefinitionRegistry#registerBeanDefinition SingletonBeanRegistry#registerSingleton 注解 @Bean @Component 派生出的注解,如@Configuration IoC 容器内建 bean。如ConfigurationClassPostProcessor,AutowiredAnnotationBeanPostProcessor,CommonAn...

2021-03-09 08:51:35 642 2

原创 Spring 依赖注入的处理过程与 DependencyDescriptor 的说明

Spring 依赖注入处理的代码入口在DefaultListableBeanFactory#resolveDependency() 方法。该方法第一个参数DependencyDescriptor descriptor 继承自 InjectionPoint,是这次依赖注入的描述,类里的信息说明如下://依赖所在的声明类private final Class<?> declaringClass;//如果依赖是成员方法的某个参数,则这里记录该成员方法的名称private Stri..

2021-03-08 09:23:32 1056 1

原创 Spring 各种 Aware 接口回调注入

Spring bean 实现了如下 Aware 接口,可以注入相关对象:BeanFactoryAware, //获取 IoC 容器 BeanFactory 的能力ApplicationContextAware, //获取 Spring 应用上下文 ApplicationContext 对象的能力EnvironmentAware, //获取 Environment 对象的能力ResourceLoaderAware,

2021-03-05 08:58:48 971 1

原创 Spring Bean 生命周期内的 Exception 复现

涉及 Bean 相关的异常说明:NoSuchBeanDefinitionException:Bean 不存在 NoUniqueBeanDefinitionException:多个 Bean BeanInstantiationException:注册了无法实例化的 Bean BeanCreationException:Bean 的初始化过程报错,如 init 方法内报错 BeanDefinitionStoreException:BeanFactory 遇到非法的 BeanDefinition,如

2021-03-03 08:55:19 342 3

原创 Spring 内建 Bean

Spring Ioc 容器在启动时会默认创建一些 Bean,用来后续各种处理:Environment:外部化配置以及 Profiles systemEnvironment Property 对象:Java 系统属性 systemEnvironment Map 对象:操作系统环境变量 MessageSource:国际化资源相关 LifecycleProcessor:Lifecycle Bean 处理器 ApplicationEventMulticaster:Spring 事件广播器 Confi

2021-03-03 08:54:03 200 1

原创 Spring Bean 的别名

Spring IoC 容器中指定别名的方式:xml <bean> name 属性使用 空格、英文逗号(,)、英文分号(;) 分隔 <alias name="user1" alias="user5"/> 指定示例代码:spring xml 配置<bean name="user1,user2 user3;user4" class="constxiong.User"> <property name="id" value="1"/> &lt.

2021-03-02 09:15:23 669

原创 Spring Bean 未指定名称的命名规则

Spring IoC 容器中,指定名称的方式:xml <bean> 配置 id 或 name 注解指定 name BeanDefinition 指定 name register Bean 指定 beanName 参数这些都比较好理解。那如果未指定 Bean 的名称,Bean 会被如何命名呢?常见的 Bean 命名规则如下:xml <bean> 未指定 id、name, 生成规则:package.类名、package.类名#编号 @Component 未.

2021-03-01 16:04:41 1850 3

原创 Bean 何时被 GC

当一个对象要被 JVM 垃圾收集器回收掉时会执行对象的finalize 方法,所以 User 类对该方法进行重写package constxiong;public class User { @Override protected void finalize() throws Throwable { System.out.printf("我(id:%d)要被 gc 回收了", id); super.finalize(); } private Integer id; pri.

2021-02-26 10:40:18 342

原创 Spring Bean 延迟加载

Spring 中可以在 xml <bean> 中配置参数lazy-init="true" 可以使用@Lazy 注解标记 Bean 需要延迟加载延迟加载的优缺点很明显:提升系统的启动速度,按需要加载 Bean 节约了内存 但不符合 fast-fail 原则,如果系统已经启动完成,在后期的使用过程加载 Bean 出现异常情况比如内存不够,那对系统后期的正常使用影响很大所以需酌情使用。示例代码:spring xml 配置<?xml version="...

2021-02-25 09:59:57 804 1

原创 ObjectFactory 与 BeanFactory 的区别

ObjectFactory 与 BeanFactory 都提供查找实例的能力。按照单词理解ObjectFactory 是对象的工厂 BeanFactory 是 Bean 的工厂ObjectFactory接口通常用于封装一个通用的工厂。仅关注一个或一种类型的对象的生产(查找)。ObjectFactoryCreatingFactoryBean 可以实现 Bean 的延迟加载;TargetBeanObjectFactory 是其静态内部类,实现了 ObjectFactory 接口,用于生产 ta.

2021-02-24 00:18:14 479

原创 Bean 销毁的方式与顺序

Bean 的销毁方式:@PreDestroy 注解作用于方法 实现 DisposableBean 接口,复写 destroy 方法 自定义 destroyMethod:xml <bean destroy-method="beanDestroy">属性、@Bean(destroyMethod = "beanDestroy")、BeanDefinitionBuilder#setDestroyMethodName示例代码:spring 配置文件<?xml version="1

2021-02-23 21:44:48 564 1

原创 Bean 初始化的方式与顺序

Bean 在实例化完成后,可以配置初始化,方式如下:@PostConstruct 注解作用于方法 实现InitializingBean 接口,复写afterPropertiesSet 方法 自定义 initMethod:xml <bean init-method="init">属性、@Bean(initMethod = "init")、BeanDefinitionBuilder#setInitMethodName示例代码:spring 配置文件<?xml ve...

2021-02-23 09:07:29 928 1

原创 Bean 的实例化方式

Bean 的实例化方式构造方法 静态工厂 Bean 工厂 FactoryBean SPI,org.springframework.beans.factory.serviceloader.ServiceLoaderFactoryBean AutowireCapableBeanFactory#createBean BeanDefinitionRegistry#registerBeanDefinition...xml 方式,演示实例化方式spring 配置文件<?xml.

2021-02-22 00:35:50 202 3

原创 Bean的注册方式

Bean 的注册方式:xml <bean> @Bean 注解 @Component 及其派生出来的注解 @Service、@Controller、@Repository;其他规范类似功能的注解,@Resource、@Inject @Import BeanDefinitionRegistry#registerBeanDefinition BeanDefinitionReaderUtils#registerWithGeneratedName AnnotatedBeanDefiniti

2021-02-22 00:02:37 366

原创 什么是 BeanDefinition?

BeanDefinition 是定义 Bean 的配置元信息接口,包含:Bean 的类名 设置父 bean 名称、是否为 primary、 Bean 行为配置信息,作用域、自动绑定模式、生命周期回调、延迟加载、初始方法、销毁方法等 Bean 之间的依赖设置,dependencies 构造参数、属性设置...BeanDefinition 子类方法更为丰富些。派生出AnnotatedBeanDefinition 接口,以及常用子类RootBeanDefinition、Gene...

2021-02-21 08:02:41 13938

原创 Spring IoC 容器启动时做了什么?

BeanFactory 是 Spring IoC 容器的底层实现,以 XmlBeanFactory 为例XmlBeanFactory 构造方法需要Resource 对象 XmlBeanDefinitionReader#loadBeanDefinitions 方法解析xml Resource、获取和注册BeanDefinition代码入口:public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) thro...

2021-02-20 23:27:13 264

原创 BeanFactory 与 FactoryBean 的区别

BeanFactory 是 IoC 底层容器;FactoryBean 是 创建 Bean 的一种方式,帮助实现复杂的初始化逻辑。看个例子:User.javapackage constxiong;public class User { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this

2021-02-18 09:28:07 349 2

原创 BeanFactory 与 ApplicationContext 的区别

BeanFactory 是 Spring IoC 容器的底层实现;ApplicationContext 拥有 BeanFactory 的所有能力,还提供了Easier integration with Spring’s AOP features Message resource handling (for use in internationalization) Event publication Application-layer specific contexts such as the

2021-02-18 08:57:56 217 2

原创 Spring IoC 依赖注入的实现方式

上一篇,用 setter 方式举例说明了 Spring 中的依赖注入支持的数据类型。这篇,看看依赖注入的实现方式。首先,bean 的配置文件可以通过 xml 和 properties 两种方式。其中 xml 是主流,properties 基本不用,具体实现方式: setter方法 构造器 接口回调 注解 API xml 配置文件<?xmlversion="1.0"encoding="UTF-8"?><...

2021-02-16 22:13:58 243

原创 Spring IoC 依赖注入(支持哪些数据类型?)

Dependency Injection,依赖注入。 对象之间依赖关系的管理交给 Spring 维护; 是实现控制反转的方式之一; 可以降低程序之间的耦合(依赖关系)。 Spring 实现的 IoC 容器中,基本类型和对象都可以注入,按配置细节区分: Java 基本类型 String bean Spring 自建 bean(未自己申明的 bean,可以通过 getBean 方法获取到) 非 bean(无法通过 getBean .

2021-02-16 21:50:07 506 1

原创 Spring bean 依赖查找

Spring bean 的依赖查找,可以 根据名称查找 根据类型查找单个和所有 bean 根据 名称 + 类型 查找 根据注解查找 延迟查找 配置文件<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XM...

2021-02-16 21:47:09 616

原创 Spring-IoC

这个话题经常被问,但真有去追一追其发展史的不多。IoC,Inversion of Control,控制反转,是面向对象编程中的一种设计原则,用来降低代码的耦合度。最通俗易懂的理解就是,本来由程序员写代码创建和组装类及依赖对象的控制权,反转交给容器去控制。IoC 并非 Spring Framework 特有,也有一些其他的 IoC 开源框架如 Apache Avalon、PicoContainer、Google Guice;只是 Spring 被大量使用,其 IoC 的功能也被熟知。...

2021-02-16 21:05:22 124

原创 Spring 的核心特性

Spring 框架现在已经是一个庞大的生态,在入门 Java 没多久我就尝试过读 Spring 的源码,按能抽出整块时间读源码去算的话,有 3 次;《Spring 源码深度解析》这本书也看了一遍多,但收获一般。现在脑子里印象最深刻的就是 IOC 容器XML 解析成bean那部分 AOP 切面的实现 Spring MVC 如何做到从Http 请求通过 @Controller、@RequestMapping 注解找到对应的方法并返回视图或写出文本 我可以在 ...

2021-02-10 10:31:57 506 3

原创 mysql-8.0.21-winx64 集群-主从配置

主:172.31.32.1841、授权所有用户可以连接主节点update user set host='%' where user='root';flush privileges;2、主节点在 my.ini 文件新增配置server-id=1log-bin=mysql-bin3、重启服务net stop mysqlnet start mysql4、为从节点创建账号同步账号,授权CREATE USER 'slave'@'%' IDENTIFIED...

2021-02-03 08:56:20 304 2

eclipse使用教程ppt

ppt版,eclipse的使用教程。简单介绍了eclipse的使用。

2018-09-03

Eclipse入门教程

eclipse的入门教程,介绍了如何使用eclipse开发java项目。

2018-08-31

JasperReport中文用户手册

JasperReport是一款开源报表引擎,用纯java编写。文档是对JasperReport的介绍。包含设计工具和模板文件等...

2018-08-30

无线wifi破解教程

简单介绍了wifi的工作原理。讲解了如何使用破解工具,搭建工作环境。使用字典破解wifi的密码。

2018-08-30

计算机网络原理 自顶向下方法 英文第6版

自顶向下的方法来讲授计算机网络的原理及其协议,即从应用层协议开始沿协议栈向下讲解,强调应用层范例和应用编程接口,使读者尽快进入每天使用的应用程序环境之中进行学习和“创造”。《计算机网络(自顶向下方法原书第4版)》的讲解以因特网为例,学以致用,注重教学法,深入浅出地重点讲解计算机网络的基本原理。

2018-08-27

空空如也

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

TA关注的人

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