摘要:
6、实用函数 ● 修剪字符串$('#id').val($.trim($('#someid').val()))● 遍历集合可能这样写:var anArray = ['one','two'];for(var n = 0; n 3;})console.log(arr);//结果是:4 5 6如果把grep的第三个参数显式地设置为true,结果怎样呢?var arr = [1, 2, 3, 4, 5, ...
阅读全文
posted @ 2014-08-20 22:37
Darren Ji
阅读(701)
推荐(0)
摘要:
5、动画特效 ● 自制折叠内容块 内容块如下 标题 近日,《体坛周报》记者马德兴在接受天津体育频道《体坛新视野》节目采访时表示自己对恒大[微博]的情况比较担忧,恒大统治力比上赛季下降了很多,恒大外援存在位置重叠的问题,客场不输给西悉尼流浪者就是一个可以接受的结果。该节目称恒大...
阅读全文
posted @ 2014-08-20 12:51
Darren Ji
阅读(629)
推荐(0)
摘要:
4、事件 ● 通过方法名给元素绑定事件:$('li').click(function(event){})● 通过bind方法给元素绑定事件:$('li') .bind('click',function(event){}) .bind('click',function(event){}) 可见,通过bind,可以给元素绑定多个事件。● 事件的命名空间为什么需要事件命名空间?→假设,先给l...
阅读全文
posted @ 2014-08-20 10:21
Darren Ji
阅读(672)
推荐(0)
摘要:
1、基础 jquery对象集: $():jquery对象集合 获取jquery对象集中的元素: 使用索引获取包装器中的javascript元素:var temp = $('img[alt]')[0] 使用jquery的get方法获取jquery对象集中的javascript元素:var temp = $('img[alt]').get(0) 使用jquery的eq方法获取jquer...
阅读全文
posted @ 2014-08-19 16:55
Darren Ji
阅读(819)
推荐(0)
摘要:
位运算符包括:| 按位或 OR,& 按位与 AND,^ 按位异或 XOR,~ 取反 NOT,> 右移 Right Shift,等等。本篇体验位运算符在C#中的应用。主要包括: ○ 进制转换 ※ 十进制转换成二进制 ※ 二进制转换成十进制○ | 按位或操作符○ & 按位与操作符○ ^ 按位异或操作符 ※ 使用^按位异或交换2个数 ※ 使用^按位异或进行加密运算○ ~ 取反操作符○ x > n 右移...
阅读全文
posted @ 2014-08-19 08:14
Darren Ji
阅读(13467)
推荐(3)
摘要:
“世界上不会有两片完全相同的树叶”,这句话适用于现实世界。而在软件世界中,这句话变成了"世界上必须有两片完全相同的树叶",否则,很多事情无以为继。 当比较2个对象是否相等时,通常情况下:==操作符用来比较值类型,比较的是值;实例方法Equals和静态方法Object.ReferenceEquals比较引用类型,比较的是对象的地址。 在实际项目中,当比较2个引用类型对象时,我们的需求变为:通过依...
阅读全文
posted @ 2014-08-18 18:02
Darren Ji
阅读(1012)
推荐(0)
摘要:
本篇用C#实现ATM自动取款机的一些功能。面临的第一个问题是:如何把与自动取款机相关的有形的、无形的方面抽象出来。大致如下: (1)关于用户帐号的类:Account(2)关于银行数据库的类:BankDatabase(3)关于ATM屏幕显示的类:Screen(4)关于ATM键盘的类:Keypad(5)关于进钞、出钞口的类:DepositSlot(6)关于ATM出钱的类:CashDispendser...
阅读全文
posted @ 2014-08-15 19:51
Darren Ji
阅读(8935)
推荐(2)
摘要:
如果有一个值不太会变化,我们经常使用const和readonly,这2者有何不同呢?有时候,我们也会在readonly之前加上关键字static,这又意味着什么呢? const ● const默认是静态的,可以通过"类名.字段名"来访问。● const变量只能在声明的时候赋值,不能在构造函数中为const类型变量赋值。● 一旦程序集被编译,const变量会被写进程序集的IL代码中。如果想修改c...
阅读全文
posted @ 2014-08-15 10:14
Darren Ji
阅读(902)
推荐(1)
摘要:
中国足球的水平虽然不高,但实际上,在每个城市会有一批足球爱好者,他们踢球、看球、懂球。有这样的2个足球爱好者,一个是左脚选手,另一个是右脚选手。 public class PlayWithLeft { public void Play() { Console.WriteLine("我是左脚选手"); } } p...
阅读全文
posted @ 2014-08-14 16:20
Darren Ji
阅读(683)
推荐(0)
摘要:
增量运算符++属于一元运算符,增量运算符可以出现在变量的前面作为前缀,也可以出现在变量的后面作为后缀。两者有何区别呢? 前缀方式加1先使用前缀方式加1,并把前缀方式加1后变量的值赋值给另外一个临时变量temp。 static void Main(string[] args) { int num1 = 0; while ...
阅读全文
posted @ 2014-08-14 10:37
Darren Ji
阅读(1729)
推荐(1)
摘要:
我们知道,抽象类是不能被实例化的。但抽象类是否可以有构造函数?答案是可以有。抽象类的构造函数用来初始化抽象类的一些字段,而这一切都在抽象类的派生类实例化之前发生。不仅如此,抽线类的构造函数还有一种巧妙应用:就是在其内部实现子类必须执行的代码。 以下就是在抽象类的构造函数中来初始化字段。 class Program { static void Main(string[] ...
阅读全文
posted @ 2014-08-13 08:48
Darren Ji
阅读(27394)
推荐(2)
摘要:
假设有2个类,一个类是主力球员,一个类是替补球员。 public class NormalPlayer { public int ID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public de...
阅读全文
posted @ 2014-08-12 22:13
Darren Ji
阅读(2912)
推荐(0)
摘要:
int类型的最大值是2147483647,2个最大值相加就会超出int的最大值,即出现溢出。 class Program { static void Main(string[] args) { int y = 2147483647; int x = 2147483647; int z = x...
阅读全文
posted @ 2014-08-12 17:13
Darren Ji
阅读(1110)
推荐(0)
摘要:
当对2个数实现加减乘除,其中的一个解决方案是通过委托来实现。如下: class Program { private delegate int CaculateDel(int num1, int num2); static void Main(string[] args) { CaculateDel caculateDel ...
阅读全文
posted @ 2014-08-12 16:36
Darren Ji
阅读(264)
推荐(0)
摘要:
Convert.ToString能处理字符串为null的情况。 static void Main(string[] args) { string msg = null; Console.WriteLine(Convert.ToString(msg)); Console.ReadKey(); ...
阅读全文
posted @ 2014-08-12 15:57
Darren Ji
阅读(614)
推荐(0)
摘要:
本篇体验私有构造函数的特点,以及在何种情况下使用私有构造函数。 □ 带私有构造函数的类不能被继承 在Animal类中声明一个私有构造函数,让Dog类来继承Animal类。 public class Animal { private Animal() { Console.WriteLine("i am animal"); ...
阅读全文
posted @ 2014-08-12 15:39
Darren Ji
阅读(1327)
推荐(0)
摘要:
在Visual Studio中,生成应用程序的时候有2种模式:Debug和Release。两者之间如何取舍呢? 假设有这么简单的一段代码,在主程序中调用方法M1,M1方法调用M2方法,M2方法调用M3方法,M3方法中抛出异常。 class Program { static void Main(string[] args) { M1();...
阅读全文
posted @ 2014-08-12 12:11
Darren Ji
阅读(2858)
推荐(1)
摘要:
本篇体验Visual Studio的10个调试技巧,包括: 1、插入断点和断点管理2、查看变量信息3、逐语句F11,逐过程F10,跳出Shift+F114、查看堆栈信息5、设置下一条执行语句6、调试时修改局部变量并继续调试7、线程管理8、为断点设置条件9、使用命令窗口测试方法10、变量的历史记录 有这样的一个Person类: public class Person { ...
阅读全文
posted @ 2014-08-08 19:03
Darren Ji
阅读(2708)
推荐(4)
摘要:
与链表、堆栈和队列不一样,二叉查找树不是线性数据结构,是二维数据结构。每个节点都包含一个LeftNode和RightNode,二叉查找树把比节点数据项小的数据放在LeftNode,把比节点数据项大的数据放在RightNode。 关于节点的类。 public class TreeNode { public T Element { get; set; } pub...
阅读全文
posted @ 2014-08-07 16:11
Darren Ji
阅读(717)
推荐(0)
摘要:
队列和堆栈都是约束版的链表,就像在超市购物,队列是先进先出的数据结构。 接着上一篇,派生于链表类List,来模拟一个队列。namespace LinkedListLibrary{ public class QueueInheritance : List { public QueueInheritance() : base("queue"){} //入队:到...
阅读全文
posted @ 2014-08-04 17:19
Darren Ji
阅读(649)
推荐(0)
摘要:
在"了解集合本质必须要知晓的概念-链表"中,我们了解了链表的概念和种类,并且模拟了一个单向链表。本篇体验的堆栈是约束版的链表,只能在栈顶接收新节点和释放节点。 堆栈的主要操作是压栈和出栈。压栈是将新节点放在栈顶,出栈是从栈顶取出一个节点,返回新弹出节点的数据项。堆栈也称为后进先出的数据结构。 接着上一篇,写一个派生于List的类来模拟堆栈的压栈和出栈。namespace LinkedListL...
阅读全文
posted @ 2014-08-04 16:41
Darren Ji
阅读(742)
推荐(0)
摘要:
如果想对集合(系列)有本质的了解,链表是一个必须了解的概念。本篇主要包括: ● 链表的由来和定义● 创建一个单向链表● 其它链表 链表的由来和定义 在现实生活中,我们把不同的商品放在一个购物车中。而在面向对象的世界里,有时候,也需要把不同类型的数据放到一起,组成一个集合。集合中的元素并不是彼此孤立的,在C#中,如何表达集合元素间的关系呢? 借助"自引用类"可以确立集合元素间的关系。比如有这样...
阅读全文
posted @ 2014-08-01 18:25
Darren Ji
阅读(1321)
推荐(0)
摘要:
在电商网站中,有时候通过进度条来直观地显示用户是否到期以及用户当前的状态。 设计这样的一个Model。 public class User { public int Id { get; set; } public string Name { get; set; } public int CoopTime { get; set; } ...
阅读全文
posted @ 2014-07-29 23:37
Darren Ji
阅读(1536)
推荐(0)
摘要:
在选择排序中,从第一个元素开始,依次遍历数组中的元素,找出当前遍历元素之后的最小元素,与当前遍历元素交换位置,依此类推,是一种由前往后的排序。而在插入排序中,从第二个元素开始,依次遍历数组中的元素,把当前遍历元素与之前的元素进行比较,并插入到之前的某个位置,是一种由后往前的排序。 自定义一个类,里面维护着一个int[]类型数组,通过构造函数定义数组长度并初始化,并提供了打印和插入排序的相关方法...
阅读全文
posted @ 2014-07-29 11:13
Darren Ji
阅读(1016)
推荐(0)
摘要:
选择排序是一种低效的排序算法,大致过程是:遍历数组的每一个元素,先假设0号位置上的元素是最小的,并把0号索引赋值给一个表示最小元素索引的变量,比如说是smallest,再遍历0号位置以后的元素,一旦发现有比0号位置元素更小的元素,就把该元素的索引赋值给smallest,继续遍历,最终把0号位置以后最小元素的索引赋值给了smallest变量,再把0号位置和smallest位置上的元素互换,这样,在0...
阅读全文
posted @ 2014-07-29 09:45
Darren Ji
阅读(688)
推荐(0)
摘要:
折半查找,也叫二分查找,当在一个数组或集合中查找某个元素时,先定位出中间位置元素,如果要查找的元素正好和该中间位置元素相等,通过一次查找,就能找到匹配元素;如果要查找的元素小于该中间位置元素,就抛弃后面一半的元素,在前面一半的元素中再定位出中间位置元素,如此反复,直到找到匹配元素;如果要查找的元素大于该中间位置元素,就抛弃前面一半的元素,在后面一半的元素中定位出中间位置元素,如此反复。 面临的...
阅读全文
posted @ 2014-07-28 17:41
Darren Ji
阅读(2155)
推荐(0)
摘要:
线性查找,肯定是以线性的方式,在集合或数组中查找某个元素。本篇包括: 通过代码来理解线性查找 时间复杂度 什么是算法 通过代码来理解线性查找 什么叫"线性"?还是在代码中体会吧。 首先需要一个集合或数组,如何得到呢?就生成一个固定长度的随机数组吧。然后输入一个查找key,如果找到就返回元素的索引,没找到就返回-1,就这么简单。 class Program { ...
阅读全文
posted @ 2014-07-26 23:26
Darren Ji
阅读(3987)
推荐(0)
摘要:
实现洗牌游戏的一种算法是:遍历每个位置上的牌,然后与随机位置上的牌交换。 对于牌来讲,2个关键的因素是面值和类型(红桃、梅花等)。 public class Card { private string mianzhi; private string leixin; public Card(string m, string l) ...
阅读全文
posted @ 2014-07-26 13:07
Darren Ji
阅读(615)
推荐(0)
摘要:
本篇体验Moq的一些基本用法。首先通过NuGet安装Moq。包括: 模拟方法的返回值 模拟方法后执行回调函数 模拟方法依次返回多个值 模拟第二次调用方法返回异常 直接返回被模拟方法的原始返回值 模拟泛型类 模拟方法的返回值 public class HelperClass { public virtual Boolean IsEnabled() ...
阅读全文
posted @ 2014-07-26 09:23
Darren Ji
阅读(2923)
推荐(0)
摘要:
递归的一个典型应用就是遍历目标文件夹,把该文件夹下的所有文件和文件夹打印或显示出来,还可以递归计算目标文件夹的总大小。 1: class Program 2: { 3: static void Main(string[] args) 4: { 5: Console.WriteLine("输入目标文件夹"); 6: ...
阅读全文
posted @ 2014-07-25 12:57
Darren Ji
阅读(783)
推荐(0)
摘要:
如果想实现一个阶乘,比如6 * 5 * 4 * 3 * 2 * 1,首先想到的可能是循环遍历。如下: class Program { static void Main(string[] args) { Console.WriteLine("请输入一个数"); int number = Convert.ToInt3...
阅读全文
posted @ 2014-07-25 11:21
Darren Ji
阅读(1952)
推荐(0)
摘要:
简单来说,struct是值类型,创建一个struct类型的实例被分配在栈上。class是引用类型,创建一个class类型实例被分配在托管堆上。但struct和class的区别远不止这么简单。本篇主要包括: ■ 概括来讲■ 从赋值的角度体验struct和class的不同■ 从参数传值角度体验struct和class的不同■ 从struct类型的struct类型属性和struct引用类型属性体验st...
阅读全文
posted @ 2014-07-24 23:45
Darren Ji
阅读(911)
推荐(0)
摘要:
当使用Entity Framework,并且把领域模型的某个字段设置成不能为null,但在保存、更新的时候,如果领域模型的该字段为null了,就会报如上错误。 解决方法:给领域模型不能为null的字段设置有值,哪怕是空值也可以。
阅读全文
posted @ 2014-07-23 16:20
Darren Ji
阅读(1150)
推荐(0)
摘要:
在"MVC批量添加,增加一条记录的同时添加N条集合属性所对应的个体"中,对于前台传来的多个TextBox值,在控制器方法中通过强类型来接收。使用FormCollection也可以接收来自前台的多个TextBox值。实现效果如下: 动态添加TextBox: 后台使用FormCollection接收来自前台的TextBox值,再以TempData把接收到的值返回: 当页面没有TextBox,点...
阅读全文
posted @ 2014-07-23 11:00
Darren Ji
阅读(2898)
推荐(0)
摘要:
我们经常用简单数据类型,比如int作为泛型Dictionary的key,但有时候我们希望自定义数据类型作为Dictionary的key,如何做到? 如果我们想自定义一个struct类型作为key,就必须针对该struct定义一个实现IEqualityComparer接口的比较类,实现该接口的2个方法:Equals()方法和GetHashCode()方法,前者用来比较两个key是否相等,后者用来获...
阅读全文
posted @ 2014-07-22 12:56
Darren Ji
阅读(3395)
推荐(0)
摘要:
.net扩展方法可以扩展很多类型,包括:基本数据类型、接口、类,等等。如果,需要扩展的类型包含私有成员,扩展方法如何运用这些私有成员呢?本篇逐一体验,包括: ■ 扩展基本数据类型■ 扩展接口■ 扩展包含私有字段的类 使用反射获取类的私有字段■ 扩展一个类的私有嵌套类 通过反射 扩展方法有几个必要前提:● 扩展方法所在的类必须是静态类● 扩展方法本身必须是静态方法● 扩展方法参数中,对类型的扩展...
阅读全文
posted @ 2014-07-18 11:14
Darren Ji
阅读(1140)
推荐(0)
摘要:
在项目中,有时候会用到领域枚举和DTO枚举的映射和转换。有一个现实的问题是:如果领域枚举项发生变化,而DTO枚举项没有及时更新,这样会造成映射不上的问题。那么,如何避免此类问题呢? 先看领域枚举和DTO枚举映射完好的情况。 class Program { static void Main(string[] args) { var queryO...
阅读全文
posted @ 2014-07-18 09:17
Darren Ji
阅读(7953)
推荐(0)
摘要:
对于一些"大对象"的创建,我们常常希望延迟加载,即在需要的时候再创建对象实例。现在Lazy很好地支持了这一特点。主要包括: 没有Lazy之前 Lazy实例 延迟加载的本质 没有Lazy之前 在没有Lazy之前,我们通过如下方式实现延迟加载。 public class LazySinleton{ private LazySingleton() {} public sta...
阅读全文
posted @ 2014-07-18 08:35
Darren Ji
阅读(3200)
推荐(0)
摘要:
协变(Convariant)和逆变(Contravariant)的出现,使数组、委托、泛型类型的隐式转换变得可能。 子类转换成基类,称之为协变;基类转换成子类,称之为逆变。.NET4.0以来,支持了泛型接口的协变和逆变。 泛型协变 如果子类泛型隐式转换成基类泛型,使用泛型协变。 有这样的2个基类和派生类。 public class Animal { public virt...
阅读全文
posted @ 2014-07-17 19:12
Darren Ji
阅读(2208)
推荐(3)
摘要:
在" .NET泛型01,为什么需要泛型,泛型基本语法"中,了解了泛型的基本概念,本篇偏重于泛型的使用。主要包括: ■ 泛型方法重载需要注意的问题■ 泛型的类型推断■ 泛型方法也可以有约束■ 泛型接口■ 泛型委托■ 使用EventHandler事件泛型 泛型方法重载需要注意的问题 public class MyArray{ public T myData; public MyArr...
阅读全文
posted @ 2014-07-17 16:02
Darren Ji
阅读(1498)
推荐(0)