自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【SpringCloud】-Ribbon负载均衡实战及源码解析,如何结合Nacos

方式一:代码方式,定义随机策略import com} /*** @Description: 将RestTemplate注册到容器中} /*** @Description: 修改负载均衡策略方式} }} /*** @Description: 将RestTemplate注册到容器中} /*** @Description: 修改负载均衡策略方式} }IRule;

2023-09-23 09:17:29 592 1

原创 【Spring】-编程式事务和声明式事务

PlatformTransactionManager 事务管理器TransactionDefinition 事务属性优点:与业务逻辑分离:声明式事务管理将事务管理逻辑从业务代码中分离出来,使得业务逻辑更清晰,降低了代码的耦合性。配置简单:通过注解或XML配置,可以简单地定义事务的传播行为、隔离级别等属性,而无需在每个业务方法中编写重复的事务管理代码。易于维护:由于事务管理逻辑集中在配置中,易于维护和修改,提高了代码的可读性和可维护性。提高一致性。

2024-04-17 21:07:00 3876 1

原创 JWT—是什么?如何实现用户登录验证?

这个部分需要 base64URL 加密后的 header 和 base64URL 加密后的 payload 使用 . 连接组成的字符串,然后通过header 中声明的加密算法 进行加secret组合加密,然后就得出一个签名哈希,也就是Signature,且无法反向解密。用户认证通过之后服务端会创建对应的session并存储,会生成一个唯一的session_id并返回给客户端,客户端在浏览器的Cookie中或其他方式(内存,但服务器重启后会丢失;nbf (Not Before):生效时间,在此之前是无效的。

2024-03-20 17:07:02 1770

原创 单例模式有几种写法?请谈谈你的理解?

单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个全局对象,这样有利于我们协调系统整体的行为。

2024-01-31 20:52:55 1287

原创 【SpringCloud】-OpenFeign实战及源码解析、与Ribbon结合

当我们进行服务调用的过程中有可能出现接口调用失败的问题,或者我们想要输出请求或响应的详细信息,我们可以配置日志OpenFeign帮助我们简化了服务之间的通信,同时继承了负载均衡、熔断器等功能,帮助我们更好的实现服务调用。之后我将会针对OpenFeign中集成的Hystrix做分享,大家敬请期待。

2023-12-26 15:28:00 1861 1

原创 【SpringCloud】-GateWay源码解析

当一个请求来到 Spring Cloud Gateway 之后,会经过一系列的处理流程,其中涉及到路由的匹配、过滤器链的执行等步骤。今天我们来说说请求经过 Gateway 的主要执行流程和原理是什么吧。

2023-12-23 21:15:26 2218

原创 【SpringCloud】-Nacos客户端与服务端源码解析

Nacos(Naming and Configuration Service)是阿里巴巴开源的服务发现和配置管理工具,它是一个全面的微服务基础设施组件,提供了服务注册与发现、配置管理、动态DNS服务等功能。基于之前发表的博客已经对Nacos的演变以及项目如何集成应用做了说明,今天我们一起来探索探索Nacos源码。Nacos在服务注册与发现、配置管理、动态DNS等方面提供了全面而灵活的解决方案,为微服务架构的搭建和管理提供了强有力的支持。我们除了知道Nacos如何使用之外,也要知其所以然。

2023-12-22 19:58:12 1490

原创 Java序列化、反序列化-为什么要使用序列化?Serializable接口的作用?

把对象转换成字节序列把字节序列恢复成对象。

2023-12-14 20:43:41 1483

原创 【MySQL】-日志系统

针对各个日志做了简单的介绍,内部更为细节的内容还需要我们结合MySQL的执行流程、内存和磁盘的过渡等微观去详细了解,宏观到微观。

2023-12-02 16:17:46 1165

原创 再探Java集合系列—LinkedHashMap

所以LinkedHashMap也是一种k-v的键值对,并且内部是双链表的形式维护了插入的顺序。

2023-11-30 21:28:45 544

原创 再探Java集合系列—HashMap

前面我们已经针对LinkedList和ArrayList的底层原理进行了具体研究讨论,大家可以跳链接阅读哦~Map是一种键-值对(key-value)集合,Map中每一个元素都包含一个键对象和一个值对象。元素:键-值对整体Java中的基本类型和包装类型之间存在自动装箱(autoboxing)和拆箱(unboxing)的过程。当我们将基本类型的值放入Map中时,Java会自动将其转换为对应的包装类型;当我们从Map中取出包装类型的值时,Java会自动将其转换为对应的基本类型。

2023-11-30 21:25:52 1228 1

原创 再探Java集合系列—LinkedList

从上面的例子结果发现:如果删除第一第一个和最后一个节点都不需要遍历删除第一个节点:修改first指向为第二个节点,第二个节点的前驱指针为null删除最后一个节点:修改last指向为倒数第二个节点。

2023-11-29 09:05:18 1229

原创 再探Java集合系列—ArrayList

3、建议给定一个预估计的初始化容量,减少数组扩容的次数,这是ArrayList集合比较重要的优化策略.因为在在扩容的同时需要将原来数组中的数据复制到新数组里,但如果要插入大量数据时,赋值数组的形式效率很低,所以大多数情况下会使用带参构造函数,传入一个预估计容量,提前定义好容量。),当数量达到数组的百分之多少的时候就会扩容。此时我们会发现在遍历的范围是0到实际数组的大小,拿上面的场景来说就是0-10的范围,序列化数组中0-10的元素,这样没有用到的4个空间是不是就没有被序列化和反序列化。

2023-11-29 08:26:05 1042

原创 重试机制-spring-retry、guava-retry

注意:接口重试并不是万能的解决方案,有时候请求失败可能是由于永久性的问题,如无效的请求参数或者权限不足等。在设计接口重试机制时,需要考虑到这些情况,并设置合理的重试策略和最大重试次数。通过接口重试机制,可以尝试多次发送请求,增加请求成功的可能性。接口重试可以在一定的时间间隔内多次尝试发送相同的请求,直到请求成功或达到最大重试次数为止。设置一个固定的重试次数,在每次请求失败时都重新发送请求,直到达到最大重试次数或请求成功为止。spring提供的请求重试组件,根据配置的重试策略进行重试。

2023-10-02 08:30:53 646

原创 【SpringCloud】-GateWay网关

场景:登录的时候进行身份认证,认证通过后将token返回给客户端,之后的每次请求都在请求头携带token进行验证对于系统来说实现可复用是一直的追求,能重复的就抽象,减少服务和服务之间的耦合,实现可配置;暴露的内容越少安全稳定性越高,对于客户端来说只需要知道【网关IP://网关端口号:/服务接口/参数】接口,减少系统被恶意攻击的概率。

2023-09-13 10:50:38 485

原创 设计模式—职责链模式(Chain of Responsibility)

使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。我要请假一个月,我发送审批给纪委,但是纪委只能批两小时以内的假,没有权限批假一个月,就需要转交给纪老师,纪老师也没有权限批假一个月,就转交给米老师,这时米老师说“好,准假了”。这里一层一层的审批就像一条职责链,一个链条,逐层转交自己的请求。Handler:定义一个处理请示的接口。

2023-08-29 00:00:44 980 1

原创 设计模式—外观模式(Facade)

为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。Facade:外观,为多个子系统对外提供一个共同的接口SubSystem:子系统:实现子系统功能,每一个类表示为一个子系统Client:客户,通过外观访问各个子系统功能。

2023-08-29 00:00:30 1451 1

原创 设计模式—观察者模式(Observer)

又叫发布-订阅(publish/Subscrib)模式。定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。观察者类似于卧底这样一个角色。在上班的时候,难免会有人趁老板不在的时候做一些工作之外的事情,例如炒炒股,看看NBA之类的,那如何应对老板突然回来这件事情呢?我们就需要卧底这样一个人给我们放风,老板一回来就通知这些人“老板回来了”。这其实就是一种观察者模式。

2023-08-29 00:00:04 1115

原创 设计模式—原型模式(Prototype)

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节简单说就是先创建一个原型类实例,然后通过克隆的方法来复制一个一样的新对象,这个对象和原来的对象相同或相似核心:通过自带的Clone()方法和ICloneable接口创建跟该对象相同的新对象,不需要知道具体的创建细节。就是具有相同的属性和功能的对象的抽象的集合。类名称首字母大写。多个单词则各个首字母大写;对外公开的方法需要用‘public’修饰符。

2023-08-28 23:49:08 3404

原创 设计模式—策略模式

它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户商场都有打折、返现活动—“满300减100”、“打五折”、“打八折”,我们可以根据自己花的钱数去选择对应的支付方式,这里的支付方式就可以理解为一种算法,算法本身只是一种策略。这些算法之间都可以相互替换。就是具有相同的属性和功能的对象的抽象的集合。类名称首字母大写。多个单词则各个首字母大写;对外公开的方法需要用‘public’修饰符。就是一个真实的对象。

2023-08-28 23:47:15 2532

原创 XML—DTD、 Schema

ELEMENT 元素名(子元素名称)>举例:<!ELEMENT 书籍列表(计算机书籍)>在其他Schema中重复使用您的Schema创建由标准类型衍生而来的您自己的数据类型在相同的文档中引用多重的Schema。

2023-08-28 23:45:08 2460

原创 XML—标记语言

Extensible Markup Language,可扩展标记语言。

2023-08-28 23:40:52 1350

原创 JavaScript—面向对象、作用域

原型就是函数的prototype属性//使用继承后alert("牛号");}};//打印true闭包像C#里面对象的私有变量。被包裹起来的一个东西,像墙一样。函数就是闭包。函数作用域中的变量无法在外键访问,使用return将一个可以访问这个变量的对象返回到外界就形成一个闭包。

2023-08-28 23:39:16 319

原创 JavaScript—DOM(文档对象模型)

一、理解DOM的概念(重点)二、知道如何对节点进行增删改查三、理解事件理解DOM只要换行了,就是空文本节点。

2023-08-28 23:37:40 318

原创 JavaScript—BOM

用来记录一些事件发生时的相关信息的对象(比方说点击按钮时用的哪个鼠标、在屏幕什么位置等等)

2023-08-28 23:33:48 336

原创 JavaScript—对象与构造方法

普通方法调用的时候使用new就可以将其作为构造方法来使用了js没有类,直接使用构造方法创建对象既然字面值也相当于是包装一个对象,那为什么还会有构造方法?构造方法是原型继承的载体和C#相同://Object的构造方法注:js中的所有对象类型都来自于object和C#不同点:js中方法里面可以在定义一个方法,C#不能方法嵌套方法如何判断变量是否是构造方法创建出来?Boolean 变量 instanceof 构造方法//打印object//打印true继承方法不同。

2023-08-28 23:32:55 826

原创 JavaScript—数据类型、对象与构造方法

JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的。JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、式编程范式。

2023-08-28 23:31:45 690

原创 探索Java集合框架—数据结构、ArrayList集合

Java集合的使用相信大家都已经非常得心应手,但是我们怎么做到知其然,更知其所以然这种出神入化的境界呢?我们揭开集合框架底层神秘面纱来一探究竟目录一、背景介绍二、思路&方案数据结构是什么?数据结构可以分为线性和非线性两种数据结构Java集合分类三、过程ArrayList和LinkedList的区别有哪些?ArrayList是如何存储数据的?ArrayList扩容机制①、如何进行扩容的?②、增加元素③、ArrayList给指定位置插入元素④、删除元素按照下标位置删除元素按照内容删除元素四、总结。

2023-08-26 17:00:22 961 2

原创 微信公众号关注/取消订阅事件一文详解

在接触没有做过的事物之前站在巨人肩膀上(官方文档)可以帮助我们更快速了解,网上资料千千万,我们还要具备选择的能力,否则就是大海捞针。希望这篇文章能帮助到你!

2023-08-24 08:39:05 6548 4

原创 Kafka—工作流程、如何保证消息可靠性

分布式事件流平台。希望不仅仅是存储数据,还能够数据存储、数据分析、数据集成等功能。消息队列(把数据从一方发给另一方),消息生产好了但是消费方不一定准备好了(读写不一致),就需要一个中间商来存储信息,kafka就是中间商。

2023-08-17 11:16:42 2128

原创 JVM—内存管理(运行时数据区)、垃圾回收

当JVM类加载器加载完字节码文件之后,会交给执行引擎执行,在执行的过程中会有一块JVM内存区域来存放程序运行过程中的数据,也就是我们图中放的运行时数据区,那这一块运行时数据区究竟帮我们做了哪些工作?我们常说的线上内存泄漏和内存溢出是因为什么?我们今儿来揭开看看它神秘的面纱。

2023-08-11 11:16:55 506

原创 JVM—编译器、类加载的过程、双亲委派机制这些你还记得吗?

负责加载类文件并生成对应的类对象的组件当要加载一个类的时候会向上(父类)询问(委托)是否已加载过这个类,如果父类加载器无法加载该类,那么类加载器才会尝试自己加载在idea写的源码通过javac编译成机器认识的字节码文件字节码文件存储在磁盘中,想要到使用要通过类加载器把字节码文件加载到内存中类加载的需要通过双亲委派机制加载。

2023-08-10 10:43:29 153

原创 权限校验—接口检验

获取传入用户的信息判断用户信息的权限信息集合中是否含有定义的权限/*** @Description: 自定义权限实现*//** 所有权限标识 *//*** 验证用户是否具备某权限* @param permission 权限字符串* @return 用户是否具备某权限*///判断是否传入权限字符//获取用户信息//判断是否有用户信息,或者用户信息中是否包含权限集合//将权限设置到请求头中//判断是否包含权限/*** 判断是否包含权限。

