【2】快速代码集的由来及概览
喜爱编程,尽管编程开发并非自己的主要工作,但多年来,也一直没有间断开发。既有工作单位的一些项目,也有纯粹自己的一些想法而做的程序(我的原创)。在使用C#开发各类项目的过程中,把一些常用的编程的思路方法总结起来,慢慢就形成了一个辅助代码库。随着内容的完善,自我感觉对于快速完成开发效果显著。
一直以来也想把这个辅助代码库发布出来,对有些情况类似的开发者也许有用,对自己同时也是个促进。但是每次当我看到园子里面的高手们推出的各种框架,顿时自惭形秽、后背冒汗,立马打消念头了。和他们相比,我的代码库的确算不上什么,就是代码的整理加工而已,一点都不高大上。
前两天看新闻,中国台湾的反服贸运动,学生们敢于理直气壮的闹事,他们的信息来源,居然绝大多数都是来自于网上的“服贸懒人包”,就是用几幅漫画就试图把服贸协议说清楚。
抛开这个“懒人包”中的信息误导等问题不谈,不得不承认,这种“懒人包”是现在这种快餐时代的大家喜闻乐见的方式:简单、不费脑子。通过简单直白的文字、图像、视频,把一些复杂、深奥的内容直观的表现出来,使每个网民只要几分钟就能够明白其中的重点(当然,也有可能是制作者想表达的私货)。
受此启发,我觉得我的辅助代码库算不上什么“框架”,我没有通过一个代码库,去解决所有问题、适用各种应用场景的野心。我觉得这个辅助代码库更像一个“懒人包”,把各种编程中反复遇到的、经过检验是正确有效的处理封装、简化,用最少的记忆量和最简的代码量完成常用的任务,特别适合像我这样的编程懒人使用。由此,我又一次决定尝试把这个辅助代码库的内容整理出来。
辅助代码库涉及常用的C#编程的各方面,如数据库、日志操作、Web操作、socket通信、跨线程通信、正则表达式、Web页数据交换等。以最常用的数据库查询为例,只要引用了辅助代码库CommonCode,在任何位置,都可以通过这样的代码进行数据查询:
DataTable dt = AccessDB.GetData("select * from testtb");
可以想象,如果要执行一个非查询操作,可以通过如下代码实现:
AccessDB.DoNonQuery("update testtb set f_Code=1");
这种数据访问方式具有较大的通用性,无论是WinForm程序,还是Web应用程序;无论是Access、Sqlserver,还是Sqlite,都是使用相同的方式进行访问。这种数据库访问的配置代码极小,只需在Web.config中用一行连接串来指定,或者在代码中通过一行初始化代码来指定皆可。
关于代码库的设计思路是这样的:
- 作为辅助库,为了便于使用,大多数功能都以静态方法的方式提供。
- 只要记住静态类的名字即可使用相关功能。为了和最开始的AccessDB类(数据库访问辅助)一致,后面的各种辅助类也以类似形式命名,如:
- AccessFile:文件读写,通过一个方法可以把文件读入字符串或者把字符串写入文件。
- AccessFiles:批量、多线程、智能文件复制。
- AccessWeb:快速把Web页面读入字符串;通过代理访问页面;下载文件;导出xls等。
- 随着应用的增加,简单的辅助方法以不能涵盖,如web开发中的参数管理、分页、页面数据交换;网络通信、线程通信等无法用上面的命名模式,这些功能需要结合例子掌握用法。
使用CommonCode,完成的一些项目包括:
- 大量的网站
- 一个通用性较强的CMS
- 数据采集仪的通信服务器
- 基于QuickFix协议的客户端
- 网络兵棋对战系统
- 股票信息抓取系统
- ……
从应用的角度来说,能够满足需要,同时能够保证开发的速度。当然,CommonCode本来就是一个个人作品,随着应用的变化也在不断完善之中。也希望通过博客的交流,变得更加实用和完善。
下图是CommonCode的各种构成类别的概览。
- Caused by: java.lang.ClassNotFoundException: backtype.storm.topology.IRichSpout
- 作为完美主义者(强迫症)如何将linux的eth1网卡修改为eth0网卡
- 【入门篇】一个小白在Jetson TX2上安装caffe的踩坑之旅
- 【入门篇】Jetson TX2深度学习Inference初体验
- zeromq的安装,部署(号称最快的消息队列,消息中间件)
- OpenDaylight新建HelloWorld工程并集成版本
- 摸索出来的chrom调试前后台数据(Java&&Ajax)交互的方法分享一下咯!!!
- 机器学习:单词拼写纠正器python实现
- java.lang.Exception: 资源处理失败,失败原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown
- Server Tomcat v7.0 Server at localhost failed to start.
- Ovs+Dpdk简单实践
- Spark入门,概述,部署,以及学习(Spark是一种快速、通用、可扩展的大数据分析引擎)
- 创建基于MailKit和MimeKit的.NET基础邮件服务
- 把一个矩阵行优先展成一个向量,numpy.ravel() vs numpy.flatten()区别
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法