01 2021 档案
摘要:测试tsql代码: drop table #t create table #t(id int) insert into #t(id) values(''),(' '),(' ') select * from #t 运行结果: 但是C#空字符串转换为数字会报错 “输入字符串的格式不正确。”
阅读全文
摘要:解决方法:content使用的dom元素样式自己设置为隐藏 style="display: none;" 1 定义弹出层content使用的dom元素 <div id="sku_search-div" style="display: none;"> <form class="layui-form"
阅读全文
摘要:git相关概念图 情况1:只在本地工作区(workspace)修改了文件A(包括删除文件A),但还没有使用 git add 把A的修改暂存到暂存区(index) 这时我们可以撤销对文件内容的修改,也可以撤销对文件A的删除,但是新建的文件无法撤销 撤销方法: // 放弃单个文件修改 git check
阅读全文
摘要:静态构造函数函数名就是类名且没有访问修饰符也没有参数 static ClassA(){ // 初始化静态字段的逻辑 } 静态构造函数特点: 1)静态构造函数没有修饰符修饰(public,private),因为静态构造函数不是我们程序员调用的,是由.net 框架在合适的时机调用的 2)静态构造函数没有
阅读全文
摘要:1 安装依赖包 2 定义拦截器类(类定义看下面的参考资源链接) 3 定义被代理的接口和实现代理接口的类 using Autofac.Extras.DynamicProxy; using System; using System.Collections.Generic; using System.Te
阅读全文
摘要:1 安装依赖包 安装 Autofac 和 Autofac.Extras.DynamicProxy 2 定义拦截器类 using System; using System.Linq; using Castle.DynamicProxy; // 添加引用 namespace ConsoleApp_Aut
阅读全文
摘要:定义简单单链表结构 public class ListNode { public int val; public ListNode next; public ListNode(int val = 0, ListNode next = null) { this.val = val; this.next
阅读全文
摘要:解决方法 在服务器上打开cmd命令窗口,执行以下命令: C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
阅读全文
摘要:创建测试Model #region 测试Model public class TestModel { public int Id { get; set; } public String Name { get; set; } public decimal Score { get; set; } } #
阅读全文
摘要:1 git冲突(conflict)发生的情形 背景: 用户A修改了文件f1中第1行内容然后成功推送更改,在用户A推送更改后,用户B在没有先进行git pull操作的情况下也编辑同样的文件f1中的第1行并提交,这时用户B提交就会提示冲突,用户B无法成功提交; 解决方法: 用户B先进行git pull,
阅读全文
摘要:以前.net framework web应用程序Session是可以直接使用的,使用方法如下: this.Session["s1"] = "V1"; // 设置session var sessionVal = Session["s1"]; // 获取session 但是在.net core中Sess
阅读全文
摘要:ASP.NET Core的处理流程是一个管道,而中间件是装配到管道中的用于处理请求和响应的组件。中间件按照装配的先后顺序执行,并决定是否进入下一个组件。中间件管道的处理流程如下图(图片来源于官网): Use方法 使用方法:.net core web应用程序中,在Startup.cs中的Configu
阅读全文
摘要:背景 使用定时任务调度框架quartz.net 3.2.3版本批量删除作业的时候发现每次只能删除一个作业无法批量删除,后来就是调试源码,然后找到了具体的删除的tsql语句,调试的时候也正常,删除n个任务,就会有n个删除command发送给sql引擎执行,看代码也没有问题,后来实在没办法,在sql s
阅读全文
摘要:1 修改 Startup.cs 中的 Configure方法添加如下中间件 允许多次读取请求体 // 允许多次读取 HttpContext.Body 请求体流数据 app.Use(next => new RequestDelegate( async context => { context.Requ
阅读全文
摘要:1 使用文件配置提供程序,配置来源可以是json文件、ini文件和xml文件 以json文件作为配置来源读取数据库连接配置实例程序步骤如下: 1)创建一个asp.net coe web api 应用程序 (.net 5 框架) 把配置文件属性 ”复制到输出目录“设置为”如果较新则复制“ 2)在项目的
阅读全文
摘要:微软il反编译示例解析il指令文档 https://docs.microsoft.com/zh-tw/previous-versions/dd229210(v=msdn.10) 微软IL指令文档 https://docs.microsoft.com/zh-cn/dotnet/api/system.r
阅读全文
摘要:取值方法: 比如一个数A,取第n位上的数字(第n位存在) 值=(A / 10的(n-1)次方) % 10 如A=4321 第1位(即个位)=(4321 / 10^(1-1)) % 10 =4321 / 1 % 10=1 第2位(即十位)=(4321 / 10^(2-1)) % 10= 4321 /
阅读全文
摘要:Task<T>:任务返回结果类型为T的Task,Task<T>继承Task,Task<T>有Result属性,Result类型为T,而Task无Result属性 Task<T>类似于C#内置的两个委托:有返回值的Func,如Func<T1,T2,T3>代表参数值类型为T1和T2返回值类型为T3的委托
阅读全文
摘要:第1步,在项目中添加quartz.config,然后修改文件属性 第2步,修改触发器的默认MisfireInstruction值 如果是Cron表达式触发器修改代码如下: ((CronTriggerImpl)trigger).MisfireInstruction = MisfireInstructi
阅读全文
摘要:lead:取当前行所在位置后指定偏移量的行的值 如 lead(Name,1)取该行后第1行的Name值,lead(Name,10)取该行后第10行的Name值,如果没有返回null lag:取当前行所在位置前指定偏移量的行的值 如 lag(Name,1)取该行前第1行的Name值,lag(Name,
阅读全文
摘要:ReaderWriterLockSlim-多线程读单线程写 当线程A已经获取到ReaderWriterLockSlim实例的读锁(RedLock,UpgradeableReaLock)后,其它线程只能再获取到该ReaderWriterLockSlim实例的读锁,再申请获取写锁会被阻塞 当线程A已获取
阅读全文
摘要:ConfigureAwait(false):当 await 等待完成时,它会尝试在线程池上下文中执行 await 之后的代码 ConfigureAwait(true):当 async 方法内的 await 执行完成时,它会尝试获取之前调用者线程所在的上下文执行方法的剩余部分 在Winform程序中没
阅读全文
摘要:System.Timers.Timer的定时器每次触发时,触发事件会排队到线程池队列然后由调度程序安排可用的工作线程来执行 示例: 1 static void Main() 2 { 3 TimerTest(); 4 5 Console.Read(); 6 } 7 8 #region Timer测试
阅读全文
摘要:异步方法一般执行流程: await 之前的代码同步运行在调用异步方法的线程里 当运行到await所在行后,调用线程在这里会立即返回,await等待的异步任务会被调度程序重新排队到线程池申请可用的工作线程异步执行 当await异步等待的任务完成后,await之后的代码重新排队从线程池中申请可用工作线程
阅读全文
摘要:Thread.Sleep(n) Sleep 的意思是告诉操作系统自己要休息 n 毫秒,这段时间就让给另一个就绪的线程吧。相比 Yield,可以调度任何处理器的线程使用时间片。在休息的 n 毫秒时间内,即使没有其他就绪线程,自己也不再占用CPU。 当 n=0 的时候,意思是要放弃自己剩下的时间片,但是
阅读全文
摘要:SpinWait是一种混合模式的自旋等待,被设计为先使用用户模式等待一段时间(在用户模式等待时间段内当前线程不会让出cpu的时间片),如果等待还未结束然后会切换到内核模式进行等待(这时线程会让出cpu的时间片给其他线程,会强制产生上下文调度); SpinWait自旋等待的益处: 对于只需要短暂等待的
阅读全文
摘要:volatile关键字指示一个变量是易变的,volatile指示编译器禁止指令重排序,指令按照编码顺序执行,volatile并不保证线程安全性,它只保证任何时候你读取到的都是最新值
阅读全文
摘要:CountdownEvent-在收到特定次数信号后使等待线程继续运行的同步基元 1 CountdownEvent内部使用ManualResetEventSlim来实现信号量同步的 在CountdownEvent源码里有一个ManualResetEventSlim变量,源码如下: 2 Countdow
阅读全文