自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

易雪寒的博客

欲明明德者,致知在格物

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

原创 设计模式之适配器模式PrototypePattern(九)

用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。如果创建对象的成本比较大,比如对象中的数据是经过复杂计算才能得到,或者需要从RPC接口或者数据库等比较慢的IO中获取,这种情况我们就可以使用原型模式,从其他已有的对象中进行拷贝,而不是每次都创建新对象,进行一些耗时的操作.

2024-05-20 18:08:03 217

原创 设计模式之适配器模式AdapterPattern(八)

适配器模式 (Adapter Pattern) 是一种结构型设计模式,它通过将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式分为类适配器模式和对象适配器模式,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,故应用相对较少。

2024-05-07 18:10:42 390

原创 设计模式之建造者模式BuilderPattern(七)

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。@Data:这是Lombok中提供的Getter和Setter方法和toString方法的注解。@AllArgsConstructor:这是Lombok中提供的包含所有参数的构造方法注解。@NoArgsConstructor:这是Lombok中提供的不包含任何参数的构造方法注解。3、OrderBuilder类。1、OrderItem类。

2024-04-30 17:38:39 1001 1

原创 设计模式之代理模式ProxyPattern(六)

1、什么是代理模式?代理模式是23种设计模式中的一种。代理模式是一种结构型设计模式,它允许为其他对象提供一个替代品或占位符,以控制对这个对象的访问。2、代理模式的角色构成抽象主题(Subject):定义了真实主题和代理主题的共同接口,这样代理类可以通过实现该接口来代理真实主题。真实主题(Real Subject):定义了代理所代表的真实对象。代理(Proxy):持有对真实主题的引用,并实现了与真实主题一样的接口,客户端通过代理来访问真实主题,同时可以在访问真实主题前后进行一些额外操作。

2024-04-30 15:57:20 1017 2

原创 设计模式之模板模式TemplatePattern(五)

模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern), 在一个抽象类公开定义了执行它的方法的模板。它的子类可以更需要重写方法实现,但可以成为典型类中定义的方式进行。模板模式适用于通用步骤的操作,比如做菜,不管你是西红柿炒鸡蛋,还是土豆炖牛肉实现步骤都是一样的,备料,做菜,上菜。再比如投放系统,不管你是投放巨量引擎,广点通还是百度,前期工作实现步骤也都是一样的,配置物料信息,构建投放对象,投放广告。

2024-04-30 01:59:04 468 1

原创 用Stream流方式合并两个list集合(部分对象属性重合)

【代码】用Stream流方式合并两个list集合(部分对象属性重合)

2024-04-29 13:45:57 664 1

原创 设计模式之装饰者模式DecoratorPattern(四)

装饰者模式(Decorator Pattern)是一种用于动态地给一个对象添加一些额外的职责的设计模式。就增加功能来说,装饰者模式相比生成子类更为灵活。装饰者模式是一种对象结构型模式。装饰者模式可以在不改变一个对象本身功能的基础上增强其功能,通过采用组合而非继承的方式,实现了在运行时动态地扩展一个对象的功能。装饰者模式提供了一种比继承更加灵活的方式来扩展一个对象的功能。

2024-04-28 01:22:33 281 1

原创 设计模式之监听器模式ListenerPattern(三)

监听器模式是一种软件设计模式,在对象的状态发生改变时,允许依赖它的其他对象获得通知。在Java中,可以使用接口和回调机制来实现监听器模式。

2024-04-27 03:32:18 170

原创 设计模式之工厂模式FactoryPattern(二)

6、MiPhoneFactory类。7、FactoryPattern类。2、PhoneFactory接口。5、IPhoneFactory类。4、MiPhone类。

2024-04-27 02:47:28 181

原创 设计模式之单例模式SingletonPattern(一)

【代码】单例模式(一)

2024-04-26 16:35:11 148

原创 SpringBoot统一结果处理和统一异常处理

二、Java 项目构建 -- 统一结果处理1、为什么使用统一结果?  大部分前后端项目采用 JSON 格式进行数据交互,定义一个统一的数据规范,有利于前后台的交互、以及信息处理。2、数据格式?如何处理?代码实现?(1)数据格式?  是否响应成功(success: true / false)  响应状态码(code:200 / 400 / 500 等)  状态码描述(message:访问成功 / 系统异常等)  响应数据(data:处理的数据)【输出格式如下所示:】

2024-04-26 01:07:48 44

原创 SpringBoot学习之Redis下载安装启动【Mac版本】(三十七)

