- 博客(43)
- 收藏
- 关注
原创 SpringBoot @Conditional注解
@AutoConfigureBefore 在指定配置类初始化前加载@AutoConfigureAfter 在指定配置类初始化后加载@AutoConfigureOrder 指定配置类初始化顺序,越小初始化越早选择器@Conditional,当指定的条件都满足时,组件才被注册@ConditionalOnBean,指定bean在上下文中时,才注册当前bean。用在方法上,则默认依赖类为方法的返回类型@ConditionalOnClass,指定类在classpath上时,才初始化当前bean。用在方法上
2023-09-15 14:50:53
156
原创 Nginx反向代理与负载均衡
两者只需要修改nginx/conf/nginx.conf即可反向代理server { listen 81; server_name localhost; location / { proxy_pass https://www.youkuaiyun.com; #root html; #index index.html index.htm; } error_p
2022-05-27 17:31:44
74
原创 Linux安装Nginx
wget http://nginx.org/download/nginx-1.21.6.tar.gz解压 tar -zxvf nginx-1.21.6.tar.gzcd nginx-1.21.6.tar.gz输入./configure 看看缺少什么yum -y install gcc 以及yum -y install gcc-c++yum install -y pcre pcre-develyum install -y zlib zlib-devel./configure --prefix=/
2022-05-26 16:41:13
94
原创 redis集群
Redis有三种集群模式,分别是:主从模式Sentinel模式Cluster模式主从模式主从模式是三种模式中最简单的,在主从复制中,数据库分为两类:主数据库(master)和从数据库(slave)。其中主从复制有如下特点:* 主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库* 从数据库一般都是只读的,并且接收主数据库同步过来的数据* 一个master可以拥有多个slave,但是一个slave只能对应一个master* slave挂了不影响
2022-05-25 20:04:05
203
原创 shardingsphere-jdbc
shardingsphere-jdbc有四个分片规则inlinestandard通过自定义分片策略实现精确分片和范围分片complex通过多分片键实现精确分片hint强制分片,通过非SQL方式强制干预
2022-05-24 20:15:49
633
原创 数据库一致性
CAPC:Consistency一致性:访问所有的节点,得到的数据结果都是一样的。注意:这里的一致性指的是强一致性,也就是数据更新完,访问任意节点,看到的数据完全一致,要和弱一致性、最终一致性区分开来A:Availability可用性:所有节点都保持高可用性。注意:这里的高可用还包括,不能出现延迟,如节点B由于等待数据同步而阻塞了请求,那么节点B就不满足高可用性。也就是说,任何没有发生故障的服务必须在有限的时间内返回合理的结果集。P:Partiton tolerance分区容错性:一个分布式系统
2022-05-20 20:54:39
1930
原创 Sentinel非控制台使用
添加依赖 <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId> <version>1.8.0</version> </dependency> <!--如果要使用@Sentin
2022-05-05 17:23:55
589
原创 zookeeper集群
有了java环境之后建立三个结点的集群vi /etc/hostsvim /etc/profilevim /usr/local/java/apache-zookeeper-3.6.2-bin/conf/zoo.cfgdataDir=/tmp/zookeeper/datadataLogDir=/tmp/zookeeper/log//记得检查空格(重点)server.1=CentosA:2888:3888server.2=CentosB:2888:3888server.3=CentosC:
2022-04-26 20:21:24
1466
原创 ThreadLocal
简介多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全的方法,当我们在创建一个变量后,如果每个线程对其进行访问的时候访问的都是线程自己的变量这样就不会存在线程不安全问题。ThreadLocal中有一个内部类ThreadLocalMap;而在每个Thread内部,都维护了一个ThreadLo
2022-04-20 12:01:44
187
转载 ConcurrentHashMap
简介在并发使用到HashMap的时候,往往不建议直接用HashMap,因为HashMap在并发写数据的时候容易因为rehash的过程产生环形链表的情况。所以在并发使用Map结构时,一般建议使用ConcurrentHashMap。ConcurrentHashMap,采用了数组+链表+红黑树的实现方式来设计,内部大量采用CAS操作。并发控制使⽤synchronized 和 CAS 来操作。 Node节点中value和next都用volatile修饰,保证并发的可见性。而且synchronized 只锁定当前
2022-03-30 14:07:22
237
原创 BeanDefinition
那么什么是spring bean的建模对象呢?一言概之就是把一个bean实例化出来的模型对象?有人会问把一个bean实例化出来有Class就行了啊,Class也就是我们通常说的类对象,就是一个普通对象的建模对象,那么为什么spring不能用Class来建立bean呢?很简单,因为Class无法完成bean的抽象,比如bean的作用域,bean的注入模型,bean是否是懒加载等等信息,Class是无法抽象出来的,故而需要一个BeanDefinition类来抽象这些信息,以便于spring能够完美的实例化一个b
2021-11-05 23:01:05
117
原创 BeanNameGenerator
BeanNameGeneratorpublic interface BeanNameGenerator { String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry);}参数为BeanDefinition 和 BeanDefinitionRegistry 类型,此处可以反映出spring需要的bean 是BeanDefinition。definition 是被生成名字的BeanDefi.
2021-11-05 13:45:56
465
原创 Spring Resource
Resource在spring中定义了新的Resource类public interface Resource extends InputStreamSource { boolean exists(); default boolean isReadable() { return exists(); } default boolean isOpen() { return false; } default boolean isFile() { return false; }
2021-11-03 23:00:12
721
原创 Environment
源码package org.springframework.core.env;/** * @author Chris Beams * @since 3.1 * @see PropertyResolver * @see EnvironmentCapable * @see ConfigurableEnvironment * @see AbstractEnvironment * @see StandardEnvironment * @see org.springframework.conte
2021-10-29 10:48:51
416
原创 AnnotationAttributes
作用按照我的理解AnnotationAttributes是为了存储注解属性或者信息的,可以通过org.springframework.core.annotation.AnnotationUtils.getAnnotationAttributes(annotation);得到比如:@ComponentScanpublic class Math { public static void main(String[] args) { Annotation annotation= M
2021-10-20 22:47:15
1622
原创 ComponentScanAnnotationParser
ComponentScan解析器继承上一节所讲ComponentScan的解析器分为:针对注解的ComponentScanAnnotationParser以及针对Application.xml配置文件中的context:component-scan的ComponentScanBeanDefinitionParser。ComponentScanAnnotationParser代码如下:class ComponentScanAnnotationParser { private final Envi
2021-10-20 21:25:56
320
原创 Spring命名空间
context:component-scan<?xml version="1.0" encoding="UTF-8"?><beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:sch
2021-10-19 09:46:14
1292
原创 类加载器ClassLoader
类加载器的作用有哪些类加载器ClassLoader loader=ClassLoader.getSystemClassLoader(); //获取系统类加载器ClassLoader parent=loader.getParent();//扩展类加载器ClassLoader root=parent.getParent();//引导类加载器,不可以直接获取,为nullClass c=Class.forName("reflectClass.House");System.out.println(c.g
2021-10-16 14:21:10
475
原创 springboot自动装配
官方文档中介绍了激活自动装配的方法,那就是在类上添加注解@EnableAutoConfiguration或者@SpringBootApplicationSpringBootApplication// <version>2.3.4.RELEASE</version>@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration
2021-09-22 19:37:39
95
原创 linux安装redis
下载redis进入官网https://redis.io/download下载稳定版,右键复制链接地址进入到Xshell控制台(默认当前是root根目录),输入wget 将上面复制的下载链接粘贴上,如下命令:wget https://download.redis.io/releases/redis-6.2.5.tar.gz注意先cd到目的地址,这样就可以直接下载到目的地址,不用通过mv命令移动下载包,然后ls后就会发现当前地址下多出一个tar.gz文件夹:然后在以上的基础上解压下载包:ta
2021-08-01 19:51:36
90
原创 统一异常处理
ErrorMvcAutoConfiguration private final ServerProperties serverProperties; public ErrorMvcAutoConfiguration(ServerProperties serverProperties) { this.serverProperties = serverProperties; } @Bean @ConditionalOnMissingBean(value = ErrorAttributes.c
2021-07-27 21:10:41
273
原创 Spring boot 自带注解缓存
常用缓存注解CacheConfig Cacheable CachePut CacheEvict CachingCacheConfig一个类中可能会有多个缓存操作,而这些缓存操作可能是重复的。这个时候可以使用@CacheConfig。@CacheConfig是一个类级别的注解,允许共享缓存的名称、KeyGenerator、CacheManager 和CacheResolver。 该操作会被覆盖。此三者都可以自定义。@Target(ElementType.TYPE)@Retention(Ret
2021-07-10 11:00:01
541
原创 SecurityAutoConfiguration
源代码解析@Configuration(proxyBeanMethods = false)//不使用代理@ConditionalOnClass(DefaultAuthenticationEventPublisher.class)//当引入了spring-security-core包时即自动启用该类@EnableConfigurationProperties(SecurityProperties.class)@Import({ SpringBootWebSecurityConfiguration.cl
2021-07-08 18:31:07
698
原创 HttpSecurity
HttpSecurityhttps://www.jianshu.com/p/6f1b129442a1;WebSecurityConfigurerAdapter的初始化方法init()中,通过getHttp()方法获取到了HttpSecurity的对象; public void init(final WebSecurity web) throws Exception { final HttpSecurity http = getHttp(); web.addSecurityFilterCh
2021-07-08 16:20:56
598
原创 UserDetailsService
1 UserDetailsService在AuthenticationManagerBuilder类中通过这个方法添加自定义内存认证 public <T extends UserDetailsService> DaoAuthenticationConfigurer<AuthenticationManagerBuilder, T> userDetailsService( T userDetailsService) throws Exception { this.defau
2021-07-08 13:31:38
774
原创 AuthenticationManagerBuilder
AuthenticationManagerBuilderuserDetailsService public <T extends UserDetailsService> DaoAuthenticationConfigurer<AuthenticationManagerBuilder, T> userDetailsService( T userDetailsService) throws Exception { this.defaultUserDetailsService
2021-07-07 19:47:52
3512
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人