-
splitter
基于单文档,分割windows窗口,设置分割的形式(Based on a single document, split windows windows)
- 2013-10-14 09:38:29下载
- 积分:1
-
test2
编译原理的实验,是一个词法分析工具,采用下降递归法实现的(Compiler theory of the experiment, a lexical analysis tool, implemented using recursion down)
- 2011-06-10 21:14:57下载
- 积分:1
-
lcd_panel_cfg
这是基于UCOS的LCD显示驱动,LCD为RGB+SPI模式。希望对大家有用。(This is LCD driver based on UCOS,the model of LCD is RGB+LCD.Wish help for you。)
- 2012-03-28 18:07:29下载
- 积分:1
-
sim1204pfy
matlab实现全息成像!!!!!!!!!!(Holographic imaging based on MATLAB)
- 2019-05-09 22:32:29下载
- 积分:1
-
injso
linux so 动态库 注入, 在linux2.4内核上测试通过(Linux so dynamic library injection, tested on Linux 2.4 kernel)
- 2020-06-23 07:00:01下载
- 积分:1
-
数据结构基本问题C实现
说明: 一些基本的数据结构问题,用C语言实现,我们学校的上机作业,大家可以参考一下
包括1、Josephu问题 2、一元多项式加法 3、三元组表示的稀疏矩阵的一些操作
4、n阶“魔方”的解法 5、Hanoi塔 6、中缀转后缀 7、二叉排序树 8、快速排序 9、谢尔排序(Some basic data structure problems, implemented in C language, our school homework on the computer, you can refer to it.
Including 1, Josephu Problem 2, Polynomial Addition 3, Some Operations of Sparse Matrix Represented by Triple
4. Solution of Magic Cube of order n 5, Hanoi Tower 6, suffix-to-suffix 7, binary sorting tree 8, fast sorting 9, Shell sorting)
- 2020-06-22 05:40:01下载
- 积分:1
-
五子棋
五子棋的人机对战,通过键盘输入下棋位置,电脑自动进行下一步,并且由错误和危险提示
- 2022-07-25 18:09:15下载
- 积分:1
-
RF903--temperature
基于51单片机的无线短距离温度检测,无线模块采用nRF903,433MHz(Based on 51 single-chip wireless short-range temperature detection, wireless module with nRF903, 433MHz)
- 2012-12-19 23:49:34下载
- 积分:1
-
wuziqi
该工程是一个非常完整的,优化的五子棋源代码(VC),可以帮你学习路径选择算法和vc编程.(The project is a very complete, optimized Gobang source code (VC), can help you learn the path selection algorithm and programming vc.)
- 2007-11-30 15:33:37下载
- 积分:1
-
C#程序的157个建议(含源代码)
目录前 言第一部分 语言篇第1章 基本语言要素 / 2建议1:正确操作字符串 / 2建议2:使用默认转型方法 / 6建议3:区别对待强制转型与as和is / 9建议4:TryParse比Parse好 / 12建议5:使用int?来确保值类型也可以为null / 15建议6:区别readonly和const的使用方法 / 16建议7:将0值作为枚举的默认值 / 19建议8:避免给枚举类型的元素提供显式的值 / 20建议9:习惯重载运算符 / 22建议10:创建对象时需要考虑是否实现比较器 / 23建议11:区别对待==和Equals / 27建议12:重写Equals时也要重写GetHashCode / 29建议13:为类型输出格式化字符串 / 32建议14:正确实现浅拷贝和深拷贝 / 36建议15:使用dynamic来简化反射实现 / 40第2章 集合和LINQ / 43建议16:元素数量可变的情况下不应使用数组 / 43建议17:多数情况下使用foreach进行循环遍历 / 45建议18:foreach不能代替for / 51建议19:使用更有效的对象和集合初始化 / 53建议20:使用泛型集合代替非泛型集合 / 54建议21:选择正确的集合 / 57建议22:确保集合的线程安全 / 61建议23:避免将List作为自定义集合类的基类 / 64建议24:迭代器应该是只读的 / 67建议25:谨慎集合属性的可写操作 / 68建议26:使用匿名类型存储LINQ查询结果 / 70建议27:在查询中使用Lambda表达式 / 73建议28:理解延迟求值和主动求值之间的区别 / 75建议29:区别LINQ查询中的IEnumerable和IQueryable / 78建议30:使用LINQ取代集合中的比较器和迭代器 / 80建议31:在LINQ查询中避免不必要的迭代 / 83第3章 泛型、委托和事件 / 86建议32:总是优先考虑泛型 / 86建议33:避免在泛型类型中声明静态成员 / 88建议34:为泛型参数设定约束 / 90建议35:使用default为泛型类型变量指定初始值 / 92建议36:使用FCL中的委托声明 / 94建议37:使用Lambda表达式代替方法和匿名方法 / 96建议38:小心闭包中的陷阱 / 99建议39:了解委托的实质 / 103建议40:使用event关键字为委托施加保护 / 106建议41:实现标准的事件模型 / 108建议42:使用泛型参数兼容泛型接口的不可变性 / 109建议43:让接口中的泛型参数支持协变 / 111建议44:理解委托中的协变 / 112建议45:为泛型类型参数指定逆变 / 114第4章 资源管理和序列化 / 116建议46:显式释放资源需继承接口IDisposable / 116建议47:即使提供了显式释放方法,也应该在终结器中提供隐式清理 / 119建议48:Dispose方法应允许被多次调用 / 120建议49:在Dispose模式中应提取一个受保护的虚方法 / 121建议50:在Dispose模式中应区别对待托管资源和非托管资源 / 123建议51:具有可释放字段的类型或拥有本机资源的类型应该是可释放的 / 124建议52:及时释放资源 / 125建议53:必要时应将不再使用的对象引用赋值为null / 127建议54:为无用字段标注不可序列化 / 131建议55:利用定制特性减少可序列化的字段 / 136建议56:使用继承ISerializable接口更灵活地控制序列化过程 / 137建议57:实现ISerializable的子类型应负责父类的序列化 / 140第5章 异常与自定义异常 / 144建议58:用抛出异常代替返回错误代码 / 144建议59:不要在不恰当的场合下引发异常 / 147建议60:重新引发异常时使用Inner Exception / 150建议61:避免在finally内撰写无效代码 / 151建议62:避免嵌套异常 / 157建议63:避免“吃掉”异常 / 160建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内 / 161建议65:总是处理未捕获的异常 / 162建议66:正确捕获多线程中的异常 / 166建议67:慎用自定义异常 / 168建议68:从System.Exception或其他常见的基本异常中派生异常 / 170建议69:应使用finally避免资源泄漏 / 172建议70:避免在调用栈较低的位置记录异常 / 175第6章 异步、多线程、任务和并行 / 177建议71:区分异步和多线程应用场景 / 177建议72:在线程同步中使用信号量 / 180建议73:避免锁定不恰当的同步对象 / 184建议74:警惕线程的IsBackground / 188建议75:警惕线程不会立即启动 / 189建议76:警惕线程的优先级 / 191建议77:正确停止线程 / 193建议78:应避免线程数量过多 / 194建议79:使用ThreadPool或BackgroundWorker代替Thread / 196建议80:用Task代替ThreadPool / 198建议81:使用Parallel简化同步状态下Task的使用 / 202建议82:Parallel简化但不等同于Task默认行为 / 204建议83:小心Parallel中的陷阱 / 205建议84:使用PLINQ / 208建议85:Task中的异常处理 / 209建议86:Parallel中的异常处理 / 214建议87:区分WPF和WinForm的线程模型 / 216建议88:并行并不总是速度更快 / 220建议89:在并行方法体中谨慎使用锁 / 222第二部分 架构篇 第7章 成员设计 / 226建议90:不要为抽象类提供公开的构造方法 / 226建议91:可见字段应该重构为属性 / 226建议92:谨慎将数组或集合作为属性 / 227建议93:构造方法应初始化主要属性和字段 / 228建议94:区别对待override和new / 229建议95:避免在构造方法中调用虚成员 / 235建议96:成员应优先考虑公开基类型或接口 / 236建议97:优先考虑将基类型或接口作为参数传递 / 237建议98:用params减少重复参数 / 237建议99:重写时不应使用子类参数 / 238建议100:静态方法和实例方法没有区别 / 239建议101:使用扩展方法,向现有类型“添加”方法 / 240第8章 类型设计 / 243建议102:区分接口和抽象类的应用场合 / 243建议103:区分组合和继承的应用场合 / 245建议104:用多态代替条件语句 / 248建议105:使用私有构造函数强化单例 / 251建议106:为静态类添加静态构造函数 / 253建议107:区分静态类和单例 / 255建议108:将类型标识为sealed / 255建议109:谨慎使用嵌套类 / 256建议110:用类来代替enum / 257建议111:避免双向耦合 / 260建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间 / 262第9章 安全性设计 / 264建议113:声明变量前考虑最大值 / 264建议114:MD5不再安全 / 265建议115:通过HASH来验证文件是否被篡改 / 268建议116:避免用非对称算法加密文件 / 269建议117:使用SSL确保通信中的数据安全 / 273建议118:使用SecureString保存密钥等机密字符串 / 284建议119:不要使用自己的加密算法 / 289建议120:为程序集指定强名称 / 289建议121:为应用程序设定运行权限 / 291第三部分 编码规范及习惯 第10章 命名规范 / 296建议122:以.为命名空间命名 / 296建议123:程序集不必与命名空间同名 / 296建议124:考虑在命名空间中使用复数 / 297建议125:避免用FCL的类型名称命名自己的类型 / / 297建议126:用名词和名词组给类型命名 / 298建议127:用形容词组给接口命名 / 299建议128:考虑让派生类的名字以基类名字作为后缀 / 300建议129:泛型类型参数要以T作为前缀 / 300建议130:以复数命名枚举类型,以单数命名枚举元素 / 301建议131:用PascalCasing命名公开元素 / 302建议132:考虑用类名作为属性名 / 302建议133:用camelCasing命名私有字段和局部变量 / 303建议134:有条件地使用前缀 / 304建议135: 考虑使用肯定性的短语命名布尔属性 / 305建议136:优先使用后缀表示已有类型的新版本 / 306建议137:委托和事件类型应添加上级后缀 / 307建议138:事件和委托变量使用动词或形容词短语命名 / 308建议139:事件处理器命名采用组合方式 / 309第11章 代码整洁 / 311建议140:使用默认的访问修饰符 / 311建议141:不知道该不该用大括号时,就用 / 312建议142:总是提供有意义的命名 / 314建议143:方法抽象级别应在同一层次 / 315建议144:一个方法只做一件事 / 316建议145:避免过长的方法和过长的类 / 317建议146:只对外公布必要的操作 / 318建议147:重构多个相关属性为一个类 / 319建议148:不重复代码 / 320建议149:使用表驱动法避免过长的if和switch分支 / 321建议150:使用匿名方法、Lambda表达式代替方法 / 324建议151:使用事件访问器替换公开的事件成员变量 / 325建议152:最少,甚至是不要注释 / 326建议153:若抛出异常,则必须要注释 / 326第12章 规范开发行为 / 327建议154:不要过度设计,在敏捷中体会重构的乐趣 / 327建议155:随生产代码一起提交单元测试代码 / 336建议156:利用特性为应用程序提供多个版本 / 342建议157:从写第一个界面开始,就进行自动化测试 / 344
- 2015-09-15下载
- 积分:1