自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序人生

一个爱编程的码农

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

原创 Asp .Net Core 系列:集成 CAP + RabbitMQ + MySQL(含幂等性)

官网:https://cap.dotnetcore.xyz/事件总线是一种机制,它允许不同的组件彼此通信而不彼此了解。组件可以将事件发送到 Eventbus,而无需知道是谁来接听或有多少其他人来接听。组件也可以侦听 Eventbus 上的事件,而无需知道谁发送了事件。这样,组件可以相互通信而无需相互依赖。同样,很容易替换一个组件。只要新组件了解正在发送和接收的事件,其他组件就永远不会知道.

2024-05-22 21:15:00 424

原创 Asp .Net Core 系列:国际化多语言配置

全球化 (G11N):使应用支持不同语言和区域的过程。缩写来自第一个和最后一个字母以及它们之间的字母数。本地化 (L10N):针对特定语言和区域自定义全球化应用的过程。国际化 (I18N):包括全球化和本地化。区域性:一种语言和/或区域。非特定区域性:具有指定语言但不具有区域的区域性(例如“en”、“es”)。特定区域性:具有指定语言但和区域的区域性(例如“en-US”、“en-GB”、“es-CL”)。父区域性:包含特定区域性的非特定区域性。

2024-04-28 20:15:00 1473

原创 Java 设计模式系列:建造者模式

建造者模式(Builder Pattern)是一种对象构建设计模式,它提供了一种构建对象的最佳方式。这种模式属于创建型模式,它提供了一种创建对象的最佳方式。建造者模式的主要特点是它将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。建造者模式将一个复杂对象的构建过程分为多个步骤,每一步只完成一部分构建工作,最终通过这些步骤的顺序完成整个对象的构建。通过将构建过程分解为一系列的步骤,使得客户端只需要关心所需产品的接口,而不必关心具体的构建过程。

2024-04-21 17:11:02 576

原创 设计模式系列:适配器模式

适配器模式(Adapter Pattern)又称为变压器模式,它是一种结构型设计模式。适配器模式的目的是将一个类的接口转换成客户端所期望的另一种接口,从而使原本因接口不匹配而不能一起工作的两个类能够一起工作。适配器模式有两种形式:类适配器(Class Adapter)和对象适配器(Object Adapter)。类适配器通过继承实现适配器功能,让Adapter实现Target接口并且继承Adaptee,这样Adapter就具备Target和Adaptee的特性,可以将两者进行转化。

2024-04-15 22:26:12 1367

原创 设计模式系列:责任链模式

责任链模式是一种行为型设计模式,它允许你将请求沿着处理者链进行发送。每个处理者都可以对请求进行处理,或者将其传递给链上的下一个处理者。责任链模式主要应用于面向对象编程中,特别是当系统中的对象需要根据其属性来决定如何处理请求时。在责任链模式中,通常会有多个对象(处理者)连接在一起形成一个链。当一个请求发送到链的开始时,它将沿着链传递,直到找到一个处理者来处理这个请求。如果没有处理者能够处理该请求,那么请求将沿着链继续传递,直到找到一个可以处理它的处理者。

2024-04-14 21:55:24 1261

原创 Java 设计模式系列:模板方法模式

模板方法模式是一种行为型设计模式,它定义一个操作中的算法骨架,将一些步骤推迟到子类中。模板方法模式使得子类可以不改变一个算法的结构,即可重定义该算法的某些特定步骤。在模板方法模式中,抽象类中定义了一系列基本操作,这些操作是具体的也可以是抽象的,每一个基本操作对应算法的一个步骤。在子类中可以重定义或实现这些步骤,同时抽象类实现了一个模板方法,定义一个算法的框架。模板方法模式通过封装不变部分,扩展可变部分,将特定步骤的具体实现与操作流程分离开来,实现了代码的复用和扩展,提高了代码质量和可维护性。

2024-04-14 00:56:31 1159

原创 Java 设计模式系列:享元模式

享元模式(Flyweight Pattern)是一种软件设计模式,用于减少内存使用和提高性能。它通过共享细粒度对象来减少创建和销毁对象时所需的内存。享元模式适用于大量相似对象的场景,这些对象可以共享相同的状态和行为。享元模式的核心思想是将对象分为内部状态和外部状态。内部状态是对象自身的状态,通常是不可变的,可以共享;而外部状态则是与对象相关联的环境信息,通常是变化的,由客户端传入享元对象内部。通过共享内部状态,可以显著减少系统中的对象数量,从而降低内存消耗。

2024-04-13 19:17:02 796

