- 博客(87)
- 资源 (16)
- 收藏
- 关注
原创 C# 整数转罗马数字
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如4不写做 IIII,而是 IV。数字1在数字 5 的左边,所表示的数等于大数5减小数1得到的数值4。例如,罗马数字2写做 II ,即为两个并列的 1。12 写做XII,即为X+II。C可以放在 D(500)和M(1000)的左边,来表示 400 和 900。·X可以放在L(50)和C(100)的左边,来表示40 和 90。I可以放在 V(5)和 X(10)的左边,来表示 4和 9。罗马数字包含以下七种字符:I,V,X,L,C,D和M。
2024-04-12 16:01:37
273
1
原创 .netcore grpc日志记录配置
通过配置文件appsettings.json进行配置通过Program.cs进行配置通过环境变量进行配置客户端通过日志通道进行配置。
2023-08-28 11:10:14
491
原创 .netcore grpc截止时间和取消详解
截止时间功能让 gRPC 客户端可以指定等待调用完成的时间。超过截止时间时,将取消调用。设定一个截止时间非常重要,因为它将提供调用可运行的最长时间。它能阻止异常运行的服务持续运行并耗尽服务器资源。截止时间对于构建可靠应用非常有效,应该进行配置。客户端主动取消不再需要长期运行的调用线程故障自动取消超出截止时间触发取消操作。
2023-08-25 14:37:42
642
原创 WPF读取dicom序列:实现上一帧、下一帧、自动播放、暂停
链接:https://pan.baidu.com/s/1hH9xbUL3T6oxcxx0oG9-9Q。
2023-08-25 11:22:59
998
1
原创 .netcore grpc身份验证和授权
1)引入IdentityServer4、IdentityServer4.AccessTokenValidation、Microsoft.AspNetCore.Authentication.JwtBearer包。2)gRPC工厂中配置token传递 或者在调用对应的客户端函数中对metadata传参。链接:https://pan.baidu.com/s/1viu-REcR-ySdR0FE05sohg。(grpc专栏结束后会开启鉴权授权专栏欢迎大家关注)1)调用鉴权中心获取token。第三步:WPF客户端。
2023-08-18 09:21:56
1642
原创 .netcore grpc客户端工厂及依赖注入使用
gRPC 与的集成提供了一种创建 gRPC 客户端的集中方式。可以通过依赖包Grpc.Net.ClientFactory中的AddGrpcClient进行gRPC客户端依赖注入AddGrpcClient函数提供了许多配置项用于处理一些其他事项;例如AOP、重试策略等创建一个WPF客户端在App.xaml.cs代码类里重写OnStartup方法,进行依赖注入引用ServiceCollection做为容器集注入gRPC工厂,注入windows窗体,以及其他需要用到的服务类等。
2023-08-17 17:34:14
1115
原创 .netcore grpc的proto文件字段详解
grpc的接口传输参数都是根据.proto文件约定的字段格式进行传输的grpc提供了多种类型字段;主要包括标量值类型(基础类型)、日期时间、可为null类型、字节、列表、字典、Any类型(任意类型)、Oneof等字段严格规范,是一种强类型文件协议标量值类型日期时间可为null类型字节列表字典Any类型Oneof:一种语言特性,可以通过该特性进行对象切换处理;使用oneof指定可能返回 A对象或B对象 的响应消息定义通用消息实体根据不同的类型创建对应的案例实体。
2023-08-16 09:14:13
1028
原创 .netcore grpc双向流方法详解
简单来讲客户端可以向服务端发送消息流,服务端也可以向客户端传输响应流,即客户端和服务端可以互相通讯客户端无需发送消息即可开始双向流式处理调用。客户端可选择使用发送消息。使用或可访问从服务流式处理的消息。没有更多消息时,双向流式处理调用完成。客户端发送请求流通过传入到服务端服务端响应到客户端的流通过ResponseStream.WriteAsync写入到客户端服务端使用System.Threading.Channels保证线程安全交互。
2023-08-14 15:14:42
1060
原创 .netcore grpc服务端流方法详解
客户端向服务端发送请求,服务端可以将多个消息流式传输回调用方和客户端流相反,客户端流发出请求,服务端可以传输一批消息给客户端,直至本次请求响应完全结束。针对文件分段传输下载,该方式非常有用。提供一个一元方法查询文件提供一个文件流传输的服务端流式方法,进行文件流推送。
2023-08-14 11:57:35
652
原创 .netcore grpc客户端流方法详解
客户端流式处理方法在该方法没有接收消息的情况下启动。参数用于从客户端读取消息。返回响应消息时,客户端流式处理调用完成。客户端可以发送多个消息流到服务端,当所有客户端消息流发送结束,调用请求流完结方法,则标记客户端流消息推送结束,等待服务端执行完成。等同于客户端发送批量消息,服务端统一处理。接下来 会提供三个案例,用于大家理解第一个客户端流的基础用法第二个客户端流的优化版本第三个客户端的文件流式传输。
2023-08-10 15:51:39
1071
原创 .netcore grpc一元方法详解
这是简易的一元方法执行方式,后续会逐渐延申,尽量面面俱到的阐述所有功能点。项目百度网盘:链接:https://pan.baidu.com/s/1xs8HiGaZgiY-SUb6ZkRhGg提取码:i6ej。
2023-08-09 11:25:10
837
2
原创 .netcore下grpc概述
是一种与语言无关的高性能远程过程调用 (RPC) 框架。基于http/2标准设计,提供了头部压缩、tcp连接上的多路复用、流量控制、流式处理(客户端流/服务端流/双向流)。提供统一使用的.proto文件,它定义 grpc 服务和消息的协定。通过此文件,grpc框架生成服务基类、消息和完整的客户端。
2023-08-08 15:19:39
695
原创 .Net6 使用aspose.cells23.5.0破译
u0008\u0003\u0018\u0005这个混淆类搞透彻,那一切难题迎刃而解,搞透的前提需要了解Workbook类构造函数中的\u0002\u0005私有字段,上面标记的块引用,利用反射的手段就可以成功到达彼岸了。一直断点到如下方法:把下面的代码搞透,你就可以成功到达彼岸了。如果需要源码,可以到本人的csdn中去下载,欢迎您的下载哦。如果需要源码,可以到本人的csdn中去下载,欢迎您的下载哦。如果需要源码,可以到本人的csdn中去下载,欢迎您的下载哦。重点代码就在标记红色的区域,继续跟进。
2023-05-17 10:38:44
3812
9
原创 .netcore 自定义特性类注入(仿TypeFilterAttribute)
代码如下: /// <summary> /// 声明委托 /// </summary> /// <param name="serviceProvider"></param> /// <returns></returns> public delegate object ServiceObjFactory(IServiceProvider serviceProvider);
2022-02-11 16:37:11
907
原创 .netcore 动态组装表达式目录树查询条件内存泄漏问题处理
1.以下代码存在内存泄漏(注意:该代码只有结合EF使用才会存在)// 组装表达式目录树 Type type = = repositoryEntity.GetType(); ParameterExpression parameterExpression = Expression.Parameter(type, "t"); // 生成条件表达式 BinaryExpression
2022-02-11 16:01:28
606
原创 使用Redis实现简单的秒杀功能
首先了解一点程序会出现并发,但是redis不会因为它是单线程的!using ServiceStack.Redis;using System;using System.Threading.Tasks;namespace ConsoleRedis{ class Program { /// <summary> /// 秒杀是否结束 /// </summary> private static bo
2020-06-02 16:46:31
429
1
原创 linq笔记
namespace ConsoleTask.Linq{ public class Racer : IComparable<Racer>, IFormattable { public string FirstName { get; set; } public string LastName { get; set; } p...
2019-10-30 16:25:26
485
原创 .net 将Swagger接口文档导出Word
一.首先你的项目中要有Swagger这个接口请求文档,具体使用可参考我的博文中Swagger使用说明。二.需要了解生成Swagger的UI页面是通过http://localhost:51974/swagger/docs/v1类似这样的请求接口返回的值填充的UI页面;知道了是Swagger页面是通过调用接口来填充信息,那就好办了,我们可以直接取到这个接口的JSON数据,然后我们进行自己需...
2019-10-11 17:40:25
3663
4
原创 C#封装DLL引用(仅显示类文件DLL文件,相关辅助第三方DLL文件不进行生成)
如果大家平时生成项目的时候,应该会了解,生成类框架的时候,不仅会生成自身的类包DLL文件,引用其他的第三方DLL或从nuget包管理器中下载的DLL文件都会编译出来。对于封装成DLL文件给到其他项目使用不是很友好,还很麻烦,每次引用总是要添加许多DLL文件进去。综上的解决方式如下:这是CSDN的帮助说明文档可供大家参考:https://docs.microsoft.com/zh-cn/dotn...
2019-09-25 15:05:56
1513
原创 C#实现数据分组
public class TodoItem { public long Id { get; set; } public string Name { get; set; } public bool IsComplete { get; set; } } List<TodoItem> list = new List&...
2019-07-17 07:36:57
3037
原创 .net swagger自动生成API接口文档
第一步安装swagger第二步:配置swagger[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]namespace HCApi.WebApi{ public class SwaggerConfig { public static void Re...
2019-05-17 16:35:28
2953
原创 Socket连接传递消息
//建立两个程序//接收程序也可称为服务端 static void Main(string[] args) { Console.WriteLine("开始:创建一个Socket对象"); Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Str...
2019-04-26 17:12:10
646
原创 TCPSend和TCPReceive
//首先创建两个应用程序,一个用于发送消息,一个用于接收消息//发送消息的程序 TcpClient tcp = new TcpClient(txtHost.Text, int.Parse(txtPort.Text)); NetworkStream ns = tcp.GetStream(); FileStream fs = File.Op...
2019-04-26 15:40:14
1679
原创 Sqlserver2012 新使用特性
//相比于以前的ROW_NUMBER()代码更加精简的分页方式select * from 表名 order by 字段 OFFSET (10*(1-1)) ROW FETCH NEXT 10 ROWS ONLY//自增序列SEQUENCEcreate SEQUENCE SEQ_Increment as 数据类型 start with 起始位置 INCREMENT BY 自增值//三元运...
2019-04-03 10:53:40
399
原创 sqlserver 递归函数
ALTER FUNCTION [dbo].[Fn_GetChildrenCode]( @ParentCode NVARCHAR(50) -- 父级code代码)RETURNS VARCHAR(max)--下级jsonASBEGIN DECLARE @ReturnJson [varchar] (max) SET @ReturnJson = '[' DECLARE @CS_Co...
2019-04-02 12:10:51
1185
原创 数据流(并行转化数据)
static IEnumerable<string> GetFileNames(string path) { foreach (var fileName in Directory.EnumerateFiles(path, "*.txt")) { yield return fileName;...
2019-03-12 15:36:35
267
原创 HttpClient与HttpListener
/// <summary> /// 获取http主体请求对应的主体消息 /// </summary> /// <returns></returns> public static async Task GetDataAdvancedAsync() { ...
2019-02-02 15:57:58
1073
原创 使用RSA签名和散列
直接上代码: public CngKey _aliceKey; public byte[] _alicePubKeyBlob; static void Main(string[] args) { byte[] doc; byte[] hash; byte[] ...
2019-02-01 17:23:37
420
原创 C#加密数据
一些机密的数据应得到保护,可以用对称或不对称秘钥来机密这些数据。通过对称密钥,可以使用同一个密钥加密解密。与不对称密钥的加密相比,加密和解密使用不同的密钥:公钥/私钥。如果使用一个公钥进行加密,就应该使用对应的私钥进行解密,而不是使用公钥解密。同样,如果使用一个私钥加密,就应该使用对应的公钥解密,而不是使用私钥解密。不可能从私钥中计算出公钥,也不可能从公钥中计算出私钥。涉及案例如下...
2019-02-01 16:21:47
577
原创 Timer计时器
使用计时器,可以重复调用方法。使用System.Threading.Timer类,可以把要调用的方法作为构造函数的第一个参数传递。这个方法必须满足TimeCallback委托的要求,该委托定义一个Void返回类型和一个object参数。通过第二个参数,可以传递任意对象,用回调方法中的object参数接收对应的对象。例如,可以传递Event对象,向调用者发送信号。第三个参数指定第一次调用回调方法时的...
2019-01-18 17:13:04
755
原创 同步任务七
ReadWriterLockSlim类为了使锁定机制允许锁定多个读取器(而不是一个写入器)访问某个资源,可以使用ReadWriteLockSlim类。这个类提供了一个锁定功能,如果没有写入器锁定资源,就允许多个读取器访问资源,但只能有一个写入器锁定该资源。阻塞的EnterReadLock()和不阻塞的TryEnterReadLock()方法来获取读取锁;阻塞的EnterWriteLoc...
2019-01-18 17:01:31
154
原创 同步任务六
Barrier类:对于同步,Barrier类非常适用于其中工作有多个任务分支且以后又需要合并工作的情况。Barrier类用于需要同步的参与者。激活一个任务时,就可以动态地添加其他参与者,例如,从父任务中创建子任务。参与者在继续之前,可以等待所有其他参与者完成其工作。 static void Main(string[] args) { ...
2019-01-18 16:34:49
143
原创 任务同步五
Events类:与互斥和信号量对象一样,事件也是一个系统范围内的资源同步方法。为了从托管代码中使用系统事件,.net framework 在system.Threading名称空间中提供了ManualResetEvent、AutoResetEvent、ManualResetEventSlim和CountdownEvent类。 AutoResetEvent(bool initialState...
2019-01-18 14:21:43
186
原创 任务同步四
Semaphore类:信号量非常类似于互斥,其区别是,信号量可以同时由多个线程使用。信号量是一种计数的互斥锁定。使用信号量可以定义允许同时访问受旗语锁定保护的资源的线程个数。如果需要限制可以访问可用资源的线程数,信号量就很有用。 static void Main(string[] args) { int semapCount = 3; ...
2019-01-18 08:37:04
133
原创 任务同步三
WaitHandle是一个抽象类,用于等待一个信号的设置。可以等待不同的信号,因为WaitHandle是一个基类,可以从中派生一些类如下案例: public delegate int TakesAWhileDelegate(int x, int ms); static void Main(string[] args) { ...
2019-01-17 15:44:24
130
1
原创 任务同步二
Monitor类主要优点:可以添加一个等待被锁定的超时值。这样就不会无限期的等待被锁定。 public void MonitorTryEnter() { bool flag = false; Monitor.TryEnter(_syncRoot, 500, ref flag); if (fl...
2019-01-17 14:13:06
203
原创 任务同步一
首先要避免同步,最好是不要在线程之间共享数据。如果必须要共享数据,就需要用到同步技术。使用线程容易出现的两个问题:争用条件和死锁。如果两个或多个线程访问相同的对象,并且对共享状态的访问没有同步,就会出现争用条件。如下案例,执行会出现征用条件的程序断言 public class StateObject { private int _state = 5;...
2019-01-16 16:02:07
239
原创 任务
任务(Task)表示完成的某个工作单元。这个工作单元可以在单独的线程中运行,也可以以同步的方式启动一个任务,这需要等待主调线程。使用任务不仅可以获得一个抽象层,还可以对底层线程进行很多控制。具体场景:在安排需要完成的工作时,任务提供了非常强大的灵活性。如,可以定义一个连续的工作——在一个任务完成后该执行什么工作。这可以任务成功与否来区分。另外,还可以在层次结构中安排任务。例如,父任务可以创建新...
2019-01-14 13:03:14
247
原创 数据并行
Parallel类是对线程的一个很好的抽象,提供了任务和数据的并行性。提供了三个方法Parallel.For()、Parallel.ForEach()和Parallel.Invoke()方法。Parallel.Invoke用于任务的并行性,而Parallel.ForEach用于数据并行性。下面看案例: private static void Log(string pr...
2019-01-14 08:48:53
535
NpoiWordBySwagger.zip
2019-10-11
webapi下的token认证和刷新token
2018-04-27
flexpaperDemo
2017-01-13
.net邮箱的简单制作
2016-07-15
EasyUI中datagrid 分页,僧删改查,上下移动数据.net案例
2016-07-08
用webform实现的文本框提示搜索功能
2016-04-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人