- 博客(28)
- 资源 (5)
- 收藏
- 关注
原创 常用排序算法总结4一一归并排序
归并排序(英语:Merge sort),是创建在归并操作上的一种有效的排序算法,效率为O(n log n)。 归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。
2016-08-31 21:34:31
685
原创 常用排序算法总结3一一插入排序
定义 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
2016-08-30 21:42:15
943
2
原创 Java中被搁置的“goto”保留字
goto语句一直被人所诟病,说它使得代码结构复杂化,但是语言设计者们还是没有放弃goto这个功能强大的语句。Java以面向对象所著称也没能够放弃goto,而是把它当做保留字,但是并未在语言中得到正式使用。然而,从break和continue这两个关键字的身上,我们依然能够看出一些goto的影子。
2016-08-30 19:57:43
2458
原创 常用排序算法总结2一一选择排序
选择排序(英语:Selection sort)是一种简单直观的排序算法。它首先在未排序的序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最
2016-08-29 21:18:23
867
1
原创 算法入门
最近在研究算法,发现其实算法也并不是特别难,只要抓住算法的核心思想,再静下心来,都可以自己实现的。在计算机领域,有一些常见的而且又经常使用的算法,这些算法我们应该掌握,比如常见的排序算法;还有一些算法就是特定领域中经常使用的算法了,这些算法我们只有必须使用时再去学习使用就行了,比如图像处理中的快速傅里叶变换算法。算法定义让我们来看看算法的定义吧。(以下定义摘自中文维基百科)
2016-08-27 21:31:13
718
翻译 Java中资源关闭的处理方式
本文就关于IO资源的处理问题,提出三种方案。close()放在try块中close()放在finally块中使用try-with-resource语句
2016-08-23 13:52:03
5315
原创 Java文件拷贝的几种实现方案
1.FileInputStream2.FileChannel3.IORedirect4.ApacheCommonIO中的FileUtils.copyFile()方法5.jdk1.7中的Files.copy()方法
2016-08-22 21:13:51
1777
翻译 图解Java字符串的不变性
这儿有几个图例可以解释Java字符串的不变性。声明一个字符串String s = "abcd";s存储字符串对象的引用。这下面的箭头可以解释存储引用的概念。 通过另一个字符串变量给一个字符串变量赋值String s2 = s;s2存储着和s一样的引用值,因为,它是同一个字符串对象。 连接字符串s = s.concat("ef");s现在存储着一个新创建的字符串的引用。 总结一旦一个字符串在内存
2016-08-21 20:16:55
1487
转载 Java语言中的协变和逆变
协变和逆变指的是宽类型和窄类型在某种情况下的替换或交换的特性。协变就是用一个窄类型替代宽类型逆变则用宽类型覆盖窄类型。
2016-08-17 21:07:29
3036
原创 Myeclipse常用快捷键列表
我经常使用的快捷键 快捷键 功能 Ctrl+Shift+X 代码大写 代码小写 Ctrl+Shift+Y Alt+Shift+S “source”快捷键 alt+shift+A 多列编辑 Ctrl+D 删除当前行 Ctrl+1 快速修复 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Q 定位到最后编辑的地方
2016-08-17 20:21:20
665
翻译 Java中Scanner类和BufferReader类之间的区别
java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串。它本质上是使用正则表达式去读取不同的数据类型。Java.io.BufferedReader类为了能够高效的读取字符序列,从字符输入流和字符缓冲区读取文本。下面是两个类的不同之处:当nextLine()被用在nextXXX()之后,用Scanner类有什么问题尝试去猜测下面代码的输出内容;
2016-08-17 09:26:43
3114
翻译 使用双引号““创建Java字符串还是使用String构造函数?
在Java中,一个字符串可以使用下面这两种方式进行创建:String x = "abc";String y = new String("abc");这两种创建字符串的方式有什么不同呢?双引号 VS 构造函数这个问题可以用下面这两个简单的代码实例来回答。例子1:String a = "abcd";String b = "abcd";System.out.println(a == b);
2016-08-15 21:13:11
1764
转载 面向对象设计原则和创建SOLID应用的5个方法
最近我听到了很多关于函数式编程(FP),受之启发我觉得也应该关注面向对象编程(OOP)和面向对象设计(OOD),因为在设计系统时这些仍然非常重要。我们将以SOLID原则为起点开始我们的旅程。SOLID原则是类级别的,面向对象的设计理念,它们与测试工具一起帮你改进腐坏的代码。SOLID由程序员们最喜欢的大叔 Robert C. Martin(Bob大叔)提出,它其实是五个其他缩略词的组合——SRP,
2016-08-15 16:50:49
452
转载 Java程序员应该知道的10个面向对象理论
面向对象理论是面向对象编程的核心,但是我发现大部分Java程序员热衷于像单例模式、装饰者模式或观察者模式这样的设计模式,而并没有十分注意学习面向对象的分析和设计。学习面向编程的基础(如抽象,封装,多态,继承等)是非常重要的,而运用它们来设计干净的模块也同样重要。我也认识很多不同等级的程序员,他们没有听过这些面向对象理论,或者不知道某个设计理论有什么好处,或者如何在编码中使用这些设计理论。我们起码要设
2016-08-15 16:34:31
288
原创 Java中class的初始化顺序
(static对象和static代码块,依据他们的顺序进行初始化)>成员变量>构造函数class的装载在讲class的初始化之前,我们来讲解下class的装载顺序。以下摘自《Thinking in Java 4》 由于Java 中的一切东西都是对象,所以许多活动 变得更加简单,这个问题便是其中的一例。正如下一章会讲到的那样,每个对象的代码都存在于独立的文件 中。
2016-08-15 15:14:21
1096
原创 Java Map按Value排序
Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
2016-08-15 12:14:08
1149
原创 StackOverflow上七个有趣的Java问题
StackOverflow(后边简称so)发展到目前,已经成为了全球开发者的金矿。它能够帮助我们找到在各个领域遇到的问题的最有用的解决方案,同时我们也会从中学习到很多新的东西。这篇文章是在我们审阅了so上最流行的Java问题以及答案后从中挑出来的。即使你是一个有丰富经验的开发者,也能从中学到不少东西。
2016-08-11 15:38:38
1259
原创 Java中常见的RunTime异常及异常详解
常见的RunTime异常几种如下: NullPointerException - 空指针引用异常ClassCastException - 类型强制转换异常。IllegalArgumentException - 传递非法参数异常。ArithmeticException - 算术运算异常ArrayStoreException - 向数组中存放与声明类型不兼容对象异常IndexOutOfBoundsException - 下标越界异常NegativeArraySizeException - 创建一
2016-08-11 09:52:49
37742
2
原创 Java中util.Date和sql.Date的相互转换
Java中Date的两个类java.util.Date通常情况下用它获取当前时间或构造时间java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分它们都有getTime方法返回毫秒数,都可以直接构造代码示例:// util.date转换成sql.datejava.util.Date utilDate = new java.util.Date(); //获取当前时间Sys
2016-08-10 16:16:47
19543
1
原创 ArrayList等常见集合的排序问题
对于ArrayList等常用的集合具体业务类,基本上都实现了Comparable接口,即可以用来比较装载的对象实体。主要用Collections.sort方法对集合类中的对象进行排序Collections.sort的两种重载方法Collections.sort(list, comparator)方法,通过comparator规则,实现对list的特定排序。
2016-08-10 11:21:50
2751
转载 Java字符串格式化String.format常用用法
常规类型的格式化String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处。format()方法有两种重载形式。format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。format(Locale
2016-08-09 17:03:30
1735
原创 Java正则表达式实用教程
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。java.util.regex包主要包括以下三个类:Pattern、Matcher和PatternSyntaxException。一个Pattern是一个正则表达式经编译后的表现模式。 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。PatternSy
2016-08-07 15:49:57
359
原创 Java中的Date和Calendar的常用用法
在java中用到的最多的时间类莫过于 java.util.Date了, 由于Date类中将getYear(),getMonth()等获取年、月、日的方法都废弃了, 所以要借助于Calendar来获取年、月、日、周等比较常用的日期格式 注意:以下代码均已在jdk1.6中测试通过,其他版本可能使用不同,请注意!Date与String的互转用法/** * Date与String的互转用法,这里
2016-08-04 18:45:52
1838
转载 JAVA中的接口和抽象类
在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类往往用来表征我们在对问题领域进行分析、 设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象,我们不能把它们实例化(拿不出一个具体的东西)所以称之为抽象。 比如:我们要描述“水果”,它就是
2016-08-03 21:03:17
250
原创 myeclipse中java注释格式设置
Eclipse注释规范模版总结具体操作在eclipse中,打开Window->Preference->Java->Code Style->Code Template然后展开Comments节点就是所有需设置注释的元素,参照下面注释规范对应设置即可注释规范文件(Files)注释标签/** * FileName: ${file_name} * @Description: $
2016-08-03 17:28:57
915
原创 UML类图六大关系总结
在UML类图中,常见的有以下几种关系:泛化(Generalization)实现(Realization)关联(Association)聚合(Aggregation)组合(Composition)依赖(Dependency)各种关系的强弱顺序:泛化= 实现> 组合> 聚合> 关联> 依赖
2016-08-01 21:00:54
5613
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人