原创 Asp .Net Core 系列:集成 Refit 和 RestEase 声明式 HTTP 客户端库

经过查找和实验,发现 在 .NET 平台上,虽然没有直接的 Feign 框架的端口,但是有一些类似的框架和库,它们提供了类似的功能和设计理念。然后,您可以在 ASP.NET Core 应用程序中使用 RestEase 客户端。与 Refit 不同的是,RestEase 不需要额外的配置,您只需要直接使用接口即可。然后,您可以在 ASP.NET Core 应用程序中使用 RestEase 客户端。然后,您可以在 ASP.NET Core 应用程序中使用 Refit 客户端。

2024-04-10 17:06:49 826

原创 Java 设计模式系列:备忘录模式

备忘录模式是一种软件设计模式,用于在不破坏封闭的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,很多软件都提供了撤销(Undo)操作,如 Word、记事本、Photoshop、IDEA等软件在编辑时按 Ctrl+Z 组合键时能撤销当前操作,使文档恢复到之前的状态;

2024-04-02 21:00:00 1089

原创 Java 设计模式系列:行为型-中介者模式

中介者模式是一种行为型设计模式,它定义了一个中介对象,用于简化对象之间的交互。中介者模式通过引入一个中介对象来解耦多个对象之间的交互,使得这些对象可以独立地改变和复用。中介者模式的适用场景包括多个对象之间存在复杂的引用关系,导致系统的结构变得很复杂;当一个对象发生改变时,需要跟踪与之相关联的对象并做出相应的处理;系统中需要添加新的类来处理多个类中的行为,而不必对原类进行修改。

2024-03-20 21:15:00 958

原创 Java 设计模式系列:行为型-状态模式

状态模式(State Pattern)是一种行为型设计模式,允许一个对象在其内部状态改变时改变其行为。状态模式中类的行为是由状态决定的,在不同的状态下有不同的行为。状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。适用场景:一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为;一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。

2024-03-19 21:30:00 1218

原创 Java 设计模式系列:行为型-观察者模式

观察者模式是一种行为型设计模式,又被称为发布-订阅(Publish/Subscribe)模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。观察者模式的主要优点是降低了目标对象和观察者对象间的耦合,二者可以各自独立地改变和复用,让对系统增加功能或删除功能都很方便。然而,观察者模式也存在一些缺点,比如如果一个被观察者对象有很多的直接和间接的观察者,将所有的观察者都通知到会花费很多时间;

2024-03-15 20:00:00 1990

原创 Asp .Net Core 系列:Asp .Net Core 集成 Hangfire+MySQL

在 .NET 和 .NET Core 应用程序中执行后台处理的简单方法,无需 Windows 服务或单独的进程。Hangfire 是一个开源的.NET 任务调度框架,它提供了内置集成化的控制台,允许用户直观明了地查看作业调度情况。Hangfire 不需要依赖于单独的应用程序执行(如 Windows 服务或 Windows 计划任务),支持持久性存储,并且是开源且免费用于商业用途的。Hangfire 的核心组件包括客户端、持久化存储和服务端。

2024-03-13 20:59:23 989

原创 Git 系列:简介安装以及配置管理

Git是一个开源的分布式版本控制系统,用于有效、高速地处理从小到大的项目版本管理。它最初由Linux之父Linus Torvalds设计开发,旨在帮助管理Linux内核开发。Git采用了分布式版本库的方式,不需要服务器端软件支持,每个开发人员都可以在自己的计算机上拥有完整的项目副本,独立进行开发、测试和修改。速度:Git在版本控制方面表现出色,能够高效地处理大规模项目。简单的设计:Git具有直观易用的设计,使得开发人员能够轻松上手。

2024-03-12 20:45:00 1488

原创 Asp .Net Web Forms 系列:配置图片防盗链的几种方法

在 ASP.NET 中,HttpModule 是一个用于处理 HTTP 请求和响应的重要组件。通过实现 IHttpModule 接口并定义 Init 和 Dispose 方法,你可以创建自定义的 HttpModule,并在 ASP.NET 请求处理管道中的不同阶段插入自定义逻辑。HttpModule 的主要作用包括:请求和响应处理:你可以在请求到达页面或处理程序之前或之后执行自定义代码,例如添加 HTTP 头、修改响应内容、执行身份验证或授权逻辑等。

2024-03-11 21:15:00 938

原创 Asp .Net Core 系列:Asp .Net Core 集成 Newtonsoft.Json

