自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wangyongxun1983的博客

吃的是粮食,拉的是思想

  • 博客(49)
  • 资源 (1)
  • 收藏
  • 关注

原创 Sharding-JDBC

01、主要概念增强了JDBC的功能,使JDBC具有分库分表的作用。比如:SQL的解析、路由、执行和结果的处理等等。02、框架:逻辑表会在SQL解析和路由时被替换成真实的表名。分片键不一定是主键,也不一定有业务含义。03、核心概念数据节点、逻辑表、真实表、动态表、广播表、绑定表、分片键【1】、动态表对于逻辑表的分表【2】、广播表全局表,每个分片的数据库都包含有该表。【3】、绑定表主表和字表的绑定关系应该在同一个数据库,负责无法关联出数据的完整性。

2020-10-23 20:59:06 335

原创 02-JVM实战

01、查看参数java -XX:+PrintFlagsFinal -version > flags.txt值得注意的是"="表示默认值,":="表示被用户或JVM修改后的值02、实践和单位换算1Byte(字节)=8bit(位) 1KB=1024Byte(字节) 1MB=1024KB 1GB=1024MB 1TB=1024GB设置堆内存大小和参数打印 -Xmx100M -Xms100M -XX:+PrintFlagsFinal 查询+PrintFlagsFinal的值...

2020-10-18 02:18:30 276

原创 01-JVM---Garbage Collect 垃圾回收

01、怎么确定一个对象是垃圾对象引用计数法:对于某个对象而言,只要应用程序中持有该对象的引用,就说明该对象不是垃圾,如果一个对象没有任何指针对其引用,它就是垃圾。【缺点:互相引用导致永远不被回收】 可达性分析:通过GC Root的对象,开始向下寻找,看某个对象是否可达。【能作为GC Root:类加载器、Thread、虚拟机栈的本地变量表、static成员、常量引用、本地方法栈的变量等】02、垃圾收集算法【1】、标记-清除(Mark-Sweep)找出内存中需要回收的对象,并且把它们标记出来.

2020-10-18 00:31:11 144 2

原创 01--BeanFactoryPostProcessor

扩展原理:BeanPostProcessor:bean后置处理器,bean创建对象初始化前后进行拦截工作的BeanFactoryPostProcessor: beanFactory后置处理器 在BeanFactory标注初始化之后调用;来制定和修改BeanFactory的内容 所有的bean定义已经保存加载到beanFactory,但是bean的实例还没有创建BeanFactoryPostProcessor原理1)、ioc容器创建对象...

2020-10-12 15:11:03 88

原创 04--@EventListener与SmartInitializingSingleton

SmartApplicationListener1)、IOC容器创建对象并refresh()2)、finishBeanFactoryInitialization(beanFactory);初始化剩下的单实例bean 1)、先创建所有的单实例bean;getBean() 2)、获取所有创建好的单实例bean,判断是否是SmartInitializingSingleton类型; 如果...

2020-10-12 14:57:31 77

原创 03--ApplicationListener用法与原理

import org.springframework.context.ApplicationEvent;import org.springframework.context.ApplicationListener;import org.springframework.stereotype.Component;@Componentpublic class MyApplicationListener implements ApplicationListener<ApplicationEvent.

2020-10-12 14:56:07 16115

原创 02--BeanDefinitionRegistryPostProcessor

BeanDefinitionRegistryPostProcessor:利用BeanDefinitionRegistryPostProcessor给容器中再额外添加一些组件BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor: postProcessBeanDefinitionRegistry() 在所有bean定义信息将要被加载,bean实例还未创建; 优先于BeanFactoryPostPro...

2020-10-12 14:21:13 73

原创 03-Spring @Transactional注解不回滚不起作用无效

@Transactional注解的特性:service类标签(一般不建议在接口上)上添加@Transactional,可以将整个类纳入spring事务管理,在每个业务方法执行时都会开启一个事务,不过这些事务采用相同的管理方式。 @Transactional 注解只能应用到 public 可见度的方法上。 如果应用在protected、private或者 package可见度的方法上,也不会报错,不过事务设置不会起作用。 默认情况下,spring会对unchecked异常进行事务回滚;如果是check

