<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[程序人生]]></title><description><![CDATA[一个爱编程的码农]]></description><link>https://blog.youkuaiyun.com/net_programmer1</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; net_programmer1]]></copyright><item><title><![CDATA[ABP VNext 系列：框架启动流程以及依赖注入原理和源码分析]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/142954604</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/142954604</guid><author>net_programmer1</author><pubDate>Tue, 15 Oct 2024 20:30:00 +0800</pubDate><description><![CDATA[Github 地址：https://github.com/abpframework/abp官网文档地址：https://abp.io/docs/latest官网：https://abp.io/ABP VNext 框架是一个基于 ASP.NET Core 的完整基础架构，也就是我们现在称的 ABP 框架，它遵循软件开发最佳实践和最新技术来创建现代 Web 应用程序和 API。]]></description><category></category></item><item><title><![CDATA[Asp .Net Core 系列：详解授权以及实现角色、策略、自定义三种授权和自定义响应]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/140726533</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/140726533</guid><author>net_programmer1</author><pubDate>Fri, 26 Jul 2024 23:06:11 +0800</pubDate><description><![CDATA[在 ASP.NET Core 中，授权（Authorization）是控制对应用资源的访问的过程。它决定了哪些用户或用户组可以访问特定的资源或执行特定的操作。授权通常与身份验证（Authentication）一起使用，身份验证是验证用户身份的过程，授权与身份验证相互独立， 但是，授权需要一种身份验证机制。身份验证是确定用户标识的一个过程。身份验证可为当前用户创建一个或多个标识。在底层，基于角色的授权和基于声明的授权均使用要求、要求处理程序和预配置的策略。这些构建基块支持代码中的授权评估的表达式。]]></description><category></category></item><item><title><![CDATA[Asp .Net Core 系列：基于 T4 模板生成代码]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/140479596</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/140479596</guid><author>net_programmer1</author><pubDate>Tue, 16 Jul 2024 23:21:12 +0800</pubDate><description><![CDATA[T4模板，即，是微软官方在Visual Studio中引入的一种代码生成引擎。自Visual Studio 2008开始，T4模板就被广泛应用于生成各种类型的文本文件，包括网页、资源文件以及各种编程语言的源代码等。T4模板是一种由文本块和控制逻辑组成的混合模板，它可以根据预设的规则和输入数据生成目标文本文件。]]></description><category></category></item><item><title><![CDATA[JavaScript系列：JS实现复制粘贴文字以及图片]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/140451802</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/140451802</guid><author>net_programmer1</author><pubDate>Mon, 15 Jul 2024 23:23:20 +0800</pubDate><description><![CDATA[Clipboard API 是一组用于在浏览器中操作剪贴板的 JavaScript API，它允许开发者在网页上读取和写入剪贴板内容，实现复制、剪切和粘贴等功能。是一个在网页上执行复制操作的旧式API，属于 Web API 的一部分，用于在不需要用户交互（如点击或按键）的情况下，通过脚本复制文本到剪贴板。然而，这个API在现代Web开发中已经被视为过时（deprecated），并在许多现代浏览器中受到限制或不再支持，尤其是在没有用户明确交互的情况下。]]></description><category></category></item><item><title><![CDATA[Java 设计模式系列：外观模式]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/140424654</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/140424654</guid><author>net_programmer1</author><pubDate>Sun, 14 Jul 2024 22:32:41 +0800</pubDate><description><![CDATA[外观模式（Facade Pattern）是一种设计模式，又名门面模式，是一种通过为多个复杂的子系统提供一个一致的接口，而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口，外部应用程序不用关心内部子系统的具体的细节，这样会大大降低应用程序的复杂度，提高了程序的可维护性。外观模式的关键在于隐藏系统的复杂性，并简化客户端与系统之间的交互。它通过提供一个统一的接口，使得客户端无需了解系统内部的复杂联系和实现细节，只需要通过外观类与系统进行交互即可。这有助于降低系统的耦合度，提高系统的可维护性和可扩展性。]]></description><category></category></item><item><title><![CDATA[Java 设计模式系列：解释器模式]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/140404353</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/140404353</guid><author>net_programmer1</author><pubDate>Sat, 13 Jul 2024 18:36:44 +0800</pubDate><description><![CDATA[解释器模式是一种行为型设计模式，它提供了一种构建抽象语法树的机制，并定义了如何解释这棵树。解释器模式属于编译原理中的语法制导翻译的范畴。如上图，设计一个软件用来进行加减计算。我们第一想法就是使用工具类，提供对应的加法和减法的工具方法。//用于两个整数相加//用于两个整数相加//用于n个整数相加sum += i;return sum;上面的形式比较单一、有限，如果形式变化非常多，这就不符合要求，因为加法和减法运算，两个运算符与数值可以有无限种组合方式。]]></description><category></category></item><item><title><![CDATA[Asp .Net Core 系列：基于 Castle DynamicProxy + Autofac 实践 AOP 以及实现事务、用户填充功能]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/140191186</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/140191186</guid><author>net_programmer1</author><pubDate>Thu, 04 Jul 2024 22:09:28 +0800</pubDate><description><![CDATA[AOP（Aspect-Oriented Programming，面向切面编程）是一种编程范式，旨在通过将横切关注点（cross-cutting concerns）从主要业务逻辑中分离出来，以提高代码的模块化性、可维护性和复用性。在传统的面向对象编程中，我们通常通过类和对象来组织和实现功能。然而，某些功能，如日志记录、事务管理、安全性检查等，可能会跨越多个对象和模块，这种跨越称为横切关注点。]]></description><category></category></item><item><title><![CDATA[Asp .Net Core 系列：详解鉴权（身份验证）以及实现 Cookie、JWT、自定义三种鉴权 （含源码解析）]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/139524578</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/139524578</guid><author>net_programmer1</author><pubDate>Fri, 07 Jun 2024 21:00:00 +0800</pubDate><description><![CDATA[定义鉴权，又称身份验证，是确定用户身份的过程。它验证用户提供的凭据（如用户名和密码）是否有效，并据此确认用户是否具备访问系统的权利。过程用户向系统提供凭据（如用户名和密码）。系统使用已注册的身份验证服务（如IAuthenticationService）和身份验证处理程序来验证这些凭据的有效性。如果凭据有效，系统将识别并确认用户的身份，然后用户可以访问系统。方式传统的鉴权方式通常依赖于密码验证，但这种方式存在安全风险，如密码泄露或被盗用。]]></description><category></category></item><item><title><![CDATA[Asp .Net Core 系列：集成 CAP + RabbitMQ + MySQL（含幂等性）]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/139124212</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/139124212</guid><author>net_programmer1</author><pubDate>Wed, 22 May 2024 21:15:00 +0800</pubDate><description><![CDATA[官网：https://cap.dotnetcore.xyz/事件总线是一种机制，它允许不同的组件彼此通信而不彼此了解。组件可以将事件发送到 Eventbus，而无需知道是谁来接听或有多少其他人来接听。组件也可以侦听 Eventbus 上的事件，而无需知道谁发送了事件。这样，组件可以相互通信而无需相互依赖。同样，很容易替换一个组件。只要新组件了解正在发送和接收的事件，其他组件就永远不会知道.]]></description><category></category></item><item><title><![CDATA[Asp .Net Core 系列：国际化多语言配置]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/138278274</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/138278274</guid><author>net_programmer1</author><pubDate>Sun, 28 Apr 2024 20:15:00 +0800</pubDate><description><![CDATA[全球化 (G11N)：使应用支持不同语言和区域的过程。缩写来自第一个和最后一个字母以及它们之间的字母数。本地化 (L10N)：针对特定语言和区域自定义全球化应用的过程。国际化 (I18N)：包括全球化和本地化。区域性：一种语言和/或区域。非特定区域性：具有指定语言但不具有区域的区域性（例如“en”、“es”）。特定区域性：具有指定语言但和区域的区域性（例如“en-US”、“en-GB”、“es-CL”）。父区域性：包含特定区域性的非特定区域性。]]></description><category></category></item><item><title><![CDATA[Java 设计模式系列：建造者模式]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/138038816</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/138038816</guid><author>net_programmer1</author><pubDate>Sun, 21 Apr 2024 17:11:02 +0800</pubDate><description><![CDATA[建造者模式（Builder Pattern）是一种对象构建设计模式，它提供了一种构建对象的最佳方式。这种模式属于创建型模式，它提供了一种创建对象的最佳方式。建造者模式的主要特点是它将一个复杂对象的构建与其表示分离，使得同样的构建过程可以创建不同的表示。建造者模式将一个复杂对象的构建过程分为多个步骤，每一步只完成一部分构建工作，最终通过这些步骤的顺序完成整个对象的构建。通过将构建过程分解为一系列的步骤，使得客户端只需要关心所需产品的接口，而不必关心具体的构建过程。]]></description><category></category></item><item><title><![CDATA[设计模式系列：适配器模式]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/137798160</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/137798160</guid><author>net_programmer1</author><pubDate>Mon, 15 Apr 2024 22:26:12 +0800</pubDate><description><![CDATA[适配器模式（Adapter Pattern）又称为变压器模式，它是一种结构型设计模式。适配器模式的目的是将一个类的接口转换成客户端所期望的另一种接口，从而使原本因接口不匹配而不能一起工作的两个类能够一起工作。适配器模式有两种形式：类适配器（Class Adapter）和对象适配器（Object Adapter）。类适配器通过继承实现适配器功能，让Adapter实现Target接口并且继承Adaptee，这样Adapter就具备Target和Adaptee的特性，可以将两者进行转化。]]></description><category></category></item><item><title><![CDATA[设计模式系列：责任链模式]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/137755833</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/137755833</guid><author>net_programmer1</author><pubDate>Sun, 14 Apr 2024 21:55:24 +0800</pubDate><description><![CDATA[责任链模式是一种行为型设计模式，它允许你将请求沿着处理者链进行发送。每个处理者都可以对请求进行处理，或者将其传递给链上的下一个处理者。责任链模式主要应用于面向对象编程中，特别是当系统中的对象需要根据其属性来决定如何处理请求时。在责任链模式中，通常会有多个对象（处理者）连接在一起形成一个链。当一个请求发送到链的开始时，它将沿着链传递，直到找到一个处理者来处理这个请求。如果没有处理者能够处理该请求，那么请求将沿着链继续传递，直到找到一个可以处理它的处理者。]]></description><category></category></item><item><title><![CDATA[Java 设计模式系列：模板方法模式]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/137729993</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/137729993</guid><author>net_programmer1</author><pubDate>Sun, 14 Apr 2024 00:56:31 +0800</pubDate><description><![CDATA[模板方法模式是一种行为型设计模式，它定义一个操作中的算法骨架，将一些步骤推迟到子类中。模板方法模式使得子类可以不改变一个算法的结构，即可重定义该算法的某些特定步骤。在模板方法模式中，抽象类中定义了一系列基本操作，这些操作是具体的也可以是抽象的，每一个基本操作对应算法的一个步骤。在子类中可以重定义或实现这些步骤，同时抽象类实现了一个模板方法，定义一个算法的框架。模板方法模式通过封装不变部分，扩展可变部分，将特定步骤的具体实现与操作流程分离开来，实现了代码的复用和扩展，提高了代码质量和可维护性。]]></description><category></category></item><item><title><![CDATA[Java 设计模式系列：享元模式]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/137722926</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/137722926</guid><author>net_programmer1</author><pubDate>Sat, 13 Apr 2024 19:17:02 +0800</pubDate><description><![CDATA[享元模式（Flyweight Pattern）是一种软件设计模式，用于减少内存使用和提高性能。它通过共享细粒度对象来减少创建和销毁对象时所需的内存。享元模式适用于大量相似对象的场景，这些对象可以共享相同的状态和行为。享元模式的核心思想是将对象分为内部状态和外部状态。内部状态是对象自身的状态，通常是不可变的，可以共享；而外部状态则是与对象相关联的环境信息，通常是变化的，由客户端传入享元对象内部。通过共享内部状态，可以显著减少系统中的对象数量，从而降低内存消耗。]]></description><category></category></item><item><title><![CDATA[Asp .Net Core 系列：集成 Refit 和 RestEase 声明式 HTTP 客户端库]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/137603616</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/137603616</guid><author>net_programmer1</author><pubDate>Wed, 10 Apr 2024 17:06:49 +0800</pubDate><description><![CDATA[经过查找和实验，发现 在 .NET 平台上，虽然没有直接的 Feign 框架的端口，但是有一些类似的框架和库，它们提供了类似的功能和设计理念。然后，您可以在 ASP.NET Core 应用程序中使用 RestEase 客户端。与 Refit 不同的是，RestEase 不需要额外的配置，您只需要直接使用接口即可。然后，您可以在 ASP.NET Core 应用程序中使用 RestEase 客户端。然后，您可以在 ASP.NET Core 应用程序中使用 Refit 客户端。]]></description><category></category></item><item><title><![CDATA[Java 设计模式系列：备忘录模式]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/137274710</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/137274710</guid><author>net_programmer1</author><pubDate>Tue, 02 Apr 2024 21:00:00 +0800</pubDate><description><![CDATA[备忘录模式是一种软件设计模式，用于在不破坏封闭的前提下捕获一个对象的内部状态，并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。备忘录模式提供了一种状态恢复的实现机制，使得用户可以方便地回到一个特定的历史步骤，当新的状态无效或者存在问题时，可以使用暂时存储起来的备忘录将状态复原，很多软件都提供了撤销（Undo）操作，如 Word、记事本、Photoshop、IDEA等软件在编辑时按 Ctrl+Z 组合键时能撤销当前操作，使文档恢复到之前的状态；]]></description><category></category></item><item><title><![CDATA[Java 设计模式系列：行为型-中介者模式]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/136880536</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/136880536</guid><author>net_programmer1</author><pubDate>Wed, 20 Mar 2024 21:15:00 +0800</pubDate><description><![CDATA[中介者模式是一种行为型设计模式，它定义了一个中介对象，用于简化对象之间的交互。中介者模式通过引入一个中介对象来解耦多个对象之间的交互，使得这些对象可以独立地改变和复用。中介者模式的适用场景包括多个对象之间存在复杂的引用关系，导致系统的结构变得很复杂；当一个对象发生改变时，需要跟踪与之相关联的对象并做出相应的处理；系统中需要添加新的类来处理多个类中的行为，而不必对原类进行修改。]]></description><category></category></item><item><title><![CDATA[Java 设计模式系列：行为型-状态模式]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/136848399</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/136848399</guid><author>net_programmer1</author><pubDate>Tue, 19 Mar 2024 21:30:00 +0800</pubDate><description><![CDATA[状态模式（State Pattern）是一种行为型设计模式，允许一个对象在其内部状态改变时改变其行为。状态模式中类的行为是由状态决定的，在不同的状态下有不同的行为。状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中，可以把复杂的判断逻辑简化。适用场景：一个对象的行为取决于它的状态，并且它必须在运行时刻根据状态改变它的行为；一个操作中含有庞大的多分支结构，并且这些分支决定于对象的状态。]]></description><category></category></item><item><title><![CDATA[Java 设计模式系列：行为型-观察者模式]]></title><link>https://blog.youkuaiyun.com/net_programmer1/article/details/136735894</link><guid>https://blog.youkuaiyun.com/net_programmer1/article/details/136735894</guid><author>net_programmer1</author><pubDate>Fri, 15 Mar 2024 20:00:00 +0800</pubDate><description><![CDATA[观察者模式是一种行为型设计模式，又被称为发布-订阅（Publish/Subscribe）模式，它定义了对象之间的一对多依赖关系，当一个对象的状态发生改变时，所有依赖于它的对象都会得到通知并被自动更新。观察者模式的主要优点是降低了目标对象和观察者对象间的耦合，二者可以各自独立地改变和复用，让对系统增加功能或删除功能都很方便。然而，观察者模式也存在一些缺点，比如如果一个被观察者对象有很多的直接和间接的观察者，将所有的观察者都通知到会花费很多时间；]]></description><category></category></item></channel></rss>