1、我们进入redis根目录安装make,右键根目录,选择【新建位于文件夹位置的终端窗口】,然后窗口会下载很多东西,如果没有报错就表示安装成功。2、我们下载的是redis-7.0.15.tar.gz,这是一个压缩包,我们双击解压这个压缩包,可以得到如下文件。2、进入src目录,使用下面命令连接redis服务,这里没有指定IP和端口就是默认本机和默认端口。4、使用redis,保存一个key为test2,value是“hello,world:“的数据。看到下面截图,就表示我们启动redis服务成功了。

2024-04-25 22:52:39 234 1

原创 SpringBoot学习之SpringBoot3集成OpenApi(三十八)

Springboot升级到3以后,就彻底放弃了对之前swagger的支持,转而重新支持最新的OpenApi,今天我们通过一个实例初步看看OpenApi和Swagger之间的区别.

2024-04-24 17:22:21 304

原创 SpringBoot学习之Redis下载安装启动【Windows版本】(三十六)

可以看到以服务的方式启动Redis失败了, 其原因是我们在上面已经启动Redis服务了,端口已经被占用了,想要启动以服务方式启动redis自然就失败了,办法就是关闭上面的Redis启动命令窗口以后再次执行就可以了。1、在上面地址栏中输入CMD,或者在根目录右键选择【在终端中打开】PowerShell,输入下面的命令,其中redis.windows.conf是redis的配置文件。2、 测试Redis。好了,今天Windows环境下下载安装和启动Redis就讲到了这里,我们下回再见。

2024-04-24 14:03:45 164

原创 SpringBoot学习之Kafka发送消费消息入门实例(三十五)

至于topic如何创建请参考本篇文章的上两篇文章:【SpringBoot学习之Kafka下载安装和启动【Windows版本】(三十四)】【SpringBoot学习之Kafka下载安装和启动【Mac版本】(三十三)】2、 我们成功在控制台看到了我们的消费者消费到了生产者发送的消息,其中第一条消息是我在上一篇文章中首次下载安装通过命令行发送给消费者的。这里我们定义一个Controller来生产消息,定义一个方法,方法中使用kafkaTemplate对象发送消息给指定的topic,1、加入kafka依赖。

2024-04-24 00:04:55 535 3

原创 SpringBoot学习之Kafka下载安装和启动【Windows版本】(三十四)

我们先进入到根目录,然后右键【在终端中打开】,输入下面命令启动zookeeper,4、找到conf目录下的server.properties文件,用编辑器打开,修改log.dirs目录如下,最后的kafka目录是我们手动增加的。3、我们先进入到根目录,然后右键【在终端中打开】,输入下面命令启动kafka服务,没有报错就是启动成功了。如果提示命令太长的,我们就把文件夹直接改成kafka,重复上面的操作,没有报错就是启动成功了。在根目录下,右键【在终端中打开】,输入下面命令创建一个叫test1的Topic。

2024-04-23 17:12:45 506 3

原创 SpringBoot学习之Kafka下载安装和启动【Mac版本】(三十三)

2、启动ZooKeeper服务,Kafka需要使用ZooKeeper,所以首先需要启动ZooKeeper服务,注意了Kafka是自带了Zookeeper的。3、进入到bin目录下执行 下面命令,看到截图所示没有报错,即表示Zookeeper启动成功。访问Apache Kafka官方网站下载最新版的Kafka二进制文件。在生产端输入信息后回车,到消费者端可以看到生产端发送的信息。--from-beginning:从头开始消费。看到截图这个就表示Kafka启动成功了。5、查看topic列表(可选)

2024-04-19 01:37:41 866

原创 执行npm命令一直出现sill idealTree buildDeps怎么办?

下不是nodejs里面),进入到对应目录下,Mac启动显示隐藏文件操作(Command+Shift+".")也没有发现有这个.npmrc目录。2、打开一个终端,输入下面命令以后才能出现这个文件目录,执行以后就出现上面这个.npmrc目录了。4、你可能还需要重新设置镜像地址,下面两个地址你都试一下,这里我是设置了国外原来镜像地址有用。6、重新执行npm命令(这里我是在VSCode中的终端执行的),终于成功了。1、网上查了一下,有网友说先删除。

2024-04-12 00:48:29 1885 2

原创 SpringBoot学习之Kibana和Elasticsearch-Head的下载安装和启动(三十二)

Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。

2024-04-08 03:06:32 382

原创 SpringBoot学习之ElasticSearch下载安装和启动(Mac版)(三十一)

本篇是接上一篇Windows版本,需要Windows版本的请看上一篇,这里我们继续把Elasticsearch简称为ES,以下都是这样。

2024-03-25 23:40:26 320

原创 SpringBoot学习之ElasticSearch下载安装和启动(Windows版)(三十)

