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

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

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

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

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

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

利用反射映射数据库对象(二)

在上一篇文章里,我们里用反射,将数据库的查询结果集映射到对象中,以减少代码。现在我们就利用相同的原理来完成更新记录的操作。 更新记录时,我们需要知道表名,主键名,主键值,以及需要更新的字段信息。最初阶段,这些信息我们只要通过参数传递到方法中。1234public int Update(string tableName, string primaryKeyName, object entity)&#

web api 对[serialiable]特性的对象序列化问题

web api 2 中, 假如返回对象加了[serializable]特性,返回的json、xml数据都是包含对象的私有变量,而非公有属性,如:12345678910111213141516171819{ "Total": 1, "Data": [ { "_ticketnumber": "

web api 2 - 自定义help page的返回类型

当我们用HttpMessageResponse或者IHttpActionResult作为返回api的返回类型时,帮助页面的返回类型相应得也变成了HttpMessageResponse或者IHttpActionResult,而这不是我们所期望的Product、User等实际的返回实体。幸运的是,这是可自定义的, 简单得我都不好意思讲。 方法一(推荐)为方法添加一个属性[ResponseType(ty

利用反射映射数据库对象

12345678910111213141516171819202122232425262728public IEnumerable<User> GetUsers(){ var conn = ""; using (var sqlConnection = new SqlConnection(conn)) { using