自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(262)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 基于注解方式的枚举值通用校验方法

之前有篇博文介绍了《SpringBoot利用ConstraintValidator实现自定义注解校验》,本文主要也是实现ConstraintValidator接口,利用java的反射实现一个通用的枚举值校验。

2024-04-19 10:16:14 202

原创 数据库相关汇总

MySQL性能优化可分为4个大部分:1、硬件和操作系统层面的优化2、架构设计层面的优化3、MySQL程序配置优化4、SQL优化1、硬件及操作系统层面优化从硬件层面来说,影响 Mysql 性能的因素有,CPU、可用内存大小、磁盘读写 速度、网络带宽从操作系层面来说,应用文件句柄数、操作系统网络的配置都会影响到 Mysql 性能。这部分的优化一般由 DBA 或者运维工程师去完成。在硬件基础资源的优化中,我们重点应该关注服务本身承载的体量,然后提出合 理的指标要求,避免出现资源浪费。

2024-04-11 09:12:52 473

原创 Redis相关知识汇总

如果是先删除缓存,再更新数据库,理想情况是应用下次访问 Redis 的时候,发 现 Redis 里面的数据是空的,就从数据库加载保存到 Redis 里面,那么数据是 一致的。这种模式在主从的基础上新增了哨兵节点,但主库节点宕机后,哨兵会发现主库节点宕 机,然后在从库中选择⼀个库作为进的主库,另外哨兵也可以做集群,从⽽可以保证但某⼀个哨兵 节点宕机后,还有其他哨兵节点可以继续⼯作,这种模式可以⽐较好的保证Redis集群的⾼可⽤,但 是仍然不能很好的解决Redis的容量上限问题。所以就会出现数据一致性问题。

2024-04-09 17:13:07 812

原创 状态模式(行为型)

状态模式(State Pattern)是一种行为型设计模式,它允许一个对象在其内部状态改变时改变它的行为。对象看起来好像修改了它的类,但实际上,由于状态模式的引入,行为的变更被封装在了一系列独立的类中,这使得代码更加清晰、易于管理和扩展。状态模式由以下几个角色组成:上下文(Context):定义客户端所感兴趣的接口,并保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象的现有状态。抽象状态(State):可以是一个接口或抽象类,用于定义声明状态更新的操作方法。

2024-04-09 15:18:25 654

原创 ubuntu离线安装k8s

如果报错:sysctl: cannot stat /proc/sys/net/netfilter/nf_conntrack_max: No such file or directory,可能是 conntrack没有加载,执行:lsmod | grep conntrack。docker-ce-linux安装包是阿里云官方提供的开源镜像免费下载服务,每天下载量过亿,阿里巴巴开源镜像站为包含docker-ce-linux安装包的几百个操作系统镜像和依赖包镜像进行免费CDN加速,更新频率高、稳定安全。

2024-02-04 10:28:14 1351 1

原创 k8s从私有库harbor中拉取镜像

Docker镜像是构建应用程序的基础。然而,许多组织和开发团队希望保留他们的Docker镜像在私有仓库中,并从中拉取镜像,而不是从公共Docker Hub中下载。这样做的原因有很多,包括: 因此,从私有仓库中拉取镜像已经成为了许多企业和开发团队的最佳实践。在本篇博客中,我们将探讨如何在Kubernetes集群中成功地从私有仓库中拉取镜像,以便更好地管理和部署应用程序。

2024-01-31 10:05:24 1551

原创 外观模式(结构型)

外观模式(Facade Pattern)是一种结构型设计模式,它为系统中的一组复杂子系统提供一个简单的接口,从而隐藏了这些子系统的复杂性,并且使得代码更加易于使用和理解。外观模式的核心思想是将复杂的系统拆分成多个子系统,每个子系统负责一个特定的任务。然后,外观类作为这些子系统的总管,将它们组织起来,提供一个简单的接口供客户端使用。这样一来,客户端就不需要了解系统内部的复杂性和细节,只需要通过外观类提供的简单接口来访问系统即可。这种方式可以有效地降低系统的耦合度,使得系统更加易于维护和扩展。