本文先写windows下的下载安装和启动,后续有时间再补充docker版本下的,毕竟docker现在用的公司和个人太多了,这里我们后续对ElasticSearch简称为ES,不做赘叙。

2024-03-25 14:21:41 715

原创 SpringBoot学习之自定义注解和AOP切面统一保存操作日志(二十九)

这个注解是用来控制是否需要保存操作日志的自定义注解(这个类似标记或者开关)

2024-03-08 18:34:24 203

原创 代码整洁之道之优化if-else的8种方案(一)

可以消除if-else。上述方案都可以达到优化if-else的效果,但是采用那种方案还是要看具体的代码逻辑以及业务处理逻辑,重要的是要评估项目的复杂性、维护性和性能需求,选择最适合项目需求的优化方案。我们可以将一些操作(比如一些状态)的一些共性的方法抽象成一个公共接口,然后针对这些操作实现这些接口完成不同的逻辑,在调用时我们只需要传入对应的操作类即可,对外的操作方法都是同一个。我们日常开发的项目中,如果代码中存在大量的if-else语句,阅读起来非常的折磨(直接劝退),维护起来也很难,也特别容易出问题。

2024-02-28 14:17:44 44

原创 解决端口被占用的问题

我们输入: netstat -aon | findstr 8080,返回信息如下,可以看到该端口被20312进程占用。我们输入:taskkill -pid 20312 -f,返回信息如下,可以看到占用该端口的进程已经被杀死了。如果不放心的话,我们还可以在用1中的命令查一遍,可以看到之前监听的两个进程已经被杀掉了。netstat -aon | findstr “端口”taskkill -pid "进程号" -f。2、我们用下面命令杀死这个占用端口的进程。

2023-12-13 11:04:12 130

原创 SpringCloudAlibaba实战入门之Sentinel初体验-流量控制(八)

PS:但是官网下载巨慢而且中途会无故自动终止,这里有个小技巧,可以使用迅雷,复制下载地址到迅雷,迅雷会大概率提供免费使用一分钟超级会员,一般这种几百兆的下载一分钟超级会员是足够下载完或者下载大部分。刷新我们的sentinel开源项目,我们在浏览器中短时间内快速请求上面两个接口请求,刷新页面我们在实时监控页面可以看到如下,至此我们的微服务项目在发送请求时候被sentinel成功监听到了。1、复制之前的项目模块,创建一个新的项目模块,模块名称读者自己设置,这里我们叫cloud-sentinel-1007。

2023-07-06 16:46:16 687

原创 SpringCloudAlibaba实战入门之Dubbo(基于Nacos注册中心)(七)

一、Dubbo介绍Dubbo是阿里巴巴公司开源的一个高性能、轻量级的 Java RPC 框架。致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。服务提供者在启动时,向注册中心注册自己提供的服务。服务消费者在启动时,向注册中心订阅自己所需的服务。注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。服务消费者,从提供者地址列表中,基于负载均衡算法,选择提供者进行调用。

2023-07-05 17:55:42 280

原创 SpringCloudAlibaba实战入门之RocketMQ消息发送(六)

本篇文章是承接上一篇文章《SpringCloudAlibaba实战入门之RocketMQ下载配置和启动(五)》,如果没有看过上一篇文章并按照指导配置和启动Rocket MQ的网友,请先阅读该篇文章以后再阅读本篇。

2023-06-30 18:07:44 696

原创 SpringCloudAlibaba实战入门之RocketMQ下载配置和启动(五)

发送消息时,用户只指定Topic,Producer会根据Topic的路由信息选择具体发到哪个Queue上。RocketMQ 是阿里巴巴集团基于高可用分布式集群技术,自主研发的云正式商用的专业消息中间件,既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性,是阿里巴巴双 11 使用的核心产品。Topic:主题,用于将消息按主题做划分,Producer将消息发往指定的Topic,Consumer订阅该Topic就可以收到这条消息。

2023-06-30 11:35:00 597

原创 SpringCloudAlibaba实战入门之Nacos动态配置(四)

上篇文章介绍了,除此之外,还有一个重要功能就是作为分布式配置中心,那这篇文章就介绍下 Nacos 作为配置中心的基本用法,首先我们先了解下为什么需要使用配置中心。

2023-06-29 09:40:17 261

原创 SpringBoot学习之集成JWT(二十八)

