java
文章平均质量分 78
QuinnNorris
蚂蚁金服 - 开发工程师
展开
-
java基础文件操作
java文件操作java.io.File文件属性:File f =new File(inputpath);f.getName();f.getPath(); f.createNewFile();文件读写:节点类(直接操作文件): FileInputStream FileOutputStream FileReader FileWriter. 装饰类(装饰节点类的类): DataInpu原创 2017-01-05 22:55:19 · 599 阅读 · 0 评论 -
docx4j基本操作
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2017-01-04 20:43:47 · 13053 阅读 · 7 评论 -
java内部类详解
java内部类是指一个类定义在另一个类的内部,其中的方法可以访问包含他们外部类的域。这是一种比较复杂的技术,内部类的主要用于设计那些有协作性关系的类之间。特别是在java处理GUI事件中得到了广泛的应用。除此之外,内部类最常用的原因有以下几点: 内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据 内部类可以对同一个包中的其他类隐藏起来 用匿名内部类来定义回调函数会方便很原创 2017-02-06 14:30:18 · 1258 阅读 · 0 评论 -
java糖衣语法(Syntactic Sugar)详解
糖衣语法,也叫做语法糖。最开始是英国计算机学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语。语法糖是指某一类语法,这类语法通过一些简单的包装,让代码变得简洁、可读性好,并在编译时通过“解语法糖”的方式,在功能不变的情况下用简单语法来通过编译。 正如其名,语法糖就像是一层糖衣,通过这层糖衣让代码变得简洁。虚拟机并不支持这类语法,在虚拟机运行之前,这类语法就会被编译成更通俗的简单原创 2017-02-04 12:48:41 · 1666 阅读 · 0 评论 -
java反射机制详解
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 在java中尤其是J2ee中经常会使用到反射,究其原因是反射机制有很多好处,动态的反射来创建对象和调用方法可以帮助我们减少每个类之间的耦合度,也就是解耦合。 不使用反射机制:直接在代码中原创 2017-02-03 13:56:57 · 943 阅读 · 2 评论 -
java图形化Swing教程(一)
与多线程、泛型等不同,Swing主要在于使用。 下面主要放代码和注释,少说话。原创 2017-02-18 17:04:27 · 19681 阅读 · 5 评论 -
java图形化Swing教程(二)
与多线程、泛型等不同,Swing主要在于使用。 下面主要放代码和注释,少说话。原创 2017-02-19 15:42:46 · 3961 阅读 · 0 评论 -
java拷贝机制详解
在java中,拷贝分为深拷贝和浅拷贝两种。java在公共超类Object中实现了一种叫做clone的方法,这种方法clone出来的新对象为浅拷贝,而通过自己定义的clone方法为深拷贝。(一)Object中clone方法如果我们new出一个新对象,用一个声明去引用它,之后又用另一个声明去引用前一个声明,那么最后的结果是:这两个声明的变量将指向同一个对象,一处被改全部被改。如果我们想创建一个对象的co原创 2017-02-14 13:16:27 · 866 阅读 · 0 评论 -
java对象导论
(一)事物的抽象过程 人们所能解决的问题的复杂性,取决于能将事物抽象到什么程度。高等的数学和物理就是对事物高度的抽象。它们在那种极度抽象的层次来研究,一旦获得大的进展,就会对我们日常生活造成极大的影响,比如爱因斯坦的相对论,它的发现对世界的影响就是巨大的。编程也是这样,我们将一些日常事物进行抽象,抽象的水平越高,我们就越可以用简洁的代码去描述它。Alan Kay曾经总结了第一个成功的面向对象语原创 2017-02-22 21:31:50 · 1075 阅读 · 0 评论 -
java时间格式化----java.text.SimpleDateFormat
转载请注明本地址:http://blog.csdn.net/QuinnNorris/article/details/java.text.SimpleDateFormat在java中我们一般用来格式化的类在text包中的SimpleDateFormat,这个类在对事件的处理上可以算是专业选手,向上追根,SimpleDateFormat类继承于DateFormat,DateFormat继承于Forma原创 2017-01-13 18:54:10 · 10845 阅读 · 0 评论 -
java时间----java.util.Calendar
java.util.Calendar在java中时间的类有几个,但是随着Date被渐渐禁用,其中的方法慢慢打上了叉号,我们可以相信Calendar类会是以后的主流时间类,下面我们就一起看一下Calendar类的详细内容,如果有错误欢迎大家指正。(一)实例化Calendar类是一个抽象类,是不能实例化的,那么这个类得到一个日历实例的方法有这么两种: Calendar calendar = Cale原创 2017-01-11 23:31:51 · 1035 阅读 · 0 评论 -
java格式化----java.util.Formatter
转载请注明本地址:http://blog.csdn.net/QuinnNorris/article/details/java.util.Formatter在java中我们格式化一个字符串的方法有很多,最基本的就是不断地用+号来加出一个String,但是这样的操作有很多的问题,而且有的时候也非常的不方便,这个时候我们就要用到其他的工具。类似C的printf的格式方法,在java中也是有的,写成Sys原创 2017-01-19 12:58:17 · 3710 阅读 · 0 评论 -
java深入浅出解析异常机制
三月份啦,月初第一篇写一份异常机制的完全解析,表明这个月努力学习的决心! 以下长文预警!!!java中的异常处理的目的在于通过使用少量的代码,使得程序有着强大的鲁棒性,并且这种异常处理机制会让你变得非常自信:你的应用中没有你没处理过的错误。处理异常的相关手法看起来是这么的难懂,但是如果掌握的话,会让你的项目收益明显,效果也会是立竿见影。 如果我们不使用异常处理,那么我们在程序中必须检查特定原创 2017-03-02 19:38:44 · 6577 阅读 · 1 评论 -
java泛型综合详解
在日常生活中,我们经常用到泛型,但是泛型数据有些时候会报一些莫名其妙的错,而且一些通配符等语法、泛型在虚拟机中的真正操作方式也有我们值得研究之处,今天我们就一起来讨论一下泛型。(一) 创造在java增加泛型之前,当年都是用继承来处理现在用泛型操作的程序的。ArrayList files = new ArrayList();String filename = (String) files.get(原创 2017-02-01 12:26:19 · 744 阅读 · 0 评论 -
java注解机制详解
注解也被称为元数据,它是我们在代码中添加信息的一种形式化方法,使我们可以在稍后某个时刻非常方便地使用这些数据。注解是java se5中众多引入的变化之一。他们可以提供用来完整的描述程序所需的信息。而这些信息我们现在不能通过java的基本语法来表达。实际上,相比较使用java提供的注解,在使用中定义自己的新注解是更加常用的。原创 2017-03-06 21:05:28 · 843 阅读 · 0 评论 -
java深入理解动态绑定
在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特性。多态通过分离做什么和怎么做,从另一个角度将接口和实现分离开来。在一开始接触多态这个词的时候,我们或许会因为这个词本身而感到困惑,如果我们把多态改称作“动态绑定”,相信很多人就能理解他的深层含义。通常的,我们把动态绑定也叫做后期绑定,运行时绑定。(一)方法调用绑定1.绑定概念通常,我们将一个方法调用同一个方法主体关联起来称作绑定。原创 2017-02-26 15:38:16 · 7268 阅读 · 3 评论 -
java集合(上)——数据结构详解
当我们要处理一串数据的时候,相比较c++和c中的数组和指针,在Java中我们更为常用的是ArrayList、HashMap等集合数据结构。c语言对指针的支持成就了他的深度,而Java中多种多样的包装类成就了他的广度。在java中,我们一般将List、Map、Set等数据结构通归为集合数据结构,这些类都存在于集合类库中。(一) 集合接口1.集合的接口和实现分离与其他的数据结构类库相原创 2017-02-08 14:55:43 · 5156 阅读 · 2 评论 -
java集合(下)——集合框架与算法详解
框架是指一个类的集,在集中有很多超类和接口,这些超类中实现了很多高级的机制、功能和策略。框架的使用者可以创建子类来实现和扩展超类,而不用来重新创建这些基本的机制。在日常工作中,我们用到的技术基本都是框架,我们去使用那些包,去调用那些函数时都会用到这种框架的思想。在集合(一)中分析完集合的数据结构,今天我们就一起来继续讨论一下集合的框架。(一)集合数据结构回顾 基本原创 2017-02-10 17:00:28 · 1761 阅读 · 0 评论 -
java线程(上)——线程状态及属性详解
在操作系统中,我们通过分时的方法在CPU上不断地切换处理多个进程任务,给人并行处理的感觉,这种方法在操作系统中叫做多任务。多任务在较低层次上扩展出多线程的概念,也就是指一个程序同时执行多个线程。这种可以同时运行一个以上的线程的程序,我们叫做多线程程序。(一)创建线程1.创建线程实例百闻不如一见,与其先说线程的各种状态,不如我们先直接演示如何创建一个新的线程。package Thread;/** *原创 2017-02-15 21:50:44 · 2104 阅读 · 0 评论 -
java线程(下)——线程同步详解
为了加快代码的运行速度,我们采用了多线程的方法。并行的执行确实让代码变得更加高效,但随之而来的问题是,有很多个线程在程序中同时运行,如果它们同时的去修改一个对象,很可能会造成讹误的情况,这个时候我们需要用一种同步的机制来管理这些线程。(一)竞争条件记得操作系统中,让我印象很深的有一张图。上面画的是一块块进程,在这些进程里面分了几个线程,所有这些线程齐刷刷统一的指向进程的资源。java中也是如此,资源原创 2017-02-18 14:11:37 · 796 阅读 · 0 评论 -
java IO流详解(上)
编程语言的I/O类库中常使用流这个抽象概念,他代表了任何有能力产出数据源对象或有能力接收数据的接收端对象。流屏蔽了实际的I/O设备中处理数据的细节。(一)I/O流层次结构 这张是整个IO类库的结构,我们常用的仅是其中的几种。整个IO类库分为两大部分:InputStream与OutputStream。 InputStream中的类可以从外部读取内容,称为输入;OutputStream中的类可以从本原创 2017-03-21 14:22:41 · 1008 阅读 · 0 评论 -
java正则表达式与String类完全解析
String类是不可变的,很多时候我们在使用String时已经将他看做了一种基本类型。也的确是如此,在整个java体系中只有两个重载的操作符:String类的+和+=。可见对String的重视程度。字符串操作是计算机程序设计中最常见的一种行为。在面试的时候也会屡屡问及String有关问题,对字符串类型的深入理解是非常有必要的。(一)String的存储与编译原理1.堆中创建对象与字符原创 2017-03-11 18:00:28 · 5397 阅读 · 2 评论 -
java静态工厂方法与工厂模式
静态工厂方法和工厂模式很像,但是在java中还是有很大区别的。(一)静态工厂方法vs工厂模式对于一个类来说,为了让客户端获得一个自身的实例,最常用的方法就是提供一个公有的构造器。除了这种使用构造器的方法之外,对于单个类来说,我们可以定义静态工厂方法来获取自身的类的一个实例。静态工厂方法和工厂模式的不同也体现在此,静态工厂方法是获取这个类自身的一个实例,他的存在是为了更好的描述和处理这个类。而工厂模式原创 2017-03-28 21:54:33 · 8436 阅读 · 0 评论 -
java IO流详解(下)
java IO流(上)接着上一篇文章的内容,我们在说完了InputStream、OutputStream和Reader、Writer之后,来看一些有趣的类,最后我们来看一些具体应用的实例,去体会在实际项目中怎么组织这些类来让它们发挥作用。(一)ZIP文档,ZipInputStream类ZIP文档以压缩格式存储一个或多个文件,每个ZIP文档都有一个头,包含诸如每个文件名字和所使用的压缩方法等信息。在j原创 2017-03-22 14:53:28 · 1066 阅读 · 1 评论 -
java并发——四种创建线程方式
并发用来提高运行在单处理器上的程序的性能。 这听起来有些违背直觉。如果有多个CPU处理器,那么我们让不同CPU并发处理程序一定会让速度变快。但是我们只有一个处理器,并发看起来只会增加上下文切换的开销时间。真的是这样吗?让这个问题的答案反转的是:阻塞。如果我们在执行一段代码中,有一处发生了阻塞,我们只能将整个程序停下来。如果我们采用并发的方式,即使这一处发生了阻塞,其他的任务还可以继续执行,原创 2017-04-08 21:33:34 · 1268 阅读 · 0 评论 -
java回调函数机制
回调函数最重要的特性就在于它的异步。请想象这样一种场景:在一个类中,创建另外一个类的实例,并调用那个实例的某个方法,获取返回值并进行操作,这是没有任何问题的。但是有的时候,我们调用另外一个类的方法时,那个方法不能很快的返回结果,在这种情况下,我们只有一直等到它返回结果才能继续进行我们其他的工作。这时候我们就会想,有没有那么一种机制:在你调用另外一个类对象的方法时,不必等侯它返回结果,我们可以直接进行原创 2017-03-23 16:01:20 · 929 阅读 · 0 评论 -
java并发——全部线程机制详解
JAVA多线程并不是一个简单的知识点,而是由很多个琐碎的内容拼合在一起。有很多我们都说不上来的机制但是很重要,我们这里就将所有的常用的并发机制全部捞一遍。休眠与让步客观的影响线程任务的一种简单方法是调用sleep方法,sleep方法中止执行给定的时间,在这段时间过后继续进行程序中的操作。而与之不同的,我们使用yield方法是在run方法完成一个循环后,yield方法向CPU表示本线程的原创 2017-04-09 20:25:50 · 1284 阅读 · 0 评论 -
在多线程中捕获并处理RuntimeException
在多线程的机制下,我们不能跨越线程在主线程中捕获其他线程的异常。对于非运行时异常,在线程很多很复杂的时候,为每个线程都写一份异常处理程序也很难过。对于运行时异常,如果我们不能采取一些有用的措施,那么异常会被抛出到控制台上。比如下面的例子:package AllThread;/** * * @author QuinnNorris * * 捕获异常 */public cl原创 2017-04-11 09:57:19 · 3071 阅读 · 0 评论 -
java解析、验证、生成XML文件(上)
XML是一种可扩展标记语言,这种语言以及它的变体(HTML,CML,)规范的将数据存储与传输。在java中,我们有非常多的包提供了对XML语言的解析、验证、生成等一系列操作。(一)XML的起源和基本写法当谈到XML时我们不得不提W3C。W3C是“万维网联盟”的简称,它创建于1994年,是Web技术领域最具权威和影响力的国际中立性技术标准机构。到目前为止,W3C已发布了200多项影响深远的Web技术标原创 2017-04-05 14:54:20 · 2209 阅读 · 1 评论 -
java面试必问——六大排序算法
六大排序方法java中有很多中排序方法,其中冒泡排序过于简单,基数排序主要用于研究我们这里不讨论。实际应用和面试中,最常问到的就是下面的六种排序方法,我们将从原理,复杂度,稳定性和实际应用几个方面来讨论他们。原创 2017-05-01 15:13:20 · 4176 阅读 · 5 评论 -
java——覆盖equals方法没有想象中那么简单
最近和友人谈到equals和==的区别。这其实是个非常老套简单的问题,但当你要亲自覆盖equals方法时,才发现,有一些你不知道却又不得不知道的事。覆盖equals,讲究很多。尽管Object是一个很具体的类,但是他的主要作用还是为了扩展。他的所有非final方法都有着明确的通用约定。因为他们被设计成要被覆盖的方法。任何一个类,在覆盖equals、hashCode、toString、clone、fi原创 2017-04-18 14:45:07 · 2062 阅读 · 1 评论 -
java——深度解析System系统类
天天说用System.out.println()来输出,那么我有个问题,out是一个变量还是一个内部类呢?大型的知识都有各种专题来详解,这些散碎的知识点我们也不能忽视,否则面试的时候被问到这么简单的问题,答不上来,就很尴尬了。原创 2017-05-02 15:36:26 · 11057 阅读 · 7 评论 -
java——二叉查找树(BST)算法
现代计算机和网络使我们能够访问海量的信息。高效检索这些信息的能力是处理他们的重要前提。二叉查找树(Binary Search Tree)是一种能将链表插入的灵活性和有序数组查找的高效性结合起来的优良算法。原创 2017-05-03 15:46:22 · 1690 阅读 · 0 评论 -
java最优有序查找——红黑树(RBT)算法
在大量数据中常用的查找数据的做法有四类:顺序查找,二分查找,二叉树查找(BST),红黑树查找(RBT)。 这四类查找方法分别对应着四种基本思想原理: 顺序查找 —— 无序简单查找 二分查找 —— 有序查找,每次折半搜索,插入数据费时 二叉树查找(BST) —— 不平衡二叉树有序查找,插入与搜索综合性能较优 红黑树查找(RBT) —— 平衡二叉树有序查找,插入与搜索原创 2017-05-12 21:51:54 · 3944 阅读 · 0 评论 -
java贪吃蛇
用几天的空闲时间写个贪吃蛇。 下面的代码都打了注释,如果有什么问题或者有什么指点的地方希望留言不吝赐教!下载地址(需要1积分,如果不想用积分,直接拷贝下面的代码即可)Board类:import java.awt.EventQueue;import java.awt.KeyEventPostProcessor;import javax.swing.*;import java...原创 2017-04-12 20:32:12 · 19859 阅读 · 20 评论 -
java 深广优先搜索(DFS/BFS)实际应用
深度优先搜索DFS即Depth First Search。其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。广度优先搜索BFS是Breadth First Search。所有因为展开节点而得到的子节点都会被加进一个先进先出的队列中。原创 2017-05-06 20:08:28 · 1904 阅读 · 0 评论 -
java 算法时间计算与优化方法
随着使用计算机的经验的增长,人们在使用计算机编写程序的时候,不可避免的会发出这样的疑问: 我的程序运行一次需要多久? 我的代码是否可以再优化得更快更节省空间?当我们打开一个网页或者传输一个文件或打开一个播放器时,你也肯定问过自己上面的问题。但是在这种情况下估计时间和数据处理的复杂度太难太模糊了。相比较这种大型应用,我们能够处理的是单个程序的复杂度和效率。如果每片程序的效率都是相对较优的,原创 2017-04-25 14:28:20 · 3238 阅读 · 1 评论 -
java——File类文件操作全解
JAVA使用File类对文件进行操作。在很多教程中,我们会同时学到File类和类似FileInputStream这样的流,非常容易将两者混淆。实际上只要掌握了他们的工作原理就不难理解,File类以操作文件的属性和状态为主,而IO流以在两个客户端之间传输数据为主。虽然同是操作文件但出发点是不同的。File类很简单,我们通过实际的例子来学习它的常用API方法。File类规则约定当程序接触到底层的操作系统原创 2017-05-10 14:51:19 · 2213 阅读 · 0 评论 -
java 项目工具Maven详解
在工作项目中,出于方便的的角度考虑,我们往往会使用Maven这种项目管理工具,让我们的项目更加简单明了。Maven简介那么Maven是什么呢?Maven全称Apache Maven,它是一个软件(特别是Java)项目管理及自动构建工具。由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。Maven也可被用于构建和原创 2017-06-29 11:54:14 · 1434 阅读 · 0 评论 -
java 独立存储线程变量技术——ThreadLocal
在多线程编程中,我们使用锁(synchronized,ReentrantLock等)来确保多个线程共享的变量能被安全的访问。但是还有一些变量,我们希望每一个线程都能保存一份独立的值而不受其他线程的影响。这个时候我们就需要用到ThreadLocal这个类来完成相关操作。ThreadLocal的作用现有两个线程A和B,它们都能访问到一个变量str_c。在不经过任何处理时,str_c的值可以被A和B两个线原创 2017-06-29 18:44:06 · 1716 阅读 · 0 评论