C#基础自用

一,什么是CLR:(Common Language Runtime)是一套完整的、高级的虚拟机,它被设计为用来支持不同的编程语言,并支持它们之间的互操作。
CLR 的主要目标:让编程变得简单。
CLR 的主要功能:1,基础功能——那些对其他的特性有广泛影响的功能。包括:垃圾回收,内存安全和类型安全,对编程语言的高级支持。
              2,次要功能——那些由基础功能发展而来的、但不是必须的功能。AppDomains 程序隔离,程序安全与沙盒。
              3,其他功能——那些运行时环境需要的、但并不依赖基础功能的特性。这些功能帮助我们建立了一个完整的编程环境。
            比如:版本管理,调试、性能分析,互操作。

CLR加载器负责装载和初始化程序集、模块、资源和类型。CLR加载器加载尽可能少的这些资源。不像Win32加载器,CLR加载器不会解析和自动加载子模块或程序集。相反,子模块只有当它们真正需要的时候,才进行加载。这不仅缩短了程序初始化时间,而且减少了运行程序消耗的资源。

二,数据类型

值类型:整数,浮点数,高精度浮点数,布尔,字符,结构,枚举
引用类型:对象(Object),字符串,类,接口,委托,数组
除了值类型和引用类型,还有一种数据类型是空类型(null)gv
预定义的类型 :整数,浮点数,高精度浮点数,布尔,字符,对象(Object),字符串 
复合类型 :结构,枚举,类,接口,委托,数组 

三,判断数是倚数 (num % 2)==1 或 (num & 1) == 1

,GC三种情况候触发:
1、第一代没足够内存。这是最常见的。
2、调用了GC.Collect()
3、系统内存资源不足。应该是其他进程占了过多内存所致。

,C#设计模式
1,单列模式                --只实例化一次
2,简单工厂模式          --每个类只做一件事,直接new
3,工厂方法模式     --抽象类里的方法一定是抽象的         
        --1,抽象(abstract)一个具体实现方法的基类
        --2,具体生产类继承重写自己的功能
         --3,抽象(abstract)一个工厂基类,带具体方法的基类方法
        --3,工厂类继承工厂基类重写方法,去new具体实现类。
        --4,调用时先new工厂类,用工厂类去创建一个具体生产类,用具体类调具体实现方法
4,抽象工厂模式    --

,位运算:    1.位逻辑非 ~     例如:二进制:  1000 1101 进行位逻辑非运算为:0111 0010
    2.位逻辑与&      例如:  二进制:1000 1101 & 0110 1100 等于00001100
                3.位逻辑或 |       例如:  二进制:1000 1101 | 0110 1100 等于11101101
                4.位逻辑异或^   例如:  二进制:1000 1101 ^ 0110 1100 等于1110 0001
    5.位左移运算<< 例如:  二进制:1000 1101<<3 等于0100 0110 1000
    6.位右移运算>> 例如:  二进制:1000 1101>>3 等于0001 0001
    
,栈和队列:队列先进先出,栈先进后出
    栈是限定只能在表的一端进行插入和删除操作的线性表
    队列是限定只能在表的一端进行插入,在另一端进行删除操作的线性表

,在C#中数组,ArrayList,List区别:

            数组 string[] str = new string[3]; 
            优点:是一段连续的存储结构,查找速度快,可以多维。
            缺点:声明时必须声明长度和类型。
            ArrayList  ArrayList arrayList = new ArrayList(); 
            优点:声明时不需要声明长度和类型,自动扩充和收缩。
            缺点:不是安全类型,会引发装箱和拆箱,耗性能,只有一维。                 
            List  List<int> list = new List<int>();
            优点:类型安全,支持泛型的集合类型,容量可以自动扩充和收缩 。
            缺点:需要声明类型。

,Dictionary和HashTable的区别:Hashtable的键值都是object(DictionaryEntry)类型,数据排列是乱序的;
而Dictionary是泛型(KeyValuePair<T, T>),引用类型,按插入顺序排列数据。Hashtable相对于Dictionary,在使用Hashtable需要装箱拆箱操作进行格式转换,
用起来不够方便,不过在大批量数据的随机检索(无规律)时,Hashtable更有优势。

1.HashTable不支持泛型,而Dictionary支持泛型。
2.Hashtable 的元素属于 Object 类型,所以在存储或检索值类型时通常发生装箱和拆箱的操作,    所以你可能需要进行一些类型转换的操作,而且对于int,float    这些值类型       还需要进行装箱等操作,非常耗时。
3.单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分。多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减。
4.代码测试的时候key是整数型Dictionary的效率比Hashtable快,如果key是字符串型,Dictionary的效率没有Hashtable快。

字典的遍历方式:Dictionary的四种遍历

 KeyValuePair,Dictionary.Values,Dictionary.Keys,while    

十,反射的实现原理:审查元数据并收集关于它的类型信息的能力。反射个人认为,就是得到程序集中的属性和方法。

十一,Tcp和Udp

                          udp                                                                            tcp 
是否连接          无连接                                                                       面向连接
是否可靠          不可靠传输,不使用流量控制和拥塞控制                 可靠传输,使用流量控制和拥                                                                                                            塞控制
连接对象个数   支持一对一,一对多,多对一和多对多交互通信      只能是一对一通信
传输方式          面向报文                                                                    面向字节流
首部开销          首部开销小,仅8字节                                                首部最小20字节,最大60字节
适用场景          适用于实时应用(IP电话、视频会议、直播等)       适用于要求可靠传输的应用,                                                                                                             例如文件传输

优化网络层,UDP分片机制

十二,Tcp粘包和数据粘包发生的情况:

第一种:发送端需要等缓冲区满才发送出去,造成粘包(发送数据时间间隔很短,数据了很小,会合到一起,产生粘包)
 第二种:接收方不及时接收缓冲区的包,造成多个包接收(客户端发送了一段数据,服务端只收了一小部分,服务端下次再收的时候还是从缓冲区拿上次遗留的数据,产生粘包)
数据粘包处理:包头存储这个条消息的大小。
发送数据时:多包一起发,不要不停new发送数据对象。

十三,一个网页浏览过程的细节:

1,先进行DNS解析,获取域名的IP地址,(重要细节:浏览器首先要查看DNS缓存和hosts文件,
      如果这两个地方都没有域名的IP地址,再向网络发起DNS查询)
2,跟域名所在IP地址进行TCP链接,并发起HTTP请求。
3,服务器回应HTTP请求,将所请求资源发回浏览器。
4,重要细节:浏览器最初获得的是一个HTML文档资源,这个HTML文档里面还将引用很多其它资源,比如页面上的图片,引用的js,css外部文件等;浏览器获取这个HTML文档之后,进行解析,
让后继续向服务器发送请求其它资源的HTTP请求;浏览器要打开一个HTML页面,需要向服务器
请求很多不同的资源,有的时候这些资源还存放在不同的服务器上,比如一些公用js文件;
有的时候这些资源在本地有缓存,如果没有过期,浏览器直接读取换成,加快页面打开速度;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值