前言
在开发中,我们经常需要创建某个类型实例的副本。
常用的方式,是继承ICloneable
接口,然后自行实现Clone()
,这会耗费一定的开发时间;或者使用序列化/反序列化方式变相实现,但是性能不高。
现在,可以尝试用Source Generators实现。
Just So So ...
前言
在开发中,我们经常需要创建某个类型实例的副本。
常用的方式,是继承ICloneable
接口,然后自行实现Clone()
,这会耗费一定的开发时间;或者使用序列化/反序列化方式变相实现,但是性能不高。
现在,可以尝试用Source Generators实现。
我注意到在某些情况下,visual studio 经常推荐我这么做。
await using var disposable = new Disposable();
// Do something
来替代下面的这种写法
using var disposable = new Disposable();
// Do something
请问 using
和 await using
到底有什么不同 ?或者说在使用上该怎么抉择?
线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,并且互相等待对方释放资源,导致这些线程都处于等待状态,无法继续执行。如果线程都不主动释放所占有的资源,将产生死锁。如果死锁发生在UI线程,则会导致界面停止响应。
在项目中将某个操作后的数据Webhook 发送给钉钉机器人。
Webhook 是一个 API 概念,是微服务 API 的使用范式之一,也被成为反向 API,即前端不主动发送请求,完全由后端推送;举个常用例子,比如你的好友发了一条朋友圈,后端将这条消息推送给所有其他好友的客户端,就是 Webhook 的典型场景。
简单来说,Webhook 就是一个接收 HTTP POST(或GET,PUT,DELETE)的URL,一个实现了 Webhook 的 API 提供商就是在当事件发生的时候会向这个配置好的 URL 发送一条信息,与请求-响应式不同,使用 Webhook 你可以实时接受到变化。
二维码(QR Code),与传统的一维码,比如条形码,二维码具有存储的数据量更大;可以包含数字、字符,及中文文本等混合内容;有一定的容错性(在部分损坏以后还可以正常读取);空间利用率高等优点。
因此,二维码在我们的生活中被广泛应用,例如支付码、健康码等。