自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 业务代码逻辑抽象实现

业务代码逻辑抽象实现在平常的CRUD业务代码逻辑编写中,自己总是会把许多逻辑写到一个service的实现类中,这样导致很多代码都集中在一个地方,导致代码的可扩展性很差,后续改动起来牵一发动全身,针对这样的业务代码痛点,我针对我们一个需求的业务逻辑,进行了比较通用化的抽象,使用到模板模式和策略模式,符合开闭原则。需求描述:就是一个简单的活动管理业务的需求实现,包括活动公共信息和活动额外信息的管理。具体实现类:活动处理器选择器:ActivityHandlerSwitch.java(根据策略模式针对不同

2022-03-10 11:33:26 914

原创 spring

IOC依赖查找byNamebyTypeofType:能根据多态属性找出所有实现类的mapwithAnnotation:返回所有被注解标注的bean延迟查找:防止报NoSuchBeanDefinitionException依赖注入将类成员进行属性赋值setter注入构造器注入注解式属性注入自动注入:@AutoWired和@Qualifier配合:指定注入bean的名称@AutoWired和@Primary配合:注入默认bean@Resource:@AutoWired是按类

2021-06-01 21:44:53 158 1

原创 数据结构与算法之美

05 算法概念:数组是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据。错误描述改正:数组是适合查找操作,但是查找的时间复杂度并不为O(1)。即便是排好序的数组,你用二分查找,时间复杂度也是O(logn)。所以正确的表述应该是,数组支持随机访问,根据下标随机访问的时间复杂度为O(1)。06 链表缓存的大小有限,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该保留?这就需要缓存淘汰策略来决定。常见的三种策略:先进先出策略(FIFO),最少使用策略(LFU),最近最少使用策略

2021-06-01 21:43:56 359

原创 动手实现复杂的springioc

IOC的实现BeanFactory的生命流程1、XmlBeanFactory类通过XmlBeanDefinitionReader的loadBeanDefinition方法将xml进行解析,将读取到的bean配置封装成BeanDefinition 对象2、将封装好的BeanDefinition 对象注册到BeanDefinition 容器中3、注册BeanPostProcessor相关实现类到BeanPostProcessor容器中4、XmlBeanFactory进行就绪状态5、外部调用XmlBe

2020-09-02 18:01:09 160

原创 RocketMQ(一)学习

MQ的背景及其作用消息队列作为高并发系统的核心组件之一,能够帮助业务系统解构提升开发效率和系统稳定性。作用:记住3点:解耦、削锋、异步1、削峰填谷(主要解决瞬时写压力大于应用服务能力导致消息丢失、系统奔溃等问题)2、系统解耦(解决不同重要程度、不同能力级别系统之间依赖导致一死全死)3、提升性能(当存在一对多调用时,可以发一条消息给消息系统,让消息系统通知相关系统)4、蓄流压测(线上有些链路不好压测,可以通过堆积一定量消息再放开来压测)个人服务器安装坑1、下载完rocketmq-4.4.0在个

2020-08-18 19:06:06 126

原创 动手实现简单的IOC以及AOP

Spring IOCIOC,控制反转,有时候也被称为DI依赖注入,它是一种降低对象耦合关系的一种设计思想。通过IOC容器,开发人员不需要关注对象是如何创建的,同时增加新类也非常方便,只需要修改配置文件即可。IOC容器可以通过配置文件来确定需要注入的实例化对象,因此非常便于进行单元测试。简单的IOC实现最简单的IOC容器只需4步实现:1、加载xml文件,遍历其中的标签2、获取标签中的id和class属性,加载class属性对应的类,并创建bean3、遍历标签中的标签,获取属性值,并将属性值填充到b

2020-08-13 12:16:23 230

转载 java动态代理与静态代理

代理模式为其他对象提供一个代理以控制对某个对象的访问。代理类主要负责为委托了(真实对象)预处理消息、过滤消息、传递消息给委托类,代理类不现实具体服务,而是利用委托类来完成服务,并将执行结果封装处理。其实就是代理类为被代理类预处理消息、过滤消息并在此之后将消息转发给被代理类,之后还能进行消息的后置处理。代理类和被代理类通常会存在关联关系(即上面提到的持有的被带离对象的引用),代理类本身不实现服务,而是通过调用被代理类中的方法来提供服务。静态代理创建一个接口,然后创建被代理的类实现该接口并且实现该接口中

2020-08-13 10:36:54 93

原创 redis知识

redis事务的本质即一组命令的集合。一个事务中的所有命令都会被序列化,在事务执行的过程中,会按照顺序执行。一次性、顺序性、排他性第执行一系列命令。------ set set set ------执行完成redis事务没有隔离级别的概念。所有的命令在事务中,并没有直接被执行,只有发起执行命令(exec)的时候才会被执行。redis单条命令是保证原子性的,但是事务不保证原子性。redis的事务:1、开启事务(multi)2、命令入队3、执行事务(exec)正常执行事务127.0.0.1

2020-08-08 19:26:42 250

原创 首次搭建本地dubbo(我太难了)

基本概念服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。服务消费者(Consumer): 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者监控中心(Monitor):服务消费者和提供者,在内存

2020-08-06 20:04:35 251

原创 springboot自动配置原理

分析自动配置原理自动配置:*****AutoConfiguration这个名字的就是什么自动配置类:例如:DataSourceAutoConfiguration即数据源自动配置类。以DataSourceAutoConfiguration来简单介绍一下自动配置原理。//表示这是一个配置类,和以前编写的配置文件一样,也可以给容器中添加组件@Configuration( proxyBeanMethods = false)//Spring底层@Conditional注解:根据不同的条件判断,如果

2020-08-06 10:06:15 820

原创 String、StringBuffer和StringBuilder的各自用法

应用场景String适用于少量的字符串操作的情况StringBuilder适用于单线程下在字符缓冲区进行大量操作的情况StringBuffer适用多线程下在字符缓冲区进行大量操作的情况java中常用的String方法1、 字符串的长度String a="hello world!";System.out.println(a.length());2、取得特定下标的字符System.out.println(a.charAt(1));3、截取多个字符并由其他字符串接收char[] b=ne

2020-08-05 10:05:04 182

原创 reentrantlock实现原理

ReentrantLock主要利用CAS+CLH队列来实现。它支持公平锁和非公平锁,两者的实现类似。CAS:Compare and Swap,比较并交换。CAS有3个操作数:内存值V、预期值A、要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。该操作是一个原子操作,被广泛的应用在Java的底层实现中。在Java中,CAS主要是由sun.misc.Unsafe这...

2019-10-03 18:06:58 243

原创 java实现生产者与消费者模式(传统锁实现和阻塞队列实现)

1、生产者与消费者模式(传统锁实现)import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class PCtradiotonal { public static voi...

2019-10-03 16:44:47 164

原创 hashmap1.7以及1.8的一些理解

hashmap的put操作:根据key经过扰动函数(异或和取余的操作)得到一个hash值,然后根据这个hash进行hash&(n-1)得到一个索引值,然后判断当前索引值的数组位置是否有有元素,如果有元素,再根据equals判断连个元素是否相同,相同的话,则直接覆盖当前元素,不相同的话,则产生hash冲突,采用拉链法解决冲突。hashmap1.7底层结构:数组+链表。扩容操作:vo...

2019-10-03 16:29:08 157

原创 双重检验锁单例模式解释

class Singleton{ private static volatile Singleton instance=null; private Singleton() {} public static Singleton getInstance() { if (instance==null) { synchronized(Singleton.class) { if (i...

2019-10-03 12:48:59 534

原创 windows实现简单的mycat的分库分表

参考该博主自己进行配置的,原文链接:https://blog.csdn.net/Lh19931122/article/details/78043257首先确保已安装mysql数据库,使用navicat操作数据库下载mycat地址:链接:https://pan.baidu.com/s/1aIHg0bIqp_FKq4Dh3iC1uw提取码:6kj8解压后配置环境变量path中配置打开m...

2019-10-01 18:33:51 443

空空如也

空空如也

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

TA关注的人

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