自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

理想万岁万万岁的博客

30岁之前把java干死

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

原创 Java中Integer和int的区别

各位小伙伴们无论在工作还是学习中,与Integer都有着过硬的交情,我说的没错吧,大家都知道他可以表示一个整数,而且也知道可以表示整数的还有int,只是使用Integer的次数要比int多得多,今天我们就来好好探究一下Integer与int的区别以及更深处的知识。

2023-12-20 17:40:46 1509

原创 ThreadLocal详解,源码级的详解,快来学

先看一下的官方解释。我们可以通过实例隐式地给线程设置局部变量,即该实例可以在每一个线程内部创建一个变量的副本。而该实例我们就可以通过全局共享变量的方式创建。如下图所示很多文章中将解释为多线程环境中保证线程安全的一个类,但这种说法其实是十分片面的。从官方解释上来看,的功能仅仅是为了给多个线程设置局部变量,这和线程安全是没有关系的,线程安全针对的是全局的共享变量。从类路径来看,位于java.lang包,而非包。从其使用方法来看,无论是set()方法、get()方法、remove()方法,都。

2023-12-13 00:10:18 458

原创 java内部类详解

在java中,我们被允许在编写一个类(外部类OuterClass)时,在其内部再嵌套一个类(嵌套类非静态内部类(简称内部类)和静态内部类,如下所示嵌套类作为外部类的一个成员,无论其是否为静态内部类,我们都可以对其添加任何的访问修饰符(publicprotectedprivatedefault,如下所示非静态内部类对其外部类中的所有成员变量和方法都具有访问权,即便它被private修饰也可以。但是静态内部类对外部类中的成员变量和方法没有访问权。

2023-12-05 15:42:03 709 1

原创 docker集群的详解以及超详细搭建

Swam是Docker引擎内置(原生)的集群管理和编排工具。Docker Swarm是Docker官方三剑客项目之一,提供 Docker容器集群服务,是Docker官方对容器云生态进行支持的核心方案。使用它,用户可以将多个Docker主机封装为单个大型的虚拟Docker主机,快速打造一套容器云平台。Swarm mode内置kv存储功能,提供了众多的新特性,比如:具有容错能力的去中心化设计内置服务发现负载均衡路由网格动态伸缩滚动更新安全传输等。

2023-11-30 17:58:19 5570 1

原创 虚拟机配置网络ip,主打一个详细

本文主要介绍使用VMware新建一个centOS虚拟机后,如何连接网络并配置静态ip的过程。上篇文章中我们介绍了如何使用VMware创建一个centOS系统的虚拟机,点击进入传送门。联网。没有连接网络的操作系统能有什么意思?

2023-11-17 17:05:40 19066 10

原创 使用VMware安装linux虚拟机

本文介绍如何使用VMware安装linux系统虚拟机,linux系统以centOS为例,宿主机为windows11。

2023-11-16 18:20:50 562

原创 设计模式之观察者模式

观察者模式(Observer Pattern),又称监听器模式(Listener Pattern)或发布-订阅模式(Publish-Subscribe Pattern),属于行为型设计模式。该模式定义了一种一对多的依赖关系,当一个对象状态发生改变或执行某个逻辑时,所有依赖于该动作的对象都会收到通知并作出相应的动作。该模式的目的就是为了使系统中的主线业务与各个与主线业务相关的支线业务之间实现解耦。

2023-11-02 22:51:19 597

原创 设计模式之备忘录模式

备忘录模式(Memento Pattern),属于行为型设计模式。目的是用于保存一个对象在某一时刻的状态,以便于在将来某个时刻根据此状态恢复该对象。在我们日常生活中,备忘录的使用十分频繁。比如,有一个事情我们完成了35%的进度,这时有另一件更重要的事情需要处理,那么我们需要对这个已完成35%的事情进行记录(做了哪些事情,做到什么程度等),当那个更重要的事情完成后,就可以根据记录的内容(做了哪些事情,做到什么程度等)继续处理这件事情,而不至于因为忘记处理进度而导致重复或疏漏,这个记录的过程就是备忘。

2023-10-30 22:41:05 428

原创 设计模式之中介模式

中介模式(Mediator Pattern),属于行为型设计模式。目的是把系统中对象之间的调用关系从一对多转变成一对一的调用关系,以此来降低多个对象和类之间的通信复杂性。在很多情况下,一个类中对象于对象之间的调用往往很容易形成网状结构,此时倘若一个对象发生改变,那么将会导致其他所有与之关联的对象进行修改,从而导致系统复杂性增加,且难以维护。使用中介模式,可以通过向系统中引入中介类,将这种网状结构改为星型结构。

2023-10-26 16:09:03 477

原创 设计模式之迭代器模式

迭代器模式(,属于行为型设计模式,在java和python中十分常见。目的是在不暴露集合内部结构的条件下,顺序访问该集合内部的元素。提供一种顺序访问一个集合中所有元素的方式, 而又无需暴露该对象的内部表示。在需要顺序访问集合元素的场景中,传统方式是通过以下方式对集合元素进行遍历i++) {在该方式中,对元素的获取是通过直接调用集合的get()方法完成的,即对元素的遍历由集合本身负责。而使用迭代器设计模式后,集合本身不负责元素的遍历,而提供一个获取迭代器的方法iterator()

2023-10-25 17:11:04 915

原创 设计模式之命令模式

命令模式(Command Pattern),属于行为型设计模式。指的是把方法调用封装成命令,然后执行该命令。目的是为了将类中的各个方法抽出来,形成独立的类,且该类只有一个方法execute(),调用该类的execute()方法就等同于调用原类中对应的方法。BCommondCCommondDCommond,这三个类都实现Command接口中的execute()方法,方法的具体实现与A类中的B、C、D三个方法相同。

2023-10-24 16:16:29 472

原创 Linux系统安装redis并配置为服务

官网提供的源码下载地址:4、编译安装对源码进行编译、安装5、复制配置文件6、启动redis7、修改配置文件8、设置服务创建服务脚本创建服务文件创建软链接,为服务自启动准备

2023-10-24 10:47:46 681

原创 设计模式之代理模式

代理模式(Proxy Pattern),属于结构型设计模式。主要目的是为了解决给对象方法进行增强,又不修改原对象方法。通过代理类对被代理对象进行代理,可以在被代理对象执行方法前后添加附加功能,丝毫不需要修改原方法中的逻辑。仅从字面意思我们也可以猜到,在代理模式中,从直接访问对象的方式转变为我们通过代理间接访问对象。这就需要我们引入一个代理类,我们只需要访问代理类即可,由代理类访问目标对象。为其他对象提供一种代理以控制对这个对象的访问。

2023-10-23 17:34:07 717

原创 设计模式之享元模式

享元模式(FlyWeight),属于结构型设计模式,主要解决实例化大量相同的对象,从而导致可能的内存泄漏的问题。为了解决这个问题,享元模式提出的解决办法是将相同的对象保存在内存中,且仅保存一个对象,因此该对象应该是不可被修改的,当需要获取该对象实例时,直接从内存中读取即可,从而避免了相同对象的重复创建。下面是享元模式的定义:运用共享技术有效地支持大量细粒度的对象。

2023-10-20 17:37:51 937

原创 设计模式之外观模式

外观模式(Facade Pattern),又称为门面模式,属于结构型设计模式。外观模式为一组子系统的逻辑调用提供一个独立的接口调用。在不使用外观模式的情况下,实现一个功能时需要按照一定的顺序对多个方法调用,因此我们需要关注对哪些方法进行调用,以及按照什么样的顺序。而在外观模式中,我们通过调用外观类(Facade)的一个方法就可以实现该功能,该外观类(Facade)内部按照对应的顺序对这些方法进行调用,而具体按照什么样的顺序调用哪些方法我们无需关注,交给外观类(Facade)就可以了。

2023-10-19 14:59:11 596

原创 设计模式之装饰器模式

装饰器模式(Decoration Pattern),属于结构型设计模式,用于在不改变现有对象的基础上,对该对象的方法动态地添加新的功能,实现对该对象原有方法的增强。装饰器模式的设计思想是将对象的核心功能和附加功能独立开来。核心功能由现有对象提供,附加功能由装饰器提供。装饰器的实现思路是存在一个抽象的装饰器类,该装饰器类用于对现有的对象进行包装,然后通过该装饰器的具体子类对包装的类的方法进行增强。推而论之,在存在多个装饰器具体子类的情况下,可以动态地。

2023-10-18 17:22:51 842

原创 设计模式之组合模式

组合模式(Composite Pattern),属于结构型设计模式。组合模式常用于树形的数据结构多级菜单部门层级关系html文本中的dom树。它的特点是使用户对单个对象和组合对象的使用是相同的。

2023-08-29 17:20:51 904

原创 设计模式之桥接模式

桥接模式,属于结构型设计模式。通过提供抽象与实现之间的桥接结构,把抽象化与实现化解耦,使得二者可以独立变化。《Head First 设计模式》:将抽象和实现放在两个不同的类层次中,使它们可以独立地变化。《图解设计模式》:将类的功能层次结构和实现层次结构相分离,使二者能够独立地变化,并在两者之间搭建桥梁,实现桥接。从专业术语对交接模式的解释来看,总是让人似懂非懂,即使懂了,从代码上实现又让人无法捉摸。典型的每个字都认识,连在一起就不懂了。

2023-08-29 14:21:47 1226

原创 设计模式之抽象工厂

抽象工厂模式(Abstract Factory Pattern)属于创建型设计模式。用于解决比工厂方法设计模式更加复杂的问题。复杂到哪里了呢?工厂方法设计模式中,指定工厂只能创建对应的单个产品,是一对一的关系。抽象工厂模式中,不仅需要创建产品的工厂,还多了一个创建工厂的工厂(顶级工厂)。当顶级工厂创建一个工厂时,顶级工厂与工厂是一对一的关系(等同于工厂模式),被创建的工厂可以生产多个产品,因此顶级工厂与产品之间是一对多的关系。结婚是一件十分麻烦的事情,需要准备非常非常多的事情,比如婚车婚房婚纱照。

2023-08-25 17:40:39 1071

原创 设计模式之工厂模式

工厂模式(Factory Pattern)是最常使用的设计模式之一,属于创建型设计模式。在该设计模式中,我们不再使用new来实例化对象,而是通过工厂对象来获取指定的对象实例,其中对象的实例化过程是在工厂中完成的。换句话说,就是将对象的实例化过程从调用方控制改变成工厂控制。说到这里,我愣了一下,这不就是控制反转(IOC)嘛?spring的IOC容器主要使用的设计模式之一就是工厂模式,它将我们对对象的控制权转移给了。

2023-08-24 16:44:45 608

原创 设计模式之创建者模式

建造者模式(Builder Pattern)属于创建型设计模式,很多博客文章的对它的作用解释为用于将复杂对象的创建过程与其细节表示分离。但对于初学者来说,这句话难免有点晦涩难懂,何为复杂对象?何为创建过程,何为细节表示?复杂对象:一个对象中的成员属性出了基本数据类型及其对应的封装类型,还包含有其他类型对象。例如:在对象A中包含对象B的引用,对象B中又包含对象C的引用。创建过程:一个对象的实例化和初始化过程。如new一个对象后再调用其set方法为其初始化。细节表示:在对一个对象初始化时,通过set。

2023-08-21 15:37:34 806

原创 设计模式之原型模式

原型模式属于创建型设计模式,用于创建重复的对象,且同时又保证了性能。该设计模式的好处是将对象的创建与调用方分离。其目的就是**根据一个对象(称为原型)创建一个与其完全相同的对象(当然内存地址不同)。**原对象被认为是新对象的原型。原型模式用于创建具有相同属性的重复对象。原型模式的实现就是实现Cloneable接口 + 重写clone()方法实现的。Object类的clone()方法实现由JVM实现,性能较好。但仅能实现浅拷贝。纸上得来终觉浅,绝知此事要躬行。

2023-08-18 15:58:27 689

原创 设计模式之单例模式

单例模式,属于创建型设计模式,单指一个,例指实例,就是说在一个程序的运行过程中,应用了单例模式的类始终只有一个实例,且不允许出现多个实例,并在整个程序中提供一个获取该实例的方法。spring中的bean默认就是单例模式,类的实例化由spring完成,我们只需要从框架中获取即可,而不是直接去new一个实例。web应用中的Servlet。我们在应用开发时,线程池也应当设计成单例模式。**何时使用:**如果一个类的实例在整个生命周期中是无状态的,则可以使用单例模式使整个应用程序中只有一个实例。

2023-08-17 15:15:19 791

原创 springboot自定义banner的输出与源码解析

Banner即横幅的意思,我们在庆祝某些事情时有些显眼包总会是拉个横幅以表明意图。在我们启动springboot项目时,springboot往往也会打印出一个默认的横幅,该横幅中包含了一些信息如springboot版本号等,如下图所示。既然有默认的,当然springboot也允许我们对banner进行自定义设置,如将banner设置为文本图片,甚至关闭banner的输出。如下所示是否略显炫酷?下面我们来介绍如何自定义banner,并通过源码进行分析。

2023-08-16 14:52:45 1216

原创 linux系统部署jenkins详细教程

官网下载地址:创建目录上传war包至该目录进入环境变量文件使新增的环境遍历生效4、创建jenkins运行日志文件5、创建jenkins启动脚本脚本内容:6、启动jenkins浏览器输入:如图所示:此时服务器将初始密码打印在控制台:输入密码后,点击继续,进入下一个页面点击左上角关闭按钮,进入下一个页面直接点击开始使用按钮即可,进入jenkins主页点击右上角configure -> password,修改密码。依次点击右上角 -> ,找到进行密码重置,并保存依次点击 -> -> ,页

2023-08-15 13:40:48 6356 3

原创 springboot使用configtree读取树形文件目录中的配置

在classpath下添加application.yml或application.properties配置文件,或通过指定配置文件位置。通过指定额外的配置文件位置。通过导入指定位置的配置文件。但无论通过哪种方式,其配置的形式都是通过在配置文件中通过的形式添加具体配置的,且配置文件类型为yaml或properties。如下所示:properties文件内容示例yaml文件内容示例其中key1作为配置名,value1作为配置值。今天给大家介绍另一种配置形式,该配置使用文件名作为配置名,文件内容。

2023-08-14 16:46:35 724

原创 关于ArrayList的十三连问

来修饰数组并不表示不将其序列化,ArrayList在序列化时,最主要的是将其内部元素进行序列化而不是数组,再加上数组中可能存在大量空元素,若将数组进行序列化,对时间和空间无疑都是一种消耗。方法得到的List实例为ArrayList 实例,但需要注意的是,此处返回的ArrayList 实例为Arrays的内部类,其全限定类路径为。————————————————我是万万岁,我们下期再见————————————————在序列化时,通过遍历数组中的元素,将元素进行序列化,而非数组。

2023-08-12 09:00:00 328

原创 xxl-job与其他调度框架比较与部署

XXL-JOB中**“调度模块”和“任务模块”完全解耦**,调度模块进行任务调度时,将会解析不同的任务参数发起远程调用,调用各自的远程执行器服务。下载源码,数据库工作与配置文件修改完成后,对xxl-job-admin模块源码进行部分必要的修改,如接口地址、接口参数等,通过maven打为jar包并导入运维平台,至此调度中心后端接口工作完成,只需要前端调用即可。任务服务只负责执行器的配置工作,具体任务的实现由对应的服务负责,比如视频问诊提醒的定时任务逻辑交给问诊模块开发。之内(基本为一次请求的网络开销);

2023-08-11 10:40:30 1601

原创 skywalking忽略调用链路中的指定异常

在前面介绍在微服务项目中使用skywalking进行全链路追踪时,我们发现当一次请求链路中某个服务出现异常时,在skywalking中会将该链路用红色标记为ERROR,在异常链路详情中也可以看出是哪个服务出现了异常并可以查看响应的异常信息。如下图所示。那么有没有办法忽略某个指定的异常呢?就是说如果一个请求链路中某个服务抛出了该异常,skywalking仍然认为该异常属于正常现象,并不会认为它是ERROR。答案是肯定的。我们往下看。项目结构依然参考skywalking安装教程。

2023-08-10 17:29:59 2395

原创 使用logback异步打印日志

对于每一个开发人员来说,在业务代码中添加日志是至关重要的,尤其是后端开发,如果不打印日志,在接口出现bug的时候将无法定位bug;有了日志,即使接口出现bug,也可以通过查询日志很快的定位到bug的位置。使用springboot开发的朋友使用最多的日志框架想必都是logback了吧,毕竟它是springboot官方推荐的日志框架,与springboot天然整合。再结合第三方工具lombok,当我们需要打印日志时只需要通过log.info("第一条日志");

2023-08-09 17:07:48 4339

原创 skywalking日志收集

在上一篇文章skywalking全链路追踪中我们介绍了在微服务项目中使用skywalking进行服务调用链路的追踪。本文在全链路追踪的基础上,我们介绍如何使用skywalking对一次调用链路上进行日志收集。skywalking日志收集方式有两种:从日志文件中收集在微服务项目中,每一个微服务所产生的日志均会保存到本地日志文件或远程文件服务器中,skywalking提供FilebeatFluentdFluent-bit三种方式通过kafka或http读取日志文件并将其按照调用链路进行收集。

2023-08-07 17:22:04 3612 3

原创 skywalking全链路追踪

在上一篇文章skywalking安装教程中我们介绍了skywalking的作用以及如何将其集成到我们的微服务项目中。本篇文章我们介绍在微服务架构中,如何使用skywalking对一次客户端请求进行全链路追踪。何为全链路追踪?个人理解:在微服务架构中,一次客户端请求在对应的接口中可能需要通过多次服务调用完成,以skywalking安装教程中的项目演示为例,一次成功结束的请求可能需要经过商品服务、订单服务以及支付服务三个服务共同处理,其中商品服务调用订单服务订单服务调用支付服务。这就是微服务架构的调用链。

2023-08-04 16:57:13 2593 1

原创 安装skywalking并集成到微服务项目

本片文章主要讲解skywalking的安装教程,及其在微服务架构中的链路追踪功能。:2020.0.6springboot:2.5.14jdk:1.8skywalking:9.4.0os:windowsskywalking是一个开源的应用性能管理系统和可观测性分析平台。用于收集分析聚合和可视化来自服务和云原生基础设施的数据。SkyWalking提供了一种简单的方法来保持我们的分布式系统的清晰视图,甚至跨云。这是一个现代的APM(应用性能管理和监控技术),专门为云本地的、基于容器的分布式系统而设计。

2023-08-02 17:12:23 4529

原创 springboot创建并配置环境(四) - 配置扩展属性(下集)

上一篇文章:springboot创建并配置环境(三) - 配置扩展属性(上集)中我们介绍了springboot对配置文件的处理逻辑,但是由于篇幅过长,决定分上下集两部分讲解。进入方法从该方法中看到,对中的进行遍历,从中获取key为的配置属性,将其添加到集合中并返回。进入Profiles的构造方法查看,该构造方法中定义了三种profiles,分别是定义的profiles、定义的profiles和定义的profiles。我们逐个查看定义的profiles从Profiles。

2023-07-30 09:30:00 696

原创 springboot创建并配置环境(三) - 配置扩展属性(上集)

在上一篇文章:springboot创建并配置环境(二) - 配置基础环境中,我们介绍了springboot如何配置基础环境变量。本篇文章讨论如何处理配置文件。classpath路径下的**使用注解指定的文件、以及来自项目外部的配置文件**等。

2023-07-29 09:30:00 490

原创 springboot创建并配置环境(二) - 配置基础环境

springboot启动过程中配置基础环境

2023-07-28 09:30:00 548

原创 springboot创建并配置环境(一) - 创建环境

springboot创建运行环境的源码解析

2023-07-27 11:17:33 1301

原创 源码分析:springboot如何确定当前应用程序类型

从源码分析springboot如何推断出当前应用为响应式的还是非响应式的

2023-05-25 17:09:54 1219

原创 springboot加载命令行参数ApplicationArguments

使用springboot开发的同学们,都一定会从配置文件中读取配置。比如我们常常会在上传文件的功能中,把文件的保存路径写在配置文件中,然后在代码中通过@Value()注解从配置文件读取对应的配置,如下所示:在配置文件中定义文件路径在代码中获取保存路径// 文件路径/data/files public void upload(File file) {// 将文件保存到fileLocation中。} }这种读取配置的方式非常方便,但是有一个让人抓狂的缺点在多人协作开发的情况下,同事A在配置文件中修改。

2023-04-12 09:52:03 1659 1

原创 设计模式之适配器模式

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个例子,现在市面上很多手机都是typeC的接口,但我们的U盘都是usb格式的接口,因此这两个接口是不兼容的,如果我们能在手机上使用usb的U盘,那将会方便很多。因此我们需要一个适配器,适配器的输入端插入U盘,输出端以TypeC的格式插到手机上,这样,手机就可以读取U盘中的文件了。

2023-04-08 10:00:00 475 2

空空如也

空空如也

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

TA关注的人

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