CSharp多线程
# CSharp 多线程 每一个运行的程序是一个进程,每个进程可以有一个或者多个线程。 在单核系统的一个单位时间内 ,CPU 只能运行单个线程,运行顺序取决于线程的优先级。如果在单位时间内线程未能完成执行,系统就会把线程的状态信息保存到线程的本地储存器(TLS)中,以便下次执行时恢复执行。因为 CPU 的处理速度很快,所以我们感知不到停顿。因为切换频密,所以多线程可被视作同时运行,而实际上这是假象。 在多核系统的一个单位时间内,进程或线程可以在不同的 CPU 中运行,实现真正的并行处理。 # 线程生命周期 线程生命周期开始于 System.Threading.Thread...
more...CSharp网络编程
# Socket Socket(计算机术语为:套接字)是计算机网络编程中的一种通信机制,使网络上的两个程序通过一个双向的通信连接实现数据的交换。它是一个抽象层,提供了一套标准的接口,使得应用程序可以通过这套接口与网络通信协议进行交互,实现数据传输和共享。 在网络编程中,Socket 通常被用来实现客户端和服务端之间的通信。客户端通过 Socket 连接到服务端,并向服务端发送数据请求,服务端接收请求并处理后,再将结果返回给客户端。这种通信方式可以用于实现各种不同类型的网络应用程序,如 Web 服务器、聊天软件、在线游戏等。 Socket...
more...备忘录模式
# 备忘录模式 属于行为型模式。 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 应用场景: 如果在某个系统中使用命令模式,需要实现命令的撤销功能,那么命令模式可以使用备忘录模式来储存可撤销操作的状态。 当角色的状态改变的时候,有可能这个状态无效,这时候就可以使用暂时储存起来的备忘录将状态复原。 数据库的事务管理 存档 缺点:消耗资源,状态数据越多,内存占用就越大。 解决方法:将数据储存到文件中(.txt、.xml、.dat 等文件),由内存占用转变为磁盘占用。 # 类图 # 代码 # 存档类 namespace...
more...