2024-01-16 16:52:20 1142

原创 模板方法模式(行为型)

模板方法模式的核心思想是:定义一个抽象类,把一些抽象行为留给子类去实现,而把一些公共行为放在抽象类中实现。在模板方法模式中,抽象类中定义了一个算法框架,由具体子类来实现其中的具体步骤。模板方法模式是一种行为型设计模式,它定义了一个操作中的算法框架,将一些步骤延迟到子类中实现。- 抽象类(Abstract Class):定义了一个算法框架,其中包含了一些抽象的操作,由子类去实现。- 具体类(Concrete Class):实现了抽象类中定义的抽象方法,完成算法中的具体步骤。

2023-12-12 16:34:40 593

原创 建造者模式(创建型)

当我们开发一个软件应用时,我们通常需要创建各种对象。有些对象是简单的,可以直接实例化,但有些对象则比较复杂,需要多个步骤才能创建完成。这时候,建造者模式就派上用场了。 建造者模式是一种创建型设计模式,它允许我们逐步构造一个复杂的对象,而且可以控制整个构造过程。 建造者模式中有四个重要的角色: 整个建造者模式的类图: 首先建立Product类: 创建抽象的Builder类: 创建具体

2023-11-14 15:27:19 411

原创 桥接模式(结构型)

抽象(Abstraction):定义抽象接口,通常包含对实现接口的引用。扩展抽象(Refined Abstraction):对抽象的扩展,可以是抽象类的子类或具体实现类。实现(Implementor):定义实现接口,提供基本操作的接口。具体实现(Concrete Implementor):实现实现接口的具体类。优点与缺点:优点:实现抽象和实现的分离桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。

2023-11-13 14:17:24 256

原创 原型模式(创建型)

原型模式是一种创建型设计模式,它允许在运行时通过克隆现有对象来创建新对象,而不是通过常规的构造函数创建。在原型模式中,一个原型对象可以克隆自身来创建新的对象,这个过程可以通过深度克隆或浅克隆来实现。简单说原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。

2023-11-10 15:59:30 408

原创 SpringCloudGateway--Sentinel限流、熔断降级

SpringCloudGateway是一个基于SpringBoot2.x的API网关,它可以帮助实现路由、过滤、容错等功能,同时也是微服务架构中不可或缺的一部分。在这篇博客中,将会了解到如何使用Sentinel实现SpringCloudGateway的限流、服务降级与熔断。Sentinel是一个轻量级的流量控制框架,它可以帮助我们实现熔断、限流、降级等功能,同时也可以与SpringCloudGateway无缝集成。通过使用Sentinel,可以有效地保护微服务架构免受故障和异常的影响。

2023-11-09 16:58:25 1407

原创 SpringCloudGateway--过滤器(自定义filter)

当使用Spring Cloud Gateway构建API网关时,可以利用Spring Cloud Gateway提供的内置过滤器(filter)来实现对请求的处理和响应的处理。过滤器可以在请求被路由之前或之后被执行,它可以用于修改请求和响应内容、记录请求日志、校验请求参数、鉴权等等。如果内置的过滤器不能满足需求,可以自定义过滤器。

2023-11-02 17:11:17 2670

原创 读取jsonArray文件并转换为java对象工具类

【代码】读取jsonArray文件并转换为java对象工具类。

2023-09-15 15:57:16 359

原创 SpringBoot自定义消息总线

在现代的分布式系统中,消息传递已成为一个非常流行的模式。它使得系统内的不同部分可以松耦合地通信,从而实现更高效、更可靠的应用程序。本博客将介绍SpringBoot如何提供简单易用的消息传递机制,并展示如何自定义消息总线以满足特定需求。

2023-09-01 11:51:11 958

原创 linux常用命令(长期更新)

20、tail命令:tail用来指定输出的文件只输出最后几行。3、进入目录:cd, 可在后面提供绝对路径,如:cd /etc/nginx,向上移动cd .. ,进入根目录:cd /4、复制命令:cp,cp file.txt new_file.txt。7、移动命令:mv,如:mv file.txt fileDir。10、更新指定文件的访问和修改时间、创建新的文件夹:touch。21、head命令:与tail相反,输出前几行。25、下载文件:sz,sz后面指定文件目录。14、创建、查看和连接文件:cat。

