自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 knife4j实现微服务swagger文档聚合

在项目开发过程中,接口文档的使用是在所难免的,但是在微服务场景下,多个服务之间的swagger是分散的,虽然swagger提供了微服务的聚合方式,配置过于繁琐,加之swagger本身的功能比较少,而且ui布局也比较蛋痛,此处推荐一款新框架用于增强swagger以及实现微服务接口文档的聚合knife4j官方文档:https://doc.xiaominfo.com/docs/此处使用文档中提供的方式。

2023-07-08 15:23:37 1139

原创 浅谈一下@Async和SpringSecurityContext可能会遇到的问题和解决方案

在执行一个用时较长的批量插入业务的时候,我尝试使用@Async异步对业务进行优化,但是却给我报了空指针的错误,定位之后发现此处我是基于SpringSecurity来获取用户的是currentUserService获取到的当前登陆用户为空导致的,但是当前确实是处于登陆状态的然后,我删除了业务方法上的@Async注解,这个方法执行了20s但是没有出现报错由此可以确定是异步导致的错误。

2023-05-31 19:25:30 1179 2

原创 hadoop入门--一小时带你搭建hadoop集群

Hadoop Distributed File System,简称 HDFS,是一个分布式文件系统。:存储文件的元数据,如文件名 ,文件目录结构 ,文件属性(生成时间 、副本数 、 文件权限),以及每个文件的块列表和块所在的DataNode等。:在本地文件系统存储文件块数据,以及块数据的校验和:每隔一段时间对NameNode元数据备份Yet Another Resource Negotiator 简称 YARN ,另一种资源协调者,是 Hadoop 的资源管理器。:整个集群资源(内存、CPU等)的老大。

2023-03-14 19:55:51 485

原创 浅谈一下虚拟机栈

由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。栈是运行时的单位,而堆是存储的单位。即:栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放、放在哪儿。Java虚拟机栈是什么?Java虚拟机栈(Java Virtual Machine Stack),早期也叫Java栈。

2023-03-06 17:58:04 352

原创 MYSQL的数据目录

举例: 数据库a , 表b。b.frm :描述表结构文件,字段长度等如果采用 系统表空间 模式的,数据信息和索引信息都存储在 ibdata1 中如果采用 独立表空间 存储模式,data\a中还会产生 b.ibd 文件(存储数据信息和索引信息)MySQL5. 7 中会在data/a的目录下生成 db.opt 文件用于保存数据库的相关配置。比如:字符集、比较 规则。而MySQL8.0不再提供db.opt文件。MySQL8.0中不再单独提供b.frm,而是合并在b.ibd文件中。

2023-03-03 19:19:48 2156

原创 浅谈一下mysql8.0与5.7的字符集

上一步骤找到的记录中的 col 列其实是一个字节串 0xCED2 , col 列是采用 gbk 进行编码的,所以首先会将这个字节串使用 gbk 进行解码,得到字符串 ‘我’ ,然后再把这个字符串使用character_set_results 代表的字符集,也就是 utf8 进行编码,得到了新的字节串: 0xE68891 ,然后发送给客户端。如果遗忘修改默认的编码,就会出现乱码的问题。对于存储字符串的列,同一个表中的不同的列也可以有不同的字符集和比较规则。

2023-03-03 19:18:03 1975

原创 已解决集成feign报错:No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-start

在使用最新版本springboot3.0和spring-cloud2022.0.1中引入feignclient时出现了以下错误,无法被创建问题原因SpringCloud Feign在Hoxton.M2 RELEASED版本之后不再使用ribbon而是使用spring-cloud-loadbalancer,所以在不引入spring-cloud-loadbalancer情况下会报错所以会出现以下错误:

2023-02-20 16:28:21 5488 1

原创 [计算机网络微课]第三章 数据链路层

以太网交换机工作在数据链路层(也包括物理层)以太网交换机收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。以太网交换机是一种即插即用设备,刚上电启动时其内部的帧交换表是空的。随着网络中各主机间的通信,以太网交换机通过自学习算法自动逐渐建立起帧交换表。以太网交换机工作在数据链路层(也包括物理层)使用一个或多个以太网交换机互连起来的交换式以太网,其所有站点都属于同一个广播域。随着交换式以太网规模的扩大,广播域相应扩大。巨大的广播域会带来很多弊端:广播风暴。

2022-12-15 21:49:28 1184 3

原创 Graalvm安装配置与springboot3.0尝鲜

Spring 团队一直致力于 Spring 应用程序的原生映像支持已有一段时间了。经过3 +年的孵化春季原生Spring Boot 2 的实验性项目,原生支持将在 Spring Framework 6 和 Spring Boot 3 中正式发布!

2022-11-30 19:47:25 5786 4

原创 提问的艺术

2022-11-21 18:49:09 188

