摘要:CAD二次开发 学习笔记(3) Excel数据存储测试 /// <summary> /// 从database读取直线的数据,并将数据保存到excel表 /// </summary> [CommandMethod("ToExcel")] public void ToExcel() { Databas
阅读全文
摘要:CAD二次开发 学习笔记(2) 创建浮动视口 /// <summary> /// 创建浮动视口,并将新视口切换为当前视口 /// </summary> [CommandMethod("CreatFloatingViewport")] public void CreatFloatingViewport
阅读全文
摘要:CAD二次开发 学习笔记(1) 总结一张关系图 合并两个选择集,并改变所有对象的颜色 /// <summary> /// 合并两次选择的选择集,并将所有选择对象改变颜色 /// </summary> [CommandMethod("MergeSelectionSet")] public void M
阅读全文
摘要:class Program { static void Main(string[] args) { ListTest(); ConcurrentBagTest(); } public static void ConcurrentBagTest() { ConcurrentBag<int> bag =
阅读全文
摘要:在程序中,局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。 定义常量 在 C++ 中,有两种简单的定义常量的方式:使用 #define 预处理器。使用 const 关键字。 前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。 #de
阅读全文
摘要:XML文档创建流程图 创建、读取XML过程详解 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <students> <student 姓名="刘小强-0" 学号="10000"> <语文成绩>59</语文成绩> <数学成绩>54</数
阅读全文
摘要:linux有哪些版本(二):Lubuntu Lubuntu是Ubuntu快速、轻量级且节省能源的变体。它旨在面向低资源配置系统,并被主要设计用于上网本和老旧个人电脑。 如果你的家里有那种连xp都带不动的破电脑,这可能是你最好的选择。 linux有哪些版本(一):deepin 这是中国的操作系统中排名
阅读全文
摘要:生成Graphics的两种方法: l 通过事件参数Eventargs生成; l 通过控件的CreateGraphics方法生成; 绘制的两种方法: l 控件的paint事件; l 重写Control类的OnPaint方法; Graphics是否需要Dispose释放资源?(也可以使用using释放资
阅读全文
摘要:基础知识: 序列化基本概念: 序列化 (C#) 序列化是指将对象转换成字节流,从而存储对象或将对象传输到内存、数据库或文件的过程。 它的主要用途是保存对象的状态,以便能够在需要时重新创建对象。 反向过程称为“反序列化”。 序列化的工作原理 下图展示了序列化的整个过程: 将对象序列化为带有数据的流。
阅读全文
摘要:用NET自带的XML序列化工具进行系列化和反序列化; 需要引用的命名空间: using System.Xml;using System.Xml.Serialization; XmlSerializer serializer = new XmlSerializer(typeof(Student));
阅读全文
摘要:using Newtonsoft.Json; 写入文件,读取文件后,要及时释放FileStream ,StreamWriter StreamReader ,否则可能导致读写失败; 反序列化使用泛型方法,而不应使用as转换; as可能导致转型失败; JsonConvert.DeserializeObj
阅读全文
摘要:如果某个类存在两个维度的变化,通过桥接模式可以将两个维度分离出来,使两者可以独立扩展; 桥接模式用一种巧妙地方式处理多层继承的问题,用抽象关联关系取代多层继承关系; 将类之间的静态继承关系转换为动态的对象组合关系,符合组合原则; 桥接模式更容易扩展,并且可以显著减少类的个数; 如果一个类的两个维度分
阅读全文
摘要:在面向对象软件系统中,每个类/对象都承担了一定的职责,他们可以相互协作,实现一些复杂的功能; 如果系统中存在不兼容的接口,可以通过引入一个适配器来使得原本不兼容的两个类可以一起工作; 这里的适配器就像手机的充电器(手机充电器也叫电源适配器),将不适配的220V电转化为可以适配的电,很明显,这个适配器
阅读全文
摘要:代理模式的理解: 当用户无法或不能直接访问某个对象时,可以通过一个代理来间接访问; 为保证客户端使用的透明性,所访问的真是对象和代理对象需要实现相同的接口; 代理模式分为:保护代理(Protect Proxy)、远程代理(Remote Proxy)、虚拟代理(Virtual Proxy)、缓冲代理(
阅读全文
摘要:三类设计模式的对比 英文名 设计模式数量 用途、意义 创建型模式 Creational Pattern 5 创建型模式关注对象的创建过程,将对象的创建和使用分离,降低系统耦合度,让设计方案更易于修改和扩展 结构型模式 Structural Pattern 7 结构型模式关注如何将类或对象组织在一起,
阅读全文
摘要:享元模式的理解: 享元模式的定义:运用共享技术支持大量细粒度对象的复用; Flyweight Pattern Definition:Use sharing to support large numbers of fine-grained efficiently. 享元模式关键词:大量、细粒度、复用、
阅读全文
摘要:原型模式不是通过new生成新的对象,而使通过复制进行生成; 原型模式适用于相同类型的多个对象的生成; 原型模式分为两种:浅克隆/浅表副本(Shallow Clone)和深克隆/深表副本(Deep Clone); 浅克隆:Shallow Clone,只复制值类型变量,不复制引用类型变量的克隆;(只复制
阅读全文
摘要:建造者模式相较于工厂模式,用于创建复杂的对象; 使用的技术:继承、抽象类、多态、配置文件、反射; 建造者模式的设计原则: 面向抽象类编程,符合依赖倒置原则; 通过配置文件生成具体建造者,替代抽象建造者,符合里氏替换原则; 不同的建造者建造不同的角色,符合单一职责原则; 客户端只需调用建造者生成角色对
阅读全文
摘要:工厂模式对比: 简单工厂 SimpleFactoryPattern 工厂方法 FactoryMethodPattern 抽象工厂 AbstractFactoryPattern 工厂数量 一个工厂 多个工厂 多个工厂 工厂数量计算 1 工厂数=产品数 工厂数=产品系列数 单个工厂创建产品数 所有产品
阅读全文
摘要:相比于工厂模式,抽象工厂模式的每个工厂可以创建产品系列,而不是一个产品; 抽象工厂用到的技术:接口、多态、配置文件、反射; 抽象工厂模式的设计原则: 实现客户端创建产品和使用产品的分离,客户端无须了解创建的细节,符合迪米特法则; 客户端面向接口定义产品,符合依赖倒置原则; 客户端面向接口定义工厂,而
阅读全文
摘要:本例用到了配置文件、接口、反射、多态; 满足的设计原则: 通过工厂,实现创建对象和使用对象的分离,实现松耦合,满足迪米特法则; 通过配置文件指定创建对象类型,而不需更改源代码,满足开闭原则; 容易实现功能扩展,只需添加新的Logger实现类和新的Factory实现类即可,无须更改源代码,满足开闭原则
阅读全文
摘要:<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="chartType" value="histogram" /> </appSettings> </configuration> public
阅读全文
摘要:internal interface Chart { void Display(); } internal class LineChart : Chart { public LineChart() { Console.WriteLine("创建折线图"); } public void Display
阅读全文