Newtonsoft.Json是一个在.NET环境下开源的JSON格式序列化和反序列化的类库。它可以将.NET对象转换为JSON格式的字符串,也可以将JSON格式的字符串转换为.NET对象。这个类库在.NET开发中被广泛使用,因为它功能强大、易于使用,并且有良好的性能。序列化:将.NET对象转换为JSON字符串。这通常用于将数据发送到Web服务或保存到文件。反序列化:将JSON字符串转换为.NET对象。这通常用于从Web服务接收数据或从文件中读取数据。

2024-03-06 21:30:00 1486

原创 Asp .Net Core 系列:Asp .Net Core 集成 Panda.DynamicWebApi

是一个动态生成WebApi的组件,生成的API符合Restful风格,受启发于ABP。它可以根据符合条件的类来生成WebApi,由MVC框架直接调用逻辑,无性能问题,完美兼容Swagger来构建API说明文档,与手动编写Controller相比并无区别。应用场景:DDD架构中的应用逻辑层,可使用本组件来直接生成WebApi,而无需再用Controller来调用。

2024-02-07 22:36:26 1612

原创 Asp .Net Core 系列:Asp .Net Core 集成 NLog

NLog是一个基于.NET平台编写的日志记录类库,它可以在应用程序中添加跟踪调试代码,以便在开发、测试和生产环境中对程序进行监控和故障排除。NLog具有简单、灵活和易于配置的特点,支持在任何一种.NET语言中输出带有上下文的调试诊断信息,并能够将这些信息发送到一个或多个输出目标(target)中,如文件、数据库、控制台等。NLog的API非常类似于log4net,但配置方式更加简单,使用路由表(routing table)进行配置,使得配置文件易于阅读和维护。

2024-02-06 21:12:02 1960

原创 Nexus系列:简介和安装(Windows、Linux)以及反向代理Nexus

Sonatype Nexus是一个Maven仓库管理器,可以节省网络带宽并加速项目搭建的进程。它可以管理jar包的仓库,包括上传和下载jar包。此外,Sonatype Nexus还可以配置其他远程maven仓库站点,作为公共maven仓库的专用代理服务器,为maven项目部署提供存储库。它可以搭建局域网maven私服仓库,实现局域网用户共享,并且支持代理广域网上的远程仓库。官网:https://help.sonatype.com/en/sonatype-nexus-repository.html。

2024-02-02 21:03:28 513

原创 MySQL系列:系列结构和基础管理

1.本地socket链接方式socket=/tmp/mysql.sock说明:只能在本地使用,不依赖于IP和端口2.远程TCPIP链接方式实例:mysqld+工作线程+预分配的内存结构功能:管理数据查看连接线程表+库查看mysql中所有的数据库切换到某个数据库查看库中所有的表查看表结构段:一个表就是一个段,可以由1个或者多个区构成区:一个区(簇)默认1M,由连续的64个page构成页:一个页,默认16KB,由连续的4个OS block构成OS 块:一个块,4KB,由连续的8个扇区构成扇区:一个

2024-02-01 21:23:52 1179

原创 怎么同时学好Java和.Net?

怎么同时学好Java和.Net?

2024-01-31 22:33:10 114

原创 Mybatis 源码系列:领略设计模式在 Mybatis 其中的应用

,它属于创建类模式,一般来说,如果一个对象的构建比较复杂,超出了构造函数所能包含的范围,就可以使用工厂模式和Builder模式,相对于工厂模式会产出一个完整的产品,Builder应用于更加复杂的对象的构建,甚至只会构建产品的一个部分。在这个过程中,有一个相似的特点,就是这些Builder会读取文件或者配置,然后做大量的XpathParser解析、配置或语法的解析、反射生成对象、存入结果缓存等步骤,这么多的工作都不是一个构造函数所能包括的,因此大量采用了Builder模式来解决。

2024-01-31 22:30:15 1091

原创 MyBatis 源码系列:MyBatis 解析配置文件、二级缓存、SQL

启动流程分析通过上面代码发现,创建SqlSessionFactory的代码在SqlSessionFactoryBuilder中,进去一探究竟:下面是解析配置文件的核心方法:上面解析流程结束后会生成一个Configration对象,包含所有配置信息,然后会创建一个SqlSessionFactory对象,这个对象包含了Configration对象。简单总结对于MyBatis启动的流程(获取SqlSession的过程)这边简单总结下:解析mapper文件解析mapper解析CachebuildStat

2024-01-30 22:42:23 550

原创 Asp .Net Core 系列:Asp .Net Core 配置 System.Text.Json

