我有一把新锤子,问题当成钉子看 —— 从实践来谈设计模式

相信大家都知道设计模式,很多人都能背出一些常用的设计模式,但是很少有人知道怎么去使用它。甚至有很多人觉得设计模式没有用,哪怕在很多高水平的程序员之间,面对设计模式到底是不是一种“屠龙术”也有着很激烈的争论。 今天文章主题我们不争论设计模式有没有用,而是通过一次具体问题的实践,来看看我们到底怎么去使用设计模式,怎么让一段代码演变得更有扩展性。 问题的开始我们假设这样一个场景,现在有一台物联人脸识别设

LoT设备分布式一致性处理实践 - 本地消息表

最近工作中我们新增了一批人脸识别设备,该设备支持http commet轮询以及MQTT的方式对接,综合各方面的优劣后,最终我们准备采用MQTT的方式来对接,同时我们也不可避免得遇到了分布式一致性的问题,在此做一次实践纪录。 在系统使用过程中,我们需要根据各自的权限设置,将系统中人员的白名单下发到不同的设备,后台系统通过MQTT将消息下发到设备,设备再通过MQTT将结果反馈到系统。同时因为设备的性能

wpf经典空域问题

我们开发WPF应用时,有时不可避免得需要在其中承载WinForm控件。那么这时会出现一些问题,由于WPF与WinForm界面的渲染方式截然不同(我在上一篇文章中有具体阐述),所以呈现方式也必然是分开的,也就造成WinForm控件必然在所有WPF控件上方置顶。假如我们这时使用了诸如flyout、modal、popup之类需要置顶的WPF控件,就会出现一种奇怪的现象,WinForm控件会将这类popu

解决获取WPF控件句柄问题:在WPF中承载WinForm控件

基于需求,我需要获取WPF的某控件的句柄。 搜索过后得到一些关于HwndSource的代码示例,然而通过尝试发现,此类代码获取的只是Window的句柄,而我需要的是UserControl的句柄。事实上,获取WPF UserControl的句柄是根本不可能的。大家应该都知道,要获取WinForm控件的句柄相当简单,是因为WinForm是通过GDI+来渲染界面,每个控件都拥有自己的句柄,但是WPF的界

GRPC琐碎

记录一些grpc使用过程中的体验、坑及技巧,Server及Client语言都为C#。 体验: 搭建简单,一次尝试即成功。 分布式好伙伴 技巧 server意外掉线后重新上线,client将会自动重连,不需要自己处理。 利用streaming功能,可快速实现推送服务器,即观察者模式。之前有做过利用rabbitmq消息队列中间件实现消息推送,或许可以用grpc streaming替代,无论性能、复杂

cs文件推送到git-server中文乱码问题

昨天碰到一个问题,某个cs文件push到git server后,里面的所有中文(包括注释和字符串)全都变成了乱码,猜测是编码问题导致,于是将其编码格式从’uft8’改成了’utf8-bom’,再push上去就正常了。BOM(Byte-Order Mark,字节序标记)是Unicode码点U+FEFF。详情参考典型乱码。 至于怎么改编码格式,如果是用vscode,点击右下角编码格式信息就能切换。如果

利用Unity进行AOP编程: 策略注入(三)

前言上一篇文章里,给大家介绍的利用Unity拦截进行编码实战,那么本编文章将给大家演示一些更高级灵活的使用。 策略注入首先我们先展示一段利用策略添加拦截行为的代码,然后我们再来分析。1234567891011121314151617181920212223242526272829303132container.RegisterType<ITenantStore, TenantStore&gt

web api 自定义返回对象的字段

由于前端的需求,我们需要自定义返回对象的字段,以减少不必要的网络开销。 假设我们有这样一个类12345678910111213public class Foo{ public string A { get; set; } public int B { get; set; } public bool C { get; se

利用Unity进行AOP编程: 拦截器实战(二)

前言上一篇文章里,我们介绍了Unity拦截器的基本概念,本编文章我们将利用它来进行实战。 在Unity Container中配置默认情况下,Unity Container不支持拦截器,因此我们得显式地将其加入到项目中,当然,首先得通过NuGet安装扩展包。12345using Microsoft.Practices.Unity.InterceptionExtension;...IUnityCont

利用Unity进行AOP编程: 概念介绍(一)

前言在读这篇文章之前,建议大家要对Unity容器进行依赖注入有一定了解与实践,并且了解一些常用的设计模式。这里我们主要介绍如何利用Unity进行AOP编程。面向 Aspect 的编程(AOP)是一种新的编程技术,它允许程序员对 横切关系(crosscutting concerns)(跨越典型职责界限的行为,例如日志记录)进行模块化。 横切关注点(Crosscutting Concerns)传统的程