自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

看表该写博客了

记录与总结

  • 博客(77)
  • 收藏
  • 关注

原创 Spring-Bean的生命周期

Spring Bean 的生命周期可以大致分为实例化、属性赋值、初始化和销毁四个阶段。让我来给你详细解释一下:实例化:当 Spring 容器加载配置文件时,会根据配置创建 Bean 的实例。这个阶段主要是进行对象实例的创建,使用无参构造方法或工厂方法。属性赋值:在实例化后,Spring 容器会调用对象的 set 方法或使用注解来为 Bean 的属性进行赋值。这个阶段可以进行各种依赖关系的注入,比如通过构造函数、setter 方法、注解等方式。初始化:在属性赋值完成后,Spring 容器会调用 B

2023-08-17 16:54:28 273

原创 SpringBoot中间件—ORM(Mybatis)框架实现

ORM:Object Relational Mapping --> 对象关系映射,是一种程序设计技术,用于实现面向对象编程语言里面不同类型系统的数据之间的转换比mybatis小很多,取其(mybaits)精华来达到掌握ORM框架的牡蛎。

2023-07-16 22:06:01 31042 2

原创 SpringBoot中间件——封装限流器

RateLimiter:通常能知道一个系统服务在正产增速下流量大小,扩容与压测也是基于此。若有突发或者恶意攻击访问,都要将流量拦截在外。这部分功能不属于业务侧,它是通用非业务的共性需求,所以我们将共性抽取为限流中间件。

2023-07-09 14:41:48 1000

原创 REDIS-雪崩、击穿、穿透

缓存异常产生原因应对方案缓存雪崩大量key同一时间过期1.打散过期时间 2.互斥锁 3.双key策略 4.后台更新缓存,定时更新,消息通知更新redis故障宕机1.服务熔断 2.请求限流 3.构建redis高可用集群击穿频繁访问过期热点数据1.互斥锁 2.热点数据永不过期穿透访问缓存和数据库种均不存在的数据1.拦截非法请求 2.缓存空置或默认值 3.使用过滤器判断。

2023-02-14 17:43:36 3980 3

原创 vue中$event的使用

$event分两种:第一种:自定义组件(不如自定义父子组件或者elementui/iview组件)的$event第二种:html原生的$event先来看第一种吧--自定义组件的$event$event代表的就是 济南 青岛 这个选中的值,此时$event就代表传参第二种 html原生的$event$event此时是获取的dom元素即 MouseEvent鼠标点击的这个按钮元素,(可理解为当前标签的属性)console....

2020-05-23 21:28:05 11888 3

原创 SpringBoot中间件—封装超时熔断器

Hystrix 是 Netflix 提供的一个熔断器实现,用于为复杂分布式系统中的各个服务提供保护机制。Hystrix 可以实现快速失败、实时监控、快速恢复等功能,是保障分布式系统可靠性的重要工具。

2023-07-04 18:13:15 603

原创 SpringBoot中间件——封装统一白名单配置

日后每上线一个新功能/接口,用该注解可以实现批量梯度控制访问来把控整体运行风险,等功能稳定后,将该注解干掉即可。

2023-07-03 10:56:36 1592

原创 利用线程池来控制访问频率

线程池能够容纳同时执行的最大线程数,当核心线程及队列都被占满任务时,线程池会判断新提交的任务是否大于最大线程数,若是则触发拒绝策略;反之则新建线程来执行。保证有多少个线程一直在等待新任务的到来,当任务到来时,线程池不用新建线程而是直接利用空闲的核心线程执行任务。思路:通过涉及线程池中的核心线程数、最大线程数、队列长度来达到限流的目的,四个渠道因QPS要求不一,则分别配置四个池子。有些晦涩,举例来说:核心线程数为2,队列长度为5,最大线程数为3。若再提交一个任务,则触发最大线程数(新开一个线程来执行);

2023-06-04 08:48:20 369

原创 高性能——零拷贝

拷贝”:就是指数据从一个存储区域转移到另一个存储区域.“零”: 表示次数为 0,它表示拷贝数据的次数为 0。计算机执行 I/O 操作时,CPU 不需要将数据从一个存储区域复制到另一个存储区域,从而可以减少上下文切换以及 CPU 的拷贝时间。它是一种 I/0 操作优化技术。

