随笔分类 - Alex Song
摘要:最近在网上看到一篇很好的文章, 讨论如何安全有效的引发事件.也许你不一定要用到下面相同的解决方案, 但是至少你应该知道在引发事件时候需要考虑的问题.引发事件的问题引发事件是一个非常容易的事情, 但是的确也有它的误区. 让我们举个例子. 假设我们写个消息接收器, 每当我们收到一个新消息, 我们引发一个包含了新消息的事件 MessageReceived.安装我们通常的方法,就是:public class MessageReceivedEventArgs : EventArgs{ // 接收到的消息 public string Message { get; private set; } ...
阅读全文
摘要:首先我想解释一下标题中两个关键字: "快乐", "ASP.NET程序员".有的人想成为一个"杰出"的程序员, 或者"资深"的程序员, 简单来说就是"大牛"级的人物 -- 但是本文不是针对此种发展方向不是说我不鼓励大家朝这方向走, 而是对我而言我更看重"快乐"的本身. -- 而且除非你是天才导致"杰出"或者"资深"是同时需要正确的态度和漫长的过程.那么为什么单单谈"ASP.NET程序员" -- 这是对我本人的写照, 也
阅读全文
摘要:最近的一个项目用到很多不同结构的XML文件. 于是就在网上搜索了一些文章, 结合实际遇到的问题写成自己要的代码.既然已经获取了这方面的知识,不敢独取, 拿出来共享. 这个也还不是很成熟, 希望大家共同完善, 提出宝贵意见, 共同进步.目标基于已经有的XML文件,例如:<root> <books> <book> <author>John Savacki</author> <title>E.G.Title</title> <price>20.50</price> </book>
阅读全文
摘要:在CodePlex 上经常可以发现一些好东西, 关键是有没有时间去淘宝.前几天就发现一个, 并且在实际工作中使用了:* DoddleReport你有没有被要求基于来自数据库的数据,生成一个报表? 我们时不时会有类似的需求.DoddleReport极大的简化了这方面的工作量.首先你需要下载它的Dll 文件, 可以到 codeplex 中得到http://doddlereport.codeplex.com/或者直接从这里下载: cnblogs下载地址得到的是一样的文件, 将它解压到你的一个asp.net 网站的bin目录下. 你就可以引用Doddle的类了.我们来模拟一个场景(本场景是根据Dodd
阅读全文
摘要:延迟加载(lazy loading) 设计模式是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据(读取属性值)的时候,才真正执行数据加载操作. 有效使用它可以大大提高系统性能. 为了便于理解, 我们来建立一个场景, 假设我们要构造一个Hero(英雄) 类, 每个Hero 有自己的名字和(SpecialSkill)特殊技能. 建模 这是一种建立的方法: 运行程序后输出如下, ...
阅读全文
摘要:线程可以使你的项目运行得更加的流畅.什么是线程呢?线程(thread)是程序执行流的最小单元, 是程序中一个单一的顺序控制流程. 每个程序最少有一个线程, 那就是程序本身.在C#中, 你可以使用 System.Threading 提供的类,接口和方法实现线程的所有操作.单线程操作想象着你走进快餐店, 大叫一声"来碗兰州拉面", 然后就坐在饭桌上等. 当厨师听到你的要求时,他就开始做兰州拉面了. 理论上讲, 当你叫了以后, 厨师就已经收到了命令.用代码可以这样表达:static void Main(string[] args){ string name = "兰州拉
阅读全文
摘要:我知道很多人都讨论过这个问题, 多我一个不多, 少我一个不少.最近有人又问到这个问题, 所以想再说说. 万丈高楼平地起, 地基很重要. 懂了的人不要嫌罗嗦, 欢迎补充或者纠正.从起源/定义说起Struct 从C 的时代就已经有了(向丹尼斯.里奇致敬), 它是Structure 的缩写 -- 就是结构的意思. 它是一种最初级的数据结构, 它包含一到多个相同类型或不同类型的值或者变量. 它就像是一个存储数据的"包".Class(类) 是有了面向对象概念之后才有的, 它"是创建对象的蓝图,描述了所创建的对象共同的属性和方法".从它们被创立的用途可以看出Clas
阅读全文
摘要:背景前几天有同事问到我一个简单的功能, 就是当你使用枚举时如何给每个一元素增加描述字符串并且可以很容易的读取出来.比如有一个枚举类型是列出对一个问题给出的选项(例如: 同意?不同意?中立?):当选择不同的答案时, 希望得到一些描述性的语句比方说:1. "强烈的反对"2. "反对"3. "持中立观点"4. "同意"5. "完全的同意"当然你可以建立一个数据库表格,存放这些信息, 但是我想起几年前,我...
阅读全文
摘要:很多人都知道使用 Webmatrix -- Microsoft 推出的最新武器可以很容易帮助你在windows下设置安装最常用的php, asp.net 开源网络应用如:wordpress, DNN, Umbraco, mojoportal, Joomla 等。同时Webmatrix支持的Razor让你可以很快的建立小型动态的.net网站,其实Webmatrix 还有一个卖点就是它有Helper库,熟悉了解这些Helper才可能真正的使用Webmatrix来建立具有应用价值的网站。今天我们来看看图表的库: Chart。如果你以前没有接触过Webmatrix,建议你先快速阅读下面的文章:WebM
阅读全文
摘要:今天上网,又看到列车追尾。我是一个很少发表任何攻击性言论的人,不过看到这种不断重复的低级而又影响重大的错误,实在是想说两句。在新闻上看到有关领导指出10号线列车与“7·23事故”列车所采用的信号系统同为卡斯柯公司生产,象我这种喜欢刨根问底的人,自然就会想上上卡斯柯公司的网站看看。Google和百度返回的搜索第一条同为www.casco.com.cn/;Google的第二条是:www.casco.com.cn/about/index.aspx。 -- 这是一个asp.net的网站,至少一部分是。然后我试图打开这个网站, 结果报错…说无法连接到服务器之类的…嗯,让我们再回到这个公司的名字
阅读全文
摘要:当对字符串进行操作时,我们经常要删除或者是替换一部分子字符串。 Remove() 和 Replace() 两个函数在这种情况就派上用场了。Remove() – 删除一部分子字符串我们都知道 substring 可以返回字符串的一部分。 当我们想保留字符串中的一部分substring丢弃其它部分时,就可以使用substring,当我们想删除字符串的一部分并保留其它部分时,就使用Remove。Remove 有两种形式:Remove(int startIndex)删除此字符串中从指定位置到最后位置的所有字符。Remove(int startIndex, int length)从此实例中的指定位置开始
阅读全文
摘要:很多时候处理字符串数据,比如从文件中读取或者存入 - 我们可能需要加入分隔符(如CSV文件中的逗号),或使用一个分隔符来合并字符串序列。很多人都知道使用split()的方法,但使用与其对应的Join()方法的人就没有那么多。今天,让我们看看它们的应用。Split() – 根据分隔符切割字符串成几部分分割符可以是以下几种形式中的一种:只有一个字符的数组:比方对于“A,B,C,D,E,F” 可以使用 ‘,’ 或者 new [] { ‘,’ } 有多个字符的数组:比方对于“A,B-C,D*E,F”使用 new [] { ‘,’ ‘-‘ ‘*’ } :只有一个字符串的数组:比方对于 “A=>B=
阅读全文
摘要:在asp.net中实现captcha的文章,网上已经有很多,解决方案也很成熟:1. 一个用vb写的开源控件:http://www.codeproject.com/KB/custom-controls/CaptchaControl.aspx2. 在 CSharp 中实现captcha控件,基本思想是用bitmap 将文字“画”出来,再用HatchBrush加一些点点。http://www.codeproject.com/KB/aspnet/CaptchaImage.aspx3. 下面这个和第一个是同一个作者,但是运用Csharp实现:http://captcha.codeplex.com/Sou
阅读全文
摘要:今年一月份,我发布了本系列第一篇ASP.NET 快乐建站系列 -- 1. 十五分钟建立精美网站,(汗!七个月过去了…)我没有继续这个系列的原因是Sitefinity发布了最新的版本 Sitefinity 4, 原想等待这个最新平台。好消息是他们的确也提供免费Sitefinity Community Edition, 不幸的是当我尝试用 Sitefinity 4进行开发时,遇到了很多问题。Sitefinity 的确是一个很好的CMS平台,优势是后台管理界面友好,集成了他们母公司自己的强大产品 Rad controls, 在开发中Rad Controls 可以帮助你省很多时间,至于Rad Cont
阅读全文
摘要:今天,我们将着眼于五个用于序列的聚合运算。很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果。Enumerable 静态类的LINQ扩展方法可以做到这一点 。就像之前大多数的LINQ扩展方法一样,这些是基于IEnumerable <TSource>序列的操作。SUM() - 计算整个序列的总和它有两种形式:SUM( )计算整个序列的总值。源类型必须是以下类型之一: int,long,double,decimal,single 或这些类型的可空变种(int?, long?, double?…) 。Sum(Func<TSource, X> p
阅读全文
摘要:概要WebMatrix对于快速建站的确很有帮助,我曾经用它建立基于 Wordpress, Joomla, DNN 等平台的项目,省却了很多设置上的麻烦,只需要傻瓜式的点击下一步和输入一些基本信息即可。文本介绍如何在WebMatrix项目中使用和读取 SQL Server CE 数据库。如果你第一次听说WebMatrix可以参考本系列的前三篇文章。正文1. 打开WebMatrix 选择 site from Template, 再选择 Starter Site 模板。在这里我给网站命名为Starter Site. 然后点击下方的Files, 你可以看到网站的初始结构。2. 点击Databases,
阅读全文
摘要:前段时间忙于各处奔波没有写博,今天想和大家再来看看一个奇妙的函数。 首先假设你不得不处理一些已有的代码,里面用到了nullable(可空值类型)的变量, 你必须要用这变量与不可空变量比较. 使用 <, >, <=, >= 来比较 nullable 值 看下面的代码: 1: int? x = null; 2: 3: if (x < 100) 4: { ...
阅读全文
摘要:谢谢大家之前的关注和热情的回复,本文将继续探讨在System.Linq 下的一些容易被人忽视却可能对你有大帮助的函数。Empty 静态方法有多少次你不得不从一个方法返回一个空集合(无论是由于错误的条件,或者没有项目存在),并创建了一个空数组或列表? 让我们看一个简单的POCO 类,它包含了两个银行帐户转帐的信息: public class Transfer { public string FromAccount { get; set; } public string ToAccount { get; set; } public double Amount { get; set; } }现在,比
阅读全文
摘要:那日,我与一友人漫步。他资质过人,少言寡欲, 刚二十出头。他经常问我应该怎么走程序员这条路。我不是什么大师,但仗键(盘)游走江湖已有数十载,吃过不少苦头。自以为不敢说到达了洪七公那种级别,但离江南七怪应该距离不远了。(注:洪七公和江南七怪都是郭靖的师父)我闭目沉思,悟空(七龙珠版),青铜圣斗士,健次郎(北斗神拳),郭靖(射雕),段誉和乔峰(天龙八部)等历史著名斗士冲入我的空间,我提指在 iphon...
阅读全文
摘要:今天我们来看看5种使用Linq函数联接序列的方法,这5种方法可以归入下列两类:同类的联接Concat() Union()不同类的联接Zip() Join() GroupJoin()Concat() – 串联序列最简单的序列合并,concat仅仅是将第二个序列接在第一个序列后面, 注意:返回的序列并没有改变原来元素的顺序: var healthFoods = new List<string> { "fruits", "vegetables", "grains", "proteins" }; var myF
阅读全文