Java
文章平均质量分 71
郑斯道
这个作者很懒,什么都没留下…
展开
-
Java中的垃圾回收机制
垃圾回收机制及其意义Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。ps:内存泄露是指该内存空间使用完毕之后未回收,在不涉及复杂数据结构的一般情况下原创 2017-04-08 15:40:24 · 373 阅读 · 0 评论 -
Java如何从XML文件中获取节点信息的代码解析 Document方法
在编写Java代码的时候要经常从XML文件当中读取数据,特别是用设计模式的时候,具体代码如下:package edu.fjnu.Computer;/** * Created by Administrator on 2017/3/20 0020. */import org.w3c.dom.Document;import org.w3c.dom.Node;import org.w3c.dom.N原创 2017-03-23 18:29:03 · 5495 阅读 · 0 评论 -
基于Jsoup实现的简单网络爬虫
之前是完全不会爬虫的,但是新项目中需要从网页上爬一大堆的数据,所以就花了一天时间学习了下。主题部分还是很简单的。 * 既然想要写博文,那我就要写的细致点,对自己对读者都是一种负责!什么是爬虫?我所理解的爬虫就是从互联网上获取Url,顺着Url一个一个的去访问页面 一个页面会有很多的链接,对于每个链接可以判断是否使我们想要的,再对子链接进行操作、访问等等。for each 链接 in 当前网页原创 2017-06-02 16:47:05 · 4282 阅读 · 0 评论 -
最近Java面试遇到的快排
不知道为什么面试的时候面试官总是问我会不会快排。。。还有问我会不会冒泡的。。我!@¥#!#@%¥#@……@写个快排冷静一下吧:package BubbleSort;import static jdk.nashorn.internal.objects.Global.print;/** * 冒泡排序 * Created by Administrator on 2017/3/23 0023. */原创 2017-03-29 13:29:35 · 656 阅读 · 0 评论 -
Java 中的Synchronized解析
感谢作者写出此文解惑。原帖地址:http://www.cnblogs.com/GnagWang/archive/2011/02/27/1966606.htmlJava语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执转载 2017-04-13 20:31:21 · 239 阅读 · 0 评论 -
Java LinkedHashMap 源码剖析
##LinkedHashMap简介LinkedHashMap是HashMap的子类,与HashMap有着同样的存储结构,但它加入了一个双向链表的头结点,将所有put到LinkedHashmap的节点一一串成了一个双向循环链表,因此它保留了节点插入的顺序,可以使节点的输出顺序与输入顺序相同。LinkedHashMap可以用来实现LRU算法(这会在下面的源码中进行分析)。LinkedHashMap同样是原创 2017-04-30 12:20:20 · 211 阅读 · 0 评论 -
再谈异常 Java 异常解析
简介程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。Java提供了更加优秀的解决办法:异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。 ...原创 2018-02-09 15:31:43 · 285 阅读 · 0 评论 -
WatchService 简单使用
简介WatchService 看作是文件监控器,通过操作系统原生文件系统来运行。 针对单点多appkey的情况,可以注册开启多个监控器。 每个监控器可看作是后台线程,通过监控文件发出的信号来实现监控。实现方法WatchService 用来观察被注册了的对象所有的变化和事件Watchable 被观察者,与WatchService结合使用, java.nio.file.P...原创 2018-04-04 10:37:38 · 8635 阅读 · 0 评论 -
Java 垃圾收集器与内存分配策略(一):对象“死亡判断”和四种引用
这里讨论的JVM虚拟机中的垃圾回收区域是指在线程共有的部分:Java堆(Java Heap) 与 方法区。在判断一个对象已经死亡的方法有两种:引用计数算法可达性分析算法引用计数算法在对象中添加一个引用计数器,每当有一个地方应用对象,计数器数值 +1;如果某个引用失效时,计数器数值 -1; 如果计数器数值为0就说明对象不可能再被使用。这种方法实现简单,判定的效率也很高,但是目前主流的Java虚拟原创 2017-04-25 23:59:17 · 300 阅读 · 0 评论 -
Java HashTable 源码剖析
##Hashtable简介HashTable同样是基于哈希表实现的,同样每个元素都是key-value对,其内部也是通过单链表解决冲突问题,容量不足(超过了阈值)时,同样会自动增长。Hashtable也是JDK1.0引入的类,是线程安全的,能用于多线程环境中。Hashtable同样实现了Serializable接口,它支持序列化,实现了Cloneable接口,能被克隆。##Hashtable源码剖析原创 2017-04-30 12:19:41 · 199 阅读 · 0 评论 -
Java 中的 JVM 工作原理以及流程
作为一名Java使用者,掌握JVM的体系结构也是必须的。说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件),再然后字节码被转载 2017-04-08 10:50:33 · 3240 阅读 · 0 评论 -
Java 解析XML文档(DOM & SAX)
要处理XML文档,就要像解析(parse)。就要用到解析器。 解析器的工作原理是这样的:它读入一个文件,确认这个文件具有正确的格式,然后将其分解成各种元素,使得程序员能够访问这些元素。Java库提供了两种XML解析器:像文档对象模型解析器(Document Object Model,DOM),这样的树形解析器,它将读入的XML文档转换成树形结构。像XML简单API解析器(Simple API原创 2017-04-09 00:05:25 · 557 阅读 · 0 评论 -
Java中的try-catch-finally-return的执行顺序
1、try块中没有抛出异常,try、catch和finally块中都有return语句12345678910111213141516public static int NoException(){ int i=10; try{ System.out.println("i in try block is:"+i); return转载 2017-04-09 14:56:37 · 373 阅读 · 0 评论 -
Java中的String对象为什么是不可变的?
什么是不可变对象?众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变。区分对象和对象的引用对于Java初学者, 对于Str转载 2017-04-09 15:00:12 · 733 阅读 · 1 评论 -
Java ArrayList简介 源码剖析
##ArrayList简介ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。ArrayList不是线程安全的,只能在单线程环境下,多线程环境下可以考虑用collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArra原创 2017-04-30 12:14:45 · 368 阅读 · 0 评论 -
Java LinkedList简介 源码剖析
##LinkedList简介 LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当作链表来操作外,它还可以当作栈,队列和双端队列来使用。LinkedList同样是非线程安全的,只在单线程下适合使用。LinkedList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了Cloneable接口,能被克隆。##LinkedList源码剖析Li原创 2017-04-30 12:15:51 · 330 阅读 · 0 评论 -
Java Vector 源码剖析
##Vector简介 Vector也是基于数组实现的,是一个动态数组,其容量能自动增长。Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加入同步语句来保证线程的安全),可以用于多线程环境。Vector没有实现Serializable接口,因此它不支持序列化,实现了Cloneable接口,能被克隆,实现了RandomAccess原创 2017-04-30 12:17:20 · 273 阅读 · 0 评论 -
Java HashMap 源码剖析
###HashMap简介 HashMap是基于哈希表实现的,每一个元素都是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阈值)时,同样会自动增长。HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。HashMap实现了Serializable接口,因此它支持序列化,实现了Cloneabl原创 2017-04-30 12:18:28 · 226 阅读 · 0 评论 -
浅聊GC日志
-XX:+PrintGC 参数-XX:+PrintGC(或者-verbose:gc)开启了简单GC日志模式,为每一次新生代(young generation)的GC和每一次的Full GC打印一行信息。下面举例说明:[GC 246656K->243120K(376320K), 0.0929090 secs][Full GC 243120K->241951K(629760K), ...原创 2018-05-18 16:28:20 · 239 阅读 · 0 评论