2020-10-11 14:15:43 119

转载 02--spring事务的介绍

一、事务简单介绍事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。1.1 事务基本要素原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。1.2 Spring事务属性Spring事务属性对应TransactionDefinition类里面的各个方法。TransactionDefinition类方法如下所示:public interface TransactionDefiniti

2020-10-11 13:59:27 67

原创 01--spring事务的简介

环境搭建导入相关依赖:数据源、数据库驱动、等等模块 配置数据源、DataSource(Spring 提供简化数据库操作工具)操作数据库 给方法上标注@Transactional表示当前方法是一个事务 @EnableTransactionManagement开启基于注解的事务管理功能 事务管理器来管理器来控制事务 PlatformTransactionManagerimport org.springframework.context.annotation.Bean;import or.

2020-10-11 13:08:09 55

原创 02--@EnableAspectJAutoProxy

1

2020-10-10 21:24:38 82

原创 01--Spring的AOP

01、AOP的依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.3.17.RELEASE</version></dependency>02、AOP:动态代理指定程序运行期间动态的将某段代码切入到指定方法指定的位置进行

2020-10-10 13:55:06 121 1

原创 22--IOC总结

https://github.com/DocsHome/spring-docs/tree/master/pages/core 【Spring API】

2020-10-10 03:17:47 64

原创 21--自动装配-@Profile环境搭建和环境的注册

Profile Spring为我们提供的可以根据当前环境,动态的激活和切换一系列组件的功能比如: 开发换件、测试环境、生产环境数据源(A/B/C) 指定组件在那个环境的情况下才被注册的父容器中,如果不指定任何环境下都能注册加了环境标识的环境只有这个环境激活才能注册到容器中import org.springframework.beans.factory.annotation.Value;import org.springframework.context.Embedd...

2020-10-10 02:44:21 113

原创 20--自动装配-Aware注入Spring底层组件&原理

自定义组件想要使用Spring容器底层的组件的时候,(ApplicaitonContext、BeanFactory等等);可以让自定义组件实现XxxxAware接口。再创建的时候,会调用接口的方法注入相关的组件Aware会把Spring底层的一些组件注入到自定义的Bean中XxxxAware:功能实现通过XxxProcessor实现的比如:ApplicationContextAware==>>ApplicationContextAwareProcessorSp..

2020-10-10 02:04:54 85

原创 19--自动装配-方法、构造器位置的自动装配.

2020-10-10 01:34:20 122 1

原创 18--自动装配-@Resource&@Inject

Spring还支持使用@Resource(JSR250)和@Inject(JSR330)[java规范的注解]@Resource:可以和@Autowired一样实现自动装配,默认是按照组件的名称进行装配 没有支持@Primary功能,没有支持@Autowired(required=false)功能@Inject:需要导入javax.inject的包,和@Autowired功能一样,但是没有required=false功能...

2020-10-10 01:16:37 71

原创 17--自动装配-@Autowired&@Qualifier&@Primary

自动装配spring利用依赖注入(DI),完成对IOC容器中各个组件的依赖关系@Autowired:自动注入默认优先按照类型去容器中找对应的组件 如果在容器中找到多个组件,再将属性名称作为组件的id去容器中查找,或通过@Qualifier("xxx")组件指定组件的id,而不是使用属性的名称 自动装配默认一定要将属性赋值好,没有就会报错。也可以设置@Autowired(required=false) @Primary:让Spring自动装配的时候,默认使用首选的bean,也可以继续使用@Q

2020-10-10 01:04:55 92

原创 16--指定多个注解可以重复使用

@Repeatable(Xxxxx.class)

2020-10-09 23:53:01 410

原创 15--属性赋值-@Value赋值和@PropertySource加载外部配置文件

