c#
文章平均质量分 55
漫游者码农
实测有用干货,拒接浪费时间精力
展开
-
升级使用net5,iss遇到500.19问题
vs2019工具,必须升级到16.8以上版本,iss必须安装Download .NET 5.0 (Linux, macOS, and Windows)页面下载Download ASP.NET Core 5.0 Runtime (v5.0.12) - Windows Hosting Bundle Installer原创 2021-12-01 15:24:40 · 263 阅读 · 0 评论 -
cron表达式使用详解及C#中创建cron表达式,和计算下次执行时间
一、Cron表达式是一个字符串,字符串以空格隔开,分为5或6个域,每一个域代表一个含义,系统支持的表达式格式如下(DayofWeek 为可选域。):Seconds Minutes Hours DayofMonth Month [DayofWeek]1二、字段含义Seconds: 可出现"* / , -"四个字符,有效范围为0-59的整数Minutes: 可出现"* / , -"四个字符,有效范围为0-59的整数Hours: 可出现"* / , -"四个字符,有效范围为0-23的整数Day原创 2021-06-11 18:04:44 · 4798 阅读 · 0 评论 -
rabbitmq你真的理解了吗?(工作阶段整理与总结)
所谓的原理,模型就是帮助你理解,或是加深一个印象。我们先看它内部的消息流传过程原创 2021-06-11 15:40:44 · 126 阅读 · 1 评论 -
VS调试nuget包源代码设置
1.0设置调试常规,取消启用仅我的代码2.0选择符合Nuget.Org符号服务器,以及设置缓存符号文件路径,没有的话,新建相应文件夹路径,仅仅加载指定的模块4.0选择下载好的源代码路径在项目中断点调试,单步f11进入会弹窗提示,选择源代码文件所在路径即进入相应的源代码,...原创 2021-06-10 18:55:54 · 1658 阅读 · 0 评论 -
C# mysql树结构表设计,及递归返回目录树
第一部分:表设计及初始化一条根目录,必须有且仅有唯一根节点DROP TABLE IF EXISTS `doc_manager_dir`;CREATE TABLE `doc_manager_dir` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键标识', `parent_id` int(11) NULL DEFAULT NULL COMMENT '父级标识', `dir_name` varchar(255) CHARACTER S原创 2021-05-21 14:54:01 · 457 阅读 · 1 评论 -
http请求,关于下载的相关请求头,你真的的完全懂了吗?
最近工作和前端对接一个下载的需求,遇到几个小问题,没有进度提示第一部分:基础知识https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types1.0两种主要的 MIME 类型在默认类型中扮演了重要的角色:text/plain表示文本文件的默认值。一个文本文件应当是人类可读的,并且不包含二进制数据。 application/octet-stream表示所有其他情况的默认值..原创 2021-05-20 09:02:25 · 1556 阅读 · 0 评论 -
C# 代码审查近期工作中几个规范点
背景:公司有打码审查,这对代码规范性,提升阅读性,非常有帮助第一点:自定义抛出错误:分成参数错误,即认为前端传参错误,业务逻辑错误,这两类错误,不认为是异常 if (string.IsNullOrEmpty(file.FileName) == true || string.IsNullOrEmpty(file.FilePath) == true) throw new ValidationException("缺少必要的参数");原创 2021-05-18 17:42:19 · 206 阅读 · 0 评论 -
VS里调试断点的“条件”与“操作”设置
点击后可以对断点的“条件”与“操作”进行设置:正在上传…重新上传取消这篇博客记录了对这个功能的试用。首先,先写一段简单的代码供调试:#include<iostream>using namespace std;void testFunc(int x){ cout << x << endl;//在这一行断点}int main(){ for (int i = 0; i < 10; i++) testFunc(i...原创 2021-05-18 11:13:04 · 762 阅读 · 0 评论 -
C# LINQ常用收藏
C# List集合Group by查询C# List集合Group by查询 //根据企业ID、类型、配置ID进行分组; var groupList = chRCheckConfirmList .GroupBy(x => new {x.CompanyId, x.Type, x.ChRCheckItemConfigId}) .Select(group原创 2021-04-30 10:17:46 · 126 阅读 · 0 评论 -
C# 自定义类型缓存对象,volatile和weakreference的引用
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;namespace SingleInstanceDemo{ //断子绝孙的类 public sealed class MyCacheItem<T> : IDisposable where T : c...原创 2021-04-23 19:37:33 · 345 阅读 · 0 评论 -
深入理解.NET MemoryCache
摘要MemoryCache是.Net Framework 4.0开始提供的内存缓存类,使用该类型可以方便的在程序内部缓存数据并对于数据的有效性进行方便的管理,借助该类型可以实现ASP.NET中常用的Cache类的相似功能,并且可以适应更加丰富的使用场景。在使用MemoryCache时常常有各种疑问,数据是怎么组织的?有没有可能用更高效的组织和使用方式?数据超时如何控制?为了知其所以然,本文中对于MemoryCache的原理和实现方式进行了深入分析,同时在分析的过程中学习到了许多业界成熟组件的设计思想,为原创 2021-04-23 17:36:30 · 1095 阅读 · 0 评论 -
C# 教你彻底弄懂,const和readonly static区别
C#中有两种常量类型,分别为readonly(运行时常量)与const(编译时常量),本文将就这两种类型的不同特性进行比较并说明各自的适用场景。工作原理 readonly为运行时常量,程序运行时进行赋值,赋值完成后便无法更改,因此也有人称其为只读变量。 const为编译时常量,程序编译时将对常量值进行解析,并将所有常量引用替换为相应值。 下面声明两个常量:public static readonly int A = 2; //A为运行时常量public const int B...原创 2021-04-23 17:35:21 · 251 阅读 · 0 评论 -
C# Webapi中[ApiController]特性的功能,即使用
第一:背景:之前对这个特性一知半解,了解的不够深入,在试用期的工作中,问到这个特性,需要深入了解第二个:正文,作用及使用//[ApiController] //启用下述 API 特定的固定行为: /* * •特性路由要求 不能通过由 Startup.Configure 中的 UseEndpoints、UseMvc 或 UseMvcWithDefaultRoute 定义的传统路由访问操作。即写[Route()] •自动 HTTP 400 响应...原创 2021-04-12 17:12:05 · 13820 阅读 · 0 评论 -
vs2019正确使用单元测试项目
新建一个控制项目Testusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Yidosoft.Edu.Csharp.UnitTest{ public class Program { //string[] args public static void M原创 2021-04-05 15:00:00 · 1845 阅读 · 0 评论 -
新入职公司遇到问题及解决Git,vs2019安装
第一个问题:git配合小乌龟,一直提示报错:还是按照官方文档说明:https://docs.github.com/cn/github/authenticating-to-github/creating-a-personal-access-token生成token-access后,输入用户名和token成功克隆第二个问题:vs需要安装.net4.8但是一直提示无法成功安装,请检查网络连接C:\Users\xxx\AppData\Local\Temp打开dd_bootstra.原创 2021-04-02 23:19:17 · 255 阅读 · 0 评论 -
.net core使用Apollo做统一配置管理(二)启动apollo服务,及在core项目中使用
https://github.com/ctripcorp/apollo/wiki/Quick-Start按照官方的案例一步步搭建,介绍的非常清楚在Git bash中运行.sh脚本,相当于部署发布包Administrator@DESKTOP-U3A77SG MINGW64 /g/BaiduNetdiskDownload/apollo-quick-start/apollo-quick-start-1.8.0$ ./demo.sh startWindows new JAVA_HOME is:原创 2021-02-18 18:02:52 · 641 阅读 · 0 评论 -
c# 自己造轮子之——EventBus事件总线的使用-自己实现事件总线(一)
背景:之前公司由于开发人员少,相对业务并没有那么复杂,并没有涉及到事件总线EventBus,而到了新公司,看到类似发送邮件,发送短信的业务,调用非常方便,吸引了兴趣去一探究竟,当然看起来很高深,但一旦搞懂原理后,它就没那么高深,这里写下来学习过程,一方面方便以后复习,另一个方面也希望能帮到别人强烈建议大家亲自多写几遍,关于反射,泛型,接口,抽象类,抽象方法,虚方法,有一个深刻的认识强烈建议大家亲自多写几遍,关于反射,泛型,接口,抽象类,抽象方法,虚方法,有一个深刻的认识强烈建议大家亲自多写几原创 2021-02-09 13:06:00 · 2642 阅读 · 0 评论 -
C# 定时任务Quartz学习--实例化标准执行计划工厂StdSchedulerFactory(一),配置线程池数量
找遍百度,竟然没找到如何如何在C#环境下如何配置quartz线程池数量的说明!!!!!!!!老规矩学习扩展dll首先是引用,见官方引用即可https://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/using-quartz.html学习主要是针对api学习,https://quartznet.sourceforge.io/apidoc/2.0/html/官方案例是直接通过IScheduler scheduler =原创 2021-01-28 18:02:23 · 3703 阅读 · 0 评论 -
C# 夯实基础之,默认访问级别,虚方法virtual和new区别,以及抽象类abstract区别,及工作中实际应用
最近学习Quratz,一个任务调度框架,查看代码发现很多地方使用virtual关键字,其实不仅如此,在C# asp.net框架里面,以及公司封装的框架,也非常多地方使用Virtual关键字,虽然工作几年却感觉懂,又好像不懂,心中没底,因此写下这篇博文,总结是:虚方法标记,就是让派生类重写的,从而覆盖父方法,有点像接口的作用,私有就是类自己使用,保护是继承还可以用,内部是当前程序集,class 默认是访问级别是内部的,成员默认私有参考https://docs.microsof.原创 2021-01-28 17:31:47 · 314 阅读 · 0 评论 -
c#位运算符和移位运算符(“<<“及“>>“)详细说明,及相关引用,声明枚举(夯实基础)
背景:((int)CZSystemType.Api << CZSysConsts.POS_SYSTEM) + ((int)CZModuleType.待办 << CZSysConsts.POS_MODULE) + (0x0001)公司定义一系列的枚举,出现移位运算符,现在已经忘记差不多,这里总结一下代码演示: class Program { static void Main(string[] args) {原创 2021-01-15 16:53:13 · 1071 阅读 · 0 评论 -
C# 系统添加signalr推送功能模块,在后台各个项目web和api相关模块操作处,添加对应触发点,触发大屏实时更新相关数据
背景:公司有web后台项目,有供手机app调用的api接口项目,要求在web,app上操作时,将相关数据实时显示到大屏tv,它是用vue写的,整个是前后端分离的方式,第一部分:基础掌握基本的如何利用signalr实现基本的推送功能模块,备注:既然工作中使用,总得尽量了解这个signalr的细节,不然使用的心里没底,,通过下面相关文档了解原理,和使用推送相关核心代码:首先是在web中集成推送功能,参考https://docs.microsoft.com/en-us/aspnet/sign.原创 2021-01-14 16:26:57 · 1576 阅读 · 0 评论 -
C#夯实基础之浮点数理解,相互转换封装帮助类
背景:工作中遇到项目,封装成各种转换数据类型的帮助类,工具类,这里总结学习,方便日后之用先看基础;八大整型数值类型,关于它们无需多言,可参考官网https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/integral-numeric-types其次浮点类型,这个和想的不一样,因为我理解是,好歹这个数到底有多大呢?https://docs.microsoft.com/zh-cn/dotnet原创 2021-01-07 18:22:53 · 920 阅读 · 0 评论 -
C# 枚举与特性,及相关应用封装
公司项目用到枚举封装的帮助类,加上枚举确实很方便直观,管理一些特定值,但有时候就是想知道具体枚举值,如果用传统if else或是swtich就太low,这里采用更优雅,逼格更高的一种方式,直接获取枚举,或是枚举值等等,甚至可以获取枚举上面特性描述字符串等等关键点:第一:可以给枚举扩展方法,获取特性,静态类,静态方法,通过枚举type获取fieldinfo,来获取上面的特性实例第二:通过特定枚举获取对应枚举值,或是通过对应枚举值获取枚举Enum.GetValues()还有方法Enum.Forma.原创 2021-01-06 22:07:57 · 974 阅读 · 0 评论 -
C#中? 、?? 、?. 、??= 的用法和说明
一、可空类型修饰符< ? >引用类型能用空引用来表示一个表示一个不存在的值,但是值类型不能。例如: string str = null; int i = null;//编译报错 为了使值类型也能使用可空类型,就可以用 " ? "来表示,表现形式为"T?"。例如: int i? //表示可空的整型 DateTime time? //表示可空的时间 二、空合并运算符< ?? >用于定义引用类型和可空类型的默认值...原创 2021-01-05 21:21:26 · 2437 阅读 · 3 评论 -
mvc学习之控制器和视图,数据的交互,和自定义绑定数据规则
第一部分:看控制器如何拿到视图数据,主要基于上下文对象,拿到视图四种类型的数据,参数接收数据,路由数据,表单提交数据,url后面参数, //完全可以不用写View视图,因为控制器可以返回字符串内容 public ActionResult Login(string name, int age = 18) { StringBuilder sb = new StringBuilder(); sb.AppendFormat(原创 2021-01-01 12:10:09 · 1383 阅读 · 0 评论 -
C# 利用AEC算法加密解密实现前台后台安全校验,附前端后台代码示例
https://docs.microsoft.com/zh-cn/dotnet/api/system.security.cryptography.aescryptoserviceprovider?view=netframework-4.8第一部分加密:new一个服务器提供器,分别赋值四个常用字段,通过key密钥,vi初始化值构造加密器定义一个内存流,加上加密器,构造加密流,将明文写入加密流https://docs.microsoft.com/zh-cn/dotnet/api/syst原创 2020-12-31 15:26:54 · 1299 阅读 · 0 评论 -
C#.NET里面抽象类和接口有什么区别
1.面向接口编程和面向对象编程是什么关系首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。2.接口的本质接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。它在形式上可能是如下的样子:interfaceInterfaceName{voidMethod1();voidMeth...原创 2020-12-31 11:33:13 · 410 阅读 · 0 评论 -
C#利用扩展方法,定义求两个时间差值,按照固定时间格式输出 推荐做法
背景:工作中遇到这种写法,值得学习借鉴的地方在于,首先是定义一系列常量,单独放在一个类库当中,当然这个类库因为多个项目web,api,可能用到,统一放在一个解决方案的文件夹下,比如命名project第二定义一系列的工具类库,按照用途分别新建文件夹和对应的类,同时这个类库作用是给整个解决方案的,可新建基础设施公共文件夹,比如命名infrastructures/***************************************************************原创 2020-12-30 11:30:28 · 188 阅读 · 0 评论 -
C# const和readonly区别,代码示例
工作中看公司项目,大量用到const,这里复习一下 先解释下什么是静态常量(Const)以及什么是动态常量(Readonly)。 静态常量(Const)是指编译器在编译时候会对常量进行解析,并将常量的值替换成初始化的那个值。 即运行时,已经确定了所有的值,即没有运行,里面已经有值 动态常量(Readonly)的值则是在运行的那一刻才获得的,编译器编译期间将其标示为只读常量,而不用常量的值代替, 这里还没有确定,仅仅只是标记只读,到运行时才确定 这样动态常量不必在声明的时...原创 2020-12-30 09:59:17 · 208 阅读 · 0 评论 -
mvc学习之路由
总结如下:越是具体的路由url,权限越大,越写在上面,匹配到不往后面匹配必须有controller action路由值可给路由参数写正则,具体代码如下using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using System.Web.Routing;namespace RouteViewbagDemo{ p..原创 2020-12-29 21:31:23 · 218 阅读 · 0 评论 -
Task.CompletedTask和Task.Result小记
学习中间件出现一个知识,如下写法,一开始不太懂中间件三部曲:定义接口和实现类,注册依赖,添加映射到容器定义中间件加使用 public class TestMiddleWare { //三部曲 private readonly RequestDelegate _next; public TestMiddleWare(RequestDelegate next) { _next = next;原创 2020-12-26 19:28:56 · 6404 阅读 · 0 评论 -
通俗易懂带你彻底学会C#中async和await,学习中间件
async一个是在定义声明标记异步强调声明,可供另一个关键字await来使用,一个在调用方调用时等异步执行完,它的中英文名字await非常形象生动,强调执行完,在调用这个方法,async和await几乎总是成双成对,async返回类型必须是Task ,Task<T>,void三者之一,且有该关键字,所谓异步方法,就是调用即马上返回Task,只是请理解返回的是一个Task任务而已,从感觉来看和一般方法执行完意思差不多,马上执行后面的内容,尽管在当前调用主线程,他并未真正执行完。看.原创 2020-12-26 12:07:51 · 1335 阅读 · 0 评论 -
C# Web项目路径问题,全知道
C# 页面分为两种,一种是动态aspx,cshtml,一种是html,第一种:../从父目录开始,即当前页面上一级第二种:./或是什么也没有,从文件当前目录开始如下页面位置页面引用路径所以最终结果是:http://localhost:63743/SignaIR/Scripts/jquery-1.6.4.min.js从上一级SignIR开始http://localhost:63743/SignaIR/NewFolder1/Scripts/jquery.signalR-2..原创 2020-12-24 16:35:03 · 515 阅读 · 1 评论 -
C#中的ref,out区别,理论总结和代码实例(夯实基础)
ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。3、out适合用在需要retrun多个返回值的地方原创 2020-12-15 11:18:54 · 208 阅读 · 0 评论 -
C# 利用ADO.NET SQL SERVER数据库插入插入大量数据,三种方式的性能比较
先看结论,有图有真相:环境条件:首先是新建一张表,和一个配置文件的连接字符串,以及控制台程序 <connectionStrings> <add name="ConnectionSetting" connectionString="Server=(local);uid=sa;pwd=xxx;database=xxx;pooling=true;Max Pool Size = 2000;" providerName="SQLServer" /> </co原创 2020-08-31 18:00:30 · 1048 阅读 · 0 评论 -
C#中标准的事件模式,和观察者模式
整个过程:在事件所有者,即被观察者中定义事件,(方法集合)以及触发方法,触发即可过程中需要订阅观察者方法,传给他被观察者对象和相关事件参数,知识点:标准事件void返回,两个参数返回,官方说法:https://docs.microsoft.com/zh-cn/dotnet/csharp/event-patternusing System;using System.Collections.Generic;using System.Linq;using System.Text;usi.原创 2020-08-21 17:25:01 · 442 阅读 · 0 评论 -
C# 多线程编程三大核心基础特点winform例子
/*总结,多线程和普通编程最大区别: * 第一个:同步线程卡界面, * 关闭界面,点击界面都是由主线程完成,当进行计算时主线程无暇处理点击,拖动界面等 * * 第二个:同步线程比较慢,执行五次10亿次计算,花费将近12秒,只有一个线程 * 异步线程比较快,花费5秒时间,一共五个线程,性能提升,并不是线性,提升2.4倍 * 因此并不是线程越多越好,一来资源有限,二来存在多线程协调成本...原创 2020-08-20 16:49:44 · 317 阅读 · 0 评论 -
c#Async,await编程核心基础,执行顺序,死锁,使用注意点,
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;namespace AsyncDemo{ class AsyncDemo { //一般多线程开启 public void Show() { Console.原创 2020-08-20 10:48:50 · 2080 阅读 · 1 评论 -
C# 特性基础知识demo
using AttributeDemo.AttributeFile;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace AttributeDemo{ class Program { /* 特性本身没有什么用?除非进行反射获取到特性,利用特性做点啥才有意义.原创 2020-08-17 16:11:16 · 387 阅读 · 0 评论 -
c#实现数据库数据绑定到数据模型的六种方法(一)硬核编码,反射泛型,json序列化,AutoMapper,x表达式目录树
第一部分:第一个基础方法,直接手写将后台每一张表数据,依次绑定到每一个对象上去,这个过程相当机械性能优,代码重复率高第二个方法:反射泛型方法,一个方法搞定,基本够用,不过属性不一致,名称不一致,实际需求无法很好满足,第三个方法:json,性能也不够好,毕竟序号化这个用途不是用来类型转换的,第四个方法:杀鸡焉用牛刀,功能很强悍,但是是封装好的,binusing System;using System.Collections.Generic;using System.Linq;usi原创 2020-08-17 15:38:50 · 1027 阅读 · 0 评论