原创 手搓一个数据库连接池

DataSource。

2022-11-12 14:56:42 358

原创 [feign]远程调用实现token信息的传递

在实际的开发过程中,如果你的项目中引入了鉴权机制,那么使用远程调用的接口时,应当也需要对此次远程调用采取鉴权,但是,fegin自带的请求肯定是不带token的,对此的一个解决方案就是,将请求的token添加到feign的请求之中.

2022-11-01 13:58:42 1697 1

原创 mybatis-plus配置分页插件

类找不到依赖,上网一查发现自己用的版本是3.4.3,需要使用全新的配置方式。今天在写项目的时候发现,再配置mybatis-puls分页插件时,

2022-10-24 13:26:27 5095 3

原创 Springboot通过aop实现声明式缓存

【代码】Springboot通过aop实现声明式缓存。

2022-10-20 21:51:33 524

原创 [尚硅谷22版shiro]学习笔记

Authentication:身份认证/登录,验证用户是不是拥有相应的身份;Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用 户是否能进行什么操作,如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户 对某个资源是否具有某个权限;Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的 所有 信息都在会话中;会话可以是普通 JavaSE 环境,也可以是 Web 环境的;

2022-10-02 15:10:27 2812 2

原创 [计算机网络微课]第二章 物理层

计算机网络体系结构中的物理层,就是要解决在各种传输媒体上传输比特 0 和 1 的问题,进而给数据链路层提供透明传输比特流的服务物理层为了解决传输比特 0 和 1 的问题,主要有以下四个任务。

2022-09-27 16:12:07 1377 1

原创 [计算机网络微课堂]第一章,概述

计算机网络的确切定义并未统一计算机网络的最简单的定义是:一些互相连接的、自治的计算机的集合互连:是指计算机之间可以通过有线或无线的方式进行数据通信自治:是指独立的计算机,它有自己的硬件和软件,可以单独运行使用集合:是指至少两台计算机计算机网络的较好的定义是:计算机网络主要是由一些通用的、可编程的硬件互连 而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能 支持广泛的和日益增长的应用。

2022-09-26 14:59:05 1451

原创 [操作系统]1.概述

Linux,Windows界面属于外壳shell(与User交互),而不是内核kernel,而kernel是研究重点,在shell之下。VMs(虚拟机)->VMM(虚拟机监视器)->物理机硬件,多操作系统共享硬件资源。操作系统的架构层次:硬件之上,应用软件之下(为应用软件提供服务支持)。外核,内核分为一块,一块负责和硬件打交道,另一部分和应用打交道。MS-DOS 不分模块的单体内核 (内部通过函数调用访问,-中断处理和IO设备驱动 (底层硬件)尽可能把内核功能移植到用户空间,,复杂,紧耦合,易受攻击)

2022-09-16 21:31:31 419

原创 [设计模式]职责链模式

职责链模式(Chain of Responsibility Pattern), 又叫 责任链模式,为请求创建了一个接收者对象的链(简单示意图)。这种模式对请求的发送者和接收者进行解耦。职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。这种类型的设计模式属于行为型模式Handler : 抽象的处理者, 定义了一个处理请求的接口, 同时含义另外 Handler。

2022-09-15 15:49:46 123 1

原创 [设计模式]策略模式

策略模式(Strategy Pattern)中,定义算法族(策略组),分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户这算法体现了几个设计原则,第一、把变化的代码从不变的代码中分离出来;第二、针对接口编程而不是具体类(定义了策略接口);第三、多用组合/聚合,少用继承(客户通过组合方式使用策略)。说明:从上图可以看到,客户 context 有成员变量 strategy 或者其他的策略接口 ,至于需要使用到哪个策略,我们可以在构造器中指定。

2022-09-15 15:47:56 122

原创 [设计模式]状态模式

状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类Context 类为环境角色, 用于维护 State 实例,这个实例定义当前状态State 是抽象状态角色,定义一个接口封装与 Context 的一个特点接口相关行为。

2022-09-14 21:00:36 102

原创 [设计模式]解释器模式

在编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法分析树,最终形成一颗抽象的语法分析树。这里的词法分析器和语法分析器都可以看做是解释器解释器模式(Interpreter Pattern):是指给定一个语言(表达式),定义它的文法的一种表示,并定义一个解释器,使用该解释器来解释语言中的句子(表达式)Context: 是环境角色,含有解释器之外的全局信息.

2022-09-14 20:59:55 106

原创 [设计模式]备忘录模式

备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态可以这里理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,以防忘记了。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作备忘录模式属于行为型模式。

2022-09-13 18:17:07 94

原创 [设计模式]中介者模式

中介者模式(Mediator Pattern),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互中介者模式属于行为型模式,使代码易于维护比如 MVC 模式,C(Controller 控制器)是 M(Model 模型)和 V(View 视图)的中介者,在前后端交互时起到了中间人的作用。