2023-05-03 22:46:34 590 1

原创 高性能:负载均衡

负载均衡即将用户请求分摊(分流)到不同的服务器上,提高系统整体并发能力及可靠性。本文主要讲解NGINX及客户端/服务端负载均衡。

2023-05-02 00:23:44 1592

原创 Redisson_队列Queue

分布式队列Queue还可以分为双端队列Deque、阻塞队列Blocking Queue、有界阻塞队列(Bounded Blocking Queue)、阻塞双端队列(Blocking Deque)、阻塞公平队列(Blocking Fair Queue)、阻塞公平双端队列(Blocking Fair Deque)。不管是哪种队列,底层都是借助”基于发布—订阅式的主题“来实现的。

2023-04-12 15:18:31 1218

原创 Redisson_RMap/RSet系列

RMap是基于Redis的分布式集合中的数据结构”映射Map“,是Redisson提供的一种高性能组件。继承于接口 java.util.Map和java.util.concurrent.ConcurrentMap,所以不仅拥有了两者的功能,同时自身也提供了很多特有的方法。

2023-04-11 16:13:45 1974

原创 Redisson_布隆过滤器

布隆过滤器的初始化需要设计并构造K个哈希函数及容量大小为N、每个元素初始取值为0的位数组判断元素是否存在将当前的元素经过K个哈希函数计算得到K个哈希值,然后判断K个哈希值(数组的下标)对应数组中的取值是否均为1,

2023-04-03 09:03:59 598

原创 Redisson_发布订阅式主题

Redisson提供给开发者使用的另一个高性能功能组件--发布-订阅式的主题,可实现类似消息中间件RabbitMQ的消息通信的功能,实际应用有:服务模块解耦、消息通信等业务模块中,可以说是Redisson在构建分布式应用系统中的有一大利器。与消息中间件RabbitMQ的基本消息模型类似,Redisson的基于发布-订阅式主题主要由3大部分组成,即生产者、消费者和消息。生产者将消息以主题的形式发布,而消费者只需要订阅相应的主题,即可实现自动监听消费处理消息。

2023-04-02 21:27:03 302

原创 Redisson_概述及springboot整合

Redisson虽然不能称为Redis的“儿子”,但是却与Redis有着千丝万缕的关系redisson是建立在redis之上的高性能/更为便捷的综合中间件,其具备丰富的分布式服务,分布式对象,分布式集合及分布式锁等数据组件,更加简化了分布式环境中程序间的相互写作。整合pom文件。

2023-03-31 16:09:58 145

原创 手撕spring-对象创建的实例化策略

Spring源码之对象创建的实例化策略

2023-02-22 15:03:04 65

原创 手撕spring-Bean定义、注册、获取

Spring Bean定义、注册、获取

2023-02-22 10:39:19 66

原创 手撕spring—创建最简单的spring容器

Spring的雏形已形成,包括初始化Bean工厂,Bean注册,Bean获取,后续文章会将springr容器逐步搞的更加庞大。

2023-02-04 19:32:29 144

原创 xml配置JedisUtil

xml方式配置Jedis对象

2023-01-28 21:24:45 683

原创 使用MQ解耦支付出票流程

MQ解耦业务处理流程

2023-01-19 14:51:48 188

原创 结构性模型——组合模式

1.为方便管理及决策树的逻辑可视化,可以通过库表设计及页面实现维护2.满足了开闭原则,若日后有新的决策出现,可通过页面维护关系树,代码实现0改动来达到目的声明:文中案例为跟随巨佬**傅哥(vx fustack)**所学总结,拒绝转载,从我做起。

2023-01-13 17:30:02 72

原创 mysql初次登录提示密码不安全及授予远程访问权限

validate_password_length(密码长度)参数默认为8,我们修改为1。首先,修改validate_password_policy参数的值。重置密码后依旧提示不安全,5.7的安全做的牛13啊。完成之后再次执行修改密码语句即可成功。

2022-08-18 15:04:30 1134

原创 设计模式——策略模式