需要创建JWT拦截器,以用来对RestApi接口进行验证是否在提交请求时候带有合法的JWT,当然我们也可以自定义注解用来对没有JWT token的请求直接放行。可以看到,输入正确的token以后拦截器对于除登录注册以外的接口都予以放行通过,关于更多JWT的知识后续我们再补充讲解,我们下回再见。既然JWT需要创建和验证,那么我们需要新建一个工具类,其中包含核心两大方法创建JWT和验证JWT。登录swagger界面,我们直接测试登录和注册以外的接口,比如下面的根据ID获取用户的接口,

2023-05-23 22:28:12 446

原创 SpringBoot学习之集成Swagger3(二十七)

输入token,点击Authorize成功后,Authorize会变成Logout,点击Close即可,后面我们就可以随意访问任何需要验证登录的接口了。地址成功跳转后,界面大致如下,则表示swagger3基本配置成功。通过登录接口(登录数据自己在数据库中创建一些测试用户,userService部分此处不做详细说明),我们可以返回如下token。本篇文章内容较多,读者可以结合自己水平和理解能力酌情学习其中部分内容和代码,今天的内容到此为止,我们下次再见。-- Druid 数据连接池依赖 -->

2023-05-20 22:18:15 683

原创 SpringBoot学习之集成Redis(二十六)

redis的常用使用场景,可以做缓存,分布式锁,自增序列等,使用redis的方式和我们使用数据库的方式差不多,首先我们要在自己的本机电脑或者服务器上安装一个redis的服务器,通过我们的java客户端在程序中进行集成,然后通过客户端完成对redis的增删改查操作。由此可以说明我们的Redis可以成功的存取收据,今天的博客到此为止,如果有疑问的请留言,我们下次再见。如果有不知道怎么下载和安装Redis的网友,请留言我再考虑补充,类似博客网上随手可得,此处不表。

2023-05-20 19:11:55 108

原创 SpringCloudAlibaba实战入门之手把手教你创建第一个SpringCloudAlibaba项目(二)

SpringCloudAlibaba实战入门之手把手创建第一个SpringCloudAlibaba项目(基于Nacos注册)(三)

2022-09-08 18:59:40 1504

原创 SpringBoot学习之自定义注解(二十五)

SpringBoot学习之自定义注解

2022-08-06 02:23:57 181

原创 SpringBoot学习之注解校验参数@Validated@Valid(二十四)

SpringBoot学习之注解校验参数

2022-08-04 23:17:29 230

原创 SpringBoot学习之事件监听ApplicationListener和@EventListener(二十三)

事件监听是Spring提供的一种重要的通讯技术,他可以最大限度的解耦对象之间的关系,通过事件监听来实现对象之间的通讯一、内置事件序号 Spring 内置事件 & 描述 1 ContextRefreshedEvent ApplicationContext 被初始化或刷新时,该事件被发布。这也可以在 ConfigurableApplicationContext接口中使用 refresh() 方法来发生。此处的初始化是指:所有的Bean被成功装载,后处理Bean被检

2022-05-21 01:43:32 281

原创 解决maven出现“连接到http://repo.maven.apache.org被拒绝”的问题

1、原因这个问题的原因就是无法连接到http://repo.maven.apache.org/maven2镜像2、解决办法修改maven默认镜像仓库地址为国内可用的镜像地址,比如这里推荐阿里的镜像仓库地址http://maven.aliyun.com/nexus/content/groups/public/该镜像仓库地址亲测可用,而且速度极快,强烈推荐3、操作步骤1、找到你IDEA配置的maven位置2、检查你的maven对应的settings.xml文件到底是使用的哪一

2022-05-18 02:11:26 16147 2

原创 SpringBoot学习之Mybatis-Plus实现多数据源(二十二)

用过Mybatis-Plus的小伙伴一定对其炫技般的功能赞叹不已,今天我们来实战讲解他的另一个非常重要的功能:多数据源切换功能。所谓多数据源切换就是我们的项目用到了至少两个以上的数据库,我们希望可以随时随地自由的切换我们想要操作的数据库,自己利用AOP或者其他方式自己实现是一项比较麻烦的事情,但是今天看看利用MyBatis-Plus只需要简单的几步就能完美的让我们实现该功能。一、添加对应的starter<dependency> <groupId>c...

2022-05-18 01:59:20 265

原创 Java设置系统日期和时间

需求:利用java实现设置系统的日期和时间一、代码Demo1package com.xu.demo.test;import java.io.IOException;public class SetDateTime { public static void main(String[] args) { //Operating system name String osName = System.getProperty("os.name");

2022-05-06 02:10:02 6416 3

原创 SpringCloudAlibaba实战入门之Nacos下载安装和启动(三)

SpringCloudAlibaba实战入门之注册中心Nacos(二)一、什么是 NacosNacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”

2022-04-08 02:16:36 247

空空如也

空空如也

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

TA关注的人

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