- 博客(45)
- 资源 (9)
- 收藏
- 关注
翻译 ASP.NET Web API :Web宿主
上一节描述了API的整个运行框架,即分为三层hosting、message handler pipeline 和 controller handling。此节讲其中一个宿主,WebHost 寄宿在asp.net 传统管道上。Routing(路由)在asp.net平台,路由是一般由RouteTables.Routes静态属性添加的,类型是RouteCollection,例如下面的MVC模
2014-03-16 13:53:54 4404
翻译 ASP.NET Web API 运行框架
简介本文主要概述下ASP.NET Web API的运行框架,即从接收到一个HttpRequest到相应的过程。运行框架API的框架主要如下图所示,主要由3层组成:hosting(宿主)、message handler(消息处理管道)和controller handler(控制器处理器) hosting 宿主最底层负责web api的宿主,例如这个接口
2014-03-16 13:48:41 3612
原创 easyui plugin —— etreegrid:CRUD Treegrid
昨天写了一个ko+easyui的同样的实现,感觉写的太乱,用起来十分麻烦,于是今天照着edatagrid,写了一个etreegrid,这样再用ko绑定就方便多了。使用很简单,$(tableId).etreegrid({idField:''parentIdField:'',treeField:'',saveUrl:'',deleteUrl:''});还支持一些事件,onSave,onBefo
2013-11-21 15:15:37 5478 1
原创 knockoutjs + easyui.treegrid 可编辑的自定义绑定插件
目前仅支持URL的CRUD。不需要的话可以却掉相关代码,把treegrid的data直接赋值给viewModel,然后用ko提交整个data1、支持双击编辑2、单击Cell,自动保存编辑。3、4个功能按钮。 插件源码:ko.bindingHandlers.etreegrid = { editing: false, editIndex: 0, in
2013-11-20 16:28:48 9138
原创 【经验谈】XmlSerializer的坑
XmlSerializer我想现在用的人可能不多了,大家都在用Json。我现在所在的公司依然在用,所以发现了这个坑。当然这个坑存在很久了只是没用过所以才发现。事情是这样的,测试那边说系统偶尔会报找不到 xxxx.XmlSerizlizers 的引用,File Not Found的异常,几率不高。但是我百般寻找发现项目了根本就没有这个dll,为什么会找这个dll呢?
2013-09-04 12:43:37 3031 2
原创 如何安装ArchLinux
本文基于ArchLinux(https://www.archlinux.org/)Current Release: 2013.08.01的ISO写的安装教程!ISO下载地址:http://mirrors.163.com/archlinux/iso/2013.08.01/archlinux-2013.08.01-dual.iso1、分区cfdisk·新
2013-08-24 23:29:16 11032 2
翻译 什么是Mocking framework?它有什么用?
今天我想讲下关于mocking frameworks,并且解释下他为什么有用处。为此我首先需要假设一个场景,我们将测试一个程序的功能性。我将给你们展示用和不用mocking framework两种测试方法。
2013-08-16 13:50:34 4757
原创 从抽象谈起(三):AOP编程和ASP.NET MVC
AOP(Aspect oriented programming)面向切面编程。说成切面不容易理解,代码哪里有切面?又不是三维物体。概念不管,我们从其思想来理解这个名词吧。 AOP的主要思想是把相同、相似的并且零散的逻辑抽离出来,统一处理;这样不仅维护起来方便,也让代码更加关注自己本身,清晰明了。比如我们常见的权限检查、日志记录、异常处理等都是散乱在系统各个地方,比如发表一篇文章的代码:
2013-08-15 14:44:55 3488
原创 从抽象谈起(二):观察者模式与回调
观察者模式又叫发布订阅模式,有订阅者和发布者;发布者可以包含了多个订阅者订阅的事件,一旦发布者执行,会执行所有的订阅者订阅的事件。我觉得这么讲还是很迷糊。其实就是说“发布者”是一段上层代码,他知道他所需要执行的过程中会发生一些事情,而这些事情具体逻辑自己又不知道,就算知道所有的逻辑,要用条件分支判断执行,这总归的是不好的,所以才有了这个模式。这是一个非常棒的模式。他使得发布者的代码保持不变。而订阅
2013-06-30 16:33:53 2927 1
原创 从抽象谈起(一):工厂模式与策略模式
抽象的意思是,抽取不同事物的共性而成的一种新事物。为什么用事物一词?因为抽象未必抽的是物,也可能是事。抽象是编程的重要思想之一,其主要目的是为了减少代码重复,使其更易维护。抽象就是让变化的事物得到一致的处理方式。抽象是如何应用的?我们怎么去抽象?当我们面临有共同特性的事物时,需要对它们统一处理,那么就需要抽象。而这种共性的事物在实际项目中会经常碰到。而且在我们使用的各种框架
2013-06-28 12:11:04 3002
原创 读书笔记:DBMS数据库管理系统预览
查询编译器 (Query compiler)查询编译器对查询进行 分析 和 优化。他将查询翻译成“查询计划(query plan)”,查询计划主要是在 数据上执行一系列的操作。主要分为三个部分:1、查询分析器(query parser):将SQL分析为一颗树结构。2、查询预处理器(query preprocessor):对查询进行语义检查,并进行某些树结构的转换,将分析树转换为表示最初
2013-05-31 18:17:14 2719
原创 NodeJs实现可续传的上传协议(tus resumable upload protocol)
最近用Nodejs实现了一个Tus的可续传的上传协议,中间断断续续改了几次。代码地址是:https://github.com/maddemon/tus-demo只是一个Demo,所以代码并不完整,比如异常捕获什么的,不过加上也就句话的事,只是我想实现核心代码就够了,毕竟不是开发真正的项目。Tus协议地址http://www.tus.io/protocols/resumable-up
2013-05-30 14:44:34 4457
原创 SQL SERVER BI 入门:(2) Analysis Service 应用
上篇文章主要介绍了BI的一些概念,主要是原始库、数据仓库数据库、维度表、事实表和相关的导入工作。数据导入之后,就是分析、统计和挖掘,这是这些底层的工作全部是由微软的Analysis Service帮我们做好了,我们学会如何使用,便能做到“看起来很厉害的样子”了。打开SQLSERVER Data Tools,就可以新建Analysis项目。如图1:主要分为Data Sources,Dat
2012-11-30 16:04:43 10097 1
原创 SQL SERVER BI 入门:(1)安装与基础概念
SQL SERVER BI 入门或许有很多同学和我一样,只是听说过BI这个词汇,但如果工作不涉及到数据统计分析或数据挖掘,很难接触这方面的知识。我以前一直向往能在这方面有所历练,恰巧最近公司需要做数据统计和分析的工作,这份工作我主动提出来做,荣幸之至。写这篇文章也是对我最近工作的总结。 下载并安装我工作选用的SqlServer 2008 R2,由于在自己电脑上写博客,所以我这里尝试
2012-10-21 00:42:41 11447
原创 HTML5 Canvas编写五彩连珠(6):试玩
上节中讲了如何寻路,在和朋友们讨论时都反应有时走的不太对,绕远路了,其实代码主要是大方向的判断 比如目标在右上,那应该是先右还是先上 这个并没有做处理,如果这个做了处理,效果会更好一些,但也难免会走弯路。 贪心就是这样,不是最优,接近最优。也希望其他的同学有意见的可以讨论下。我这也只是个人想法。 既然可以走动了,那就可以判断是否可以消除同样颜色的行、列或斜线了。只要>=5个同样的色球,就
2012-03-19 22:55:45 3333 1
原创 HTML5 Canvas编写五彩连珠(5):寻路
上节主要做了动画的实现,感觉还是比较有意思的。游戏的性能好不好,重绘应该比较重要吧,菜鸟瞎想了下 呵呵。本节就要做对泡泡的操作,上节后面提到了点击泡泡后泡泡要做出闪动响应,那我们我们如何获得被点击了哪个泡泡呢?其实Canvas也是html的一个元素而已,所以我们可以给Canvas加click事件。来查看click时鼠标的坐标,这样就等得出点击了map的哪个位置。我们给game增加一个c
2012-03-19 09:25:39 4436
原创 HTML5 Canvas编写五彩连珠(4):动画
上一节中,我们留下了一个flyin的方法没有介绍,这里想单独写一篇html5的动画实现。在第二节中我们实现了画一个泡泡,并且成功的擦除了泡泡,但当时也说了别把棋盘的线给擦掉了,所以做了偏移量。所以说html5 Canvas还是低级, 没有图层的概念,擦掉再想补回来,怎么补? 答案就是重绘。 没错,整个Canvas重绘,这样就能不用担心补哪里了。虽然带来了性能的损失,但绝对减少的编码难度。而
2012-03-18 14:45:13 3257
原创 HTML5 Canvas编写五彩连珠(3):设计
在看了几篇Canvas相关的文章后,发现前两节的代码实现还是有问题,因为知道的少,所以只能在自己已知的知识上做实现。不过还好,这是一个发现的过程,也是一个纠错和完善的过程。我第一次尝试一边学习一遍写博客,我想这也有助我的学习,可以把知识掌握的牢固些,起码忘的慢一些吧:)。 前两节学习了几个基本绘制的方法,lineTo moveTo和arc,也了解坐标的情况,但写的比较傻,只是单纯的实现。 比
2012-03-17 18:04:07 4863 6
原创 HTML5 Canvas编写五彩连珠(2):画图
好吧,新的一天来了,我才开始动笔,真够懒得:)昨天说了今天我们要画一个球,在canvas上。好吧,这是游戏的入门的第一步,只是昨天没写完,所以。。。 var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d");
2012-03-11 16:34:48 3005
原创 HTML5 Canvas编写五彩连珠(1):预览
HTML5推出也有很长一段时间了,一直没有学习过,闲来无事学习开发个游戏吧。 用javascript+canvas编写一个 五彩连珠的游戏。Canvas 画布标签,很简单和普通的tag没区别。 关键在于js对他的操作。先看个示例代码: var canvas = document.getElementById("canvas"); var ctx = canvas.getC
2012-03-10 20:53:23 2296 2
原创 .NET 4.0的dynamic特性和协变特性应用一例
今天遇到了一个编码问题,很有意思如果T1,T2,T3 都有相同的属性,而且处理这些属性的逻辑都一样,但他们之间没有关系,该怎么办?答案如下:namespace ConsoleApplication2{ public class T1 { public string Name { get; set; } public int Count { get; set; } }
2012-02-28 14:18:44 886
原创 Trie树-脏词过滤应用
Trie树,又称字符查找树、前缀树,主要用于字符匹配(详见http://en.wikipedia.org/wiki/Trie)。适合做关键词查找,比如查找文章中的关键字然后给他们加链接。 当然对脏词的过滤应用也是样,只是把替换连接的工作换成了替换字符。当前的代码还只是进行简单的替换,并没有做一些字符的处理,比如“昨天见到你妈,逼我要买房”,这本身不是脏词,因为有逗号,所以程序里要增加字符的范围
2011-11-25 13:40:22 3982 8
原创 带你走进缓存世界(6):共享缓存
回顾之前的章节,我们大致讲了下缓存的基本概念、原理、策略和常用方法。可能会有朋友会说,访问量小根本不需要缓存,徒增开发的复杂度,访问量大的话本地缓存也没意义。其实这话说的也不无道理,当然我们不能把这句话看成绝对的话,不然什么话都成废话了:),其实我们研究学习的任何技术都不会白学的,每种技术都有他的使用范畴,只是当我们面对新的层次时,需要改变,需要重新学习。我们之前讲的每篇都非常有用,本地缓存也非常
2011-11-01 21:09:29 5621
原创 ASP.NET MVC3 Custom FormAuthorize
我们开发web系统,用户身份验证是最常见不过的。最简单的办法就是定一个基类,基类里面有判断Cookie或Session是否存在,然后决定是否跳转。今天就利用MVC的特性来一个不一样的验证方式。 public class CustomAuthorizeAttribute : AuthorizeAttribute { protected override boo
2011-10-19 10:00:06 2998 6
原创 ASP.NET MVC3 Custom ErrorPages 500/404
Global.aspx.cs public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new Cus
2011-10-08 11:38:27 1760 2
原创 带你走进缓存世界(5):一显身手
我想朋友们对缓存已经有一个大致的认识了。从一些朋友的评论中,我了解到有些人也是基于理解,对应用来说可能还是有点力不从心。今天我们就实际案例来分析下缓存的具体应用,就拿博客来说吧。 先分析下博客的网站的特点:页面简单(结构一致)、多用户、多文章、多评论、访问量大等
2011-08-08 15:46:32 5623 7
原创 带你走进缓存世界(4):缓存之缓
缓存二字,从字面上分为两块:“缓”与“存”。上节我们提到的缓存原理,其实是在讲的一个“存”字,如何存取。大致回顾下是key对应的hashcode,根据hashcode作为数组下标来存取,因为存在hash冲突,速度虽达不到O(1),但也是非常之快。今天就说下“缓”的策略。
2011-08-01 14:31:06 10590 17
原创 带你走进缓存世界(3):缓存原理
上次我们了解了缓存的基本使用技能,也知道为什么要用缓存,但只是单单谈到了缓存的优势的一点:就是缓存避免的重复性的耗时操作,提高系统性能。其实,如果缓存使用不当,会适得其反。为了避免这种情况的发生,我们更适合了解下缓存的原理。虽然缓存不仅仅是指缓存在内存里的数据,但本节还是以内存为
2011-07-27 14:37:59 3912 5
原创 带你走进缓存世界(2):缓存入门
昨天在群里有个朋友问,如何使用数据库的临时表。问其原因,原来是他想把查询的结果导出excel,但是苦于查询结果是100个里面随机挑出50个,所以他想把查询结果放在临时表里,导出的时候查询临时表。这个方法不是不可取,其实更好的办法就是把查询的结果DataTable,放到缓存里,导出
2011-07-19 14:21:11 3813 2
原创 带你走进缓存世界(1):漫谈缓存
什么是缓存?对于刚入门的朋友来说可能比较模糊,或是只知道是个提高性能的东东。我按我的理解说一下:缓存的目的就是为了提高性能,而把一些数据存放在内存里,方便程序反复使用,所以缓存就是放在内存里的那些数据。那么我们在开发程序时,比如定义了一个静态变量,这个静态变量的值一般都会被一直存
2011-07-09 16:37:44 4540 15
原创 CMS系统模板引擎设计(6):Field的类的设计
Field的意思是字段,我们在展示一条数据的时候总是要展示具体的某些字段,有时候是一条数据,有时候是个循环。一条数据的时候很好处理,我们把数据准备好,然后替换相关的[field]标签就行了。当循环输出的时候,其实只需要调用显示一条数据的方法就行了。Field的标签格式大概是这样:[field:PostTime length=10 dateFormat="yyyy-MM-dd H
2011-07-02 20:01:47 1759 1
原创 CMS系统模板引擎设计(5):Label应用初探
话说上节听的很郁闷,讲的也郁闷,整个系列没有详细的Code,所以都有点懵。其实仔细看之前的几节应该还是能够理解整个思路的。 我在这里再整理一遍: 用户访问URL后 ->根据所有Page的URL规则(urlpattern)获取当前Page,然后再根据page的Template,Find出所有的Label(通过反射),然后遍历这些Label,把得到的数据的Html替换掉Label本身的标签代码
2011-07-02 20:00:00 3135
原创 CMS系统模板引擎设计(4):Parameter类设计
紧接上回,说到Parameter和Field了。在Label初始化的时候,同时也要对ParameterCollection和FiledCollection初始化。在上节有个属性是这样写的ArticleId=Url(articleid),意思是ArticleId 的值是url的query里的articleid的参数的值。而且还有个 DateFormat="yyyy年MM月dd日"。所以可以看
2011-07-02 19:58:17 3015
原创 CMS系统模版引擎设计(3):Label基类的设计
上节讲了页面的整个生产流程,大家都期待第三篇,也就是生产的核心内容——Label的替换。说实话,我很有压力啊:)一个人一个实现思路,所以...可能你不能接受。我的标签分为2种,一种是配置变量标签(就是站点和系统的Config),用 %变量名%表示,在初始化Labels之前是要执行替换的。另外一种就是数据调用的Label咯。看下风格://简单的循环列表{Article:List
2011-07-02 19:57:28 3597
原创 CMS系统模版引擎设计(2):页面生产流程
上节我们介绍了下基本的几个类。下面我们来讲下本CMS系统的运行机制。一个Url请求过来,我们的CMS系统就要对URL进行分析,知道其Domain属于哪个Site,Url符合哪个Page的访问规则,然后再把Page的Template里的Label进行行替换。如何拦截Url请求呢? 那就是HttpModule。自定义一个CMSHttpModule:IHttpModule,在config
2011-07-02 19:53:57 4413
原创 CMS系统模版引擎设计(1):基础类型
写博文写教程性质的内容,大家比较喜欢,具体的项目设计方案关注的人比较少,而且思路也不一定说的清楚,本身写博文就比较辛苦,作者再偷点懒,那基本上就是一篇废文。尽管如此,我还是想写一下我做过的一个项目的模块设计——CMS的模版引擎。呵呵,叫成“引擎”就是夺人眼球而已。其实就是一个标签解释的过程模块。做过网站的朋友都对CMS很熟悉,有的朋友也接触过N多CMS系统,国内比较流行的有dedeCMS,
2011-07-02 19:52:01 5918
原创 ASP.NET进阶(8):HttpModule和HttpApplication
前面三节讲了控件的构造、呈现和数据绑定,我想该差不多了。本想讲一个自定义控件来终结控件部分,但是我个人不太喜欢控件这些东西,所以也就懒的写相关的内容,抱歉了。虽然我不喜欢使用控件,但我还是喜欢整个WebForm的设计。一个字:“太神了”。前面章节将Page生命周期的时候有朋友评论说内容太少了,今天开始就从来围绕生命周期的话,讲讲相关的内容吧。 IHttpModule是个什么东
2011-07-02 19:49:13 3880
原创 ASP.NET进阶(7):认清控件之DataBind
数据绑定,databind()是多么亲切的方法,我们每天很不能敲上几百遍。但是你有木有想过他是如何实现的?有木有!!!(咆哮体:)今天,我们拿Repeater来说说DataBind那些事儿。如果朋友你有看过我写的模版引擎里Label的初级应用的话,我在最后贴了一个List的Label的实现,其中有点意思的就是模仿Repeater。不过看没看过无所谓的。今天我们看看微软人家正儿八经的Re
2011-07-02 19:46:44 3401
原创 ASP.NET进阶(6):认清控件 之 Render
很久没写了,抱歉,呵呵。上节我们主要讲了Click的流程,这次主要来看HTML输出。假如让你写一个Button控件类,你如何设计这个类?他应该包含什么内容? OK!此类必须有个输出HTML的方法对吧?Render,还需要所包含的TagName、Value、Id、Name、Type、Class等等我们能想到的的的属性。这些具体的属性在类里设计成属性就行了,还有一些自
2011-07-02 19:41:52 2966
C# NPOI替换Word文档模板
2019-11-29
【原创】WPF版俄罗斯方块
2009-09-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人