命名空间提供用于序列化和反序列化 JavaScript 对象表示法 (JSON) 的功能。序列化是将对象状态(即其属性的值)转换为可存储或传输的形式的过程。序列化形式不包含有关对象的关联方法的任何信息。反序列化从序列化形式重新构造对象。库的设计强调对广泛的功能集实现高性能和低内存分配。内置的 UTF-8 支持可优化读写以 UTF-8 编码的 JSON 文本的过程,UTF-8 编码是针对 Web 上的数据和磁盘上的文件的最普遍的编码方式。库还提供了用于处理内存中文档对象模型 (DOM)的类。

2024-01-29 21:45:04 1467

原创 Nginx系列:简介和安装(基于yum和源码的方式)

Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强,在同类型的网页服务器中表现较好。此外,Nginx也可以作为一个通用的TCP/UDP代理服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,公开版本1.19.6发布于2020年12月15日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。

2024-01-28 16:02:07 387

原创 Java 设计模式系列:简单工厂模式

简单工厂模式(Simple Factory Pattern)是一种常用的设计模式,属于创建型模式。又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。它提供了一种创建对象的最佳方式。在简单工厂模式中,有一个专门的工厂类负责创建其他类的实例,而客户端无需知道所创建对象的详细信息。工厂类负责实现创建所有实例的内部逻辑,可以创建具有共同父类的不同类的新实例。

2024-01-27 16:48:07 446

原创 Spring Cloud 系列:基于Seata 实现 XA模式

XA 规范 是 X/Open 组织定义的分布式事务处理(DTP,Distributed Transaction Processing)标准,XA 规范 描述了全局的TM与局部的RM之间的接口,几乎所有主流的数据库都对 XA 规范 提供了支持。XA 模式是从 1.2 版本支持的事务模式。XA 规范 是 X/Open 组织定义的分布式事务处理(DTP,Distributed Transaction Processing)标准。

2024-01-25 21:36:46 650

原创 Spring Cloud 系列:Seata 中TCC模式具体实现

TCC模式与AT模式非常相似,每阶段都是独立事务,不同的是TCC通过人工编码来实现数据恢复。Try:资源的检测和预留;Confirm:完成资源操作业务;要求 Try 成功 Confirm 一定要能成功。Cancel:预留资源释放,可以理解为try的反向操作。

2024-01-22 19:59:48 1191

原创 Servlet系列:生命周期(init、 service、destroy)详解

Servlet的生命周期是由Web容器(如Tomcat)管理的,包括以下三个阶段:1. 加载和实例化:当Web应用程序启动时,Web容器会加载和实例化Servlet。加载和实例化过程可以在应用程序启动时自动完成,也可以通过Servlet的名称手动加载。在实例化Servlet后,Web容器会调用其init()方法进行初始化。2. 处理请求:当客户端发送请求时,Web容器会调用Servlet的service()方法处理请求。service()方法会根据请求的类型(GET、POST等)调用doGet()或d

2024-01-21 18:15:49 1144

原创 MyBatis 系列:MyBatis 源码环境搭建

不必过于纠结一些错误,对于一些失败的可以考虑直接注释。

2024-01-20 19:42:11 1120

原创 Servlet系列:(HttpServletRequest、HttpServletResponse、ServletContext、ServletConfig)详解

