摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2218262.html细节:在 js 中的全局变量可以不声明(即不用“var abc = ***”,直接“abc = ***”就可以),但不推荐;而且 js 中尽量少用全局变量,以避免重名冲突,因为全局变量不仅能在整个 html 页面文件内访问,还能被其他的 js 文件或 html 文件访问。细节:在元素的 "oncopy" 事件 "return false" 后,该元素的覆盖范围内(例如 body,即页面内容填 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2218260.html细节:若有 var x = 0; 则 (!x) 的值也为 true ,即下面语句会被触发:1 if(!x) {2 alert("不X!");3 }经验:1 <script type = "text/script" src = "123.js" ></script> <!--这样写才会有效果-->2 <script type = & 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2218256.html区别:使用“启动”按钮的方式来打开页面的方式可以对页面的代码进行调试,而“在浏览器中查看”的打开页面的方式是没法进行调试操作的。技巧:在没有JS、C#代码的时候推荐使用“在浏览器中查看”的方式打开页面,这种方式的优点是,修改页面后不用关闭浏览器再打开才看到更改后的效果,而只要刷新页面就可以看到更新。区别:1. 在 html 代码中,标签的开闭没有严格的定义,如:“<img src="...">”和“ 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2218254.html定义:序列化:将对象转换为二进制数据就是序列化;反序列化:将二进制数据还原为对象就是反序列化。序列化/反序列化就是为了保持对象的持久化保存。细节:文件的后缀名不是给计算机看的,而是给人看的。细节:若需要让一个对象可以被序列化,则要在该对象的类的声明前面加上 “[Serializable]” 标识,而且还必须要求该类的所有字段和属性的类型都是可以被序列化的,否则序列化时会报错。(注意:C#的编译器可能会在编译时优化掉对象中没有用到的 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2218253.html面试题!!!!:代码如下: 1 namespace 面试题 2 { 3 public class A 4 { 5 public static int i = 0; //静态属性,不能用类的对象来调用。 6 public A() //非静态构造函数,外界每创建一个“该类的对象”或者“继承自该类的子类的对象”,该方法就被调用一次。 7 { 8 ... 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2218227.html区别:抽象类中的抽象方法和标记为 Virtual、Override 的方法的区别:1.抽象类中的抽象方法必须强制要求在其所有非抽象的子类中一定要有其对应的 override 实现;而被标识为 virtual 的虚方法在其所在类的子类中可以 override,也可以不 override,不会强制要求。2.抽象类中的抽象方法必须要求不能有任何实现,而被标识为 virtual 的虚方法必须要有自己的实现,就算是“空实现”(即只有一对大括 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2214013.html区别:程序员自行用代码方式实现的回收和 GC 方式的回收的区别:前者(代码方式)回收效率高,有针对性,但一旦程序员忘了实现回收代码,会出现不可预期的错误,安全性不高;而后者(GC 方式)能在一定程度上解放了程序员的精力,可以不用总是要顾虑着内存的回收,但回收效率比不上代码方式的回收,GC 的回收不是实时的回收,回收的时机是由 GC 的内部算法决定的。注意:这里说的垃圾回收(GC)主要是对对象占用的堆(托管堆)中的内存资源来说的,非 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2214011.html易错:表达式"^\d{15}$|^\d{18}$"和表达式"^(\d{15}|\d{18})$"效果一样,但这两个表达式和"^\d{15}|\d{18}$"不一样,前两者都表示有15位或18位数字组成的字符串,而后者则表示以15位数字开头或者以18位数字结尾的字符串,只要字符串开始前15位全是数字或者最后18位全是数字则符合要求,例如:"123456789012 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2214010.html细节:ICollection 接口也是继承自 IEnumerable 接口的,因此 IEnumerable 在多态的使用上能表示的范围更大。技巧:在 Dictionary<K, V> 中,如果 Key 的值不是有规律的数值类型(例如 Key 为字符串类型值)时,可以通过“foreach(string key in Dict.Keys)”的方式来进行逐个遍历,然后通过被遍历出的每个Key来查找出 Dict 中 Key 对 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2214009.html细节:数组一旦声明了之后长度就是固定了的,不能在使用时再对数组的长度进行修改。而 ArrayList 则相当于是动态长度的数组,随时需要随时添加。细节:ArrayList 的对象(暂设定为list)的 ToArray() 方法返回的是和该 list 对象中的元素个数和值都相同的一个 object 类型数组,list 对象里面的每个元素都拷贝一份,然后赋给要返回回来的新 object 数组中,而不是直接把 list 对象中的所有元素 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2214008.html细节:若要在强类型 DataSet 中添加含有“Where Name Like '%@Name%'”等这种带“模糊匹配”通配符的参数是不能直接这样添加的,这里传进 DataSet 中的 SqlCommand 还是按一般的传入参数的方法,即应该还是像往常一样写成“Where Name Like @Name”,然后在写 C# 代码调用该强类型 DataSet 对应的 Adapter 来执行查询之前,先把待传入查询方法的 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2214007.html小结:SqlDataAdapter 相当于 DataSet 和数据库之间沟通的桥梁,无论是从数据库中取数据、把数据 Update 到数据库等,都需要用到 SqlDadaAdapter。例如以下这段代码:1 DataSet dataSet = new DataSet();2 SqlDataAdapter adapter = new SqlDataAdapter(cmd);3 adapter.Fill(dataSet);4 ..... 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2213782.html注意:并不是所有情况下的字符串拼接方式为SQL语句添加参数都会造成字符串注入漏洞攻击的,例如下面的例子:string s = Console.ReadLine();int age = Convert.ToInt32(s);cmd.CommandText = "select * From T_Persons where Fage = "+ age;此时由于变量“age”是被限定了 int 类型,这样的话该变量的值 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2213504.html细节:string id = reader.GetInt32(reader.GetOrdinal("id")).ToString();//由于该Id字段在数据库中的类型为int,因此在C#中通过 SqlDataReader 实例提取出来时不能用 GetString() 方法,而应该用 GetInt32() 方法,否则报错。string name = reader.GetString(reader.GetOrdi 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2213018.html细节:业务主键和逻辑主键的区别:业务主键是使用有业务意义的字段做主键,如身份证号、银行账号等;而逻辑主键则是使用没有任何业务意义的字段作为主键,如流水号等;由于很难保证业务主键不会出现重复,所以一般都推荐用逻辑主键。经验:当一个表的某些字段的值出现多次重复时,就应该考虑创建多个表,使用外键来进行表间关联,这样能有效减少数据的重复和冗余。提示:如果只想在 VisualStudio 中管理和开发数据库,只需要安装 VisualStud 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2213014.html常识:网址有多种形式,如:“http://www.baidu.com.cn/”、“ftp://a/b/*.rar”等。细节:WebRequest 类是抽象类,要创建 WebRequest 类的实例,必须通过调用 WebRequest 类的静态方法 Create() 来实现。WebRequest.Create() 方法的返回值也是 WebRequest 类型, 其实这里不是返回 WebRequest 类自己本身,而是返回 WebRe 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2212931.html技巧:如果输入了一部分代码之后才想到要在该代码段外加上if、for、while等在外面包裹着的代码时,可以选中需要被包在里头的代码,然后按“Ctrl + K + S”,然后输入“if”即可。细节:一般的应用程序都有一个入口函数(类似于 C# 程序中的 Main 方法),而入口函数一般都带有启动参数(即传入入口函数的参数),一般是初始化程序或者在打开时设定某些初始设置值等,例如:IE也有入口函数参数,往该参数输入一个网址,即可实现“ 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2211054.html经验:代码的编写和调试时尽量少用Try Catch,在产品完成之后发布之前,为了防止一些有可能出现始料不及情况的代码段出现错误,才在该代码段处加上Try Catch。因为这样会有可能在程序完成前的开发或测试时期就把自己程序中的bug被掩埋起来了,这会给程序带来更多潜在的危险。但也有在开发测试时就用TryCatch的情况,例如写Socket时可以通过TryCatch来监测连接是否已经断开,但这种(开发时就用TryCatch的)情况一 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2211048.html拓展:C#也能使用指针,但是是“罕用指针”,约束很多,一旦使用指针,就要把使用指针那部分的代码用关键字 unsafe 来明确标记起来。而且在C#中的指针不像C/C++那样可以指向任何类型的数据,C#的指针只能指向结构体。C#的指针一般是用在性能要求高或者是和以前用C/C++写好的程序接驳、兼容,也有种情况,就是:有些算法或技术含量较高的代码为了保密性而用C/C++来写,而此时C#的程序要用这些代码而恰好这些代码又要用到指针类型参数 阅读全文
摘要:
学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2211038.html拓展:测试驱动开发模式:http://baike.baidu.com/view/184088.htm重点:internal的可见范围:中文翻译为“内部的”,范围只限定在编译好后的 *.exe 或 *.dll 文件内部可见,文件外部是看不到的。经验:把一个引用类型的变量值(暂时假设为一个有 Name, Age 属性的 Human 类的对象 person)赋值给一个新建的变量(暂时假设为创建了一个 Human 类型的变量 person 阅读全文