- 博客(32)
- 收藏
- 关注
原创 c#进阶疗法 -自定义鉴权
复杂的权限规则:当权限规则非常复杂,无法通过简单的角色或声明来表达时,需要自定义鉴权。动态权限管理:当权限规则需要在运行时动态修改,而不需要重新编译和部署应用程序时,需要自定义鉴权。多维度权限控制:当权限控制需要考虑多个维度,如用户角色、用户属性、资源属性等时,需要自定义鉴权。特殊的授权逻辑:当需要实现特殊的授权逻辑,如基于时间的授权、基于地理位置的授权等时,需要自定义鉴权。自定义中间件:通过实现自定义中间件来拦截请求并进行授权检查。自定义授权过滤器。
2026-01-21 10:53:56
425
1
原创 c#进阶疗法 -jwt+授权
JWT 是一种基于 JSON 的开放标准,用于在各方之间安全地传输信息。在 ASP.NET Core 中,我们可以使用包来实现 JWT 认证和授权。创建 JWT 相关类,包括和JwtService。配置 JWT 认证和授权。添加登录端点,用于生成和返回 JWT 令牌。添加授权保护的端点,需要授权才能访问。配置 JWT 设置。测试 JWT 认证和授权。
2026-01-21 10:27:01
400
原创 C#进阶疗法 -- 过滤器
ASP.NET Core代码过滤器摘要 ASP.NET Core代码过滤器是处理横切关注点(如异常处理、日志记录、授权)的组件,可减少代码冗余。主要类型包括: 授权过滤器 - 验证权限 资源过滤器 - 模型绑定前后执行 操作过滤器 - 操作方法执行前后 异常过滤器 - 处理未捕获异常 结果过滤器 - 结果执行前后 实现步骤: 创建过滤器类(实现对应接口) 通过依赖注入或特性应用 典型应用场景包括统一异常处理(如GlobalExceptionFilter捕获业务异常并格式化响应)、结果包装(如Response
2026-01-21 10:24:52
230
原创 C#进阶疗法 -- 拦截器
代码拦截器入门指南摘要 代码拦截器是一种AOP编程技术,允许在不修改原有代码的情况下,在方法执行前后插入自定义逻辑。Castle.DynamicProxy是实现拦截的流行库,主要应用于日志记录、性能监控、事务管理和权限验证等场景。实现步骤包括:安装Castle.Core包、创建实现IInterceptor接口的拦截器类、注册代理生成器和拦截器服务、创建目标服务接口及实现。通过代理模式,拦截器能自动拦截方法调用,避免代码冗余,提高可维护性。典型应用包括记录方法执行时间、管理数据库事务和验证用户权限等。
2026-01-21 10:16:58
724
原创 c# 生产者消费者模式之内存/redis队列实现
本文介绍了一个基于C#实现的通用队列处理系统,支持内存队列和Redis队列两种模式。系统核心组件包括任务模型、队列处理器和Redis客户端,遵循解耦、可靠性、扩展性和监控等设计原则。内存队列采用ConcurrentQueue和多线程消费机制,Redis队列则实现分布式锁和死信处理。测试代码展示了如何使用该系统处理HTTP请求任务,包括重试策略、熔断机制和死信处理等功能,适用于异步任务处理和系统解耦场景。
2026-01-19 11:24:58
811
原创 高并发落地方案
数据库突发写入优化方案摘要 本方案采用"Redis异步削峰+缓存兜底"架构,在不修改业务代码的前提下解决高并发写入场景下的数据库瓶颈问题: 核心机制 写入流程:数据先写入Redis待处理缓存并发送消息队列,立即返回成功 读取流程:优先读取待处理缓存→正式缓存→数据库 异步消费:批量写入数据库后删除缓存 失败处理:包含重试、死信队列和人工修复机制 技术实现 通过实体特性标记([AsyncWrite])实现表级异步控制 自动识别事务环境降级为同步写入 采用三层缓存策略确保数据一致性 支持10
2025-12-09 11:54:58
927
原创 SqlServer数据库插入速度缓慢问题
定期检查和维护索引是数据库性能优化的重要环节。通过以上步骤,我们可以有效识别和解决索引碎片问题,显著提升查询性能。
2025-08-21 16:17:41
526
原创 sql-慢查询问题
平均 CPU 时间(纳秒),通过将总的 CPU 工作时间 (total_worker_time) 除以执行次数 (execution_count) 计算得出,并转换为毫秒。平均经过时间(纳秒),同样地,通过将总的经过时间 (total_elapsed_time) 除以执行次数计算得出,并转换为毫秒。根据上述 SQL 语句获取的数据表格,每一行代表了一个独立的查询或查询的一部分,并提供了有关其性能特征的关键信息。这对于追踪查询执行的历史非常重要,可以帮助确定哪些查询在特定时间段内活跃。
2025-01-08 10:49:50
584
原创 ExcelExport - 表格导出帮助类
示例代码地址:https://gitee.com/inaugurator/export-tool.git。
2024-12-31 12:13:05
335
原创 OMO-OMO
是指以提升教学效果与体验为核心,通过互联网、人工智能和大数据等新技术打通各环节的数据,并深度融合线上与线下的学习场景,实现标准化的流程与个性化的服务。OMO 模式有效整合了线上和线下的学习场景,学生在周中可通过线上学习或练习,周末在线下门店进行教学,或者借助人工智能等技术实现 24 小时答疑服务。教育机构在进行 OMO 模式转型时,需要注意新时代下家长与学生的新需求,并且是最核心的刚性需求。,即使学生的学习是个性化的,但是学习的内容及其生成都是基于同一的逻辑和共通的内容库,根据学生的情况进行个性化匹配。
2024-08-23 17:35:36
1628
原创 winform 两个输出文件名解析为同一个输出路径问题
两个输出文件名解析为同一个输出路径:“obj\Debug\net6.0-windows\Ames.Menu.Guide.MainForm.resources”
2024-08-23 15:12:10
1023
1
原创 c# 机器视觉 - ai的问询
结合目前的形式来看c#的主战场几乎只有工业了,医疗因为信创事件 c#的市场应该会越来越小。而且结合目前的国内的形势发展工业肯定是长足的计划,针对目前就业市场这么不堪的情况下,给自己留点保命技能才是正道。就我自己看来工业数采和机器视觉都还是有着相对不错的前景的, 毕竟吹起🐂来一个往大数据靠,一个往人工智能靠。学会画饼是人生的重要一课🚯。
2024-08-09 11:54:49
774
原创 Nginx 动态反向代理
request_filename 当前请求的文件路径名,比如/opt/nginx/www/test.php。$server_protocol 请求的协议版本,“HTTP/1.0"或"HTTP/1.1”$host 请求信息中的"Host",如果请求中没有Host行,则等于设置的服务器名。$request_method 请求的方法,比如"GET"、"POST"等。$content_type 请求信息里的"Content-Type"$uri 请求的URI,可能和最初的值有不同,比如经过重定向之类的。...
2022-08-04 11:13:08
1608
原创 .net 微服务相关 ----- Docker
Docker 容器 :虚拟容器Docker 安装Docker 查看版本:docker --version安装 Dockersudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io查看Docker 镜像 docker --images控制台输出:REPOSITORY TAG IMAGE ID CREATED
2022-04-11 17:47:12
164
原创 老张哲学学习笔记
授权与认证:理解:授权是对资源的管理认证组件:using Microsoft.AspNetCore.Authorization; 使用方法:在接口上添加 [Authorize]特性,然后配置认证方案。Jwt 认证方案配置:安装JWT 微软官方组件//Startup文件中添加认证中间件-->ConfigureServices方法中 services.AddAuthentication();//授权服务 //配置密钥 密钥长度要为16位不然就会报错 Security
2021-12-25 16:11:43
595
原创 c# 基础知识巩固笔记
c#基础知识部分变量类型:简单类型:非数值型:char : 一个Unicode字符,存储0-65536之间的整数bool:布尔值:ture,false;string:一组字符;不识别转义字符:如果不想识别字符串中的转义字符可以在字符串前面添加: @符号goto语句的使用:执行到goto语句的时候,直接跳到goto指定的标签处运行,不执行中间的语句;int myint = 5;goto mylable;myint++;mylable:Console.WriteLine(
2021-11-30 22:57:04
324
原创 rabbit mq c#
rabbit mq c#第一步连接工厂类:首先创建一个连接工厂:RabbitMQ-Common类库用于创建连接 public static IConnection GetConnection() { var factory = new ConnectionFactory { HostName = "127.0.0.1",//服务器地址 Port = 5672,//端口号
2021-10-16 13:20:23
305
原创 c# 多线程
多线程定义一个程序就是一个进程,而大多数的程序都由多个线程构成,进程是程序执行的最小单位。多进程和异步也有一定的区别,所谓的异步就是在硬件不需要通过cpu直接和内存进行数据操作的行为,而线程是由cpu进行执行的c#中多线程的使用Thread的基本使用 Action<string> action = new Action<string>(o=> { 方法体(委托)});//通过Action就可以实现多线程;public void ace() {Actio
2021-09-10 22:20:47
496
原创 TypeScript学习
语法学习**let : 作用——声明变量,但声明的变量只能在let命令所在的代码块内有效。eg:for (let i = 0; i < 10; i++) { // ...}console.log(i);但是定义的i只在for循环中生效。TypeScript 中,使用 : 指定变量的类型,: 的前后有没有空格都可以。let decLiteral: number = 6;**关于for循环的变量作用域:var a = [];for (let i = 0; i &l
2020-06-22 17:22:03
220
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