随笔分类 - 相关技巧
关于某些技巧性功能的描述
UTF8编码转为中文字符串(c#)
摘要:如何将\x开头的编码转换为字符串,如下数据: var data = @"{\x22Province\x22:\x22\xE6\x9D\xAD\xE5\xB7\x9E\xE5\xB8\x82\x22}"; 逻辑:1、将\xdd的数据提取出来;2、通过\x分隔出每个Char字符,即dd;3、将得到的Ch
阅读全文
layui穿梭框内容溢出解决办法
摘要:今天在弄穿梭框的时候,发现内容溢出,如下图所示: 设置代码如下: layui.use(['transfer', 'form', 'layer','util'], function () { var form = layui.form , layer = layui.layer , transfer=
阅读全文
location之alias浅析
摘要:在一个server中,如果需要根据前缀访问不同文件夹下的文件,则可以使用alias来设置。如下代码: server { listen 9085; server_name 127.0.0.1; absolute_redirect off; #server_name_in_redirect off; #
阅读全文
Semaphore和SemaphoreSlim实现并发同步
摘要:Semaphore,中文译为信号灯。在C#中,它可以允许指定数量的线程同时访问共享资源,而其他的线程必须等待。 即现在有5个线程同时运行,但Semaphore指定2个线程可以同时访问某一共享资源。当执行Semaphore.Wait()时,只有2个线程可以同时进入访问共享资源,而其他三个线程则阻塞等待
阅读全文
Barrier实现并发同步
摘要:Barrier,中文被译为屏障。在C#中,可以用来实现多任务在多阶段中协同工作。通俗来讲,就是多个线程在执行到某个被共同指定步骤(即Barrier.SignalAndWait())的时候,就像遇到了屏障一样,必须等待其他还未执行到该步骤的线程。如果每个线程都执行到了该步骤,则大家又继续执行各自的逻辑
阅读全文
CountdownEvent实现并发同步
摘要:CountdownEvent,该类包含一个需要被初始化的计数器数字,如果该计数器数字归零之后,就会释放被阻塞的线程。 CountdownEvent.Signal()执行后,计数器会自减1; CountdownEvent.Wait()执行后,如果计数器归零,则会立即释放该线程;否则,就会阻塞当前线程。
阅读全文
AutoResetEvent实现并发同步
摘要:AutoResetEvent,继承自EventWaitHandle,用在多线程中保护对共享资源的访问,保证每次只能有一个线程对共享资源进行访问。 AutoResetEvent最特别之处,在于每次保证只有一个线程执行逻辑,其他的线程只能等待。 AutoResetEvent通过信号量来阻塞和释放线程。其
阅读全文
TrieTree树
摘要:昨天看到一篇介绍TrieTree树的文章,感觉还不错的。于是小小研究了一下,并用C#实现了相关代码。 TrieTree树提供对字符的存储和遍历,可以用来查询词汇出现的频率或实现其他功能,速度还挺快。最特色的是,如果有相同前缀词的字符串,则它们的前缀部分可以被共享存储。 TrieTree类是一个单例类
阅读全文
EncryptByPassPhrase与DecryptByPassPhrase的浅说
摘要:在sqlserver中,可以通过内置函数EncryptByPassPhrase对字符串进行加密,通过内置函数DecryptByPassPhrase对加密后的密文进行解密。 代码如下: declare @UserName nvarchar(100)='张三' declare @Encrypt varb
阅读全文
一个mp4转gif的网站
摘要:https://ezgif.com/video-to-gif
阅读全文
.net core webapi 使用ValidationAttribute对比同一对象的多个参数
摘要:众所周知,在使用DataAnnotations数据验证的时候,特别是针对同一个InputDto的多个属性进行对比的时候,例如起始日期不能大于结束日期,我们需要在Attribute中知道当前InputDto对象的类型和对象值,以便进行两个属性的对比。 做到以上操作,我们需要使用ValidationAt
阅读全文
.net core WebApi ManualResetEvent实现并发同步
摘要:ManualResetEvent,即手动重置事件,通过信号量来判别当前线程是否应该阻塞或继续执行。使用方式与ManualResetEventSlim差不多,ManualResetEventSlim只是针对ManualResetEvent轻量化的使用。 当执行ManualResetEvent.Set(
阅读全文
.net core WebApi Mutex实现并发同步
摘要:Mutex,中文译为互斥体,在.net中也是作为一种线程或进程之间的互斥体存在。即在同一时刻,一个共享资源只允许被某一个线程或进程访问,其他线程或进程需要等待(直至获取互斥锁为止)。 Mutex的使用方式与Monitor很相似,但绝不相同。Monitor支持线程间并发同步,Mutex不但支持线程也支
阅读全文
.net core WebApi Monitor实现并发同步
摘要:在.net中,还可以使用Monitor实现线程并发同步。Monitor类是纯托管且完全可移植,并且可能会在操作系统资源需求方面更加高效。 Monitor的锁对象尽可能使用引用对象,如果是字符串或值对象,会出现引发SynchronizationLockException异常。 其实我们日常用的lock
阅读全文
.net Monitor产生SynchronizationLockException异常的原因
摘要:有时在使用Monitor进行并发同步编程时,会产生SynchronizationLockException异常,抛出的异常内容是"Object synchronization method was called from an unsynchronized block of code." 。意思是“
阅读全文
.net 表达式返回值和等号赋值的区别
摘要:.net 7.0的新特性中,有一个使用表达式体返回值的操作。请看如下代码: 这样看起来是不是和使用等号(=)获取值一样的方便。 但是,请不要认为使用表达式体(=>)获取值和用等号(=)获取值是一样的概念,那你会被坑惨! 针对引用类型来说,因为使用表达式体(=>)获取的值都不是同一个对象,而使用等号(
阅读全文
.net core WebApi Interlocked配合ManualResetEventSlim实现并发同步
摘要:由于项目有某种需求,在WebApi中,有大量的请求需要操作相同的数据,因此需要用到并发同步机制去操作共享的数据。 本次配合使用Interlocked和ManualResetEventSlim来实现并发同步的目的。 Interlocked实现了原子性的操作,ManualResetEventSlim提供
阅读全文
.net core 使用log4net日志组件
摘要:一个web站点必须要记录日志,否则哪里出错了,完全是黑娃找黑妹,两眼一抹黑。 最常用的就是log4net日志组件。我们可以通过扩展加入日志组件。 第一步:在项目中NuGet log4net包,即 Install-Package log4net; 第二步:添加log4net.config配置文件到项目
阅读全文
.net core Kestrel宿主服务器自定义监听端口配置
摘要:在.net core的web程序中,除了可以在项目中硬编码服务器的监听端口外,还可以在外部通过json文件配置。 方法如下: 第一步:在项目中新建一个名为Hosting.json的文件。当然,文件名可以随便取。然后在其中添加如下内容: 8081就是我们需要监听的端口。如果需要监听多个端口,则可以用半
阅读全文
.net core IIS/Kestrel上传大文件的解决方法
摘要:大文件,就是内容的大小超过了一定数量的文件,比如1个GB的文件。 站点一般会限制上传文件的大小,如果超过了一定限制,则会报错误。 在处理大文件上传的方式上,IIS代理和Kestrel宿主服务器的处理方式是不一样的。 一、Kestrel宿主服务器 解决方法如下: 第一种处理方式:在需要处理大文件的接口
阅读全文