- 浏览: 54679 次
- 性别:
文章列表
1. 重构之后要认真测试
2. 次改变量名称是绝对值得的事情。好的代码应该清楚地表达出自己的功能,变量名称是代码清晰的关键。
3. 尽量除去一些临时变量,临时变量往往引发问题,它们会导致大量参数被传来传去。
4. 继承:以不同的方式回答相同的问题。
5. 重构的意义:使责任的分配更合理,代码的维护更轻松。
6. 重构的目的是使软件更容易被理解和修改,重构不会改变软件可观察的行为,重构之后的软件功能一如既往。
7. 消除重复代码,就能确定所有事务和行为在代码中只表述一次,这正是优秀设计的根本。
8. 重构应该随时随地进行。不应该为重构而重构,之所以重构,是因为想做别的什么事,而重构可以帮我们把那些 ...
1 想清楚,写清楚,说清楚,才是真正的清楚!
2 多花点时间沟通清楚需求,才能把握正确方向!
3 修复需求错误的成本是代码错误的几十倍!
4 程序员最大的坏习惯就是:急于动手写代码!
5 提高开发效率的捷径:一次做对,不返工!
6 写代码之前三件事:
弄清楚做什么;
说清楚怎么做;
想清楚怎么测!
7 职业的程序员设计程序,业余的程序员调试程序;
8 拷贝粘贴式的作业方式,最容易导入bug,最难调试!
9 重复代码是万恶之源!
10 小函数,小方法,以功能命名,可以消除注释!
11 做一点,测一点,测试驱动的开发,返工最少,返工最易;
1 ...
NPOI生成Word文档
承接上一篇“NPOI生成excel表格”,这篇博客主要介绍使用NPOI生成Word文档基本方法。话不多说,直接上代码示例:
public void CreateWordFile(String filePath)
{
XWPFDocument doc = new XWPFDocument();
doc = this.WriteHelloWorld(doc);
String fileName = "HelloWorld.docx&quo ...
NPOI生成excel表格
1.什么是NPOI?百度百科给出的定义是:NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。
简单的说,NPOI就是一个功能强大的用来读写excel和word文档的类库。
<!--[if !supportLists]-->2. 2.NPOI生成EXCEL表格的基本过程:获取数据>创建表格
C#读取excel文件
最近在项目中应用到读取excel文件的功能,在此总结一下开发经验。
读取数据分为两种情况,一种是csv格式的文件,另一种是xlsx格式的文件。
首先需要注意的是:csv文件是以英文逗号间隔的文本文件,而xlsx是电子表格,包含文本、数值、公式和格式。
代码示例:
读取csv文件
public class StudentEntity {
public String name;
public String no;
public String fileName;
...
注:今天在用.net读取xlsx文件时遇到的问题,在网上找到的处理办法,该方法非常有效,因此做一下记录。
<转>未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序解决办法错误信息:未在本地计算机上注册“microsoft.ACE.o ...
描述
一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1, 2*2, 3*3, 4*4, 5*5, 6*6。这些产品通常使用一个 6*6*h 的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他们很需要有一个好的程序帮他们解决这个问题从而节省费用。
解决思路
1.4*4, 5*5, 6*6这三个型号的长方体需各占一个包裹;
2.4个3*3的长方体占一个包裹,数量对4取余之后不为0则需要多占一个包裹;
3.计算以上四种型号的长方体装完之后剩余空间可装2*2和1*1的数量,记为count1和coun ...
最近在做一个小项目,有一个功能是根据用户选择条件查询数据,要求时间控件的默认值为空,只有当用户修改了时间,才根据时间查询。简单的说,就是默认或者点击清空按钮的情况下,时间控件dateTimePicker的值为空,当触发事件ValueChanged时再显示相对应的时间。
开始,我以为修改控件的默认值为空就可以了,但是我失败了,dateTimePicker不允许空值。尝试了很多次之后我开始在网上找资料,寻到了如下方法:
窗体初始化或者点击清空按钮时执行如下代码:
this. dateTimePicker1.Format = DateTimePickerFormat.Custom;
this ...
1.数据绑定
a.编辑列
在Windows窗体上新建一个DataGridView,修改名称为dg_user,选中dg_user,右击鼠标,选择“编辑列”,添加列user_id,user_name,plant_name,如图:
注意:DataPropertyName应和SQL语句查询的字段名保持一致,HeaderText ...
存储过程的创建及测试
注意:本文档的代码与介绍的操作均是在PLSQL Developer 上完成的。
首先,在packages里边创建一个自己的存储过程包,在里边声明要写的存储过程;然后在package bodies 目录下将存储过程实现。需要注意的是,存储过程的名称,参数类型和参数名(这里特别强调参数名称,作为初学者,我在这上边吃过亏,所以印象深刻)要完全一致。
a.下边我们来一起写一个不需要参数的存储过程
声明存储过程截图如下:
编写完成点击按钮进行编译。
首先谈谈我对压缩这个词的理解吧。在我看来,压缩=代码+协议。而这二者中,我认为协议比代码更重要,协议是整个压缩的灵魂。就拿哈夫曼压缩法来说,它的协议简单来说就是为待压缩文件中出现过的每个字符设置一个编码,头文件中存储了每个编码对应的字符信息。显然,哈夫曼压缩中的头文件就是我们定下的压缩协议。(今天主要谈LZW压缩法,因此哈夫曼压缩的具体原理就不做过多的说明了。) 谈到LZW字典压缩,好多同学觉得好高深,这就错了。举个简单的例子,读一篇英语文章,或者一篇英语巨著,里边有好多的单词和句子是重复的,如果我们用一个特定的符号来代替整个单词或句子,那么,节省的空间是相当可观的 ...
java动态与反射的基本原理及实际应用
要想深入研究java的反射机制,首先要了解什么是动态绑定。
动态是相对于静态来说的。二者的区别主要在于创建对象的时间不一同,静态绑定是编译时创建对象,而动态绑定是在运行时创建对象。
我们先创建一个简单的MyFruit接口。
package Fruit;
public interface MyFruit{
public void eat();
}
静态绑定代码示例:
package Fruit;
public ...
问题:
腾讯要统计自己的注册用户总量,考虑到有的用户用一个IP同时注册了扣扣,DNF和LOL,为了不重复统计,要将超内存的整型数据进行排重操作。
初级想法:
为了解决大型数组排重问题,我们先了解一下bitmap这个概念。bit指位,map指映射。bitmap,顾名思义,就是指输入的整型数能用bit数组中的数一一对应表示出来。也就是说,我们可以建立一个很大的“bit数组”,这个数组足以映射到所有的整型,于是乎我们用一个bit(一个位)表示一个int(32位),只用了原数据的三十二分之一的空间就完成了。
遇到的问题:
现在,我们面临的最最重要的问题是:我们的电脑无 ...
压缩的思考及探索
思考:
用哈夫曼压缩方法将900KB的文件aaa,压缩为450KB的文件bbb,压缩率为50%,如果我继续用哈夫曼压缩文件bbb,是否可以得到225KB的文件ccc???
1)若可以,那么在不考虑时间复杂度的情况下,我将压缩过程循环n次,便能将一个无限大的文件压缩到足够小。???
2)若不可以,是越压越大还是没有效果,原因是什么???
经过反复试验,二次压缩得到的文件与首次压缩得到文件大小差不多,若连续压缩,会比上一级压缩文件大1-2KB。重复压缩的文件经过多次解压便可得到原文件。
重复压缩不会将文件越压越 ...
IO体系结构和基础应用
基础字节流:一个字节一个字节的读取,InputStream和OutputStream。
过滤流:又叫结点流,用于包装基础流以提供更好的特性,如缓冲功能,BufferedInputStream和BufferedOutputStream。
读取一个文本文件输出到屏幕,一次读一个字节,然后赋值给声明的一个变量,那么需要读取很多次,如果用了BufferedReader,就可以一次把所有的字节都读取到缓冲区,然后再一次性赋值给变量,效率就提高了。所以说,效率的提高其实是赋值与分配空间所花的时间。
Buffered流可以提高效率,而 ...