策略模式--代码分享版

2022-07-14 16:19:14 68

原创 HttpClient发起multipart/formdata格式的请求

base64转MultipartFilefinal String[] base64Array = file.split(",");String dataUir, data;if (base64Array.length > 1) { dataUir = base64Array[0]; data = base64Array[1];} else { //根据你base64代表的具体文件构建 dataUir = "data:image/jpg;base64";

2022-04-24 11:29:31 2312

原创 JUC初始整理

涉及JUC 并发包的 均涉及对共享变量的操作 并发 懂得啥叫并发不 以下所阐述的东西均来自于并发环境一.CAS:举例(原子操作 使用AtomicInteger getAndIncrement())简述过程:从主内存中拿出并交换​ 弊端:开销​ 仅能对一个共享变量操作​ ABA问题​ 源码:二.ABA:问题简述:在CAS的基础上(从主内存拿到数据—>工作内从相比较过程中(时间差),可能会导致数据变化(将value 置为2 又置为1))​

2022-01-24 09:15:34 80

原创 redis的一点认知总结

Redis写内存由主线程来做,写完内存后给客户端返回结果,redis用另外一个线程去写磁盘,这样可避免主线程写磁盘对性能的影响快照:拍照的瞬间,记录某一时刻下redis的数据 也就是持久化方案:RDB AOFRDB:主进程进行写的操作,fork一个子进程,将上一次持久化后的临时文件替换​ AOF:每次写操作均持久化到磁盘AOF瘦身(rewrite)混合持久化由主从弊端引出哨兵​ 哨兵弊端:哨兵询问master时,网络通讯发生问题,哨兵可能会误判​ 解决:部署多个哨兵,分布在不同机器上,一

2022-01-24 09:12:57 185

原创 熔断器Hystrix整理

一.定义:对熔雪崩效应的微服务链路保护机制,当扇出链路的某个微服务出错不可用或者调用超时,进行服务的降级,进而熔断该服务的调用,快速返回错误的响应信息​ 二.举例理解:类比保险丝,达到最大服务访问(阈值)后,直接拒绝访问,拉闸限电​ 三.整个过程:服务降级–>进而熔断–>恢复调用链路​ 四:关键注解:@HystrixCommand五:参数说明:​ fallbackMethod:异常回调方法 ​ commandProperties:当开启断路器,在10000ms内超过10次请求 &a

2022-01-17 14:45:08 206

原创 @Builder与@NoArgsConstructor冲突

记lombok注解中 @Builder与@NoArgsConstructor冲突引发的问题报错场景:前段传参(A)中有非必传集合字段 list,由于后端实体类T在接收时没有无参构造,无法实例化该类,报状态码400 参数异常问题排查:一.使用@Builder注解作用于类上时,此时只会以建造器模式默认生成“全参构造”,因为此时显式声明了构造器,默认的无参构造器就失效了二.此时追加@NoArgsConstructor注解时,会把全参构造冲掉三.此时再追加全参构造注解 @AllArgsConstruc

2021-12-07 20:30:27 3186

原创 RabbitMQ使用场景积累(持续更新)

一.普通队列场景:舱位的别名比对与替换思路:航班查询渠道涉及多个,其中有部分渠道响应的舱位别名不正确,此时用自己维护的数据来替换别名,并将渠道方舱位信息放入消息队列,消费方发邮件告警数据格式: 航司+渠道+起飞三字+到达三字+起飞时间+航班号+舱位code码+舱位等级+舱位名称代码: @Autowiredprivate AmqpTemplate mq;// 直连交换机mq.convertAndSend(RabbitConfig.CABIN_TO_COMPARE_EXCHANGE, Rabbi

2021-11-27 17:00:24 778

原创 redis使用场景积累(持续更新)

1.pipeline场景:将舱位信息放到redis中,用于创单时验舱验价格式:key:渠道+出发三字+到达三字+起飞时间+航班号+舱位名+产品类型+票面价,value:舱位对象思路:遍历舱位,将所有舱位信息按照如上格式放于redis,避免循环舱位多次set,减少与redis的交互代码:/** * 通过pipeline进行批量set值 * * @param map */public void setToPipeLine(Map<String, String> map) {.

2021-11-27 16:55:18 254

原创 RabbitMQ-死信队列

1.概念:无法被消费的消息,若原队列没有后续操作,就成为死信2.触发条件:消息被拒(basic.reject或basic.nack)消息TTL(Time To Live)过期队列达到最大长度3.代码(示例模拟消息TTL过期,详情都在代码注释里)信道:public class RabbitMqUtils { //得到一个连接的 channel public static Channel getChannel() throws Exception{ ..

2021-11-15 11:07:50 1174

原创 Mac idea 默认全局配置maven设置

Mac idea 默认全局配置maven设置为避免每次新建项目都需要指定自己的maven库,对全局的配置进行修改 :

2021-11-14 15:08:34 505

原创 并发并行区别

并发和并行的区别:并发:一个处理器同时处理多个任务并行:多个处理器或多核处理器同时处理多个任务EG:并发:一个馒头被多个人同时吃并行:三个人吃三个馒头

2021-11-08 20:13:20 64

原创 解决SSL异常:javax.net.ssl.SSLHandshakeException: No appropriate protocol

解决SSL异常:javax.net.ssl.SSLHandshakeException: No appropriate protocol控制台报错提示:原因:jdk1.8中某些版本导致SSL调用权限出现异常,对应版本的加密套件"SSLv3,TLSv1,TLSv1.1"不再认为是安全的解决:在jdk安装目录中打开文件夹jre->lib->security,打开java.security文件,将红框圈出的部分删除,重启项目,如上报错消失,down!...

2021-10-10 12:34:35 1818

原创 线程池配置类

import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.concurrent.ThreadPoolExecutor;/** * ScheduleConf.

2021-10-01 10:46:33 394

原创 JAVA反射简洁整理

一.反射定义: 反射是一种能力,在程序运行状态中动态获取类信息及调用对象方法的功能为反射 1.对任意一个类,都能动态的获取到这个类的属性和方法 2.对任意一个对象,都能动态的调用它的任意属性和方法二.关键类Class Class代表的是所有字节码对象(比如Person.class,Object.class)的抽象,它是一个类(所有的类都集成自Object)三.类的组成部分有哪些 1.属性(共有+私有) 2.方法 3.构造方法..

2021-03-21 11:24:21 124 3

原创 集合并发修改异常分析及解决

目录一.集合类不安全之ArrayList1.不安全代码演示2.异常现象3.导致原因4.解决方式二.集合类不安全之HashSet1.示例代码2.异常现象3.解决方式①:Collections.synchronizedSet();②:new CopyOnWriteArraySet(); 三.集合类不安全之Map1.代码演示2.异常现象3.解决方式①:Collections.synchronizedMap(new HashMap<&g...

2021-03-19 15:47:22 486

转载 spring知识点整理(转载+整理)

sprng与mvc的关系spring是一个一站式的框架,提供了表现层(springmvc)到业务层(spring)再到数据层的全套解决方案,spring看成是一个工具箱,里面有各种工具,springmvc只是其中的一把扳手IOC 控制反转①IOC是什么?Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接new(导致类之间高耦合)谁控制谁?---当然是ioc容器控制了对象(ioc容器有一个专门的容器来创建对象)控制什么?--控制了外部资源的获取(不只是对象还有比如外部文件

2021-03-07 21:49:32 298

原创 springmvc知识点整理

一.前言 最近在面试过程中发现自己对知识点理解程度比较浅,特整理一些知识点来梳理一下二.知识点定义基于java实现了MVC设计模式的web框架,将model、view、controller分离解耦来进行日常开发 2.工作流程用户发送请求 - > 前端控制器 DispatcherServlet(A) (A)调用 HandlerMapping(处理器映射器) 得知由哪个controller来处理 (A)调用HandlerAdapter(处理器适配器)(B)并告诉它执行哪...

2021-03-07 20:33:14 148

原创 mybatis plus:There is no getter for property named ‘null‘ in 类名

记录一次使用mybatis plus报错控制台报错:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'null' in 'class xxxx'

2021-01-25 18:48:19 1190

空空如也

空空如也

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

TA关注的人

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