java核心技术
文章平均质量分 73
浮生忆梦
屌丝程序猿一枚
展开
-
Vector,ArrayList,LinkedList的特点和区别
1.Vector简介及特点1、Vector是内部是以动态数组的形式来存储数据的。2、Vector具有数组所具有的特性、通过索引支持随机访问、所以通过随机访问Vector中的元素效率非常高、但是执行插入、删除时效率比较地下、具体原因后面有分析。3、Vector实现了AbstractList抽象类、List接口、所以其更具有了AbstractList和List的功能、前面我们知道Abs原创 2017-07-11 15:37:00 · 10300 阅读 · 0 评论 -
java实现定时任务的三种方法
[java] view plain copy/** * 普通thread * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着, * 通过sleep方法来达到定时任务的效果。这样可以快速简单的实现,代码如下: * @author GT * */ public class Task1 {转载 2017-07-26 11:22:43 · 334 阅读 · 0 评论 -
map的四种遍历方式
import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class TestMap { public static void main(String[] args) { Map map = new HashMap(); map.put(1, "a")转载 2017-08-12 01:32:57 · 174 阅读 · 0 评论 -
java注解基础详解
注解的概念注解(Annotation),也叫元数据(Metadata),是Java5的新特性,JDK5引入了Metadata很容易的就能够调用Annotations。注解与类、接口、枚举在同一个层次,并可以应用于包、类型、构造方法、方法、成员变量、参数、本地变量的声明中,用来对这些元素进行说明注释。注解的语法与定义形式(1)以@interface关键字定义(2)转载 2017-12-27 15:53:52 · 204 阅读 · 0 评论 -
java对象实例化顺序
静态成员变量 静态代码块 成员变量 方法块 构造函数 的加载顺序Java程序在执行过程中,类,对象以及它们成员加载、初始化的顺序如下:1、首先加载要创建对象的类及其直接与间接父类。2、在类被加载的同时会将静态成员进行加载,主要包括静态成员变量的初始化,静态语句块的执行,在加载时按代码的先后顺序进行。3、需要的类加载完成后,开始创建对象,首先会加载非静态的成员,主要包括非静态成员变量...原创 2017-12-19 15:14:43 · 1273 阅读 · 3 评论 -
四种生成和解析XML文档的方法详解+实例+优缺点比较
本文转自点击打开链接 感谢原作者,为了方便自己以后查看文章转载过来了,原作者介意的话请联系我删除。众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM、SAX、JDOM和DOM4J下面首先给出这四种方法的jar包下载地址DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里SAX:http://sourceforge.net/转载 2018-01-04 13:58:40 · 800 阅读 · 0 评论 -
java成员变量,静态成员变量,静态代码块,代码块和构造函数等加载顺序
直接上例子父类:/** * DESC: 父类 * USER: haiboz * DATE: 2018/1/29 17:01 */public class Parent { private static String strParSta = "父类静态成员变量"; private String strParIns = "父类成员变量"; stati原创 2018-01-29 17:31:06 · 1632 阅读 · 1 评论 -
OutOfMemoryError系列(2): GC overhead limit exceeded
本文转自https://blog.csdn.net/renfufei/article/details/77585294,感谢原作者。为了方便自己查找阅读而转,如原作者介意,请联系我删除。这是本系列的第二篇文章, 相关文章列表:OutOfMemoryError系列(1): Java heap spaceOutOfMemoryError系列(2): GC overhead limit转载 2018-04-08 09:16:12 · 858 阅读 · 0 评论 -
Java内存溢出(OOM)异常排查指南
这也许是目前最为完整的Java OOM异常的解决指南。1、java.lang.OutOfMemoryError:Java heap spaceJava应用程序在启动时会指定所需要的内存大小,它被分割成两个不同的区域:Heap space(堆空间)和Permgen(永久代):JVM内存模型示意图这两个区域的大小可以在JVM(Java虚拟机)启动时通过参数-Xmx和-XX:...转载 2018-04-08 10:27:36 · 13710 阅读 · 2 评论 -
JAVA 常见内存泄露例子及详解
转载请注明出处:http://blog.csdn.net/anxpp/article/details/51325838,谢谢! Java的一个重要特性就是通过垃圾收集器(GC)自动管理内存的回收,而不需要程序员自己来释放内存。理论上Java中所有不会再被利用的对象所占用的内存,都可以被GC回收,但是Java也存在内存泄露,但它的表现与C++不同。 JAVA 中的内存管理 ...转载 2018-08-23 19:13:40 · 32083 阅读 · 6 评论 -
单例的几种实现方式
单例模式的定义:单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。单例模式的优缺点: ...原创 2017-07-06 17:01:20 · 504 阅读 · 0 评论 -
java开发中的23中设计模式
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式转载 2017-07-06 15:45:36 · 424 阅读 · 0 评论 -
java的类加载机制
1、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。 类加载器并不需要等到某个类被“转载 2017-07-12 14:47:00 · 447 阅读 · 0 评论 -
对并发编程的同步/异步,阻塞/非阻塞的理解
在研究nginx和node.js的时候常会遇到异步、非阻塞等,之前自己也经常使用epoll,对其同步与阻塞,异步与非阻塞有了一定的认识,现对参考资料总结下。 首先讨论下使用事件驱动,异步编程的优点: 充分利用了系统资源,执行代码无须阻塞等待某种操作完成,有限的资源可以用于其他的任务。其非常适合于后端的网络服务编程。 在服务器开发中,并发的请求处理是个大问题转载 2017-07-12 22:59:46 · 256 阅读 · 0 评论 -
线程和进程的区别和联系
1.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.进程特点:1.进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。2.线程是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有 一点在转载 2017-07-12 23:29:09 · 220 阅读 · 0 评论 -
java静态代理和动态代理
一、代理概念为某个对象提供一个代理,以控制对这个对象的访问。 代理类和委托类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以用代理对象替代。代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求后的后续处理。图1:代理模式从图中可以看出,代理接口(Subject)、代理类(ProxySubject)、委托类(RealSubject)形成一个“品”字结构转载 2017-07-06 15:12:12 · 264 阅读 · 0 评论 -
java内存泄露和内存溢出
1.概念内存泄露:指程序中动态分配内存给一些临时对象,但是对象不会被GC所回收,它始终占用内存。即被分配的对象可达但已无用。内存溢出:指程序运行过程中无法申请到足够的内存而导致的一种错误。内存溢出通常发生于OLD段或Perm段垃圾回收后,仍然无内存空间容纳新的Java对象的情况(OOM)。从定义上可以看出内存泄露是内存溢出的一种诱因,不是唯一因素。为什么要了解内转载 2017-07-06 16:36:04 · 1993 阅读 · 0 评论 -
ArrayList在遍历时做删除的陷阱
Java中的ArrayList循环遍历并且删除元素时经常不小心掉坑里,昨天又碰到了,感觉有必要单独写篇文章记一下。 先写个测试代码:Java代码 import java.util.ArrayList; public class ArrayListRemove { public static void main(Str转载 2017-07-20 16:04:29 · 422 阅读 · 0 评论 -
java锁机制,LOCK的实现类
1.synchronized--把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 可见性(visibility)。1.1 原子性--原子性意味着个时刻,只有一个线程能够执行一段代码,这段代码通过一个monitor object保护。从而防止多个线程在更新共享状态时相互冲突。1.2 可见性--可见性则更为微妙,它要对付内原创 2017-07-06 17:12:02 · 9110 阅读 · 0 评论 -
java线程池原理分析及应用实例
通常情况下,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这转载 2017-07-07 23:27:44 · 482 阅读 · 0 评论 -
jvm原理,内存模型及GC机制
目录1. jvm结构JVM方法区结构(内存模型)1.1 程序计数器1.2 虚拟机栈(java栈)1.3 本地方法栈1.4 方法区1.5 堆1.5.1 堆内存与栈内存需要说明总结2.GC机制2.1 引用计数法2.2 可达性分析算法2.3 一般回收算法也有如下几种2.3.1 按照基本回收策略分(1)标记-清除(Mark-sweep)(2)...转载 2017-07-06 14:21:47 · 8510 阅读 · 1 评论 -
NIO,BIO和AIO的区别
IO的方式通常分为几种,同步阻塞的BIO(Blocking I/O)、同步非阻塞的NIO(Non-Blocking I/O)、异步非阻塞的AIO(Asynchronous I/O)。一、BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求...转载 2018-12-26 15:41:20 · 339 阅读 · 0 评论