- 博客(38)
- 资源 (1)
- 收藏
- 关注
原创 如何用maven搭建Junit测试环境
准备工作:开发工具:Idea开发环境:JDK1.8,Maven,Junit4.7正文内容:1.首先在pom.xml文件中加入如下依赖: junit junit 4.7 test 2.在test/java中新建测试类以及测试方法:
2018-01-31 23:23:17
910
原创 7、大型重构
1、Tease Apart Inheritance(梳理并分解继承体系) 如果某个继承体系同时承担两项责任,则建立两个继承体系,并通过委托关系,让其中一个可以调用另一个。 2、Convert Procedural Design To Objects(将过程化设计转化为对象设计) 如果你手上有一些传统过程化风格的代码,则将数据记录变成对象,将大块的行
2016-04-06 12:49:18
1181
原创 6、处理概括关系
1、Pull Up Field(字段上移) 两个子类拥有相同的字段,则该字段移至超类。 2、Pull Up Method(函数上移) 有些函数,在各个子类中产生完全相同的结果,则将函数移至超类。 3、Pull Up Constructor Body(构造函数本体上移) 你在各个子类中拥有一些构造函数,但他们的本体几乎
2016-04-06 12:48:23
1114
原创 5、简化函数调用
1、Rename Method(函数改名) 2、Add Parameter (添加参数) 3、Remove Parameter(移除参数) 4、Separate Query from Modifier(将查询函数和修改函数分离) 某个函数即返回对象状态值,又修改对象状态,这样子的话,建议建立两个不同的函数,其中一个负责查询,另一个负责修改
2016-04-06 12:47:39
1138
原创 4、简化条件表达式
1、Decompose Conditional(分解条件表达式) 将if表达式抽离成函数,然后将if、else中的代码段提炼为各自独立的函数。 2、Consolidate Conditional Expression(合并条件表达式) 如果一系列条件测试都得到相同结果,那么将这些测试合并为一个条件表达式,并将这个条件表达式提炼为一个独立函数。
2016-04-06 12:46:34
1855
原创 3、在对象之间搬移特性
1、Move Method(搬移函数) 如果一个类有太多行为,或如果一个类与另一个类有太多合作而形成高度耦合,则考虑搬移函数。 这类函数有这种特点:使用另一个对象的次数比使用自己所驻对象的次数还多。 2、Move Field(搬移字段) 和搬移函数类似,某个字段被其所驻之外的另一个类类更多的用到,则考虑将该字段移到那个类中。 3、Ex
2016-04-06 12:45:41
997
原创 2、重新组织函数
1、Extract Method(提炼函数) 1、无局部变量 2、有局部变量 1、被提炼代码段只是读取变量的值,并不修改他们。 简单传给目标函数 2、被提炼代码段对局部变量再赋值 1、如果发现源函数的参数被赋值,使用Remove Assignments to Para
2016-04-06 12:44:14
958
原创 1、重新组织数据
1、Self Encapsulate Field(自封装字段) 在子类中需要修改父类的字段变化后的值时,考虑使用自封装,然后给get/set方法,其他情况可以直接使用访问值的形式。 2、Replace Data Value With Object(以对象取代数据值) 当原来的简单数据项不再表示简单的情况,比如要对他进行格式化输出等,则考虑将数据项变
2016-04-06 12:42:54
1538
原创 如何组织代码
1、重新组织数据 1、Self Encapsulate Field(自封装字段) 在子类中需要修改父类的字段变化后的值时,考虑使用自封装,然后给get/set方法,其他情况可以直接使用访问值的形式。 2、Replace Data Value With Object(以对象取代数据值) 当原来的简单数据项不再表示简单的情况,比如要对他进行格式化输出等,
2016-04-06 12:29:45
1495
原创 代码的坏味道
下面分类是我自己归纳的,如有不足之处,可以发评论,如果的确这样,我会尽快更新内容。 变量的坏现象 Data Clumps(数据泥团) Primitive Obsession(基本类型偏执) Speculative Generality (夸夸其谈未来性) Temporary Field (令人迷惑的临时变量) 函数的坏味道 Long M
2016-04-06 12:24:07
1776
原创 3、重新组织代码
积极发现并抽取出与主目的不相关的子逻辑: 1、如果足够的行数在解决与主目的不相关的问题,则抽取相应的方法 2、每行代码都询问是否是直接为了目标而工作 将一般代码和函数主要目的代码分开, 步骤: 1、列出所有要做的功能 2、将任务拆分到不同函数 橡皮鸭技术: 1、像对着同事一样描述代码要做什么 2、注意描述中所用的关键字和短语 3、写出描述所匹配的代码 保持小的代码库: 1、创建越
2016-04-06 12:21:49
555
原创 2、简化逻辑和循环
1、简化逻辑 在if条件句中,将被询问的表达式放在左侧,右侧用来放置常量,比如 if(heigh > 10 ) 在if中,一般以这种信息安排顺序: 1、可以快速判断需要退出控制流的 2、处理正确逻辑 3、处理简单情况 4、处理有趣的或者可疑的 5、采用设计模式 2、简化循环 建议使用while循环或者for, 尽可能的减少循环嵌套( 1、提早返回 2、抽取循环内
2016-04-06 12:20:24
882
原创 1、简明、清晰的展示
1、关于命名 总纲: 选择专业的词、避免泛泛而谈的词、用具体的名次来代替抽象的名词、 使用前缀或者后缀来附带信息(比如heght_m,高度以米来度量)、决定名字长度、 利用名字格式来表达含义 选择专业的词:比如常用的getPages()就不如用FetchPages()或者DownLoadPages()好,int size 就没有int heght好。 在循环迭代中,可以使用默认
2016-04-06 12:19:22
728
原创 清晰代码和代码重构大纲
最近学习Clean Code 和重构,做了笔记,打算做一个专栏。这个是第一章,算是大纲吧,后续有还有更新。清晰代码和代码重构 1、简明、清晰的展示 2、简化逻辑和循环 3、重新组织代码 4、可读性测试 使测试易于维护和阅读 让测试的错误信息更可读 选择好的测试输入:选择一组能完整的、简单的被测数据进行测试 当一个功能需要进行多项测
2016-04-06 12:18:03
866
原创 单元测试主要的测试功能点
作为单元测试,其重要程度不言而喻:它保证了我们在做代码重构以后的正确性,能让我们肆无忌惮的去修改我们的半成品。但是作为开发新人或者刚接触单元测试的开发人员来讲,怎么去测试,去测哪些方面应该是比较迷惑的。一下几点是平时工作中经常需要用到单元测试来验证的功能点,作为记录,方便自己以后写单元测试的时候可以回顾:模块接口测试 通过所测模块的数据流进行测试。调用所测模块时的
2016-03-15 22:09:56
8932
原创 如何使用Git客户端图形化进行文件(代码)上传
上次说到用命令行,对一些没有接触过命令行来说可能有点不适用,下面我介绍一下如何利用图形化界面来进行上传。在我们需要上传的文件夹中点击右键,然后选择git Gui here我们选择第一个:create new respository然后弹出下面这个窗口,我们选择Browse,然后选中我们需要提交的文件夹我们需要将pushByGu
2016-03-05 20:41:09
6222
原创 如何使用Git客户端进行文件(代码)上传
repository:知识库我们先在自己github中点击New repository在新跳转的页面输入简单的信息,然后点击created repository,这样,我们就把自己的知识库创建好了。创建好以后,我们会跳到下面这个页面:提示你这个知识库是空的,建议你加内容进去ok,现在我们在我们要上传的文件或者文件夹点击右键,选择 gi
2016-03-05 20:26:06
3993
转载 如何新建gitHub帐号并与自己电脑进行关联
关于GitHub一直又在用,只是苦于公司以及自家网络的问题,一直登不上去或者页面加载失常,心想啥时候公司也可以开放网络坏境呀。。。不过还是算了,靠人不如靠己,自己办了50M电信宽带,稍微好点(但是真心感觉没啥大作用,原谅我为自己的错误别解吧。。)下面进入正题:如何新建gitHub帐号并与自己电脑进行关联原址:http://blog.youkuaiyun.com/laozitianxia/artic
2016-03-05 19:53:11
2667
原创 查询数据库表空间占用
SQL语句:selectb.file_name 物理文件名,b.tablespace_name 表空间,b.bytes/1024/1024 大小M,(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M,substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*10
2016-02-28 14:08:53
657
原创 oracle游标学习
游标分类:显示游标和隐含游标。基本操作:声明游标、打开游标、提取游标、关闭游标。声明游标:cursor cursor_name is select * from ....;打开游标:open cursor_name提取游标:fetch cursor_name into variable1,variable2,.........例子:open 游标;loop
2016-02-28 14:03:07
761
原创 自己常用的Eclipse快捷键汇总
1. 【ALT+/】 此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类、方法和属性的名字时,多体验一下【ALT+/】快捷键带来的好处吧。 2. 【Ctrl+O】 显示类中方法和属性的大纲,能快速定位类的方法和属性,在查找Bug时非常有用。 3. 【Ctrl+/】 快速添加注释,能为光标所在行或所选定行快速添加注
2016-02-28 14:01:41
453
转载 软件开发Java之奇数最后一个字符输出乱码问题
首先引入网络上的一段文字:BufferedReader reader = newBufferedReader(new InputStreamReader(System.in));String message;while((message= reader.readLine()) != null){System.out.println(message);}
2016-02-27 21:10:48
1322
原创 hadoop环境报failed on connection exception
ls: Call From slaver1/127.0.0.1 to master:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
2016-02-22 11:08:09
28941
原创 Linux如何修改主机名
1、以root用户登录,然后输入hostname,可以看到当前登录主机名为localhost.localdomain2、更改/etc/sysconfig下的network文件,在提示符下输入vi /etc/sysconfig/network,然后将HOSTNAME后面的值改为想要设置的主机名3、更改/etc下的hosts文件,在提示符下输入vi /etc/hosts,然后将localhos
2016-02-19 14:31:13
1534
原创 hadoop2.6.0 集群配置
1、虚拟机准备虚拟机准备的为VMware12.0.1 build-3160714镜像为rhel-server-6.5-x86_64-dvd.isojava环境 为1.7hadoop为2.6.02、环境准备 a、网络配置主机名网卡名称IP地址子网掩码mastereth0
2016-02-19 14:30:07
1023
原创 执行start-dfs.sh后,datenode没有启动
一、执行start-dfs.sh后,datenode没有启动 查看日志如下: 2014-06-18 20:34:59,622 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for block pool Block pool (Datanode Uuid unassign
2016-01-29 15:47:08
664
原创 Attempted to generate class with no column
14/12/23 04:31:03 ERROR tool.ImportTool: Imported Failed: Attempted to generate class with no column1、导致该问题的原因是sqoop import --connect jdbc:oracle:thin:@192.168.1.136:1521/jist --username UAP -
2016-01-26 18:40:27
570
原创 ORA-01810格式代码出现两次的解决方案
ORA-01810格式代码出现两次 的解决方案需要查询两个时间区间的跨度,需要使用TO_DATE函数,一开始写成了Sql代码 TO_DATE('2011-09-24 00:00:00','YYYY-MM-DD HH:mm:ss') 结果报ORA-01810 格式代码出现两次的错误.后来上网查询后,发现是格式化字符串有问题,其中不应该将某个格式重复两次,否则Oracl
2016-01-26 18:38:10
753
原创 简单工厂模式
俗话说得好:贪多嚼不烂,前些天就是一下子把几个工厂模式都看完,结果导致理解跟不上,没有及时写下总结。现在吸取教训,先将简单工厂模式总结一下,然后再继续说工厂模式、抽象工厂模式以及单例模式(之前半天将这些模式看完,自以为理解了,结果眼睛一闭一睁,都忘了)=========贪多嚼不烂========贪多嚼不烂========贪多嚼不烂============下面我们来看一下简单的思路:
2016-01-26 18:33:11
492
原创 装饰模式
装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下:(图片来自网络)下面我们来看源码:共同的接口:public interface ModelMethodInterface { void doMethod();}被装饰者实现接口:public c
2016-01-12 21:53:47
468
原创 观察者模式
观察者模式:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。自己的理解:观察者模式相当于书刊==》订阅者这种类型,比如说:我订阅了一本《读者》,然后读者每发行一版就会给我发送一次新的周刊。类图:(上一个策略模式的类图是自己随意画的,很不好,还是找的一个,看来以后的将UML也学习一
2016-01-09 23:49:35
434
原创 java如何读取property文件
最近在学习设计模式的时候,在练习动态配置的时候联想到如果将所有的类型放在配置文件中那么程序的灵活性和可扩展性会不会更好?于是学习了如何读取property文件的方法,并记录下来方便自己和朋友。下面是例子:1、在同一个包下新建PropertiesTest 和fruit.properties文件2、在fruit.properties中添加内容:apple=com
2016-01-08 14:02:38
6499
原创 策略模式总结
策略模式的定义:定义了算法族,分别封装起来,让他们直接可以相互替换,此模式让算法的变化独立于使用算法的客户。自己的定义:策略模式使实体类和其应有的行为进行分离,使行为独立,达到多态的目的。 伪类图:与状态模式的区
2016-01-08 10:25:25
645
原创 同步SVN时,路径出现乱码的解决方法。
下载sqlite:http://www.sqlite.org/download.html在下面下载:将下载的文件放在一个目录下。我的为E:\111然后在待同步的SVN的.svn中找到wc.db,将该文件放入111中。打开cmd,切换到E:\111,输入:sqlite3 wc.db 然后输入:select * from wok_queue;如果
2015-04-16 23:31:08
5112
原创 用javascript实现调用本地用户程序
最近突发奇想,想做一个网页,然后点击相应的图标可以调用我本地的一些软件,于是网上找了相关的代码。接下来的步骤就是把这个做一个可以配置的页面,通过前台选择,然后实现动态添加软件的功能。下面是js调用本地程序的代码。说明:图片是我本地的,到时候加载不出来可以用链接地址,图片的那段代码就可以删了。快速访问程序 function Run(strPath) {
2015-04-12 21:16:18
783
转载 Dreamweaver CS6破解教程[序列号+破解补丁]
因为开发需要用到一些网页编辑工具,因此在此留贴方便网上的朋友和自己以后使用。同时,感谢原文作者,下面是原文的地址:http://blog.youkuaiyun.com/guxiaonuan/article/details/16366811/==============================我是华丽的分割线======================================
2015-04-12 20:08:18
1501
转载 Apache POI (JAVA处理Office文档的类库)
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。结构:HSSF - 提供读写Microsoft Excel格式档案的功能。XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。HWPF - 提供读写Microsoft Word格式档案的功能。HSLF
2015-04-09 23:20:57
636
原创 导出Oracle文件到hive中遇到的相关问题解决方法
最近在学习hadoop知识,昨天在做数据抽取的时候遇到很多问题,做了记录,整理在博客中,以供日后查询方便,同时希望可以帮助到有需要的朋友。导入文件相关命令:导出oracle文件到hive:sqoop import --connect jdbc:oracle:thin:@192.168.1.136:1521/jist --username UAP --password uap --tab
2014-12-24 23:52:26
1151
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人