方法一: csproj文件中,加上 方法二: .runtimeconfig.json 文件加上 { "runtimeOptions": { "configProperties": { "System.Globalization.Invariant": true } } } /* "configProperties": { "System.Globalization.Invariant": true } */ [......] 继续阅读
方法一: csproj文件中,加上 方法二: .runtimeconfig.json 文件加上 { "runtimeOptions": { "configProperties": { "System.Globalization.Invariant": true } } } /* "configProperties": { "System.Globalization.Invariant": true } */ [......] 继续阅读
解决一个问题 CountdownEvent 类 构造函数和方法 示例 解决一个问题 假如,程序需要向一个 Web 发送 5 次请求,受网路波动影响,有一定几率请求失败。如果失败了,就需要重试。 示例代码如下: class Program { private static int count = 0; static void Main(string[] args) { for (int i = 0; i { HttpReques[......]继续阅读
区别与示例 ManualResetEvent 类 ManualResetEventSlim 区别与示例 AutoResetEvent 和 ManualResetEvent 十分相似。两者之间的区别,在于前者是自动(Auto),后者是手动(Manua)。 你可以先运行下面的示例,再测试两者的区别。 AutoResetEvent 示例: class Program { // 线程通知 private static AutoResetEvent resetEvent = new AutoResetEvent(false)…
AutoRestEvent 类 常用方法 一个简单的示例 解释一下 复杂一点的示例 解释 回顾一下,前面 lock、Monitor 部分我们学习了线程锁,Mutex 部分学习了进程同步,Semaphor 部分学习了资源池限制。 这一篇将学习 C# 中用于发送线程通知的 AutoRestEvent 类。 AutoRestEvent 类 用于从一个线程向另一个线程发送通知。 微软文档是这样介绍的:表示线程同步事件在一个等待线程释放后收到信号时自动重置。 其构造函数只有一个: 构造函数里面的参数用于设置信号状态。 构造函…
Semaphore 类 示例 示例说明 信号量 SemaphoreSlim类 示例 区别 两者都可以限制同时访问某一资源或资源池的线程数。 这里先不扯理论,我们从案例入手,通过示例代码,慢慢深入了解。 Semaphore 类 这里,先列出 Semaphore 类常用的 API。 其构造函数如下: 构造函数 说明 Semaphore(Int32, Int32) 初始化 Semaphore 类的新实例,并指定初始入口数和最大并发入口数。 Semaphore(Int32, Int32, String) 初始化 Semap…
Mutex 类 构造函数和方法 系统只能运行一个程序的实例 解释一下上面的示例 接替运行 进程同步示例 另外 Mutex 类 Mutex 中文为互斥,Mutex 类叫做互斥锁。它还可用于进程间同步的同步基元。 互斥锁(Mutex),用于多线程中防止两条线程同时对一个公共资源进行读写的机制。 Windows 操作系统中,Mutex 同步对象有两个状态: signaled:未被任何对象拥有; nonsignaled:被一个线程拥有; Mutex 只能在获得锁的线程中,释放锁。 构造函数和方法 Mutex 类其构造函数如…
本章主要讲述多线程竞争下的原子操作。 知识点 竞争条件 线程同步 CPU时间片和上下文切换 阻塞 内核模式和用户模式 Interlocked类 1,出现问题 2,Interlocked.Increment() 3,Interlocked.Exchange() 4,Interlocked.CompareExchange() 5,Interlocked.Add() 6,Interlocked.Read() 知识点 竞争条件 当两个或两个以上的线程访问共享数据,并且尝试同时改变它时,就发生争用的情况。它们所依赖的那部分共…
1,Lock lock 原型 lock 编写实例 2,Monitor 怎么用呢 解释一下 示例 设置获取锁的时效 C# 中,可以使用 lock 关键字和 Monitor 类来解决多线程锁定资源和死锁的问题。 官方解释:lock 语句获取给定对象的互斥 lock,执行语句块,然后释放 lock。 下面我们将来探究 lock 关键字和 Monitor 类的使用。 1,Lock lock 用于读一个引用类型进行加锁,同一时刻内只有一个线程能够访问此对象。lock 是语法糖,是通过 Monitor 来实现的。 Lock 锁…
public IConfigurationRoot Config { get; } = new ConfigurationBuilder() .SetBasePath(System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), "Options")) .AddJsonFile("SystemConfig.json", optional: true, reloadOnChange: true) .Build(); [......] 继续阅读
下面是一张图片的 base64 编码 下面代码是很久前写的了,暂时不改,为了速度,请修改字符串操作部分的代码。 /// /// base64转为图片存储到本地 /// /// /// /// public static async Task ImageToFile(string base64,string imagesPath) { if (String.IsNullOrEmpty(base64)) return null;[......]继续阅读
解决方法: 使用 RandomNumberGenerator 来生成随机数。 https://docs.microsoft.com/zh-cn/dotnet/api/system.security.cryptography.randomnumbergenerator?view=netcore-3.1 [......] 继续阅读
目录 1,获取当前线程信息 2,管理线程状态 2.1 启动与参数传递 2.1.1 ParameterizedThreadStart 2.1.2 使用静态变量或类成员变量 2.1.3 委托与Lambda 2.2 暂停与阻塞 2.3 线程状态 2.4 终止 2.5 线程的不确定性 2.6 线程优先级、前台线程和后台线程 2.7 自旋和休眠 本篇是《多线程入门和实践(初级)》的第一篇,也是大家相当熟悉和不屑的的最简单的入门部分。作为系列文章,笔者将从最简单的部分开始,与各位伙伴一起不断学习和探究 C# 中的多线程。 对于…
文章内容有知识点提示时: 提示:111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111。 提示:如果需要处理的算法比较简单的话,可以直接写进委托中,不需要另外写方法啦。 提示: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx…
Reimage Repair 是一个非常强大的工具,能够诊断系统问题,修复系统。 对于 windows 10 更新时碰到的各种错误,使用此软件可以很容易地修复系统。 以管理员权限打开cmd,输入 SFC/scannow 也可以扫描系统。 使用 dism /online /cleanup-image /restorehealth 可以修复系统。 [......] 继续阅读
[5分钟]菜鸟修研之设计模式:六大设计原则 [TOC] 笔者作为一个菜鸟,会尝试以简单的代码和容易理解的语句去解释这几种原则的特性和应用场景。 这六种原则分别为单一职责原则、接口隔离原则、里氏替换原则、迪米特法则、依赖倒置原则、开闭原则。 单一职责原则 单一职责原则(SRP:Single responsibility principle),规定一个类中应该只有一个原因引起类的变化。 单一职责原则的核心就是解耦和增强内聚性。 问题: // 假设此类是数据库上下文 public class DatabaseContex…
Startup 中,添加一个变量 readonly string ganweiCosr = "AllowSpecificOrigins"; Startup.ConfigureServices 中,添加服务 #if CORS services.AddCors(options => { options.AddPolicy(ganweiCosr, builder => builder.AllowAnyHeader()[......]继续阅读
新建一个静态类吗,注入 dapper 服务。 /// <summary> /// 注入dapper /// </summary> public static class DapperService { /// <summary> /// 注入dapper /// </summary> public static IServiceCollection AddDapperContext(this IServiceCollection service[......]继续阅读
可以在容器中执行命令,查看到信息 /egrep '^1:.+(docker|lxc|kubepods)' /proc/1/cgroup 那么我们可以通过读取文件的方法,去分析是否在容器中运行。 代码如下 /// <summary> /// 是否在容器中运行 /// </summary> /// <returns></returns> private static async Task<bool>[......]继续阅读
SQLite 删除数据不会真正删除,而是移动到空闲页中。这样会导致体积越来越大。 vacuum 命令通过复制主数据库中的内容到一个临时数据库文件,然后清空主数据库,并从副本中重新载入原始的数据库文件。这消除了空闲页,把表中的数据排列为连续的,另外会清理数据库文件结构。 意思是,体积太大,就执行 vacuum 命令(SQL)命令,这样就可以清楚缓存,整理碎片。 https://www.runoob.com/sqlite/sqlite-vacuum.html [......] 继续阅读
1,知识范围 Java 语言基础 运算和语句 面向对象编程基础 数组和字符串 图像界面(GUI) 图形图像多媒体 多线程 输出输入流 网络和数据库编程 这些知识中,GUI、和图像、多线程、输出输入流、网络数据库,时间较紧的情况下,没那么多时间学习(不想学Java)。 一张试卷 100 分,60 及格,75 良好。 那么,要求达到 75 分,需要在合理时间内大概学习浏览一下 Java 的知识。 2,考试题型和分值 题序 题型 总分值 单题分值 题数 一 选择 10 1 10 二 填空 20 2 10 三 简答题 20…
痴者工良
高级程序员劝退师
有趣的博主,小小程序员,业余摄影师,主要研究微服务架构、kubernetes、istio、Devops 等,目前在研究机器学习,主要语言是 C#、Go、Python。日常喜欢看书、写博客、摄影、运动、看风景。
COPYRIGHT © 2023 whuanle.cn. ALL RIGHTS RESERVED.
Theme Kratos Made By Seaton Jiang