2022-09-13 18:16:22 91

原创 [设计模式]观察者模式

气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。需要设计开放型 API,便于其他第三方也能接入气象站获取数据。提供温度、气压和湿度的接口测量数据更新时,要能实时的通知给第三方。

2022-09-12 20:57:28 120

原创 [设计模式]迭代器模式

迭代器模式(Iterator Pattern)是常用的设计模式,属于行为型模式如果我们的集合元素是用不同的方式实现的,有数组,还有 java 的集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构。

2022-09-12 20:56:38 108

原创 [设计模式]访问者模式

访问者模式(Visitor Pattern),封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。主要将数据结构与数据操作分离,解决 数据结构和操作耦合性问题访问者模式的基本工作原理是:在被访问的类里面加一个对外提供接待访问者的接口访问者模式主要应用场景是:需要对一个对象结构中的对象进行很多不同操作(这些操作彼此没有关联),同时需要避免让这些操作"污染"这些对象的类,可以选用访问者模式解决。

2022-09-11 17:43:52 111

原创 [设计模式]命令模式

命令模式(Command Pattern):在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计命名模式使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活,实现解耦。在命名模式中,会将一个请求封装为一个对象,以便使用不同参数来表示不同的请求(即命名),同时命令模式也支持可撤销的操作。通俗易懂的理解:将军发布命令,士兵去执行。

2022-09-11 17:42:56 98

原创 [设计模式]模板方法模式

模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),z 在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。简单说,模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤这种类型的设计模式属于行为型模式。

2022-09-10 20:42:36 79

原创 [设计模式]代理模式

静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一起实现相同的接口或者是继承相同父类代理对象,不需要实现接口,但是目标对象要实现接口,否则不能用动态代理代理对象的生成,是利用 JDK 的 API,动态的在内存中构建代理对象动态代理也叫做:JDK 代理、接口代理静态代理和 JDK 代理模式都要求目标对象是实现一个接口,但是有时候目标对象只是一个单独的对象,并没有实现任何的接口,这个时候可使用目标对象子类来实现代理-这就是 Cglib 代理。

2022-09-10 20:41:52 106

原创 [设计模式] 享元模式

享元模式(Flyweight Pattern) 也叫 蝇量模式: 运用共享技术有效地支持大量细粒度的对象常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个享元模式能够解决重复对象的内存浪费的问题,当系统中有大量相似对象,需要缓冲池时。不需总是创建新对象,可以从缓冲池里拿。这样可以降低系统内存,同时提高效率。

2022-09-09 21:07:48 105

原创 [设计模式]外观模式

外观模式(Facade),也叫“过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节类图说明外观类(Facade): 为调用端提供统一的调用接口, 外观类知道哪些子系统负责处理请求,从而将调用端的请求代理给适当子系统对象调用者(Client): 外观接口的调用者。

2022-09-09 21:07:04 93

原创 [设计模式]组合模式

组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。组合模式依据树形结构来组合对象,用来表示部分以及整体层次这种类型的设计模式属于结构型模式。组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象。

2022-09-06 20:18:51 112

原创 [设计模式]修饰者模式

动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp)

2022-09-06 20:17:41 142

原创 [设计模式]桥接模式

桥接模式(Bridge 模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。是一种结构型设计模式Bridge 模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展Client 类:桥接模式的调用者。

2022-09-05 21:30:35 83

原创 [设计模式]适配器模式

适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)适配器模式属于结构型模式类适配器模式、对象适配器模式、接口适配器模式基本介绍:Adapter 类,通过继承 src 类,实现 dst 类接口,完成 src->dst 的适配。

2022-09-05 21:29:49 83

原创 [设计模式]建造者模式

建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式 是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。

2022-09-05 02:24:25 82

原创 [设计模式]原型模式

原型模式(Prototype 模式)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建,即 对象.clone()形象的理解:孙大圣拔出猴毛, 变出其它孙大圣原理结构图说明Prototype : 原型类,声明一个克隆自己的接口。

2022-09-04 17:34:09 93

原创 [设计模式]工厂模式

简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式.工厂方法模式设计方案:将披萨项目的实例化功能抽象成抽象方法,在不同的口味点餐子类中具体实现工厂方法模式:定义了一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将。

2022-09-03 21:50:26 98

原创 [设计模式]单例

所谓类的单例设计模式,就是采取一定的方法比如 Hibernate 的 SessionFactory,它充当数据存储源的代理,并负责创建 Session 对象。SessionFactory 并不是 轻量级的,一般情况下,一个项目通常只需要一个 SessionFactory 就够,这是就会使用到单例模式。

2022-09-03 15:57:10 127

空空如也

空空如也

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

TA关注的人

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