2023-08-30 09:34:25 102

原创 SpringBoot基于AOP注解方式实现Redis缓存

Spring中的AOP(Aspect Oriented Programming)是基于代理的AOP实现,通过使用基于代理的技术,可以在不修改原有代码的情况下,对原有代码进行增强和改进。Spring AOP实现了面向切面编程的功能,将横切关注点(Cross-cutting concern)从业务逻辑中抽离出来,通过将切面应用到目标对象的方法上实现功能增强。

2023-08-24 10:02:48 344 1

原创 SpringBoot利用ConstraintValidator实现自定义注解校验

/ 默认错误消息String message() default "name不能为空";// 分组Class

2023-08-23 10:44:49 966

原创 Google Guava Cache的使用

Google Guava Cache是Google Guava库中的一个缓存框架,用于缓存计算结果、数据或资源,提高程序访问效率和响应速度。Guava Cache具有以下特点:①可配置性:Guava Cache支持多种缓存参数的配置,例如缓存大小、过期时间、访问策略等,可以根据应用场景进行灵活配置。②基于引用计数的回收策略:Guava Cache使用基于引用计数的回收策略,当缓存对象的引用计数为0时自动回收,避免了内存泄漏。

2023-08-22 17:48:02 922

原创 基于Azure实现Java访问OpenAI

官方对Python和C#进行了封装,java没有,但是可以通过uri的方式进行访问。

2023-05-29 16:45:19 2950 17

原创 Windows安装RabbitMQ

RabbitMQ不用过多介绍,直接进入安装主题。

2023-04-06 16:05:03 523 1

原创 OpenAI注册以及Java代码调用

OpenAI可以使用google账号登录,也可以使用微软账号登录,这里建议使用微软账号登录,微软账号不需要vpn即可实现注册,用国内的邮箱和电话号码即可。在红色对话框即可进行对话,需要注意的是,因为受返回会话字数限制,超过一定数量就不会继续,可以在对话框输入continue继续进行。注意这个有效时间是20分钟,如果没有接收到短信会将购买费用返回,我使用阿根廷、印度的都能成功,可以根据实际情况选择。使用第一步注册的微软账号登录,接着会让提供电话号码,使用第二步购买的号码,等待验证码输入即可。

2023-03-30 14:43:25 9217 35

原创 Jmeter简单使用

这里的十个分别表示:名称、协议(http或httpsd)、域名(我这里进行本地测试)、端口号(根据自己的实际情况填写)、请求方法、请求路径、编码、参数、请求体、文件上传。Jmeter是由Apache下的一个纯Java开源项目,可用于做接口测试,也可用于做性能测试,本文主要简单介绍一下安装及使用。Jmeter默认的GUI界面是英文,如果需要改成中文可在一下路径设置:options->Choose Language。其中1,2,3分别表示 线程数量、线程启动时间、运行次数。

2023-03-30 13:01:31 290

原创 SpringCloudGateway--基于redis实现令牌桶算法

就是跟生活中漏桶一样,一个水桶,下面有个洞往外漏水,会控制水流速度,不论水桶中有多少睡,漏水的速率保持一致。主要是当某时间段有大量请求,但是已经达到漏桶上限的情况。计数器算法是指从第一个请求开始,每多一个请求就加1,假设设置每秒限流100,当在一秒钟前500ms已经达到100,后面的500ms中的所有请求都会被拒绝。就是在桶中放入令牌,请求获取到令牌后才能继续执行,如果桶中没有令牌,请求要么继续等待,要么直接拒绝。算法工厂由代码提供,令牌桶由redis提供,底层逻辑是lua脚本提供,已经封装好的。

2023-03-06 14:40:14 1359

原创 SpringCloudGateway--过滤器(内置filter)

目录一、概览二、内置过滤器1、StripPrefix2、AddRequestHeader3、AddResponseHeader4、DedupeResponseHeader5、AddRequestParameter6、CircuitBreaker7、FallbackHeaders8、RequestRateLimiter9、RedirectTo10、RemoveRequestHeader11、RemoveResponseHeader12、RemoveRequestParameter13、RewritePath

