资讯详情

自学之笔记总结

类:类是一个抽象的概念,是为多个对象提取相同特征的产物,对象是类的具体实例对象,在程序中,使用实例对象访问类的成员。1.包装、继承、多态三大特点2 包装:将字段包装成属性,将多个参数包装成一个对象,并将代码包装到方法中进行调用CS包装成程序集继承:将几类相同的特征存储在父类中,作用:减少代码的重复性, 实现多态(继承特征:单根性、传递性)多态性:事实上,它是事物的各种形式。在程序中,它表现为父对象指向子类的例子。在调用方法时,调用子类重写方法(多态性使程序可以扩展和更灵活)。例如,人、中国人和日本人 构造函数:不能继承,如果子类中有多个构造函数,可用于子类this子类可用于调用其他结构函数case调用父类的结构函数,当子类调用结构函数时,默认调用父类中无参的结构函数(解决方案:1父类写无参的结构函数;2:在子类中写一个:case调用有参的结构函数)虚拟方法:子类调用父类的虚拟方法,可重写或不重写静态类:不能继承,不能实例化。静态类在第一次使用时被调用,只调用一次。静态构造函数:无访问修改符,无参数。密封类(sealed):不能继承(),不想被继承加一个私人关键词(privete),String类类型转换1.抽象方法必须使用abstract标记和抽象方法不能任何实现 2.抽象成员必须在抽象类中标记 3.抽象类不能被实例化 4.子类继承抽象类后,必须重写父类所有抽象成员(除非子类也是抽象类,否则不能重写) 5.抽象成员的访问修饰符不能是private 6.实例成员可以包含在抽象类中 7.抽象类有结构函数。虽然不能实例化什么时候需要虚拟方法,什么时候需要抽象方法若父类中的方法有默认实现,且父类需要实例化,则可考虑将父类定义为普通类,用虚假的方法实现多态化。如果父类的方法没有默认实现,父类也不需要实例化,可以说这种方法被定义为抽象类(简单来说,实例化的时候可以用虚拟的方法实现多态化,不需要的时候可以用抽象类来实现)接口:1。接口只能包括方法(方法、属性、索引器、事件) 2.接口中的方法无法实现(抽象方法,直接加分号) 3.接口中的成员不能有任何访问修改符(即使是public)默认为public 4.接口不能实例化 5.接口的类别必须实现接口中的所有成员1.如果使用virtual和override?当子类重写父类的方法时,可以将父类定义为virtual子类定义的虚拟方法override的重写。(方法的重写是为了多态、多态、多态的表达形式,即实现多种情况,如做OA在系统中,有领导和员工,然后两者都需要打卡,但打卡时间不同,具体方法不同)2.如果使用abstract和override?父类需要在抽象类中使用abstract也需要定义为抽象,抽象方法abstract该方法必须在抽象类中标记和抽象,然后子类继承父类使用时,调用该方法时必须重写override关键字(除非子类也是抽象类)3."方法重载overload"、"方法重写override"、"隐藏类new"是同一个概念吗?不,方法重载只取决于方法名称,方法参数列表不同(不同数量、不同类型、不考虑顺序),称为重载,与方法返回值无关。 方法重写:当子类继承和重写父类方法时,使用此关键字,如虚拟方法和抽象方法(然后谈论何时使用虚拟方法和抽象方法) new:当子类想隐藏父类继承的方法时,可以使用new方法关键字4.抽象与接口的区别?抽象适用于需要继承的同一系列成员接口适用于具有相同动作(行为、动作、方法)的不同系列。对于不是相同的系列,但具有相同的行为,这个可以考虑有接口实现,接口解决类不能多继承的问题。所有类型的引用都是自继承的Object所有值类型都继承自System.ValueType[System.ValueType又继承自Object]结构:值类型。值类型,引用类型。值传递:传递栈内容ref引用传递:传递栈本身的地址异常:运行中不可预测的错误(用异常捕获)try{}catch{}finally)统计字符串中天安门的出现次数(天安门广场,我爱北京天安门广场,天安门广场太阳升起)string s="天安门广场,我爱北京天安门广场,天安门广场太阳升起";int n=s.Split(天安门).Length-1;面试题:动态显示[]中的某某,获取他第一次出现的索引位置(我爱[某某]哈哈哈)string msg = "我爱[XXX]哈哈哈哈";msg = msg.Substring(msg.IndexOf("[") 1, (msg.IndexOf("]")-msg.IndexOf("[")-1)); Console.WriteLine(msg);字符串1.不可变性:无论如何操作字符串,都要打开新的内存。2.保留:程序中的字符串变量可以指向相同的地址。3字符串池:当程序中有多个相同的字符串常量时,这些字符串常量指向内存中相同的字符串地址,称为字符串池。StringBuilder(字符串拼接)为什么不全用?StringBuilder?1.一般使用人才字符串参数string类型,stringBuilder还要转换成ToString()2.字符串有一些特点(如不可变、字符串)如何比较两个对象是否相同?两个对象在堆中使用相同的内存,此时是相同的对象。用object.ReferenceEuals(p1,p2),如果用Equals的话(因为Equals方法是父类Object一种虚拟的方法,子类可以重写,所以使用这种方法是不准确的)DotNet为什么有一代的概念(分为三代,不能一次回收,否则会影响程序执行效率,优先回收第0代,第0代回收概率高,第一代低,第二代)若引用:WeakReference,如果引用,可以用来创建耗时的对象。(例如,创建List集合存储数据库中的100个数据List如果没有,可以使用,如果以后没有回收,可以调用(创建集合需要时间,连接数据库需要时间和内存)。垃圾回收。功能:提高内存利用率垃圾可以回收什么样的对象?1引用类型 没有变量应用的对象(不知道什么时候回收,系统指定)(一开始创建对象是在第0代,当垃圾回收将回收第0代对象,释放那些可以释放,不释放自动移动到第一代,然后创建对象或第0代,下次回收或第0代,不回收自动移动到第一代,当第一代满,回收,或自动移动第二代,第二代满垃圾回收,或者慢系统会报错)(为什么要分代垃圾回收,因为垃圾回收会影响程序正常执行的效率)泛型集合1 ArrayList object2 Hashtable key(object),val(object)(1、2需别:ArrayList搜索时要循环遍历,Hashtable可以根据键值就可以找到,省得循环遍历,查询速度快)(为什么不需要数组集合?因为数组的长度是固定的,只能安装相同类型的数组)3 List<T>Dictionary<K,V>(当对于1 2 ,3 4数据类型固定,使用节省了各种类型的转换)string s1 = "a";string s2 = "b";int n3 = 10;double d4 = 99.9;string result = string.Concat(s1,s2,n3,d4); //Concat字符串连接发生安装和拆箱是否发生过?如果发生了,发生了多少次?(面试题)用Reflector看把 int double 给object包装两次,没有拆箱,只有类型转换我本文件存储时使用的编码与读取时使用的编码不一致,会造成乱码问题。解决方案:使用统一编码Ok了为什么有些对象可以使用foreach,有些不行?能被foreach里面有一个GetEnumerator通过这种方法实现了该方法IEnumerable接口对象,这个对象可以遍历类中的元素,foreach通过查看Reflector的il代码,也是通过类调GetEnumerator返回接口类型,接口类型MoveNext()也许生成这个代码为什么要序列化?(序列化,对象到byte[]过程)(步骤:1。创建序列化对象2。创建流程,序列化对象 )将复杂的对象转换为流动,以便于我们的存储和信息交换。问题:为什么反序列化需要原定义?Person类的程序集?当反序列化时,要返回一个对象,这个对象必须基于原始对象person可以创建程序集,也就是说person.bin它只包含一些数据,根据这些数据无法在内存中创建对象。只能以原来为基础person创建对象的类型程序集,然后创建对象perosn.bin数据-对应赋值。因此,在反序列化中需要添加对原始程序集的引用。什么样的类型可以序列化?1.序列化对象的类型必须标记为可序列化[Serializable]2.目前被序列化对象的父类也应标记为可序列化。类中的字段或属性类型也必须序列化。正则表达式 通配符1> .除\n任何单个字符 如 a.b axb a2b2> [] []任何单个字符的表示[]a[xys]baabaxba[0-9b (表示0-9之间的任意一个字符与ab匹配,如a1b a2b)a[^xyz]b 表示中间数出xyz之外的任意一个字符a[^a-zA-Z0-9]b   表示ab之间除了a-z或A-Z或0-9之间的任意一个字符都可以。3>   | :将两个匹配条件进行逻辑“或”运算。‘z|food’ 能匹配 “z” 或 “food”。‘(z|f)ood’ 则匹配 “zood” 或 “food”。 //注意^$问题。4>( ) :将 () 之间括起来的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域,这个元字符在字符串提取的时候非常有用。把一些字符表示为一个整体。改变优先级、定义提取组两个作用。5>  *:匹配0至多个在它之前的子表达式,和通配符*没关系。例如正则表达式“zo*”(等同于z(o)*)能匹配 “z” 、“zo”以及 “zoo”;因此“.*”意味着能够匹配任意字符串。"z(b|c)*"→zb、zbc、zcb、zccc、zbbbccc。"z(ab)*"能匹配z、zab、zabab(用括号改变优先级)。6>  + :匹配前面的子表达式一次或多次,和*对比(0到多次)。例如正则表达式9+匹配9、99、999等。 “zo+”能匹配 “zo”以及 “zoo” ,不能匹配"z"。7>  ? :匹配前面的子表达式零次或一次。例如,“do(es)?” 可以匹配 “do” 或 “does” 。一般用来匹配“可选部分”。(终止贪婪模式)8>  {n} :匹配确定的 n 次。“zo{2}”→zoo。例如,“e{2}” 不能匹配“bed”中的“e”,但是能匹配“seed”中的两个“e”。 //seeeed,不可以。9>  {n,} :至少匹配n次。例如,“e{2,}”不能匹配“bed”中的“e”,但能匹配 “seeeeeeeed”中的所有“e”。 10>  {n,m} :最少匹配 n 次且最多匹配 m 次。“e{1,3}”将匹配“seeeeeeeed”中的前三个“e”。 {2,5}//bed,seed,seeed;beeeeed错误。11>  ^(shift+6) :匹配一行的开始。例如正则表达式“^regex”能够匹配字符串“regex我会用”的开始,但是不能匹配“我会用regex”。^另外一种意思:非!([^0-9])11>  $ :匹配行结束符。例如正则表达式“浮云$” 能够匹配字符串“一切都是浮云”的末尾,但是不能匹配字符串“浮云呀”  ^abc,匹配一个正则表达式的开始abcjflkdsjfkdsjf888$,匹配一个正则表达式的结束。积分多少快乐解放路口的手机费888简写表达式\d:代表一个数字,等同于[0-9]   \\d  →\d\D:代表非数字,等同于[^0-9]\s:代表换行符、Tab制表符等空白字符 ,(空格、回车、制表符)\S:代表非空白字符(a0%$@@)\w:匹配字母或数字或下划线或汉字,即能组成单词的字符,除%&#@!$等字符。[a-zA-Z0-9_汉字]\W:非\w ,等同于[^\w] %  d:digital;s:space、w:word。大写就是“非”Regex.IsMatch();  //判断一个字符串是否匹配某个正则表达式            Regex.Match();  //从某个字符串中提取匹配正则表达式的某个子字符串Regex.Matches();  //字符串提取,可以提取所有匹配的字符串Regex.Replace();  //字符串替换,把所有匹配正则表达式的字符串替换为对应的字符串验证邮政编码   string regex = "^\\d{6}$";验证身份证号码 string iDregex = @"^(\d{15}$|^\d{18})$";电话号码类型如010-8888888或010-88888888或010xxxxxxx或0335-8888888或0335-88888888(区号-电话号),10086、10000、95595、95588、13245678901验证电话号码的正则   string reg = @"^(\d{3,4}\-?\d{7,8}|\d{5})$";  邮箱验证:  string regEmail = @"^[a-zA-Z0-9_\.]+@[a-zA-Z]+(\.[a-zA-Z]+)+$";验证IP:     @“^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$”。.是正则表达式中的特殊含义,因此需要转义。进一步严谨:^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$ "合法的日期格式“2008-08-08”。四位数字-两位数字-两位数字。@“^\d{4}\-\d{2}\-\d{2}$”,进一步严谨:^\d{4}\-((0[1-9])|(1[0-2]))-((0[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))$什么是贪婪模式?当正则表达式在字符串中找匹配的时候,假如匹配一个也行,多个也行,他会尽量多的匹配最多。(?加在限定符(如+、*等))委托:委托可以存储一个委托对象,也可以把一个方法存储到存储到委托对象里面,委托类型声明一个委托对象,他指向的必须是一个委托对象,它直接指向一个方法内部也new一个委托对象,在委托对象里面存储了一个方法。(引用类型)委托使用步骤:1>定义一个委托类型(public  delegate void WeituoDelegate(参数);)2>声明一个委托变量(WeiTuodelegate wd=new WeiTuoDelegate(方法);)3>调用委托 (if(wd!=null){//调用委托  //ed();  wd.Invoke();})委托的作用就是:可以在某个代码内部,嵌入一段外部代码,相当于是:注入,编写这个类的人可以先把这个类先写好,用这个类的人可以随意扩展里面的内容。在自定义控件中的事件会大量使用到委托(写事件的时候会用到委托)//可以把静态方法或者私有方法赋值给委托变量,赋值后只要使用到该委托变量的地方就能使用该方法,打破了访问修饰符的限制。匿名方法:当lamdba表达式:编译的时候会将lamdba表达式编译成一个C#的匿名方法,但是使用lamdba表达式会在很多时候减少代码量委托的特性:1.具有类似于string一样的不可变性。          2.建议使用的时候尽量少定义自己的委托,使用系统中已经有的委托。减少程序集中定义的类型的个数。通过委托来实现事件的功能的问题:1.可以在类的外部来触发。因为委托变量TripleClick的访问修饰符为public的,所以在外部任何地方都可以访问。2 如果把TripleClick的访问修饰符修改成private的,那么的却不能  在外部触发,但是也不能在外部赋值。3.由于委托可以使用=来赋值,所以,就有可能将前面的所有的已经注册的事件 处理程序都覆盖掉了委托和事件的区别:委托是数据类型,事件是一个委托变量。(事件最终是生成 1.一个私有的委托 2.两个public的方法Add和Remove,分别用来实现事件的+=和-=)事件:先声明委托 public delegat void MyDelgate();  public Event MyDelegate MyClick程序集  .dll .exeXML(extensible markup language)XML和HTML的且只有一个跟元素2.XML中元素必须关闭3.XML中属性值必须 用引号4.XML大小写敏感(CseSensitive)深拷贝:浅拷贝:Xml序列化:把一个对象写成一个XML过程把一个对象写成流的过程叫做二进制序列化的过程DSMS(Database Management System,数据库管理系统)主键的作用:保证表中的每条数据的唯一性。========主键的特点============1.主键不能重复2.主键不能为空========主键的分类==============1.>逻辑主键(选择为表中增加的那些"自动编号"或者"GUID"列作为主键(没有实际业务上的意义)的主键,叫做逻辑主键)2.业务主键(选择表中那些在业务中有实际意义的列作为主键,叫做业务主键)===========组合主键(不建议使用)=================同时选择多列作为一个主键,叫做组合主键。(复合主键) 组合主键一般不建议使用1>.主键,建议选择那些一般不会被修改的列。2.>选择单列,不要选择多列(不用组合主键)3.>选择那些简单列(整数列(自动编号),)bit数据类型在写程序的时候只能用1(true)或0(false)来表示,但是在设计器中只能用true或false单词来表示。3.主键,建议选择那些一般不会被修改的列存储字符串的几种数据类型char(10)nchar(10)varchar(10)nvarchar(10)varchar(max)nvarchar(max)------不建议使用text和ntext,推荐使用varchar(max)与narchar(max)--------textntext=================varchar与char的区别=======================--可变长度,表示该列最多可以存储10个字节,如果实际存储不够10个字节,则会在存储的时候自动计算一下实际的存储个数,而动态的改变长度。【节省空间】--可变长度varchar(10)  char(10)   固定长度,表示在数据库中存储的时候占用10个字符的空间,如果超出10个则报错,如果不够则补全===============nchar(10)、char(10)======================nchar(10) 可以存储10个字母或者5个汉字char 用来存储数据的时候,英文占1个字节,中文占2个字节。所以如果是10个长度的char,可以存储10个字母或者是5个汉字,char或者varchar的小括号中的最大长度可以写8000。nchar(10) 表示可以存储10个字母或10个汉字nchar 来存储数据的时候无论存储的是中文还是英文都是每个字符占2个字节。 最大可以写4000SQL全名:结构化查询语言(Structured Query Language)SQL注意分DDL(数据定义语言,建表建库等语言)、DML(数据操作语言)、和DCL(数据库控制语言)Create table 、Drop Table、Alter Table 等属于DDL、select insert Update Delete等属兔DML,GRA于EVOKE取消授权属于DCLSqlDataReader由于每次向前走一条都会将上一条记录销毁,所以DataReader是只进的(不能回头)SqlDataReader特性2:只能读取数据不能修改数据,因为查询出的数据集(结果集)是一个独立的再服务器内存中的数据, 已经与源表没有关系了。当使用DataReader的时候必须保证Connection是open状态。创建了一个连接对象:SqlConnection conn=new SqlConnection();conn.Open();conn.Cloese();     conn并没有关闭,一直处于打开状态,当调用Close()方法的时候会把当前的连接对象放入到连接池中。当下次再创建一个对象,如果该连接对象所使用的连接字符串与上次连接对象的连接字符串完全一致(必须完全一致,包括大小写,空格) 这时,其实并不会真正的再创建一个数据库的连接,而是使用连接池中现有的连接。Ado.net连接池使用总结:  1.第一次打开连接会创建一个连接对象。  2.当这个连接关闭时。(调用Close()方法时)会将当期那连接对象放入池中。  3.下一个连接对象,如果连接字符串与池中现有连接对象的连接字符串完全一致,则会使用池中的现有连接,而不会重写创建一个。  4.只能对象调用Close()的时候才会放入池中,如果一个连接对象一直在使用,则下次在创建一个连接对象发行池中没有,也会再创建一个新连接对象。  5.在池中的连接对象,如果过一段时间没有被访问则自动销毁。微软企业库:Enterprise Libraryhttp://www.cnblogs.com/kyo-yo/tag/%E5%BE%AE%E8%BD%AF%E4%BC%81%E4%B8%9A%E5%BA%93/聚集索引(聚簇索引):当数据实际的存储顺序,与索引的顺序一致就把该索引叫聚簇索引。非聚集索引(非聚簇索引):当索引中数据的顺序与数据实际存储的顺序不一致的时候,该索引叫非聚集索引。填充因子面试题: 单张表A数据量过百万,关联表B数据过千万,如何查询优化?  把A表可能用到数据提到临时表1中,把B表可能用到的数据提取到临时表2中,然后再进行查询(原因:1.放到临时表中数据量变小了,2.临时表只用来查询性能高(减少很多增删改) 3.在内存里面查询速度灰常快)  一般过千万的都不会存在一张表中,用分表来存储(主动分区 和被动分区)  视图 优点:  筛选表中的行\降低数据库的复杂程序  防止未经许可的用户敏感数据事务:  可以回滚 错误的代码 照成的损失存储过程:  1.执行速度更快 --在数据库中保存的存储过程语句都是编译过的   2.允许模块化程序设计--类似方法的服用  3.提高系统安全性--防止SQL注入  4.减少网络流量-只要传输 存储过程的名称存储过程与select对比:1.减少解析编译的过程 2.灵活:业务逻辑编号的时候直接改存储过程就可以,程序不用重新编译部署 3.直接使用存储过程的话,所有业务逻辑都放到存储过程里面了。呼叫中心(Call Center):   计算机与电信集成技术(CTI)(来电显示等)   CRM(客户关系管理,Customer Relationship Managerment)。 CRM不一定非要和CTI集合。和CTI集成以后就有了自动化的过程。   OA(Office Automation):MIS(Management information System,信息管理系统,什么都是MIS系统)   ERP(Enterprise Resources Planning)坐席(Seat)→电话后面坐着的客服。    交换机(应用于具有成百上千的坐席的大型的呼叫中心)     PK语音卡(200人以下,相当于共享上网,无需申请业务)MD5(散列算法) 1.不可逆 2.同一只每次计算出来的ms5值都是相同的。 3.不同的值计算出来的md5值是不同的。(理论上是两个不同的值,是可能计算出相同的md5值)Excel遇到大数据导出怎么办?1》1.占内存  2.Excel存储的行有限的。3一个Excel中创建Sheet也有限。2>太大数据量考虑文本文件(csv)或者xml面试题:  树的深度遍历和广度遍历 深度遍历就是把一个节点以及子节点都加上出来,然后再加载下一节点 广度遍历就是把每一节点都加载出来,然后在加载每个节点的下一节点。 递归删除   DelegateId(int id)   //1,先根据id,查询当前id下的所有子节点   List<..>list=GetDataByPaRentId(id);解耦:解除耦合,手机电池和手机就是高耦合(你的手机我不能用,互相的依赖度高),耳机和电脑就是低耦合。不要写delete(TreeNode)string? n1 = null;  //错的,值类型才能用?,引用类型本身就可以为null三层架构 界面层(UI):用户控件,采集数据,经用户返回数据按某些方式显示出来。(app.config) 业务逻辑层BLL(Business是设数据返回不同的结果,判断用户是否定,发帖时候做一些审核 数据访问层DAL(Data Acess layer):拼接sql语句,出现各种数据库的类,比如connection command作用:   解耦:1.分工合作,开发人员可以专注于某一层。         2.可移植性 3. 支出分布式系统开发(基于网络) 4.扩展性强。MSSQL、Oracle之间切换。代码生成器: 1. 动软代码生成器 2.CodeSmith(CodeSmith(支持VS2010包含三层模板文件)partial 关键字:   部分类( partial class),把一个类的定义放到多个cs文件中,类标注“partial ”,多个cs文件中定义的内容不能重复,多个cs文件合在一起构成一个类(文件名任意,因为类的名字不一定要和文件名一致。)。部分类的应用:WinForm、ASPX中自动生成的界面和用户编写的代码cs文件构成部分类,这样就避免用户误修改自动生成的代码。用部分类可以解决代码生成器的代码的扩展问题,不要修改自动生成的代码文件,因为代码生成器生成的DAL文件是部分类,这样可以编写一个DAL的部分类文件,为DAL增加一个方法。  C# 怎么把 网络流(NetWorkStream) 拷贝 到 内存流(MemoryStream)//流高级中网络流与内存流中切换读取,读服务器上的excel文件        //作此实验  要建一个excel文件  读取第一行第一列值         //还要用cassiniDev server  建一个小型web服务器        static void simple5()        {             WebClient wc = new WebClient();            //wc.DownloadFile("http://localhost:32768/abc.xls", @"c:\\abc.xls");//因为担心安全问题,所以采用流读取,可以下载下来直接打开            Stream stream= wc.OpenRead("http://localhost:32768/abc.xls");//因返回的是connectstream流,但他不支持来回读取,此流不能用NPOI读,所以把网络流读到内存中            MemoryStream ms;//定义内存流            using (stream)            {                 ms = new MemoryStream();//建一个网络流                byte[] bytes = new byte[1024];                int readbytes;                while((readbytes=stream.Read(bytes,0,1024))>0)//把网络流中复制到内存流中                {                     ms.Write(bytes, 0, readbytes);//一次读写1K                }            }            using (ms)            {                 HSSFWorkbook workbook = new HSSFWorkbook(ms);//用工作薄接收内存流                HSSFSheet sheet = workbook.GetSheetAt(0);//取第一个表                HSSFRow row = sheet.GetRow(0);//取第一行                HSSFCell hc = row.GetCell(0);//取第一列                Console.WriteLine(hc.StringCellValue);//输出 王小明            }        }中文与拼音转换D:\Program Files\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library\简繁体转换D:\Program Files\Microsoft Visual Studio International Pack\Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool\为什么不用别人的邮箱,要自己架设?1 别人的邮箱有垃圾邮件拦截机制。 2. 安全性 使用CSS的三种方式:1.元素内联(h行内样式表:直接写在元素style属性里面);2.页面嵌入:在页面的head加入 ;3.外部引用(外部样式表)文档流:1.position:absolute;绝对定位,即完全脱离文档流,相对于positio属性非static值的最近元素偏移        2.position:fixed; 固定定位即完全脱离文档流,相对于视区进行偏移        3.position:relative;相对定位,这个属性值保持队形所在文档流中的位置,相对于元素在文档流中的位置进行偏移,但保留原占位。        4.position:static;默认值布局:表格布局(加载的时候要等tr td全部加载完才能显示,也不利于搜索引擎收入里面的内容)      框架布局(不好控制布局)      div+css布局()//遇到换行的时候把单词断开word-break:    normal(中文会换行,普通的英文(带空格的)遇到换行会按单词换行,连续的英文不会换行)    break-all(所有的文字该换行时都会换行,遇到单词也会把单词拆开来换行,不保留单词完整性。)    keep-all(英文还是normal状态,中文也不换行了。)word-wrap;    normal    break-word(带空格的保留单词完整性,连续的英文也会换行,兼容FF)overflow:    visible     scroll     hidden     auto层内文字连续英文不换行的问题,word-break:break-all;溢出处理。overflow:scroll,overflow:hide background-color:Red !important;  /*强制设置为这个颜色,不过后面颜色有没有改变都不变*/Visual Studio 2008(支持jQuery智能提示的方法)安装补丁后js与jQuery都有智能提示首先安装:Visual Studio 2008 SP1补丁然后再安装: VS90SP1-KB958502-x86补丁(for jQuery)使用jQuery的智能提示需要引入jQuery-1.x.x-vsdoc.js(或将该文件放在与jQuery-1.x.x.js的同目录下)javascript没有块级的作用域。window.setInterval(code,delay)   //每隔一段时间执行指定的代码(第一个参数是指定的代码字符串,第二个参数:时间间隔(毫秒数))   var intervalId=setInterval("alert('hello');",1000)window.clearInterval(intervalid);  //停止计时器setTimeout通用的HTML元素的事件:onclick(单击)、ondblclick(双击)、onkeydown(按键按下)、onkeypress(点击按键)、onkeyup(按键释放)、onmousedown(鼠标按下)、onmousemove(鼠标移动)、onmouseout(鼠标离开元素范围)、onmouseover(鼠标移动到元素范围)、onmouseup(鼠标按键释放)、oncontextmenu(在浏览器中单击鼠标右键显示”右键菜单”时触发)等 document.onmousemove = function() {             //document.title = window.event.clientX + "==" + window.event.clientY;  //鼠标在浏览器上的位置            //document.title = window.event.screenX + "==" + window.event.screenY;  //鼠标在屏幕上的位置;            document.title = window.event.offsetX + "==" + window.event.offsetY;   //鼠标相对于事件源的位置        }动态禁止页面跳转的方法 function btn_click() {             var txt = document.getElementById("txt").value;            if (txt.length == 0) {                 alert("请输入用户名");                //让文本框获得光标                document.getElementById("txt").focus();                //取消默认行为的执行  submit action,不适用firefox                window.event.returnValue = false;     //fifox是用e.preventDefault();            }        }        //动态注册时间..事件响应函数        //只有在事件响应函数中return false;才可以取消后续内容的执行        window.onload = function() {             //给a标签动态注册事件            document.getElementById("alink").onclick = function() {                 alert("无权限");                return false;            };        }appName 返回浏览器名。IE 返回 'Microsoft Internet Explorer',NN 返回 'Netscape'。下面的例子显示了 appName 属性的值: document.write("navigator.appName 的值是 " + navigator.appName)appVersion 返回浏览器版本,包括了大版本号、小版本号、语言、操作平台等信息。 language 语言 mimeType 以数组表示所支持的MIME类型 platform 返回浏览器的操作平台,对于 Windows 9x 上的浏览器,返回 'Win32'(大小写可能有差异)。 userAgent 返回以上全部信息。例如,IE5.01 返回 'Mozilla/4.0 (compatible; MSIE 5.01; Windows 98)'。 plugins 以数组表示已安装的外挂程序 javaEnabled() 返回一个布尔值,代表当前浏览器允许不允许 Java。window.event.srcElement指最初引发事件的事件源(对象、元素)取消事件冒泡: window.event.cancelBubble=true;//IE下的写法。               e.stopPropagation();  Firefoxwindow.onload与body的onload1.二者效果完全一样,都是在页面内容都加载完毕后才触发。2.由于网页中没有window所以在body中写onload3.建议使用window.onload//使用js脚本的方式高效4.其实应该是document.onload,但是所有浏览器都实现到了window对象上。动态创建DOM=====================常用方法与属性===========================方法:createElement(‘element’);appendChild(node);removeChild(node);replaceChild(new,old);insertBefore(new,参照);属性:firstChildlastChild//通过js动态创建的元素,直接  右键→查看源码是看不到的,需要通过“开发人员工具”才能看到。snodeTypenodeType 属性可返回节点的类型。nodeValue  //只能获取文本节点和注释节点的内容最重要的节点类型是:元素类型 节点类型元素element 1属性attr 2文本text 3注释comments 8文档document 9children[]  //返回元素节点childNodes[]  //获取所有直接子节点 包括文本节点和属性节点parentNode() //获取父节点nextSibling //获取下一个兄弟节点previouSibling  //获取上一个兄弟节点value 获取 设置 表单元素的值innerText(FF不支持innerText,在FF下用textContent属性)、innerHTML属性面试题:说说开发项目的时候不同浏览器的不同点,你是怎么解决的?appendChild,insertCell,px不同浏览器中对DOM支持的方法不一样获取网页中那个元素触发了事件:在IE里使用srcElement ;在FireFox里使用target 使用Dom获取和更改网页标签元素内文本:在IE里使用innerText ;在FireFox里使用textContent 动态为网页或元素绑定事件:在IE中绑定事件的方法是attachEvent ;在FireFox中绑定事件的方法是addEventListener (类似于多播委托。使用该方法是还有一些其他的注意事项)透明度:IE中filter:alpha(opacity=50);  firefo中opacity:0.5 动态创建表格的时候Ie是默认往后添加insertCell,而chrome是前往添加,所以在insertCell()后面加参数-1;动态创建表格tr的时候如果没有写在tbody,在choome可以显示,ie有些版本显示不出来、firefox显示不了更多http://www.360doc.com/content/09/0319/12/16915_2855107.shtmlen.Attribute()  获取便签的自定义属性,在ie中可以直接img.aa,但是其他浏览器不兼容label.setAttribute("for","t")Jquery规则:  $(who).when({what});   例:  $('#a').click(function(){});层次选择器:(1)$("div p")获取div下的所有p元素(后代,子、子的子……)(2)$("div > p")获取div下的直接p子元素(3)$(".menuitem + div")获取样式名为menuitem之后的第一个div元素(不常用)(4)$(".menuitem ~ div")获取样式名为menuitem之后所有的div元素(不常用)为什么jQuery中很少有属性的用法,因为属性写法很难实现"链式编程":first 选取第一个元素。$("div:first")选取第一个<div>$(".warn:first");:last 选取最后一个元素。$("div:last")选取最后一个<div>:not(选择器) 选取不满足“选择器”条件的元素,$("input:not(.myClass)")选取样式名不是myClass的<input>:even、:odd,选取索引是奇数、偶数的元素:$("input:even")选取索引是奇数的<input>:eq(索引序号)、:gt(索引序号)、:lt(索引序号) 选取索引等于、大于、小于索引序号的元素,比如$("input:lt(5)")选取索引小于5的<input>$(":header")选取所有的h1……h6元素(*)$("div:animated")选取正在执行动画的<div>元素。 (*)为什么大的网站都是使用一张大图而不是多张小图因为浏览器去访问服务器上面的一个页面,浏览器返回仅仅是html代码,而这个页面去引用外部的css,js,图片,浏览器要去解析,请求获取图片,如果有多张图片就要获取多次。而是用一张大图只要获取一次就可以了扩展方法:静态类、静态方法、this字节数据转换成字符串:StringSystem.Text.Encoding.UTF8.GetString(byte[])字符串转换成字节数组:byte[]System.Text.Encoding.UTF8.GetBites(String)一个进程可以有多个应用程序域,一个应用程序域可以执行多个线程,但是同一时间线程只能在一个应用程序域中执行。应用程序域含:异常处理、代码安全AddDel del=new AddDel();del.BeginInvoke(1,2,回调函数,回调函数状态)  第一步:从线程池里获取一个线程  第二步:执行委托执行的方法(在工作线程里面执行)  第三步:调用回调函数(可以为null)FIFO(普通列先进先出) 。FILO(本地工作项的队列是先进后出)工作任务请求队列的时间是不确定的,解决死锁:从代码级别:操作资源的顺序一致。TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。应用层 (Application):应用层是个很广泛的概念,有一些基本相同的系统级 TCP/IP 应用以及应用协议,也有许多的企业商业应用和互联网应用。传输层 (Transport):传输层包括 UDP 和 TCP,UDP 几乎不对报文进行检查,而 TCP 提供传输保证。网络层 (Network):网络层协议由一系列协议组成,包括 ICMP、IGMP、RIP、OSPF、IP(v4,v6) 等。链路层 (Link):又称为物理数据网络接口层,负责报文传输。socket的三次握手第1次:程序1发了一小段消息给程序2第2次:程序2解析程序1发送来的消息,发送指定的消息给程序1第3次:程序1发送确认消息Socket (): 创建一个SocketBind(): 绑定一个本地的IP和端口号(IPEndPoint)Listen(): 让Socket侦听传入的连接尝试,并指定侦听队列容量Connect(): 初始化与另一个Socket的连接Accept(): 接收连接并返回一个新的socketSend(): 输出数据到SocketReceive(): 从Socket中读取数据Close(): 关闭Socket (销毁连接)端口查询 netstat -a -n网络编程帮助  netstat /?端口分为以下三类:(1)公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯 明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。(2)注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于 这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。(3)动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端 口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开    始。用httpwatch查看访问一个网站的响应情况。敲入一个网址后,浏览器向服务器发出请求。页面中的图片、js、css在单独的请求中。GET / HTTP/1.1表示向服务器用GET方式请求首页,使用HTTP/1.1协议Accept-Encoding gzip, deflate表示浏览器支持gzip、deflate两种压缩算法Accept-Language zh-cn 表示浏览器支持的语言,很多进入后自动就是中文界面的国际网站就是通过读取这个头的值实现的。Connection Keep-Alive。一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了Connection:keep-alive,则TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。Cookie是浏览器向服务器发送和当前网站关联的Cookie,这样在服务器端也能读取浏览器端的Cookie了。User-Agent为浏览器的版本信息。通过这个信息可以读取浏览器是IE还是FireFox、支持的插件、.Net版本等。异步委托的作用:异步委托用来bicom -ttelnet www.baidu.com 80编译的原理浏览器==>服务器==>服务器软件(IIS)==》.NET FrameWork==》请求页面(判断是否在内存中是否有机器码,判断C盘中是否有中间代码文件,将domo.aspx和制定的Demo.aspx.cs页面类进行合并用中间语言(IL)编译成一个类,默认存储在C盘中)第一次请求网页的时候为什么慢?因为第一次在内存中没有机器码、C盘中没有中间代码,要将页面的代码和页面的.cs页面类进行合并用中间语言,编译成一个类。默认存储在C盘中表单提交数据:input texteare select 可以提交到后台,必须有name属性才回提交,而且提交数据的时候以name为key,以value属性为值 ,如果这个标签是disable的那么也不会提交到后台优化dome:比如做报警系统的时候,表可能进行大量的增删改的时候,本身有加索引的会影响增删改的速度。把一个表拆分成两个表,一个是当前表,一个是历史表,因为当前表可能进行大量的增删改,而历史数据一般进行查询适合见索引,然后使用数据库里面一个照,每天让他自动导数据//ctrl+m+l  快速展开  ctr+m+o  快速折叠淘宝图片存放的原理:图片用名用GUID命名,给服务器请求获取图片,客户端发过来的是图片的Id(由GUID生成的),后台handler拿到Id,然后在图片表里面找图片的相对路径地址,然后图片表把图片的存放的服务器ID编号传给数据库表,在图片服务器表根据服务器ID编号进行查询服务器IP和具体路径,然后把图片的目录与图片的相对路径结合,根据服务器IP地址进行查询获取图片集群技术LVS NLB网络负载均衡(nlbmanager.msc技术)F5:硬件Myspbeis多IIS、多主库多从库(数据库),主库用来写入,从库用来读取垂直分库(模块间的低耦合:用户模块、新闻模块、博客模块)水平分库(表分区:把同一个表的数据文件分派到不同的数据库文件里面,这样不同的文件可以放到不同的磁盘上面,这样可以利用多个磁头增加数据库的访问速度)不行在把数据放到服务器的缓存里面,用空间换时间NOccode(如新浪,把多个列转换为一个列)   nonjoadbContext-Type应用程序池:HttpApplication实例的创建是根据Gloable.asax文件编译后的类型,再通过反射的方式创建的实例,所以创建实例都灰常消耗时间和资源,则使用对象池技术页面周期: 1.创建控件树 2初始化页面控件(帮控件赋值默认值) 3处理viewstate(创建控件树的实例)4 load(把表单提交过来的新值放到控件上) 5调用事件响应方法 6保存viewState 7渲染html Response其他成员响应的缓冲输出:为了提高服务器的性能,ASP.Net向浏览器Write的时候默认并不会每Write一次都会立即输出到浏览器,而是会缓存数据,到合适的时机或者响应结束才会将缓冲区中的数据一起发送到浏览器。Response对象的主要成员:1、Response.Buffer、Response.BufferOutput:经过Reflector反编译,发现两个属性是一样的,Buffer内部就是调用的BufferOutput。这个属性用来控制是否采用响应缓存,默认是true。2、Response.Flush()将缓冲区中的数据发送给浏览器。这在需要将Write出来的内容立即输出到浏览器的场合非常适用。案例:大批量数据的导入,显示正在导入第*条数据,用Thread.Sleep模拟耗时。3、Response.Clear()清空缓存区中的数据,这样在缓存区中的没有发送到浏览器端的数据被清空,不会被发送到浏览器。4、Response.ContentEncoding输出流的编码。5、Response.ContentType 输出流的内容类型,比如是html(text/html)还是普通文本(text/plain)还是JPEG图片(image/JPEG)。Request其他成员:1、Request.UrlReferrer 请求的来源,可以根据这个判断从百度搜的哪个关键词、防下载盗链、防图片盗链,可以伪造(比如迅雷)。 (使用全局一般处理程序)2、Request.UserHostAddress获得访问者的IP地址3、Request.MapPath(virtulPath)将虚拟路径转换为磁盘上的物理路径,Request.MapPath("./a/b.aspx")就会得到D:\2008\WebSites\WebSite4\a\b.aspxServer.MapPath里就是调用的Request.MapPathHttpUtility.HtmlDecode(); //将html进行编码HttpUtility.HtmlEncode(); //将html js进行转换为字符串 HttpUtility.UrlDecode();  //将url编码数组转换为字符串HttpUtility.UrlEncode();   //将字符串数组转换为url编码字符串 <% Server.Execute("a.aspx"); %>      <hr /> <% Server.Execute("b.aspx"); %>   <!--Execute:执行另外一个页面的脚本--><%Server.Transfer("a.aspx"); %>  <!--Transfer:服务器获取新的url地址->ViewState保存状态:适合当前页面多次跟服务器交互,非表单控件,不能把数据提交到后台,只能通过ViewState如果服务器两次都输出同一个名称的Cookie,浏览器会怎么办? 覆盖如果服务器输出两个不同名的Cookie,浏览器怎么办?  添加如何删除浏览器Cookie?  服务器设置过期时间,response给用户cookie.Path(为指定的文件夹生成Cookie)cookie.Domain (域/域名)Response.Cookies和Request.Cookies中间的关系 – 有共用部分四种 弹出登录失败提示1. Response.Write("<script>alert('登录成功!')</script>");2. <script type="text/javascript">     <%=JsScriptData %>    </script> public string JsScriptData;JsScriptData = "alert('登录鸟人了...吧')";3. this.RegisterStartupScript("key1", "<script>alert('登录鸟人了...吧')</script>");4. Page.ClientScript.RegisterClientScriptBlock(GetType(), "key3", "alert('登录成功')", true);思考:怎么来模拟实现session:先通过静态变量来存储session   后面项目:分布式缓存+cookie idsession在维护灰常消耗性能在webconfig中禁用cookie来传递sessionid可以通过url的方式传递sessionid,如果浏览器把cookie禁用了,这时候session每次都是新建的。AJAX:”Asynchronous JavaScript and XML”中文意思:异步JavaScript和XML。指一种创建交互式网页应用的网页开发技术。不是指一种单一的技术,而是有机地利用了一系列相关的技术:简单理解为:JavaScript + XMLHttpRequest + CSS +服务器端 的集合.Ajax request和response $(function() {             $("#btnGetDate").click(function() {                 var xhr;                //第一步:创建异步请求的核心的对象                if (XMLHttpRequest) {                     xhr = new XMLHttpRequest();  //运行:ie8  ie9,chrom,ff                }                else {  //ie6 ie5                    xhr = new ActiveXObject("XMLHttpRequest");                }                //第二步:设置请求对象跟后台哪个页面进行交互                //HTTP请求方法名  请求的页面 是否是异步                xhr.open("Get", "ProcessAjax.ashx?p=3", true);                //第三步:发送请求                xhr.send();                //第四步:后台返回数据后,会调用此方法,回调函数                xhr.onreadystatechange = function(data) {                     //4标识:前台已经接收完了后台发送来的响应报文                    if (xhr.readyState == 4) {                         //if (xhr.status == 200) {                         //alert(data);                                              alert(xhr.responseText);                    }                };                    /*//post请求                xhr.open("Post", "ProcessAjax.ashx", true);                //post通过此来传递参数                xhr.send("ip=3&enp=100");                //Post请求要设置一下请求头部                xhr.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");                xhr.onreadystatechange = function(data) {                     //4标识:前台已经接收完了后台发送来的响应报文                    if (xhr.readyState == 4) {                         //if (xhr.status == 200) {                         //alert(data);                                              alert(xhr.responseText);                    }                };  */            });        })C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data四种数据提交后台的方法$(function() {             $("#btnGetJSon").click(function() {                 $.getJSON("ResponJSon.ashx", "a=3&b=4", function(data) {                     alert(data[1].CityName);                });            });            $("#btnJQGet").click(function() {                 $.get("ResponJSon.ashx", "dd=33", function(data) {                     alert(data);                });            });            /*$("#btnJQPost").click(function() {             $.post("ResponJSon.ashx", {dd:33,demo:'shit'}, function(data) {             alert(data);            })            }); */            $("#btnJQPost").click(function() {                 $.post("ResponJSon.ashx", { dd: 33, demo: 'shit' }, function(data) {                     alert(data[0].CityName);                }, "json");            });            $("#btnAjax").click(function() {                 $.ajax({ url: "ResponJSon.ashx",                    data: "a=3&b=4",                    type: "Post",                    success: function(data) {                         alert(data);                        // $("#divDemo").text(data);                    },                    errot: function() {                         alert("错误");                    }                });            });            $("#btnLoad").click(function() {             $("#divDemo").load("ResponJSon.ashx", { id: 333 }, function(data) {                     alert(data);                });            });        })上传图片到服务器  //下载官网 http://jquery.malsup.com/form/#download 下载地址 $("@form1").ajaxSubmit({             success:function(str){             },            error:function(error){alert(error);},            url: '/ggodManaGer/Goods/ImageHandler.ashx', //设置post提交到的也你按            type:"post",  //设置表单以post方法提交            dataType:"json" //设置返回值类型为文本            })在index.aspx页面头部写上AutoEventWireup="false"  ,Page_Load, ***事件都不执行在index.aspx页面头部写上Trace="true",开始页面追踪在Refleact,Search上System.Web.UI.Page,找到ProcessRequest方法,在找到 this.ProcessRequest(true, true);, this.FrameworkInitialize();用来是初始化页面控件数, this.ProcessRequestMain()处理页面控件数的过程获取服务器控件生成在客户端的ID:alert("<%=this.Button1.ClientID %>");解决多个上下文乱的问题:1

标签: 0804zb4m圆形电连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台