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

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

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

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

Postgresql select count性能与Vacuum

最近在开发过程中遇到一个postgresql的问题,某张表大多数时候只有insert及select操作,该表建立了一个非聚集索引,但是通过该索引进行select count操作时,时间长达数十秒。通过查找资料,我们已经定位到了问题所在,这次我们就谈谈Postgresql的元组与vacuum机制。 Dead tuples(死元组)postgresql的表的一行数据通常被称为元组(tuple),由于表

Asp.net core 2 如何设置SnakeCase形式的QueryString参数

我在项目中设计Web Api规范时,决定将QueryString参数命名使用SnakeCase的形式,这就带来一个问题,SnakeCase与C#的通用参数命名格式有所冲突,举个例子: 12345678910111213141516171819202122public class SearchQuery{ public int Value_type { get; set;&#

ASP.NET core 2.1 API 认证与授权(1 - 使用JWT)

最近在为API重构认证与授权机制。之前在做api认证时,使用的是自己定义的Bearer token,不是很规范,因此决定使用JWT进行重构,记录一下相关知识点。 Authentication和Authorization首先,我们需要理清一下认证(Authentication)与授权(Authorization)的关系,否则在理解与查找asp.net core认证授权资料时会非常困惑,下面我会统一使

开发一个dotnet core站点安装器

最近接到一个任务,需要为系统开发一个安装包。我们的项目包含一个pg数据库,两个dotnetcore站点,一个桌面应用程序。大家知道,在windows平台上部署站点时,需要很多繁琐的手动操作,比如开启IIS,部署应用,修改配置,修改环境变量等等。但在给客户部署演示系统时,就显得很低效,需要实施过去帮忙,很多客户都是没有能力独自完成部署,因此就有了傻瓜式安装包的需求。 之前这些工作都是手动操作,虽然我

我为何还没有放弃C#

今天看到知乎的一个推送:我是不是应该放弃C#,看完各种答案有一些感触。 浏览之下发现除了少数几个情绪化的回答,大家的回答还是很客观的,总结一下,大家都不推荐刚毕业的新手去学习,原因主要是两点: 市场的需求量小,同时真正需求的公司发现从业的开发者又少,尤其是靠谱的开发者。 微软长期的政治不正确。 事实上,如果让我给一些新人推荐,我也不会推荐C#,那么我为什么还没有放弃C#,很简单,因为我克服了第

基于cake-build的dotnet自动化发布

最近公司项目开发完成,准备进行给客户部署试用,因此为项目的发布、打包耗费了心神。我们的系统包含三大项目:Restful Api、web管理站点以及一个桌面客户端,那么在发布新版本时,必须手动release三个项目,并且更改3个配置文件,然后复制到某个目录中。操作简单,但是一旦发生频繁的发布,不可避免得会出现疲劳、抗拒等等负面情绪…因此自动化这一工作成了刚需。 由于公司的资源限制以及团队规模较小,没

2017年码上那些事

2017年将要过去,截至元旦,最后一位90后也已经成年了,而我,也由一个翩翩少年,逐渐成为更加成熟的青年,就酱。伤感完毕,还得是一年一度的年终总结,行己勤劝须自省。 新的工作今年年初,我以一份新的工作开始新的一年,现在回顾,感觉非常满意。工作内容上,得到了一定的决策权,包括进度管理、项目管理、技术框架的抉择,也通过与其他各部门的工作交流,在沟通能力与技巧上得到了一定的提升。待遇上,老板对我很宽容,

Docker中部署aspnet core应用

准备将asp.net core 2.0应用部署到docker中,将过程予以记录。Docker的介绍和安装不再赘述,我所用平台是Ubuntu 16.04。附安装手册。 准备应用代码首先我们需要准备应用代码及Dockerfile,并且确保dotnet run可运行,示例代码结构为:12345- Myapp - Myapp.Core - Myapp.Api - Myapp.sln