2022-12-06 13:31:39 6763

原创 SpringCloudGateway--谓词(断言)

SpringCloudGateway中三个重要词汇:路由(Route):配置网关中的一个完整路由,包括命名,地址,谓词集合(规则),过滤器集合。谓词、断言(Predicate):这是一个 Java 8 函数谓词。输入类型是一个 Spring 框架的 ServerWebExchange。这允许开发人员匹配来自 HTTP 请求的任何内容,例如头部或参数。简单说就是看发送的请求url中是否符合谓词中的规则,符合就通过,不符合就进行拦截。

2022-11-26 19:03:26 1576

原创 K8S常用命令(长期更新)

12、进入pod容器:kubectl exec -it podName -n nsName /bin/sh 、kubectl exec -it podName -n nsName /bin/bash。5、查看pod的详细信息,以yaml或者json格式展示:kubectl get pods -o yaml、kubectl get pods -o json。2、查看指定pod的日志信息:kubectl logs -f --tail(最后多少行) 500 podName(pod名)

2022-11-23 01:00:27 7306

原创 SpringCloudGateway--自动路由映射与手动路由映射

新建子项目service_one,service_two。可以看见由gateway进行了自动转发,并且是轮询进行。

2022-11-22 22:07:10 1787

原创 Nacos Windows安装

下载下来的文件解压,进入bin目录,打开dos界面,输入:startup.cmd -m standalone进行启动。我这里是建了一个standalone.cmd文件,将命令写入,之后直接双击启动即可。默认账户密码:nacos/nacos。

2022-11-22 18:02:36 304

原创 Java开发琐碎语法(长期更新)

1、List赋初值可使用:Arrays.asList(0.1, 0.25, 0.5, 0.75, 0.9);3、BigDecimal的加减乘除:add、subtract、multiply、divide。④a.compareTo(b) > -1 a大于等于b。⑤a.compareTo(b) < 1 a小于等于b。①a.compareTo(b) == -1 a小于b。②a.compareTo(b) == 0 a等于b。③a.compareTo(b) == 1 a大于b。

2022-11-21 20:51:20 407

原创 Java编程注意事项若干(长期更新)

6、进行判null操作的时候,可使用:Optional.ofNullable(str).isPresent();1、new HashMap时一般需要指定大小,如果不清楚,建议设置为16:new HashMap(16);4、进行字符串比对的时候,已知不为null的放前面:"test".equals(str);9、使用idea进行开发时,自己代码可使用format,Ctrl+Alt+L;5、进行判null操作的时候,将null放后面:str!本篇博客仅仅记录开发过程中一些习惯。

2022-11-21 20:26:11 434

原创 static方法中注入springBean对象

spring启动的时候,在进行元数据管理的时候,会自动忽略掉static成员,包括其中的属性和方法。如果我们在static中需要调用spring管理的对象,此时可以使用以下三种方式进行注入。三、实现SmartInitializingSingleton。一、使用@PostConstruct注解。

2022-11-02 17:43:56 3205

原创 nacos通过服务名获取服务的ip和端口

在微服务某些场景中,我们需要在服务中调用别的服务,比如Java服务调用另外的Java服务时,可以通过引用jar包进行,但如果调用Python等其它服务,此时无法引用jar包,只能通过访问服务暴露的地址调用。可以看到源码中有获取默认的nacos配置的地方,如果我们本身是在一个微服务中进行调用,本身已经在配置文件中配置了nacos地址,此时会直接获取到默认的这些配置, 就不需要再有config的配置了。

2022-11-01 14:01:02 7073 2

原创 BigDecimal使用注解形式进行格式化处理

【代码】BigDecimal使用注解形式进行格式化处理。

2022-10-24 17:28:52 1768

原创 Java中日期类型转换、日期类型取值

三、hutool中DateUtil的使用。一、Date转LocalDate。二、LocalDate转Date。

2022-09-23 16:07:55 693