客户端发出第一个请求,被服务器接收处理后,服务器会进行响应,在响应的同时,服务器会给客户端一个新的地址(下次请求的地址response.sendRedirect(url);HttpServletRequest 对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头信息等都属于客户端发来的信息,service()方法中形参接收的是 HttpServletRequest 接口的实例化对象,表示该对象主要应用在 HTTP 协议上,该对象是由 Tomcat 封装好传递过来。

2024-01-19 20:59:22 437

原创 Asp .Net Core 系列:集成 Ocelot+Nacos+Swagger+Cors实现网关、服务注册、服务发现

Ocelot是一个开源的ASP.NET Core微服务网关,它提供了API网关所需的所有功能,如路由、认证、限流、监控等。Ocelot是一个简单、灵活且功能强大的API网关,它可以与现有的服务集成,并帮助您保护、监控和扩展您的微服务。路由管理:Ocelot允许您定义路由规则,将请求路由到正确的微服务。认证和授权:Ocelot支持多种认证机制,如JWT、OAuth等,并允许您定义访问控制策略,确保只有授权的用户才能访问特定的API。

2024-01-18 22:10:22 1484

原创 Servlet系列:两种创建方式(xml,注解)

使用 @WebServlet 注解配置的 Servlet 类,不要在 web.xml 文件中再次配置该 Servlet 相关属性。若同时使用 web.xml 与 @WebServlet 配置同一 Servlet 类,则 web.xml 中 的值与注解中 name 取值不能相同,否则容器会忽略注解中的配置。在注解中,可以指定Servlet的名称、URL映射等。如果值为正整数或者0时,表示容器在应用启动时就加载并初始化这个 servlet,值越小, servlet的优先级越高,就越先被加载。

2024-01-17 20:25:38 1077

原创 Asp .Net Core 系列:集成 Ocelot+Consul实现网关、服务注册、服务发现

Ocelot是一个开源的ASP.NET Core微服务网关,它提供了API网关所需的所有功能,如路由、认证、限流、监控等。Ocelot是一个简单、灵活且功能强大的API网关,它可以与现有的服务集成,并帮助您保护、监控和扩展您的微服务。路由管理:Ocelot允许您定义路由规则,将请求路由到正确的微服务。认证和授权:Ocelot支持多种认证机制,如JWT、OAuth等,并允许您定义访问控制策略,确保只有授权的用户才能访问特定的API。

2024-01-16 23:27:00 1006

原创 Spring Boot3 系列:Spring Boot3 跨域配置 Cors

CORS,全称是“跨源资源共享”(Cross-Origin Resource Sharing),是一种Web应用程序的安全机制,用于控制不同源的资源之间的交互。在Web应用程序中,CORS定义了一种机制,通过该机制,浏览器能够限制哪些外部网页可以访问来自不同源的资源。源由协议、域名和端口组成。当一个网页请求另一个网页上的资源时,浏览器会检查请求是否符合CORS规范,以确定是否允许该请求。

2024-01-15 22:55:44 1761

原创 Asp .Net Core 系列:基于 Swashbuckle.AspNetCore 包 集成 Swagger

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。它提供了一种规范的方式来定义、构建和文档化 RESTful Web 服务,使客户端能够发现和理解各种服务的功能。Swagger 的目标是使部署管理和使用功能强大的 API 从未如此简单。Swagger 提供了一种基于 YAML 或 JSON 格式的规范语言,用于描述 RESTful Web 服务的元数据,包括 API 的版本、资源、请求方法、参数、响应等信息。

2024-01-14 19:21:47 1264

原创 Asp .Net Core 系列: 集成 Consul 实现 服务注册与健康检查

官网:https://www.consul.io/Consul 是一款开源的服务发现和配置管理工具,它能够监控应用程序和服务之间的通信,并提供了一组 API 和 Web UI,用于管理服务和配置。服务发现:Consul 通过 DNS 或者 HTTP 接口使服务注册和服务发现变得很容易,一些外部服务,例如 saas 提供的也可以一样注册。健康检查:健康检测使 Consul 可以快速的告警在集群中的操作。和服务发现的集成,可以防止服务转发到故障的服务上面。键/值存储:一个用来存储动态配置的系统。

2024-01-12 22:48:58 1389

原创 Asp .Net Core 系列: 集成 CORS跨域配置

CORS,全称是“跨源资源共享”(Cross-Origin Resource Sharing),是一种Web应用程序的安全机制,用于控制不同源的资源之间的交互。在Web应用程序中,CORS定义了一种机制,通过该机制,浏览器能够限制哪些外部网页可以访问来自不同源的资源。源由协议、域名和端口组成。当一个网页请求另一个网页上的资源时,浏览器会检查请求是否符合CORS规范,以确定是否允许该请求。

2024-01-11 21:41:37 1754

原创 前端系列:ES6-ES12新语法

文章目录ECMAScript系列:简介ECMAScript系列:ES6新特性let 关键字const 关键字变量的解构赋值模板字符串简化对象写法箭头函数参数默认值rest 参数spread扩展运算符Symbol迭代器生成器PromiseSetMapclass类数值扩展对象扩展模块化ECMAScript系列:ES7新特性Array.prototype.includes指数操作符ECMAScript系列:ES8新特性async 和 awaitasync 函数await 表达式Object.values 和 Ob

2024-01-10 23:09:05 1320

原创 前端系列:正则表达式RegExp详解

一个词的边界就是一个词不被另外一个“字”字符跟随的位置或者前面跟其他“字”字符的位置,例如在字母和空格之间。换句话说,一个匹配的词的边界的内容的长度是 0。模式可以是一个字符串或者一[正则表达式],替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。x{n,m} :n 和 m 为正整数,前面的模式 x 连续出现至少 n 次,至多 m 次时匹配。x{n} :n 是一个正整数,前面的模式 x 连续出现 n 次时匹配。match:返回一个字符串匹配正则表达式的结果,如果未找到匹配则为。

2024-01-09 23:21:03 1027

空空如也

空空如也

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

TA关注的人

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