java
jayxu无捷之径
这个作者很懒,什么都没留下…
展开
-
关于“==”和equals()的比较
在java学习中,尤其是String类型和int类型的学习中,“==”和equals()的区别容易混淆,下面通过程序的方法来说明二者的相同和不同:public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Test test = new Test();原创 2016-05-04 14:53:24 · 910 阅读 · 1 评论 -
java中栈和队列的实现和API用法
在java中要实现栈和队列,需要用到java集合的相关知识,特别是Stack、LinkedList等相关集合类型。一、栈的实现栈的实现,有两个方法:一个是用java本身的集合类型Stack类型;另一个是借用LinkedList来间接实现Stack。1.Stack实现有关Stack的具体知识可以参考:http://www.cnblogs.com/skywang12345/p/3308原创 2016-06-17 16:09:29 · 10169 阅读 · 0 评论 -
关于java集合的学习总结
Java 集合系列01之 总体框架Java 集合系列02之 Collection架构Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例Java 集合系转载 2016-04-08 20:51:36 · 883 阅读 · 0 评论 -
java中String.split()的常用方法
String.split()函数将一个字符串分割为子字符串,然后将结果作为字符串数组返回。在字符串处理中,经常会有这样的应用场景,即我们需要将原字符串分隔成若干个更小的单位,以便我们接下来的计算,这时候就要用到split()函数了,它一般有下面几种常用的使用情景:1.以空格作为分隔符比如String s = "我们 都是 中国人!";String[] strs = s.split("原创 2016-06-21 15:10:25 · 10988 阅读 · 0 评论 -
Java RMI
Java RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。 Java RMI不是什么新技术(在Java1.1的时代都有了),但却是是非常重要的底层技术。大名鼎鼎的EJB都是建立在rmi基础之上的,现转载 2016-08-05 17:32:20 · 463 阅读 · 0 评论 -
JAVA线程与线程、进程与进程间通信
I.线程与线程间通信一、多线程间通信方式:1、共享变量2、wait/notify机制3、Lock/Condition机制二、共享变量线程间发送信号的一个简单方式是在共享对象的变量里设置信号值。线程A在一个同步块里设置boolean型成员变量hasDataToProcess为true,线程B也在同步块里读取hasDataToProcess这个成员变量。这个简单的例子使用了原创 2016-07-11 10:54:31 · 22183 阅读 · 0 评论 -
checkedexception和uncheckedexception区别
Throwable类是所有异常的始祖,它有两个直接子类Error / Exception: Error仅在Java虚拟机中发生动态连接失败或其它的定位失败的时候抛出一个Error对象。一般程序不用捕捉或抛出Error对象。 Unchecked Exception: a. 指的是程序的瑕疵或逻辑错误,并且在运行时无法恢复。 b. 包括Error与RuntimeException及转载 2016-08-31 21:23:46 · 881 阅读 · 0 评论 -
Java线程池
Java多线程系列--“JUC线程池”01之 线程池架构Java多线程系列--“JUC线程池”02之 线程池原理(一)Java多线程系列--“JUC线程池”03之 线程池原理(二)Java多线程系列--“JUC线程池”04之 线程池原理(三)Java多线程系列--“JUC线程池”05之 线程池原理(四)转载 2016-09-01 11:12:03 · 1298 阅读 · 0 评论 -
多线程死锁的产生以及如何避免死锁
一、死锁的定义多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。下面我们通过一些实例来说明死锁现象。先看生活中的一个实例,在一条河上有一座桥,桥面很窄,只能容纳一辆汽车通行。如 果有两辆汽车分别从桥的左右两端驶上该桥,则会出现原创 2016-07-13 11:07:45 · 119967 阅读 · 17 评论 -
Java内存各部分OOM出现原因及解决办法
一,jvm内存区域1, 程序计数器一块很小的内存空间,作用是当前线程所执行的字节码的行号指示器。2, java栈与程序计数器一样,java栈(虚拟机栈)也是线程私有的,其生命周期与线程相同。通常存放基本数据类型,对象引用(一个指向对象起始地址的引用指针或一个代表对象的句柄),reeturnAddress类型(指向一条字节码指令的地址)栈区原创 2016-09-02 09:58:37 · 4791 阅读 · 0 评论 -
JAVA中Object类中的方法以及finalize函数作用
Object是所有类的父类,任何类都默认继承Object。一、Object类中的方法1.clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变,这是就原创 2016-08-23 22:09:45 · 4985 阅读 · 1 评论 -
Lock与synchronized 的区别
1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定, 如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断 如果 使用ReentrantLock,如果A不释放,可以使B在原创 2016-09-01 10:05:26 · 2161 阅读 · 1 评论 -
JAVA反射机制
1. 什么是Java的反射? 要让Java程序能够运行,就得让Java类被Java虚拟机加载。Java类如果不被Java虚拟机加载就不能正常运行。正常情况下,我们运行的所有的程序在编译期时候就已经把那个类被加载了。Java的反射机制是在编译时并不确定是哪个类被加载了,而是在程序运行的时候才加载、探知、自审。使用的是在编译期并不知道的类。这样的编译特点就是java反转载 2016-08-13 16:41:12 · 348 阅读 · 0 评论 -
jvm内存回收机制
Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。概括地说,该机制对 JVM(Java Virtual Machine)中的原创 2016-06-28 17:32:44 · 4705 阅读 · 0 评论 -
java I/O 学习笔记
学习java IO的时候发现讲的很好的blog,分享下转自http://www.cnblogs.com/pepcod/archive/2013/01/20/2913435.html一、流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。转载 2016-05-24 19:47:43 · 381 阅读 · 0 评论 -
Java——数据类型转换
Java中,经常可以遇到类型转换的场景,从变量的定义到复制、数值变量的计算到方法的参数传递、基类与派生类间的造型等,随处可见类型转换的身影。Java中的类型转换在Java编码中具有重要的作用。Java中数据类型主要分为两大类:基本数据类型和引用数据类型。基本数据类型共有8种,分别是:布尔型boolean, 字符型char和数值型byte/short/int/long/float/d原创 2016-07-13 21:28:11 · 1754 阅读 · 0 评论 -
String/StringBuffer/StringBuilder详细对比
众所周知,String是由字符组成的串,在程序中使用频率很高。Java中的String是一个类,而并非基本数据类型。 不过她却不是普通的类哦!!! 【镜头1】 String对象的创建 1、关于类对象的创建,很普通的一种方式就是利用构造器,String类也不例外:String s=new String("Hello world"); 问题是参数"Hello world转载 2016-07-13 16:12:25 · 4220 阅读 · 0 评论 -
java多线程状态切换
转自 http://blog.csdn.net/huang_xw/article/details/7316354一. 线程状态类型1. 新建状态(New):新创建了一个线程对象。2. 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。3. 运行状态(Running):就绪状态的转载 2016-06-01 09:52:44 · 893 阅读 · 0 评论 -
深度解析求结构体sizeof问题
运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4。基本数据类型的大小很好计算,我们来看一下如何计算构造数据类型的大小。 C语言中的构造数据类型有三种:数组、结构体和共用体。 数组是相同类型的元素的集合,只要会计算单个元素的大小,整个数组所占空间等于基础元素大小乘上元素原创 2016-04-21 14:08:41 · 1437 阅读 · 0 评论 -
Java NIO 教程
Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。本系列教程将有助于你学习和理解Java NIO。感谢并发编程网的翻译和投递。 (关注ITeye官微,随时随地查看最新开发资讯、技术文章。) Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲转载 2016-06-25 15:28:37 · 809 阅读 · 1 评论 -
同步IO/异步IO/阻塞IO/非阻塞IO
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不转载 2016-06-27 09:07:49 · 347 阅读 · 0 评论 -
Java GC堆和jvm参数设置
1、堆内存Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以转载 2016-06-28 16:54:32 · 9784 阅读 · 0 评论 -
HashMap之深入理解
HashMap实例中table的length是在初始化时就被指定的,无论采用默认值还是其他指定值,table数组的大小就已经确定,随着添加元素的增多在一定时机下下会对table数组进行扩容呢。 HashMap实例通过put方法设置元素,HashMap实例首先会计算该key所对应的下标位置,然后遍历寻找该key,如果找到则直接更新,当该key为原实例中不存在时则会调用addEn转载 2016-06-29 19:26:44 · 5443 阅读 · 1 评论 -
关于java并发锁的学习总结
Java多线程系列--“JUC锁”01之 框架Java多线程系列--“JUC锁”02之 互斥锁ReentrantLockJava多线程系列--“JUC锁”03之 公平锁(一)Java多线程系列--“JUC锁”04之 公平锁(二)Java多线程系列--“JUC锁”05之 非公平锁Java多线程系列--“JUC锁”06之 Conditio转载 2016-06-29 20:54:59 · 456 阅读 · 0 评论 -
JAVA并发集合学习总结
Java多线程系列--“JUC集合”01之 框架Java多线程系列--“JUC集合”02之 CopyOnWriteArrayListJava多线程系列--“JUC集合”03之 CopyOnWriteArraySetJava多线程系列--“JUC集合”04之 ConcurrentHashMapJava多线程系列--“JUC集合”05之 Concurre转载 2016-06-29 20:57:16 · 825 阅读 · 0 评论 -
Java中Math类常用方法
public class MathDemo { public static void main(String args[]){ /** * abs求绝对值 */ System.out.println(Math.abs(-10.4)); //10.4 System.out转载 2016-07-12 08:51:43 · 646 阅读 · 0 评论 -
java集合排序——Collections.sort()的两种用法
转自:http://gwh-08.iteye.com/blog/1233401/** * @author guwh * @version 创建时间:2011-11-3 上午10:49:36 * 类说明 */ package com.jabberchina.test; import java.util.ArrayList; import j转载 2016-06-14 14:24:13 · 601 阅读 · 0 评论 -
JAVA volatile关键字解析
一.内存模型的相关概念 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速转载 2016-06-30 10:35:58 · 625 阅读 · 0 评论 -
java中的继承和多态以及重载和重写
继承(inheritance)简单的说,继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(下面会讲到,这种方式叫重写)的方式,产生一个新的类型。继承是面向对象的三个基本特征--封装、继承、多态的其中之一,我们在使用JAVA时编写的每一个类都是在继承,因为在JAVA语言中,java.lang.Object类是所有类最根本的基类(或者叫父类、超类),如果我们新定义的一个类没有转载 2016-06-02 10:19:05 · 7639 阅读 · 0 评论 -
java——hashcode()
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法:1public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的转载 2016-07-13 10:17:29 · 507 阅读 · 0 评论 -
Java中CAS详解
在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。volatile是不错的机制转载 2016-09-17 17:23:34 · 201044 阅读 · 31 评论