2023-08-08 19:44:13 4378

原创 解决多线程环境下单例模式同时访问生成多个实例

如何满足单例:1.构造方法是private、static方法、if语句判断。

2023-07-31 08:48:07 1816

原创 RabbitMQ到底为什么要使用它?

Message Queue,消息队列,是基础数据结构中“先进先出”的一种数据结构。把要传输的消息(数据)放在队列中,用队列机制来实现消息传递——生产者生产消息把消息放入队列,然后消费者去处理。消费者可以到指定队列拉取消息,或者订阅响应的队列,由MQ服务端给其推送消息。本次先对MQ和衍生出来的RabbitMQ先做了基本介绍,后续会针对RabbitMQ如何在项目中如何进行削峰、如何解决死信队列等内容做具体介绍,敬请期待~如果有想要交流的内容欢迎在评论区进行留言,如果这篇文档受到了您的喜欢那就留下你。

2023-07-19 18:06:09 2088

原创 JMM(Java内存模型)—工作流程、volatile原理

通过加锁和volatile我们可以解决多核cpu并发线程出现数据不一致、可见性问题,正式因为线程之间通信对我们完全的透明,所以在项目中会出现内存可见性的问题,追根溯源去了解原理,在开发过程中除了知道怎么用,还能知道为什么这么用!

2023-07-06 11:20:18 342 1

原创 Java多线程——生命周期、并发、临界资源问题

Java多线程——生命周期、并发、临界资源问题

2023-06-27 10:45:56 965

原创 Nacos—简述、注册中心、配置中心

把所有的服务都统一的放在 一个中心,后续调用的时候只需要用一个服务名调用远程的服务,而不是用ip地址去调用。

2023-05-02 18:01:35 2709 2

原创 Java流式操作——Collectors工具类

● summarizingInt:把流中的元素映射成int类型的元素,获取描述信息。● averagingInt:把流中的元素映射成int类型的元素,求平均值。● summingInt:把流中的元素映射成int类型的元素,求和。● maxBy:获取流中最大元素;minBy:获取流中最小元素。● joining:合并,将流中的元素,以字符串的形式拼接起来。需求:将流中分数大于等于80的Person对象替换成他们的姓名。,如果这篇文档受到了您的喜欢那就留下你。如果有想要交流的内容欢迎在评论区进行。

2023-05-02 12:42:14 1674 1

原创 Java8流式操作——中间操作

对数据进行过滤、排序……操作

2023-05-02 12:31:15 2411 2

空空如也

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

TA关注的人

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