摘要: 循环中移除集合项 //you can work around the limitation by creating a new collection dynamically to hold the enumerated collection. foreach (string s in new Sys 阅读全文
posted @ 2020-09-03 11:48 yetsen 阅读(465) 评论(0) 推荐(0)
摘要: VS 快捷键 Ctrl + Shift + Space 显示参数信息 VS 调试 函数返回的值有时在源代码中被忽略,或者有时这个值在调试时无法被显示的访问。这样的返回值可以显示在调试->窗口->自动窗口中。伪变量$ReturnValue也可以在即时窗口和监视窗口中使用,以方便查看最后一个函数调用的返 阅读全文
posted @ 2020-08-22 19:58 yetsen 阅读(247) 评论(0) 推荐(0)
摘要: 对象冻结 将对象冻结,应该使用Object.freeze方法 const foo = Object.freeze({}); // 常规模式时,下面一行不起作用; // 严格模式时,该行会报错 foo.prop = 123; 顶层对象 JavaScript 语言存在一个顶层对象,它提供全局环境(即全局 阅读全文
posted @ 2023-01-16 16:26 yetsen 阅读(39) 评论(0) 推荐(0)
摘要: 结构类型来设计以数据为中心的类型,这些类型提供值相等性,并且很少或没有任何行为。 但对于相对较大的数据模型,结构类型有一些缺点: 它们不支持继承。 它们在确定值相等性时效率较低。 对于值类型,ValueType.Equals 方法使用反射来查找所有字段。 对于记录,编译器将生成 Equals 方法。 阅读全文
posted @ 2022-06-21 00:18 yetsen 阅读(398) 评论(0) 推荐(0)
摘要: 公共语言运行时通过维护名为拘留池的表来节省字符串存储,该表包含对程序中以编程方式声明或创建的每个唯一文本字符串的单个引用。 因此,系统中仅存在一个具有特定值的文本字符串的实例。 string.Intern 是终生制的,一旦加入只要程序不重启,就会一直存在。 // Sample for String. 阅读全文
posted @ 2021-11-20 16:04 yetsen 阅读(21) 评论(0) 推荐(0)
摘要: 值转换 值转换器可在从数据库读取或向其中写入属性值时转换属性值。 值转换器目前只能执行值与一个数据库列之间的转换。 此限制意味着对象的所有属性值都必须被编码为一个列值。 这通常是通过在对象进入数据库时对其进行序列化,然后在出路时再次对其进行反序列化来处理的。 modelBuilder.Entity< 阅读全文
posted @ 2020-10-09 15:13 yetsen 阅读(243) 评论(0) 推荐(0)
摘要: Protobuf 消息 消息定义中的每个字段都有一个唯一的编号。 消息序列化为 Protobuf 时,字段编号用于标识字段。 序列化一个小编号比序列化整个字段名称要快。 标量值类型 标量值类型 Protobuf 类型C# 类型 double double float float int32 int 阅读全文
posted @ 2020-10-02 16:50 yetsen 阅读(1037) 评论(0) 推荐(0)
摘要: gRPC 基于HTTP/2,相比 HTTP API 有更好的性能,并支持双向流式传输。 HTTP/2在单个 TCP 连接上多路复用多个 HTTP/2 调用。 多路复用可消除队头阻塞。 gRPC 支持通过流式传输进行实时通信,但不存在将消息广播到注册连接的概念。 例如,在聊天室方案中,应将新的聊天消息 阅读全文
posted @ 2020-10-01 19:12 yetsen 阅读(1564) 评论(0) 推荐(0)
摘要: 非中断性变更允许现有客户端继续工作而不做任何变更。 非重大变化 在 gRPC 协议级别和 .NET 二进制级别,这些变更不会中断。 添加新服务 向服务中添加新方法 将字段添加到请求消息 - 添加到请求消息的字段将在服务器上通过默认值(若未设置)进行反序列化。 将字段添加到响应消息 - 添加到响应消息 阅读全文
posted @ 2020-09-30 17:37 yetsen 阅读(1317) 评论(0) 推荐(0)
摘要: gRPC-Web 允许浏览器 JavaScript 和 Blazor 应用调用 gRPC 服务。 有两种方式可将 gRPC-Web 添加到 ASP.NET Core 应用中: 在 ASP.NET Core 中同时支持 gRPC-Web 和 gRPC HTTP/2。 此选项会使用 Grpc.AspNe 阅读全文
posted @ 2020-09-29 18:13 yetsen 阅读(1488) 评论(0) 推荐(0)
摘要: gRPC 与 HttpClientFactory 的集成提供了一种创建 gRPC 客户端的集中方式。 它可用作配置独立 gRPC 客户端实例的替代方法。 Grpc.Net.ClientFactory NuGet 包中提供了工厂集成。 工厂具有以下优势: 提供了用于配置逻辑 gRPC 客户端实例的中心 阅读全文
posted @ 2020-09-28 18:23 yetsen 阅读(562) 评论(0) 推荐(0)
摘要: gRPCurl 是一种命令行工具,可提供与 gRPC 服务的交互。 gRPCui 基于 gRPCurl,并为 gRPC 添加了交互式 Web UI,类似于 Postman 和 Swagger UI 等工具。 gRPCurl gRPCurl 是由 gRPC 社区创建的命令行工具。 其功能包括: 调用 阅读全文
posted @ 2020-09-27 19:32 yetsen 阅读(1703) 评论(0) 推荐(0)
摘要: 效率工具 https://u.tools/ https://getquicker.net/ Tamper Monkey 百度网盘直接下载 ScreenToGif DAIN插帧算法 https://www.jianshu.com/p/e4c3af965376 结构化日志 https://www.cnb 阅读全文
posted @ 2020-09-27 19:23 yetsen 阅读(393) 评论(0) 推荐(0)
摘要: 采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。 容器的属性 flex-direction flex-wrap flex-flow justify-content 阅读全文
posted @ 2020-09-26 14:59 yetsen 阅读(136) 评论(0) 推荐(0)
摘要: Polly 是一个 .NET 库,提供恢复能力和瞬态故障处理功能。 通过应用 Polly 策略(如重试、断路、隔离、超时和回退)即可实现这些功能。 断路:当系统出错的次数超过了指定的阈值,就要中断当前线路,等待一段时间后再继续。 隔离:将可控的操作限制在一个固定大小的资源池中,以隔离有潜在可能相互影 阅读全文
posted @ 2020-09-24 16:06 yetsen 阅读(619) 评论(0) 推荐(0)
摘要: Image Picker click the Run Image Picker item in the Visual Studio's DevExpress menu. Use the following methods to get an image from the Image Picker i 阅读全文
posted @ 2020-09-05 20:47 yetsen 阅读(261) 评论(0) 推荐(0)
摘要: 目录 BindableBase ViewModelBase POCO ViewModels Messenger Asynchronous Commands Behaviors Services DXDataTemplateSelector Data Annotation BindableBase p 阅读全文
posted @ 2020-09-04 18:36 yetsen 阅读(752) 评论(0) 推荐(0)
摘要: 日志记录提供程序 调用 CreateDefaultBuilder,这将添加默认日志记录提供程序: 控制台 调试 EventSource EventLog:仅限 Windows 若要替代Host.CreateDefaultBuilder 添加的默认日志记录提供程序集,请调用 ClearProvider 阅读全文
posted @ 2020-08-31 18:58 yetsen 阅读(208) 评论(0) 推荐(0)
摘要: 默认设置 CreateDefaultBuilder 方法: 将内容根目录设置为由 GetCurrentDirectory 返回的路径。 通过以下项加载主机配置: 前缀为 DOTNET_ 的环境变量。 命令行参数。 通过以下对象加载应用配置: appsettings.json。 appsettings 阅读全文
posted @ 2020-08-30 20:26 yetsen 阅读(381) 评论(0) 推荐(0)
摘要: public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseDatabaseE 阅读全文
posted @ 2020-08-29 15:21 yetsen 阅读(158) 评论(0) 推荐(0)
摘要: 服务生存期 不要从单一实例解析范围内服务。 当处理后续请求时,它可能会导致服务处于不正确的状态。 可以: 从范围内或暂时性服务解析单一实例服务。 从其他范围内或暂时性服务解析范围内服务。 默认情况下在开发环境中,从具有较长生存期的其他服务解析服务将引发异常。 要在中间件中使用范围内服务,请使用以下方 阅读全文
posted @ 2020-08-28 14:33 yetsen 阅读(213) 评论(0) 推荐(0)
摘要: 使用泛型主机 (IHostBuilder) 时,只能将以下服务类型注入 Startup 构造函数: IWebHostEnvironment IHostEnvironment IConfiguration 不使用 Startup 类,请在主机生成器上调用 ConfigureServices 和 Con 阅读全文
posted @ 2020-08-27 17:50 yetsen 阅读(660) 评论(0) 推荐(0)
摘要: 网络模型 前后端分离,通过js api(类似ajax的uni.request)获取json数据,把数据绑定在界面上渲染 文件类型 现在是.vue文件,开发是vue,经过编译后,运行时已经变成了js文件。现代前端开发,很少直接使用HTML,基本都是开发、编译、运行。所以uni-app有编译器、运行时的 阅读全文
posted @ 2020-08-26 17:45 yetsen 阅读(524) 评论(0) 推荐(0)
摘要: 添加 Docker 支持 通过在“解决方案资源管理器”中选择“添加” > “Docker 支持”来向现有项目添加 Docker 支持。 当添加或启用 Docker 支持时,Visual Studio 会向项目添加以下各项: Dockerfile** 文件 .dockerignore 文件 对 Mic 阅读全文
posted @ 2020-08-25 20:02 yetsen 阅读(945) 评论(0) 推荐(0)
摘要: 1. 创建并发布一个控制台应用,假设目录结构如下 docker-working └──App ├──NetCore.Docker.csproj ├──Program.cs └──obj ├──NetCore.Docker.csproj.nuget.dgspec.json ├──NetCore.Doc 阅读全文
posted @ 2020-08-24 18:38 yetsen 阅读(345) 评论(0) 推荐(0)
摘要: 此方法最方便,但要避免两个应用程序尝试同时迁移 1. 程序包管理器控制台工具 中运行 Add-Migration InitialCreate,创建初始迁移,此时会自动在项目中添加Migrations目录 2. 修改Main方法 public static void Main(string[] arg 阅读全文
posted @ 2020-08-23 15:54 yetsen 阅读(439) 评论(0) 推荐(0)
摘要: 如果其读操作很多但更新操作很少,则使用单一的锁限制并发性就不太合理了。这种情况常出现在业务应用服务器上,它会将常用的数据缓存在静态字段中进行快速检索。ReaderWriterLockSlim是专门为这种情形进行设计的,它可以最大限度地保证锁的可用性。与常规的lock(Monitor.Enter/Ex 阅读全文
posted @ 2020-08-20 19:47 yetsen 阅读(81) 评论(0) 推荐(0)
摘要: (TLS) 可用于存储对线程和应用程序域唯一的数据。 .NET 提供了下面两种托管 TLS 使用方式:线程相对静态字段和数据槽。 如果可以在编译时预测确切需求,请使用线程相对静态字段(Visual Basic 中的线程相对 Shared 字段)。 线程相对静态字段的性能最佳。 它们还支持编译时类型检 阅读全文
posted @ 2020-08-19 19:34 yetsen 阅读(347) 评论(0) 推荐(0)
摘要: 内存映射文件分为两种类型: 持久化内存映射文件 持久化文件是与磁盘上的源文件相关联的内存映射文件。 当最后一个进程处理完文件时,数据保存到磁盘上的源文件中。 此类内存映射文件适用于处理非常大的源文件。 非持久化内存映射文件 非持久化文件是不与磁盘上的文件相关联的内存映射文件。 当最后一个进程处理完文 阅读全文
posted @ 2020-08-18 20:39 yetsen 阅读(240) 评论(0) 推荐(0)
摘要: System.IO.Pipelines 是一个新库,旨在使在 .NET 中执行高性能 I/O 更加容易。 var pipe = new Pipe(); PipeReader reader = pipe.Reader; PipeWriter writer = pipe.Writer; async Ta 阅读全文
posted @ 2020-08-17 20:35 yetsen 阅读(990) 评论(0) 推荐(0)
摘要: 选择集合 一般情况下,应使用泛型集合。 下表介绍了一些常用的集合方案和可用于这些方案的集合类。 如果你是使用泛型集合的新手,此表将帮助你选择最适合你的任务的泛型集合。 选择集合 我要……泛型集合选项非泛型集合选项线程安全或不可变集合选项 将项存储为键/值对以通过键进行快速查找 Dictionary< 阅读全文
posted @ 2020-08-16 21:01 yetsen 阅读(146) 评论(0) 推荐(0)
摘要: 从 .NET Core 2.1 开始,.NET 包含多个相互关联的类型,它们表示任意内存的相邻强类型区域。 这些方法包括: System.Span<T>,用于访问连续内存区域的类型。 Span<T> 实例可由一组 T 类型、一个 String、一个使用 stackalloc 分配的缓冲区或一个指向非 阅读全文
posted @ 2020-08-15 19:39 yetsen 阅读(241) 评论(0) 推荐(0)
摘要: 需要 System.Threading.Tasks.Dataflow 包 TPL 定义了三种数据流块:源块、目标块和传播器块。 源块作为数据源,可以读取。 目标块作为数据接收方,可以写入。 传播器块作为源块和目标块,可以读取和写入。 当源链接到目标时,您可以根据消息的值提供一个委托来决定目标块是接受 阅读全文
posted @ 2020-08-14 21:08 yetsen 阅读(636) 评论(0) 推荐(1)
摘要: Task.Factory.StartNew和Task.Run区别之一就有Task.Run会自动执行Unwrap操作,但是Task.Factory.StartNew不会,Task.Run就是Task.Factory.StartNew的更人性化封装,而Task.Factory.StartNew则是原始的 阅读全文
posted @ 2020-08-13 18:56 yetsen 阅读(593) 评论(0) 推荐(0)
摘要: 确定相同类型的两个实例的属性值是否相等 public static bool PublicInstancePropertiesEqual<T>(this T self, T to, params string[] ignore) where T : class { if (self == null 阅读全文
posted @ 2020-08-12 19:33 yetsen 阅读(123) 评论(0) 推荐(0)
摘要: 占用大量内存,但通过垃圾回收功能回收以后很容易重新创建的对象特别适合使用弱引用。 可以创建短弱引用或长弱引用: Short 垃圾回收功能回收对象后,短弱引用的目标会变为 null。 弱引用本身是托管对象,与其他任何托管对象一样需要经过垃圾回收。 短弱引用是 WeakReference 的无参数构造函 阅读全文
posted @ 2020-08-11 17:17 yetsen 阅读(336) 评论(0) 推荐(0)
摘要: 在类型使用者忘记调用 Dispose 的情况下,使用安全句柄包装非托管资源。 这是推荐采用的方法。 安全句柄派生自 System.Runtime.InteropServices.SafeHandle 抽象类,并包含可靠的 Finalize 方法。 在使用安全句柄时,只需实现 IDisposable  阅读全文
posted @ 2020-08-10 17:03 yetsen 阅读(278) 评论(0) 推荐(0)
摘要: 字符类 [ character_group ] 匹配 character_group中的任何单个字符。 默认情况下,匹配区分大小写。 [ae] "gray" 中的 "a""lane" 中的 "a" 和 "e" [^ character_group ] 求反:与不在 character_group 中 阅读全文
posted @ 2020-08-09 20:10 yetsen 阅读(192) 评论(0) 推荐(0)
摘要: 零占位符 1234.5678 ("00000") -> 012350.45678 ("0.00", en-US) -> 0.46 数字占位符 1234.5678 ("#####") -> 1235 0.45678 ("#.##", en-US) -> .46 0003 ("####") -> 3 组 阅读全文
posted @ 2020-08-08 19:52 yetsen 阅读(123) 评论(0) 推荐(0)
摘要: Ref 局部变量和返回结果 允许使用并返回对变量的引用的算法,这些变量在其他位置定义。 添加 ref 局部变量和 ref 返回结果可通过避免复制值或多次执行取消引用操作,允许更为高效的算法。 public static ref int Find(int[,] matrix, Func<int, bo 阅读全文
posted @ 2020-08-07 17:11 yetsen 阅读(198) 评论(0) 推荐(0)