深入探索C#事件机制
什么是事件
在软件开发中,事件是一种用于在对象之间传递信息的机制。当一个对象的状态发生变化时,它可以通过触发事件来通知其他对象。事件机制广泛应用于GUI编程、游戏开发、网络编程等领域。
事件的基本概念和语法
委托与事件的关系
在C#中,事件是基于委托实现的。委托是一种类型安全的函数指针,用于引用具有特定签名的方法。事件通过委托来管理其订阅者,并在事件触发时调用这些订阅者的方法。
事件的声明与使用
声明事件的语法如下:
123456789101112public class Publisher{ public delegate void NotifyEventHandler(object sender, EventArgs e); public event NotifyEventHandler Notify; public void RaiseEvent() { if (Notify != null) { Notify(this,...
Spring Boot part11-错误处理
前言
在项目开发的过程中, 不管是对底层数据库的操作过程,
还是业务层的处理过程, 还是控制层的处理过程,
都不可避免会遇到各种可预知的、 不可预知的异常需要处理。
如果对每个过程都单独作异常处理,
代码耦合度会比较高,开发工作量也会加大而且不好统一,
这也增加了代码的维护成本。
针对这种实际情况,
我们需要将所有类型的异常处理从各处理过程中解耦出来,
这样既保证了相关处理过程的功能单一,
也实现了异常信息的统一处理和维护。
同时, 我们也不希望直接把异常抛给用户, 应该对异常进行处理,
对错误信息进行封装, 然后返回一个友好的信息给用户。
自定义异常类相关知识回顾
img
异常的分类
Throwable 类是 Java 异常类型的顶层父类,一个对象只有是
Throwable类的实例,才是一个异常对象,才能被异常处理机制识别。
按照错误严重性,从 Throwale 类中衍生出 Error 和 Exception...
Spring Boot part10-Thymeleaf模板引擎
Thymeleaf引擎
Thymeleaf 简介
什么是
Thymeleaf:Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎
由于 Spring Boot 使用了嵌入式 Servlet 容器,所以 JSP
默认是不能使用的
如果依旧需要服务端进行页面渲染,优先考虑使用模板引擎
image-20250607192416710
模板引擎页面默认放在 src/main/resources/templates
SpringBoot 包含以下模板引擎的自动配置
FreeMarker
Groovy
Thymeleaf Thymeleaf官⽹:https://www.thymeleaf.org/
Mustache
Thymeleaf 是一个现代化的服务器端 Java 模板引擎,专为 Web
和独立环境而设计。与传统模板引擎相比,它具有以下核心优势:
开箱即用的 HTML...
Spring Boot part9-路径匹配与内容协商
路径匹配
路径匹配概述
在 Spring 框架(这里聚焦于 Spring5.3
及后续版本涉及的请求路径匹配相关内容
)里,请求路径匹配是很关键的部分,是处理 Web 请求时确定 URL
路径与控制器方法映射关系的核心机制。
路径匹配是指框架如何将传入的 HTTP 请求 URL
映射到对应的控制器方法上。例如,当用户访问 /users/123
时,框架需要决定这个请求应该由哪个 @GetMapping 或
@RequestMapping 注解的方法来处理。
在 Spring Framework 5.3 及 Spring Boot 2.4
之后,引入了一种新的路径匹配机制,这一变化在 Spring Boot 3
中得到了保留和进一步的应用。这个新机制主要是通过 PathPattern
代替了传统的 AntPathMatcher。
AntPathMatcher 是基于 Ant 风格的路径匹配,而 PathPattern
则是一个更高效、更精确的路径匹配方式,它是通过...
Spring Boot part8-自定义WebmvcConfigurer实现管理配置及其机制的剖析
自定义WebmvcConfigurer能实现管理什么
在 Spring
框架中,WebMvcConfigurer接口是一个非常重要的配置接口,它允许开发者通过自定义配置来扩展和定制
Spring MVC
的默认行为。通过实现WebMvcConfigurer接口(或继承WebMvcConfigurationSupport类),可以对
Spring MVC 的多个核心功能进行灵活配置。
以下是自定义WebMvcConfigurer能实现的主要功能及详细说明:
请求映射与处理器配置
自定义处理器映射(HandlerMapping)和适配器(HandlerAdapter)
可以注册自定义的HandlerMapping(如基于注解的RequestMappingHandlerMapping)或HandlerAdapter(如RequestMappingHandlerAdapter),用于处理不同类型的请求映射逻辑。
场景:自定义 URL 匹配规则、处理特殊请求格式(如
RESTful API...
Spring Boot part7-HTTP缓存机制
Spring Boot 的缓存机制
随着应用用户量的不断增长和数据规模的持续扩大,数据库查询操作往往成为影响用户体验的关键瓶颈。缓存作为一种高效的解决方案,能够显著提升系统性能。Spring
Boot
提供了强大的缓存支持,通过基于注解的低侵入式方式,帮助开发者轻松地为应用添加缓存功能。
Spring Boot 中的缓存机制原理
缓存抽象层
Spring Boot 的缓存机制基于 Spring
框架的缓存抽象,它提供了一套统一的接口和注解,使得开发者可以在不关心具体缓存实现的情况下使用缓存功能。这种抽象层的设计,让开发者能够灵活地切换不同的缓存技术,如
Redis、Ehcache 等。
Spring
从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;同时支持JCache(JSR-107)注解。
工作原理
Spring...
没错,这是我的单词本-写作向
没什么,就是整理一下我遇到的单词,无排序,纯纯随机
因为我个人英语实在不好,就这样记录一下吧,只要我没想起来的都会记录进去
这个是偏向于阅读的,之后会出一个写作的
原词
释义
相近的词
reckless
a. 鲁莽的,粗心的,不计后果的
rude,impertinent
disabled
adj.残疾的,丧失能力的
disable
vt.使残废,使无能力,使无资格
cripple,deactivate,incapacitate,disqualify
assert
v.坚称,断言,生效
declare,state,affirm,insist
outstanding
a. 杰出的,突出的
excellent,splendid
individual
a....
关于微软商店弹出操作需要internet 0x800704cf
在微软商店 时会遇到这样的问题,导致一些应用无法下载,会弹出
操作需要internet_0x800704cf,然后阻塞。
首先,进入微软商店下东西是不能开梯子的,如果连接了 VPN
或下载了第三方防火墙应用,建议断开 VPN,卸载第三方防火墙应用。
解决方法与步骤
internet选项: 勾选SSL3.0, TLS1.0, TLS1.1, TLS1.2, TLS1.3
image-20250604175412290
image-20250604175425807
找到代理,
打开自动检测设置,关闭使用设置脚本,关闭使用代理服务器
image-20250604175438908
如果上述方法不行,可以采取下述
按 “Windows 徽标键+X”,启动 “Windows
PowerShell(管理员)”,输入以下命令,回车后重启设备:
netsh winsock reset
netsh int ip reset
也是需要打开 Internet 选项,点击高级,并勾选 “使用 SSL...
冬暮川滚滚-在百合、斩首与轮回中,思考传承的意义
冬暮川滚滚-在百合、斩首与轮回中,思考传承的意义
==该文章具有大量剧透,而且我不推荐任何没有玩过某款galgame的玩家直接跑过去去看它的测评。==
攻略
老规矩还是上来就贴攻略,防止误入
该游戏选项很少,而且没有让人难以理解和接受的结局,因此攻略部分可有可无
开始
才没忍耐…
不,不对…
没什么好恶心的
TE
那我除了…
BE2
不,不用忍耐…
BE1
graph TD A[开始] --> B{才没忍耐...} B --> C{不,不对...} C --> D[没什么好恶心的] D --> E[TE] B --> F{那我除了...} F --> G[BE2] A --> H{不,不用忍耐...} H -->...
MATLAB part6-向量和矩阵
MATLAB 向量和矩阵基础
向量和矩阵是MATLAB的核心数据结构,MATLAB的名称就来源于”Matrix
Laboratory”(矩阵实验室)。理解向量和矩阵的操作是掌握MATLAB的关键基础。
MATLAB中的所有数据都以矩阵形式存储:
标量:1×1的矩阵
行向量:1×n的矩阵
列向量:n×1的矩阵
矩阵:m×n的矩阵
高维数组:多维矩阵
MATLAB提供了丰富的函数来创建、操作和分析向量和矩阵,这些功能使得复杂的数学运算变得简单直观。
向量的创建和基本操作
向量创建方法
向量是一维数组,在MATLAB中可以是行向量或列向量。创建向量有多种方法,每种方法适用于不同的场景。
123456789101112131415161718192021222324252627282930313233343536373839% ===== 向量创建方法示例 =====% 方法1:直接输入(行向量)row_vector = [1, 2, 3, 4, 5];fprintf('行向量:');disp(row_vector);%...