使用@Value赋值基本数据类型 可以写:SpringEL表达式#{} 也可以写${}:取出配置文件【properties】的值(运行在环境变量里面的值)import org.springframework.beans.factory.annotation.Value;public class PersonBean { /** * 使用@Value赋值 * 1、基本数据类型 * 2、可以写:SpringEL表达式#{} * 3、也可以写${}:取出配置文件【proper

2020-10-09 23:45:34 147

原创 14--生命周期-BeanPostProcessor在Spring底层的使用.

Spirng底层对BeanPostProcessor 无论是赋值,注入其他,如@Autowired,生命周期注解功能等等

2020-10-09 23:21:35 72

原创 13--生命周期-BeanPostProcessor-后置处理器

BeanPostProcessor(接口):bean的后置处理器在bean初始化前后进行一些处理工作【1】、BeanPostProcessor#postProcessBeforeInitialization 在初始化之前Apply this BeanPostProcessor to the given new bean instance beforeany bean initialization callbacks (like InitializingBean's {@code afterPr

2020-10-09 22:36:06 158

原创 12--生命周期-@PostConstruct&@PreDestroy

@PostConstruct:在bean创建完成并且属性赋值完成;来执行初始化方法@PreDestroy:在容器销毁bean之前通知我们进行清理工作import javax.annotation.PostConstruct;import javax.annotation.PreDestroy;import org.springframework.stereotype.Component;@Componentpublic class Dog { public Dog() {..

2020-10-09 20:32:40 124

原创 11--生命周期-InitializingBean和DisposableBean

【1】通过Bean实现InitializingBean这个接口(定义初始化逻辑)Invoked by a BeanFactory after it has set all bean properties supplied由BeanFactoryBean提供的所有属性。【2】通过DisposableBean这个接口(销毁bean) 由BeanFactory在单例销毁时调用。import org.springframework.context.annotation.Bean;import ..

2020-10-09 20:21:46 103

原创 10--生命周期-@Bean指定初始化和销毁方法

/*** bean的生命周期:* bean的创建--->>初始化--->>销毁的过程* 容器管理bean的生命周期* 我们可以定义初始化和销毁的方法,容器在bean进行到当前生命周期的时候来调用我们自定义的* 构造方法:* 单实例:在容器启动的时候创建对象* 多实例:在每次获取的时候创建对象* 初始化* 对象创建好,并赋值好,调用初始化方法....* 销毁:* ...

2020-10-09 18:52:20 90

原创 09--组件注册-使用FactoryBean注册组件

import org.springframework.beans.factory.FactoryBean;public class MyFactoryBean implements FactoryBean<Color> { /** * 返回一个Color对象,这个对象会添加到容器中 */ @Override public Color getObject() throws Exception { // TODO Auto-generated method stub re.

2020-10-09 13:46:59 87

原创 08--组件注册-@Import-使用ImportBeanDefinitionRegistrar

import org.springframework.beans.factory.support.BeanDefinitionRegistry;import org.springframework.beans.factory.support.RootBeanDefinition;import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;import org.springframework.core.type.

2020-10-09 13:30:37 84

原创 07-组件注册-@Import-使用ImportSelector

import org.springframework.context.annotation.ImportSelector;import org.springframework.core.type.AnnotationMetadata;//自定义需要返回导入的数组public class MyImportSeletor implements ImportSelector { //返回值就是导入到容器中组件的全类名 @Override public String[] selectImport.

2020-10-09 13:11:56 127

原创 06--组件注册-@Conditional-按照条件注册bean

import org.springframework.beans.factory.config.ConfigurableBeanFactory;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.ComponentScan.Filter;i.

2020-10-09 12:45:41 69

原创 05--组件注册-@Lazy-bean懒加载

import org.springframework.beans.factory.config.ConfigurableBeanFactory;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.ComponentScan.Filter;i.

2020-10-09 11:38:55 80

原创 04--组件注册-@Scope-设置组件作用域

import org.springframework.beans.factory.config.ConfigurableBeanFactory;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.ComponentScan.Filter;i.

2020-10-09 11:29:28 56

原创 03--组件注册-自定义TypeFilter指定过滤规则

//配置类==配置文件(xml)@Configuration //告诉Spring这个一个配制类@ComponentScan(value="com.ceshi",includeFilters={ @Filter(type=FilterType.CUSTOM,classes={ MyFilterType.class })}) //value:指定要扫描的包。//excludeFilters=Filter[] 扫描排除//includeFilters=Filter[] 只扫描..

2020-10-09 11:14:31 907

原创 02-@ComponentScan-自动扫描组件&指定扫描规则

@Controllerpublic class PersonController {}@Repositorypublic class PersonDao {}@Servicepublic class PersonService {}//配置类==配置文件(xml)@Configuration //告诉Spring这个一个配制类@ComponentScan(value="com.ceshi",includeFilters={ @Filter(type=Filt.

2020-10-09 10:30:11 397

原创 01--Spring容器组件--@Configuration和@Bean

01、@Configuration和@Beanpublic class PersonBean { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { ...

2020-10-09 09:35:43 63

原创 Spring春天

Spring的博客分三个部分,第一部分Spring的应用第二部分Spring结构的设计第三部分Spring重要接口的翻译

2020-10-09 08:47:23 265

原创 分布式事务

01、事务的特性原子性、一致性、隔离性和持久性02、事务的隔离级别脏读、不可重复读、幻读03、CAP理论是指能满足一致性、可用性和分区容错性的这三项其中的两项。【1】、一致性1、客户端:得到的数据是最新数据2、服务端:分布式节点的数据保持一致性3、对于一致性,一致的程度不同大体可以分为强、弱、最终一致性三类。强一致性:要求更新的数据能马上访问到弱一致性:能允许部分数据或者全部数据访问不到最终一致性:经过一段时间后能访问到更新的数据【2】、可用性

2020-10-04 22:10:27 72

原创 13-Redis的实战

01、缓存穿透【1】、数据不存在的值的情况(1)缓存空数据(2)缓存特殊字符串,比如&&在数据库缓存一个空字符串,或者缓存一个特殊的字符串,那么在应用里面拿到这个特殊字符串的时候,就知道数据库没有值了,也没有必要再到数据库查询了。但是这里需要设置一个过期时间,不然的话数据库已经新增了这一条记录,应用也还是拿不到值。【2】、查询的值的值是不一样即使你每次都缓存特殊字符串也没用,因为它的值不一样。【3】、解决方案1、布隆过滤器原理2、布隆过..

2020-10-03 23:34:53 57

原创 12-Redis分布式【高性能、高并发、高可用】

RedisCluster是在Redis3.0的版本正式推出的,用来解决分布式的需求,同时也可以实现高可用。01、架构RedisCluster可以看成是由多个Redis实例组成的数据集合。客户端不需要关注数据的子集到底存储在哪个节点,只需要关注这个集合整体。案例:3主3从为例,节点之间两两交互,共享数据分片、节点状态等信息02、搭建https://gper.club/articles/7e7e7f7ff7g5egc7g6d03、数据分布如果是希望数据分布相对均匀的话,我们首

2020-10-03 21:43:17 162

原创 11-Redis的高可用

01、Redis自带主从复制配置【1】主从复制原理1、连接阶段slavenode启动时(执行slaveof命令),会在自己本地保存masternode的信息,包括masternode的host和ip。 slavenode内部有个定时任务replicationCron(源码replication.c),每隔1秒钟检查是否有新的masternode要连接和复制,如果发现,就跟masternode建立socket网络连接,如果连接成功,从节点为该socket建立一个专门处理复制工作的文件事件处理器,

2020-10-03 16:08:33 201

原创 10-Redis的内存回收

01、过期策略【1】、定时过期(主动淘汰)每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。【2】、惰性过期(被动淘汰)只有当访问一个key时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。【3】、定期过期每隔一定的时间,

2020-10-03 10:41:54 208 1

sql经典优化

sql优化,提高SQL查询效率

2014-02-10

空空如也

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

TA关注的人

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