- 博客(271)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 Go语言环境搭建并执行第一个Go程序
下载Go:All releases - The Go Programming Language 这里是Windows搭建,选择的是windows-amd64.msi,也可以选择zip直接解压缩到指定目录 选择msi可执行文件直接一路Next即可,使用msi安装不需要配置环境变量,如果是下载的zip文件,需要单独配置环境变量,完成之后打开cmd,输入go version即可查看是否成功: 输入go env可查看Go的环境变量: Go默认的GOPROXY的
2025-03-12 14:01:11
732
原创 享元模式(结构型)
享元模式(Flyweight Pattern)是一种结构型设计模式,用于减少大量细粒度对象的内存占用。它通过共享尽可能多的相同数据来节约内存空间。
2024-07-24 14:49:02
1135
原创 中介者模式(行为型)
优点与缺点降低耦合性:通过引入中介者对象,同事对象不再需要显式地引用彼此。它们只需要与中介者对象通信,从而降低了对象之间的耦合度,使得代码更易于维护和扩展集中控制:中介者模式将对象之间的交互逻辑集中到一个中介者对象中,简化了对象的管理和协调,便于修改和扩展交互逻辑。提高可读性和可维护性:将复杂的对象交互逻辑从对象本身中提取出来放到中介者中,使得每个对象的职责更加单一,代码更清晰,更易于理解和维护。
2024-07-15 16:11:43
1059
原创 责任链模式(行为型)
责任链模式(Chain of Responsibility Pattern)也叫职责链模式,是一种行为型设计模式,职责链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链。并沿着这条链传递该请求,直到有一个对象处理它为止。 责任链模式由以下角色组成: 整个责任链模式的结构图: 比如一些请求制度,我们可以设置组长能够审批3天因为的假期,经理可以审批10天以内的假期,CEO可以审批30天以内的假期,不允许超过30天,这种时候就
2024-06-05 17:00:44
788
原创 命令模式(行为型)
优点与缺点:优点:解耦请求发送者和接收者:命名模式将请求封装成一个对象,使得发送者和接收者之间的解耦程度增加。发送者只需要知道如何发送命令,而不需要了解命令是如何被执行的。支持撤销和重做操作:由于命令对象封装了对接收者的调用,因此可以轻松地实现撤销和重做操作,只需保留历史命令对象即可。增加新的命令:通过添加新的命令类,可以轻松地扩展命令模式,而无需修改现有的客户端代码。支持组合命令:可以通过组合多个命令对象来执行复杂的操作,从而实现更高级的功能。
2024-05-31 17:37:42
974
原创 迭代器模式(行为型)
迭代器模式(Iterator Pattern)是一种行为型设计模式,提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。总的来说就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可以让外部代码透明地访问集合内部的数据。
2024-05-27 16:44:04
1181
原创 组合模式(结构型)
组合模式(Composite Pattern)是一种结构型设计模式,将对象组合成树形结构以表示“部分-整体”得层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
2024-05-09 11:45:46
750
原创 备忘录模式(行为型)
备忘录模式(Memento Pattern)是一种行为型设计模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在之后将该对象恢复到原来保存的状态。备忘录模式由以下几个角色组成:Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复状态。
2024-04-30 17:27:15
1036
原创 消息队列相关汇总
应用解耦可以看作是把相关但耦合度不高的系统联系起来。流量削峰一般应用在大流量入口且短时间内业务需求处理不完的服务中心, 为了权衡高可用,把大量的并行任务发送到 MQ 中, 依据 MQ 的存储及分发功能,平稳的处理后续的业务,起到一个大流量缓冲的作用。一个消息队列的终端,也是消息的调用端 具体是根据消息承载的信息,处理各种业务逻辑。主要的处理单元,负责消息的存储、投递、及各种队列附加功能的实现,是消息队列最核心的组成部分。消息的产生者与调用端,主要负责消息所承载的业务信息的实例化,是一个队列的发起方。
2024-04-29 15:27:18
1081
3
原创 基于注解方式的枚举值通用校验方法
之前有篇博文介绍了《SpringBoot利用ConstraintValidator实现自定义注解校验》,本文主要也是实现ConstraintValidator接口,利用java的反射实现一个通用的枚举值校验。
2024-04-19 10:16:14
425
原创 数据库相关汇总
MySQL性能优化可分为4个大部分:1、硬件和操作系统层面的优化2、架构设计层面的优化3、MySQL程序配置优化4、SQL优化1、硬件及操作系统层面优化从硬件层面来说,影响 Mysql 性能的因素有,CPU、可用内存大小、磁盘读写 速度、网络带宽从操作系层面来说,应用文件句柄数、操作系统网络的配置都会影响到 Mysql 性能。这部分的优化一般由 DBA 或者运维工程师去完成。在硬件基础资源的优化中,我们重点应该关注服务本身承载的体量,然后提出合 理的指标要求,避免出现资源浪费。
2024-04-11 09:12:52
559
原创 Redis相关知识汇总
如果是先删除缓存,再更新数据库,理想情况是应用下次访问 Redis 的时候,发 现 Redis 里面的数据是空的,就从数据库加载保存到 Redis 里面,那么数据是 一致的。这种模式在主从的基础上新增了哨兵节点,但主库节点宕机后,哨兵会发现主库节点宕 机,然后在从库中选择⼀个库作为进的主库,另外哨兵也可以做集群,从⽽可以保证但某⼀个哨兵 节点宕机后,还有其他哨兵节点可以继续⼯作,这种模式可以⽐较好的保证Redis集群的⾼可⽤,但 是仍然不能很好的解决Redis的容量上限问题。所以就会出现数据一致性问题。
2024-04-09 17:13:07
893
原创 状态模式(行为型)
状态模式(State Pattern)是一种行为型设计模式,它允许一个对象在其内部状态改变时改变它的行为。对象看起来好像修改了它的类,但实际上,由于状态模式的引入,行为的变更被封装在了一系列独立的类中,这使得代码更加清晰、易于管理和扩展。状态模式由以下几个角色组成:上下文(Context):定义客户端所感兴趣的接口,并保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象的现有状态。抽象状态(State):可以是一个接口或抽象类,用于定义声明状态更新的操作方法。
2024-04-09 15:18:25
729
原创 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
2295
3
原创 k8s从私有库harbor中拉取镜像
Docker镜像是构建应用程序的基础。然而,许多组织和开发团队希望保留他们的Docker镜像在私有仓库中,并从中拉取镜像,而不是从公共Docker Hub中下载。这样做的原因有很多,包括: 因此,从私有仓库中拉取镜像已经成为了许多企业和开发团队的最佳实践。在本篇博客中,我们将探讨如何在Kubernetes集群中成功地从私有仓库中拉取镜像,以便更好地管理和部署应用程序。
2024-01-31 10:05:24
2008
2
原创 外观模式(结构型)
外观模式(Facade Pattern)是一种结构型设计模式,它为系统中的一组复杂子系统提供一个简单的接口,从而隐藏了这些子系统的复杂性,并且使得代码更加易于使用和理解。外观模式的核心思想是将复杂的系统拆分成多个子系统,每个子系统负责一个特定的任务。然后,外观类作为这些子系统的总管,将它们组织起来,提供一个简单的接口供客户端使用。这样一来,客户端就不需要了解系统内部的复杂性和细节,只需要通过外观类提供的简单接口来访问系统即可。这种方式可以有效地降低系统的耦合度,使得系统更加易于维护和扩展。
2024-01-16 16:52:20
1229
原创 模板方法模式(行为型)
模板方法模式的核心思想是:定义一个抽象类,把一些抽象行为留给子类去实现,而把一些公共行为放在抽象类中实现。在模板方法模式中,抽象类中定义了一个算法框架,由具体子类来实现其中的具体步骤。模板方法模式是一种行为型设计模式,它定义了一个操作中的算法框架,将一些步骤延迟到子类中实现。- 抽象类(Abstract Class):定义了一个算法框架,其中包含了一些抽象的操作,由子类去实现。- 具体类(Concrete Class):实现了抽象类中定义的抽象方法,完成算法中的具体步骤。
2023-12-12 16:34:40
682
原创 建造者模式(创建型)
当我们开发一个软件应用时,我们通常需要创建各种对象。有些对象是简单的,可以直接实例化,但有些对象则比较复杂,需要多个步骤才能创建完成。这时候,建造者模式就派上用场了。 建造者模式是一种创建型设计模式,它允许我们逐步构造一个复杂的对象,而且可以控制整个构造过程。 建造者模式中有四个重要的角色: 整个建造者模式的类图: 首先建立Product类: 创建抽象的Builder类: 创建具体
2023-11-14 15:27:19
476
原创 桥接模式(结构型)
抽象(Abstraction):定义抽象接口,通常包含对实现接口的引用。扩展抽象(Refined Abstraction):对抽象的扩展,可以是抽象类的子类或具体实现类。实现(Implementor):定义实现接口,提供基本操作的接口。具体实现(Concrete Implementor):实现实现接口的具体类。优点与缺点:优点:实现抽象和实现的分离桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。
2023-11-13 14:17:24
305
原创 原型模式(创建型)
原型模式是一种创建型设计模式,它允许在运行时通过克隆现有对象来创建新对象,而不是通过常规的构造函数创建。在原型模式中,一个原型对象可以克隆自身来创建新的对象,这个过程可以通过深度克隆或浅克隆来实现。简单说原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。
2023-11-10 15:59:30
466
原创 SpringCloudGateway--Sentinel限流、熔断降级
SpringCloudGateway是一个基于SpringBoot2.x的API网关,它可以帮助实现路由、过滤、容错等功能,同时也是微服务架构中不可或缺的一部分。在这篇博客中,将会了解到如何使用Sentinel实现SpringCloudGateway的限流、服务降级与熔断。Sentinel是一个轻量级的流量控制框架,它可以帮助我们实现熔断、限流、降级等功能,同时也可以与SpringCloudGateway无缝集成。通过使用Sentinel,可以有效地保护微服务架构免受故障和异常的影响。
2023-11-09 16:58:25
1816
原创 SpringCloudGateway--过滤器(自定义filter)
当使用Spring Cloud Gateway构建API网关时,可以利用Spring Cloud Gateway提供的内置过滤器(filter)来实现对请求的处理和响应的处理。过滤器可以在请求被路由之前或之后被执行,它可以用于修改请求和响应内容、记录请求日志、校验请求参数、鉴权等等。如果内置的过滤器不能满足需求,可以自定义过滤器。
2023-11-02 17:11:17
4352
原创 SpringBoot自定义消息总线
在现代的分布式系统中,消息传递已成为一个非常流行的模式。它使得系统内的不同部分可以松耦合地通信,从而实现更高效、更可靠的应用程序。本博客将介绍SpringBoot如何提供简单易用的消息传递机制,并展示如何自定义消息总线以满足特定需求。
2023-09-01 11:51:11
1291
原创 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
139
原创 SpringBoot基于AOP注解方式实现Redis缓存
Spring中的AOP(Aspect Oriented Programming)是基于代理的AOP实现,通过使用基于代理的技术,可以在不修改原有代码的情况下,对原有代码进行增强和改进。Spring AOP实现了面向切面编程的功能,将横切关注点(Cross-cutting concern)从业务逻辑中抽离出来,通过将切面应用到目标对象的方法上实现功能增强。
2023-08-24 10:02:48
621
1
原创 SpringBoot利用ConstraintValidator实现自定义注解校验
/ 默认错误消息String message() default "name不能为空";// 分组Class
2023-08-23 10:44:49
3019
原创 Google Guava Cache的使用
Google Guava Cache是Google Guava库中的一个缓存框架,用于缓存计算结果、数据或资源,提高程序访问效率和响应速度。Guava Cache具有以下特点:①可配置性:Guava Cache支持多种缓存参数的配置,例如缓存大小、过期时间、访问策略等,可以根据应用场景进行灵活配置。②基于引用计数的回收策略:Guava Cache使用基于引用计数的回收策略,当缓存对象的引用计数为0时自动回收,避免了内存泄漏。
2023-08-22 17:48:02
1367
原创 OpenAI注册以及Java代码调用
OpenAI可以使用google账号登录,也可以使用微软账号登录,这里建议使用微软账号登录,微软账号不需要vpn即可实现注册,用国内的邮箱和电话号码即可。在红色对话框即可进行对话,需要注意的是,因为受返回会话字数限制,超过一定数量就不会继续,可以在对话框输入continue继续进行。注意这个有效时间是20分钟,如果没有接收到短信会将购买费用返回,我使用阿根廷、印度的都能成功,可以根据实际情况选择。使用第一步注册的微软账号登录,接着会让提供电话号码,使用第二步购买的号码,等待验证码输入即可。
2023-03-30 14:43:25
10519
36
原创 Jmeter简单使用
这里的十个分别表示:名称、协议(http或httpsd)、域名(我这里进行本地测试)、端口号(根据自己的实际情况填写)、请求方法、请求路径、编码、参数、请求体、文件上传。Jmeter是由Apache下的一个纯Java开源项目,可用于做接口测试,也可用于做性能测试,本文主要简单介绍一下安装及使用。Jmeter默认的GUI界面是英文,如果需要改成中文可在一下路径设置:options->Choose Language。其中1,2,3分别表示 线程数量、线程启动时间、运行次数。
2023-03-30 13:01:31
351
原创 SpringCloudGateway--基于redis实现令牌桶算法
就是跟生活中漏桶一样,一个水桶,下面有个洞往外漏水,会控制水流速度,不论水桶中有多少睡,漏水的速率保持一致。主要是当某时间段有大量请求,但是已经达到漏桶上限的情况。计数器算法是指从第一个请求开始,每多一个请求就加1,假设设置每秒限流100,当在一秒钟前500ms已经达到100,后面的500ms中的所有请求都会被拒绝。就是在桶中放入令牌,请求获取到令牌后才能继续执行,如果桶中没有令牌,请求要么继续等待,要么直接拒绝。算法工厂由代码提供,令牌桶由redis提供,底层逻辑是lua脚本提供,已经封装好的。
2023-03-06 14:40:14
1679
原创 SpringCloudGateway--过滤器(内置filter)
目录一、概览二、内置过滤器1、StripPrefix2、AddRequestHeader3、AddResponseHeader4、DedupeResponseHeader5、AddRequestParameter6、CircuitBreaker7、FallbackHeaders8、RequestRateLimiter9、RedirectTo10、RemoveRequestHeader11、RemoveResponseHeader12、RemoveRequestParameter13、RewritePath
2022-12-06 13:31:39
7910
原创 SpringCloudGateway--谓词(断言)
SpringCloudGateway中三个重要词汇:路由(Route):配置网关中的一个完整路由,包括命名,地址,谓词集合(规则),过滤器集合。谓词、断言(Predicate):这是一个 Java 8 函数谓词。输入类型是一个 Spring 框架的 ServerWebExchange。这允许开发人员匹配来自 HTTP 请求的任何内容,例如头部或参数。简单说就是看发送的请求url中是否符合谓词中的规则,符合就通过,不符合就进行拦截。
2022-11-26 19:03:26
1915
原创 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
8009
原创 SpringCloudGateway--自动路由映射与手动路由映射
新建子项目service_one,service_two。可以看见由gateway进行了自动转发,并且是轮询进行。
2022-11-22 22:07:10
2225
原创 Nacos Windows安装
下载下来的文件解压,进入bin目录,打开dos界面,输入:startup.cmd -m standalone进行启动。我这里是建了一个standalone.cmd文件,将命令写入,之后直接双击启动即可。默认账户密码:nacos/nacos。
2022-11-22 18:02:36
430
原创 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
454
原创 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
486
ComboBoxAndDataGridView.rar
2019-12-23
WinfromSortTest.rar
2019-12-12
UpdateQuartzTriggerTime.rar
2019-09-21
QuartzTest.rar
2019-09-19
hutool导出excel从指定列开始
2021-11-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人