摘要: 对外公开WEB接口时,对模型校验是常见的安全常识,常见的写法是在controller中判断ModelState.IsValid,以注册用户API为例。 Model: 打印校验失败的错误消息代码: Controller: 以上写法是在controller里进行校验,缺点是每个需要进行校验的contro 阅读全文
posted @ 2017-07-03 14:37 Mao先生 阅读(1133) 评论(0) 推荐(0) 编辑
摘要: 为了提升用户体验,一般我们采用ajax加载数据然后根据数据渲染html,渲染html可以使用前端渲染和服务器端渲染。 前端渲染 使用前端模版引擎或MVC框架,例如underscore.js的template或者是使用angular.js等框架,当然也可以不用任何框架自己拼接html。 后端渲染 如果 阅读全文
posted @ 2017-07-02 21:11 Mao先生 阅读(3158) 评论(1) 推荐(2) 编辑
摘要: 三年前写过基于ConcurrentQueue的异步队列,今天在整理代码的时候发现当时另外一种实现方式-使用BlockingCollection实现,这种方式目前依然在实际项目中使用。关于BlockingCollection的基本使用请查阅MSDN。源码实现 下面直接上代码:(代码已经放到了我的git 阅读全文
posted @ 2017-04-06 20:20 Mao先生 阅读(8117) 评论(4) 推荐(3) 编辑
摘要: 本篇文章不是入门帖,需要对python和爬虫领域有所了解。 爬虫又是另外一个领域,涉及的知识点比较多,不仅要熟悉web开发,有时候还涉及机器学习等知识,不过在python里一切变的简单,有许多第三方库来帮助我们实现。使用python编写爬虫首先要选择合适的抓取模块,最简单的功能就是能发送和处理请求, 阅读全文
posted @ 2016-12-01 21:48 Mao先生 阅读(7966) 评论(2) 推荐(1) 编辑
摘要: 最近几年在做项目过程中发现项目中出现的问题,一部分由于项目前期一些很基础的技术系统没有注意, 所以总结了项目开始搭建架构的时候应该注意的技术问题和技术框架的选型。 所有所谓的最佳实践只是参考,本文也不例外。 异常处理是程序最基本的问题,我见过最多的处理异常的方式,在业务层一个大的try catch) 阅读全文
posted @ 2016-08-31 22:39 Mao先生 阅读(1043) 评论(2) 推荐(0) 编辑
摘要: 本来想写一个网站优化的系列(前端到后端的数据库,垂直优化到分布式,后面会补上),但没有时间(借口),今天就总结一下前几天优化网站的过程。 网站优化重点在于找出出现性能问题的地方,往往是解决方案很简单,过程很艰辛。 先介绍一下场景:公司某网站产品的一个页面加载速度非常慢,完全加载完成大约8秒左右,要尽 阅读全文
posted @ 2015-07-12 12:12 Mao先生 阅读(2446) 评论(3) 推荐(4) 编辑
摘要: 本文是.Net中的并行编程第六篇,今天就介绍一些我在实际项目中的一些常用优化策略。 一、避免线程之间共享数据 避免线程之间共享数据主要是因为锁的问题,无论什么粒度的锁,最好的线程之间同步方式就是不加锁,这个地方主要措施就是找出数据之间的哪个地方需要共享数据和不需要共享数据的地方,再设计上避免多线程之间共享数据。 在以前做过的某项目,开始时设计的方案: ... 阅读全文
posted @ 2015-02-27 23:51 Mao先生 阅读(2976) 评论(10) 推荐(3) 编辑
摘要: 好的工具能帮我们提升开发效率,能用工具去做的事情尽量使用工具,让我们的开发尽量自动化是提升开发效率的关键因素。 很多人都用过Resharper,也被Resharper超多的快捷键所折服,本篇文章我总结出实际常用的几个Resharper快捷键。 1.生成方法存根:Ctrl+K+M(忘了这个快捷键是VS 阅读全文
posted @ 2014-11-15 17:07 Mao先生 阅读(2705) 评论(10) 推荐(4) 编辑
摘要: 自己在Excel整理了很多想写的话题,但苦于最近比较忙(其实这是借口)。。。。 上篇文章《.Net中的并行编程-4.实现高性能异步队列》介绍了异步队列的实现,本篇文章介绍我实际工作者遇到了处理多线程问题及基于异步队列底层数据结构的解决方案。 需求如下:1.提供数据服写入服务供上层应用调用,数据写入... 阅读全文
posted @ 2014-11-09 00:48 Mao先生 阅读(2375) 评论(2) 推荐(1) 编辑
摘要: 上文《.Net中的并行编程-3.ConcurrentQueue实现与分析》分析了ConcurrentQueue的实现,本章就基于ConcurrentQueue实现一个高性能的异步队列,该队列主要用于实时数据流的处理并简化多线程编程模型。设计该队列时考虑以下几点需求(需求来自公司的一个实际项目): 1 阅读全文
posted @ 2014-10-12 21:40 Mao先生 阅读(10520) 评论(19) 推荐(8) 编辑
摘要: 在上篇文章《.net中的并行编程-1.基础知识》中列出了在.net进行多核或并行编程中需要的基础知识,今天就来分析在基础知识树中一个比较简单常用的并发数据结构--.net类库中无锁栈的实现。 首先解释一下什么这里“无锁”的相关概念。 所谓无锁其实就是在普通栈的实现方式上使用了原子操作,原子操作的原理... 阅读全文
posted @ 2014-09-25 22:09 Mao先生 阅读(4070) 评论(2) 推荐(2) 编辑
摘要: 在上文《.Net中的并行编程-2.ConcurrentQueue的实现与分析》 中解释了无锁的相关概念,无独有偶BCL提供的ConcurrentQueue也是基于原子操作实现, 由于ConcurrentQueue的代码较多所以本文主要分析几个常用操作:入队(EnQueue) 、出队(TryDequ... 阅读全文
posted @ 2014-09-25 22:02 Mao先生 阅读(8634) 评论(0) 推荐(3) 编辑
摘要: 最近半年一直研究用.net进行并行程序的开发与设计,再研究的过程中颇有收获,所以画了一个图总结了一下并行编程的基础知识点,这些知识点是并行编程的基础,有助于我们编程高性能的程序,里面的某些结构实现机制也蕴含着丰富的软件设计思想,在后续的文章中我会对图里面提到某些数据结构或同步机制的源码进行分析。 ... 阅读全文
posted @ 2014-07-09 21:10 Mao先生 阅读(3497) 评论(14) 推荐(11) 编辑
摘要: 网络编程一直是经久不衰的话题,今天就网络编程里面一些问题做个总结,由于UDP相对于TCP的处理问题比较简单,所以这次总结的都是有关TCP的。 一、关于服务器最大TCP连接数问题。 很多人认为单台服务器的最大TCP连接数是65536也就是受限于服务器的端口的数量 如果服务器想开6W以上的TCP连接就要 阅读全文
posted @ 2014-04-23 12:56 Mao先生 阅读(1092) 评论(1) 推荐(2) 编辑
摘要: 我们知道并行编程模型两种:一种是基于消息式的,第二种是基于共享内存式的。 前段时间项目中遇到了第二种 使用多线程开发并行程序共享资源的问题 ,今天以实际案例出发对.net里的共享内存式的线程同步机制做个总结,由于某些类库的应用属于基础,所以本次不对基本使用做出讲解,基本使用 MSDN是最好的教程。 阅读全文
posted @ 2014-04-13 17:16 Mao先生 阅读(2901) 评论(3) 推荐(2) 编辑
摘要: FxCop是一款微软官方提供的.net平台代码审查工具,目的是检查我们编写的程序集的代码是否符合规范。FxCop默认提供的是微软默认的审查规则,而且该规则符合《Framework DesignGuidelines》里面大部分的设计规范。因为FxCop默认提供的规范比较严格所以对开发人员的要求也比较高 阅读全文
posted @ 2014-03-18 23:48 Mao先生 阅读(4437) 评论(1) 推荐(4) 编辑