原创 SpringBoot、MyBatis、PostgreSQL储存JSON、对象等自定义TypeHandler

由于MyBatis没有提供直接处理JSON的方法,因此需要自己实现处理JSON的类,并继承BaseTypeHandler来处理储存JSON字段。

2022-09-20 17:14:06 2201

原创 微服务的几种负载均衡算法

目录一、负载均衡二、负载均衡算法1、静态负载均衡2、动态负载均衡三、Dubbo负载均衡的四种算法1、基于权重随机算法RandomLoadBalance一、负载均衡负载均衡简单的说就是对流量进行重新分配,避免单一机器直接被较为集中的流量击穿,或者避免部分机器由于没有合理分配流量导致空闲。负载均衡分位硬件负载均衡和软件负载均衡,这里主要对软件负载均衡进行一个记录。软件方面的产品比较流行的有LVS、Nginx、HaProxy等。二、负载均衡算法负载均衡算法分位静态负

2022-06-07 16:11:55 3099

原创 Java8中List、Map的使用(长期更新)

Java8新特性中,List、Map有许多很好用的功能,本文主要针对此进行讲解。

2022-06-06 16:48:00 1549

原创 SpringBoot中使用AOP实现耗时统计

Spring中一个重要的点就是面向切面编程,即AOP,可以实现程序中功能的解耦,让一些类共享相同的行为动作。Spring中AOP的实现主要通过JDK的动态代理和CGLIB实现。一、AOP中相关术语1、切面(Aspect):是指横切多个对象的关注点的一个模块化,切面通过常规类(基本模式方法)或者通过使用了注解@Aspect的常规类来实现。2、连接点(Joint point):就是spring中允许使用通知的地方,基本上每个方法前后抛异常时都可以是连接点3、通知(Advi

2022-05-02 18:05:12 3133

原创 Grafana实现SQL查询参数查询

Grafana实现参数查询如下:①进入Dashboard设置面板:② 添加Variables:③设置参数: Type类型选择Query表示使用SQL查询结果,Multi-value表示多选,Include All option表示设置一个all,即全部。 在panel中输入查询语句,使用$user,user即刚才创建变量时的名字即可使用该变量:...

2022-02-22 15:02:36 5572

k8s相关软件的tar

k8s相关软件的tar

2024-02-04

k8s部署相关资料,包括tar

k8s部署相关资料,包括tar

2024-02-04

k8s部署相关资料,包括bed、yaml

k8s部署相关资料

2024-02-04

Java程序,包含redis作MQ,springboot等

Java程序,包含redis作MQ,springboot等

2021-07-09

Java程序,springboot搭建

Java程序,springboot搭建

2021-07-09

Java对比程序,实现自动对比数据

Java对比程序,实现自动对比数据

2021-07-09

C#程序,quartz定时执行

C#程序,quartz定时执行

2021-07-09

ComboBoxAndDataGridView.rar

最近一个需求,需要实现在dataGridView的单元格中放入下拉框进行选择,即放入comboBox控件,整体的思路很简单,comboBox通过代码进行初始化。在点击某个单元格的时候,触发单元格的事件,然后显示下拉框,当选择了数据之后,赢藏comboBox,并将选择的数据绑定到单元格对应的位置即可。

2019-12-23

WinfromSortTest.rar

最近在做一个需求的时候,需要在dataGridView的最后两行添加一个平均值、总计的行,这两行不能参与排序的。现在的dataGridView其实默认最后一行不参加排序的,但是现在我是最后两行不参与排序,因此需要自己动手解决。类似的,以下解决方案可以让任意一行不参与排序。

2019-12-12

UpdateQuartzTriggerTime.rar

Quartz.net配置文件配置触发器,动态修改触发器触发的时间。Quartz.net配置文件配置触发器,动态修改触发器触发的时间。

2019-09-21

QuartzTest.rar

Quartz.net通过配置文件创建任务,实现任务的暂停、任务的恢复、下次触发时间的显示。Quartz.net通过配置文件创建任务,实现任务的暂停、任务的恢复、下次触发时间的显示。

2019-09-19

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

TA关注的人

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