1, 面向对象程序思想
面向对象是程序开发的一种机制, 特征为封装, 继承, 多态. 以面向对象方式编写程序时, 将复杂的项目抽象为多个对象互相协作的模型, 然后编写模型结构, 声明或实现类型的成员, 即描述对象的特征和行为, 编写不同的类型解决或完成不同的功能, 在程序中通过类的实例处理解决实际问题.
2, 类和对象区别
类 (Class) 指一类事物, 对象 (Object) 指属于这一类事物的实体;
类定义了对象的相关数据和方法, 类通过构造函数生成对象, 对象实现了类的定义, 且拥有具体的数据.
3, 修饰符作用
private 所属类内部可以访问, 某些情况可以通过 get 或 set 进行读取或修改.
protected 所属类及子类的内部访问.
internal 同一程序集内部访问.
public 公共访问权限, 无限制.
4,sealed 修饰符
用于修饰类, 实例方法和属性, 修饰类时, 该类无法被继承, 所以也称为密封类.
abstract(抽象类)必须被继承才有意义, 故二者不能共存.
5,override 和 overload
overload 方法名相同, 函数签名不同, 多次 overload 可以适应不同需要.
override 对基类的拓展或改写, 签名必须保持一致.
6, 接口和抽象类
二者皆无法被实例化, 并且未实现部分都由派生类实现, 抽象类只能派生类, 接口可以派生类和结构.
抽象类的派生类也可以说是受限类, 即抽象成员在派生类中不一定被实现.
接口则要求派生类或结构完全实现其成员.
抽象类可以包含已经实现的成员, 可以包含字段;
接口只包含未实现的成员, 不能包含字段.
类只能继承一个抽象类, 但可以继承多个接口.
7,this 和 base
this 用于引用类的当前实例, base 用于派生类访问基类成员.
8, 简述程序集和应用程序域
程序集用于解决 DLL 相关的问题, 是自我描述的安装单元, 是逻辑单元, 而非一个文件.
程序集可以使包含元数据的多个文件, 也可以是一个 dll 或者 exe 执行文件.
动态程序集位于内存之中, 而非存储文件.
应用程序域是. NET 中的程序边界.
9,.NET 程序编译过程
由多种高级语言编写, 如 c#,vb, 最后会被各自编译器编译为一致的中间语言 (IL). 然后又 CLR(公共语言进行时) 提供运行环境, 将中间语言编译为机器码供 CPU 执行.
中间语言采用即时编译, 也称 JIT 编译. 这种方式只编译调用的代码部分, 编译过的部分存储于内存, 下次执行无需再次编译, 退出程序时, 已编译部分的代码会被清除.
10,.NET 程序中间语言 (IL) 又称为托管代码, 优点为平台无关性, JIT 性能优化, 语言互操作性.
11,using 和命名空间
using 可用于引用命名空间, 自动释放对象使用的资源, 添加别名.
引用命名空间:
using System;
自动释放对象使用资源
- using(SqlConnection con=new SqlConnection(conntsr)){
- con.Open();
- }
添加别名
using S=System;
命名空间反映程序中的逻辑关系, 且有效避免类名冲突. 代表各种类的逻辑组织方式, 与物理组织方式无关.
用 namespace 关键字可以自定义命名空间.
12, 值类型和引用类型
值类型包含数据, 引用类型只包含数据的内存地址.
值类型只要离开其定义的作用域, 就会从内存中被清除, 引用类型引用对象一直存留在托管堆,.NET 收集器将自动将其销毁.
13, 结构和类
结构类型是值类型的数据封装体, 可用于封装较简单的数据结构, 并且和类共享大多数语法.
结构不支持继承, 所有结构直接继承自 System.ValueType.
结构无法声明无参数的构造函数以及析构函数, 因为编译器将提供一个默认的构造函数, 并将成员进行初始化. 可声明带参的构造函数.
结构的静态字段可直接赋初值, 实例成员则不允许.
由于结构类型是值类型, 所有实例化可以不使用 new 运算符. 结构的 new 操作不执行分配内存操作, 只执行初始化.
14, 栈和堆
栈指堆栈, 堆指托管堆, 堆栈可用于存储非实例成员的值类型数据, 以及引用类型的变量; 而托管堆可用于存储引用类型实例的数据和相关信息.
15, 委托 delegate --
可理解为指向一个函数的引用, 事件是一种特殊的委托.
16, 页面传值方法
QueryString 使用简单, 但缺乏安全性, 值暴露于 url, 中文需转码.
Session 使用简单, 可传递简单数据类型和对象, 数据大小无限制, 消耗较多服务器资源.
Cookie 使用简单, 跨页面表单使用 cookie 保持用户状态, 但易被人认为收集用户隐私.
Server.Transfer 直接在服务器端重定向, 使用简单, 减少客户端对服务器请求, 可传递数据类型和控件的值, 但由于 url 地址不变, 若源页面与目标页面不在同一目录或子目录下, 使用相对路径的图片, 超链接都会错误指向.
Application 使用简单, 消耗较少服务器资源, 数据大小无限制, 可传递数据和对象, 但作为全局变量容易被误操作.
缓存 整页缓存, 实现简单, 消耗服务器内存; 片段缓存, 节省内存, 但实现麻烦; 应用程序缓存, 不局限缓存网页, 但实现复杂.
17, 常用调用 webService 方法
WSDL.exe 命令行工具生成代理类, 然后在代码里引用这个类文件
.net 程序中添加引用, 添加服务引用.
Http 协议的 Get,Post
HttpClient 调用
18,string str=null, 不分配内存空间, string str="", 分配长度为空字符串的内存空间.
19, 线程和进程
Thread 和 Process 都定义了某种边界.
Thread 定义的是代码执行堆栈和执行上下文的边界.
Process 定义的是应用程序的边界, 不同进程之间不能共享代码和数据空间.
一个进程可包含多个线程.
单个进程能访问的最大内存量为最大虚拟内存的 1/2.
20,Windows 服务
运行在后台指定用户 (System) 下的应用程序, 无标准 UI 界面. 在服务开始时创建, 在服务结束时销毁.
21,GAC
全局应用程序集缓存, 解决了几个程序共享某一个程序集的问题, 不必将被共享的程序集拷贝到应用程序目录下了.
.NET 程序加载时首先查看 GAC, 有则直接使用, 没有就再去应用程序目录下查找.
22,ADO.NET 五大对象
- Command
- Connection
- DataReader
- DataSet
- DataAdapter
23,TCP/IP 端口能侦听多少进程
可侦听多个进程(端口复用).
端口复用代码:
- Socket soc1=new Socket(AddressFamily.InterNetWork,SocketType.Stream,ProtocolType.Tcp);
- soc1.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),8235));
- soc1.listen(10);
- soc2.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true);
- soc2.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),8235));
- soc2.listen(10);
- Console.Read();
24, asmx 的 XML Web 服务和 SOAP 的. Net Remoting
web 服务使用消息机制, Remoting 采用 RPC.Web Service 能用于不同平台, Remoting 只适用于. Net.
Remoting 效率高于 XML Web Service.
---- 未完待续
来源: https://www.cnblogs.com/KnifezZZ/p/9206317.html