
Java
菜鸡03号
为3年后的架构而战
展开
-
JVM 、JDK 、JRE介绍
1. 什么是JVM?JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字转载 2017-08-10 01:13:15 · 501 阅读 · 0 评论 -
Integer == 和equals的区别
大家对Java的基本类型与封装类都已经很熟悉了。但是在使用中是否了解其中一些基本原理呢。下面代码对不了解基本实现的人可能会颠覆对java的认知。代码如下。public static void test(){ Integer a=1; Integer b=1; System.out.println(a==b); System.out.println转载 2017-08-16 20:26:29 · 342 阅读 · 0 评论 -
java自定义注解
元注解: 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解: 1.@Target, 2.@Retention, 3.@Documented, 4.@Inherited 这些类型和它们所支持的类在java.lang转载 2017-08-02 01:57:26 · 319 阅读 · 0 评论 -
==和equals的区别
public class EqualTest { public static void main(String[] args) { //对于基本类型的变量。"=="和"equal"的区别 int t1=57; int t2=67; int t3=124; int t4=124; //“==”对于基本数据类转载 2017-08-08 17:53:19 · 374 阅读 · 0 评论 -
java中String、StringBuffer、StringBuilder的区别 java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区
java中String、StringBuffer、StringBuilder的区别java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在总结一下,看看他们的不同与相同。1.可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道st转载 2017-07-20 13:21:15 · 311 阅读 · 0 评论 -
JAVA UUID 生成
JAVA UUID 生成GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的IDpackage com.mytest;转载 2017-05-12 00:07:21 · 503 阅读 · 0 评论 -
JAVA Comparator和Comparable的区别
初次碰到这个问题是之前有一次电话面试,问了一个小时的问题,其中有一个问题就问到Comparable和Comparator的区别,当时没答出 来。之后是公司入职时候做的一套Java编程题,里面用JUnit跑用例的时候也用到了Comparator接口,再加上JDK的大量的类包括常见的 String、Byte、Char、Date等都实现了Comparable接口,因此要学习一下这两个类的区别以及用法。转载 2017-05-11 23:57:17 · 336 阅读 · 0 评论 -
JDK1.8的几大新特性
一、接口的默认方法与静态方法,也就是接口中可以有实现方法 1 public class Test { 2 public static void main(String[] args) { 3 Formula a=new For(); 4 a.calculate(1); 5 System.out.println(a.sqrt转载 2017-04-19 11:28:07 · 5417 阅读 · 0 评论 -
优秀Java程序员必须了解的GC工作原理
一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能。一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理转载 2017-04-12 21:45:21 · 340 阅读 · 0 评论 -
java中实现线程同步的7种方法
同步的方法:一、同步方法 即有synchronized关键字修饰的方法。 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。注: synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整个类。 二、同步代码块 即有synchronized关键字修饰的语句块转载 2017-04-12 16:09:56 · 7140 阅读 · 0 评论 -
接口和抽象类的区别
接口和抽象类有什么区别你选择使用接口和抽象类的依据是什么?接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.所以,在高级语言转载 2017-03-16 16:48:59 · 418 阅读 · 0 评论 -
Java中子类能够继承父类的private属性或方法吗?
子类继承父类,子类拥有了父类的所有属性和方法。 程序验证,父类的私有属性和方法子类是无法直接访问的。当然私有属性可以通过public修饰的getter和setter方法访问到的,但是私有方法不行。 假设:子类不能够继承父类的私有属性和方法 那么:分析内存后,会发现,当一个子类被实例化的时候,默认会先调用父类的构造方法对父类进行初始化,即在内存中创建一个父类对象,然后再父类对象的外部放上子类独原创 2017-08-04 10:58:42 · 4286 阅读 · 1 评论 -
java8 lambda表达式在集合中的应用
Lambda在集合中的使用列表的遍历提起对于集合的遍历,恐怕下面的这种方式已经是一种思维定式了吧:final ListString> friends = Arrays.asList("Brian", "Nate", "Neal", "Raju", "Sara", "Scott");for(int i = 0; i friends.size(); i++) {转载 2017-07-31 01:51:48 · 2612 阅读 · 0 评论 -
字节与字符的区别,以及数据库中字节长度说明
字节(Byte /bait/ n. [C])是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于有八位,[1] 也表示一些计算机编程语言中的数据类型和语言字符。ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。如一个ASCII码就...原创 2018-02-28 16:52:09 · 6290 阅读 · 0 评论 -
Java ConcurrentModificationException异常原因和解决方法
Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。 以下是本文目录大纲: 一.Concurr转载 2017-09-26 11:45:25 · 490 阅读 · 0 评论 -
JAVA 8 Stream API 对Stream进行分组、分区
这篇文章展示了如何使用 Streams API 中的 Collector 及 groupingBy 和 partitioningBy 来对流中的元素进行分组和分区。思考一下 Employee 对象流,每个对象对应一个名字、城市和销售数量,如下表所示:+----------+------------+-----------------+| Name | City |转载 2017-12-06 15:45:38 · 3332 阅读 · 0 评论 -
JAVA常用的集合转换
在Java应用中进行集合对象间的转换是非常常见的事情,有时候在处理某些任务时选择一种好的数据结构往往会起到事半功倍的作用,因此熟悉每种数据结构并知道其特点对于程序员来说是非常重要的,而只知道这些是不够的,有时候你需要一个Map来处理数据,而此时你手中只有一个List,此时知道如何将List转为Map就非常重要了,而只知道for循环将List转为Map这就太Low了,JDK1.8 吸收了许多函数式编转载 2017-11-24 17:24:34 · 653 阅读 · 0 评论 -
深入理解JAVA异常
1. 引子try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。1转载 2017-11-29 00:03:34 · 370 阅读 · 0 评论 -
JAVA中对象和对象的引用
在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然。今天我们就来一起了解一下对象和对象引用之间的区别和联系。1.何谓对象? 在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一。要理解什么是对象,需要跟类一起结合起来理解。下面这段话引自《Java编转载 2017-10-18 10:42:08 · 205 阅读 · 0 评论 -
net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
在json字符串转java bean时,一般的对象,可以直接转,如:一个学生类,属性有姓名、年龄等但是如果存在List集合就会出新net.sf.ezmorph.bean.MorphDynaBean cannot be cast to 错误。. H+ k3 u' W ?3 S9 ~7 F0 Z解决方法:public class Student implements ja转载 2017-09-02 22:31:12 · 2308 阅读 · 0 评论 -
用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: [java] view plain copy /** * 根据ord
用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下:[java] view plain copy/** * 根据order对User排序 */ public class User implements Comparable{ p转载 2017-09-19 09:47:45 · 669 阅读 · 0 评论 -
Synchronized --线程同步
《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础。本文将接着讲一下Java线程同步中的一个重要的概念synchronized.synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}转载 2017-09-26 11:51:07 · 527 阅读 · 0 评论 -
JAVA泛型<?>和<T>的区别
public static void printColl(ArrayList al){ Iterator it = al.iterator(); while(it.hasNext()) { System.out.println(it.next().转载 2017-09-13 14:43:14 · 633 阅读 · 0 评论 -
BeanUtils.copyProperties()方法和PropertyUtils.copyProperties()的区别 [转]
首先两者来源于同一个包:12import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.beanutils.PropertyUtils;千万不要导包错误,否者会报异常。BeanUtils提供对Ja转载 2017-08-26 15:16:32 · 1751 阅读 · 0 评论 -
java的几种基本数据类型
基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型。它们是我们编程中使用最频繁的类型。java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化。1. Java的简单类型及其封装器类Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类转载 2017-03-16 16:44:57 · 1425 阅读 · 0 评论 -
JAVA实现线程安全
保证线程安全的三种方法:[/b]不要跨线程访问共享变量使共享变量是final类型的将共享变量的操作加上同步一开始就将类设计成线程安全的, 比在后期重新修复它,更容易.编写多线程程序, 首先保证它是正确的, 其次再考虑性能.无状态或只读对象永远是线程安全的.不要将一个共享变量裸露在多线程环境下(无同步或不可变性保护)多线程环境下的延迟加载需要同步的保护, 因为延迟加载转载 2017-03-16 16:34:50 · 1107 阅读 · 0 评论 -
谈谈对Spring IOC的理解
学习过spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。一、分享Iteye的开涛对Ioc的精彩讲解 首先要分享的是Iteye的开涛这位技术转载 2017-03-16 16:32:55 · 461 阅读 · 0 评论 -
Think IN JAVA-------初始化与清理
一.初始化1.java中通过构造器来对类中的field进行初始化;如果未在类中显示的给出构造函数,则java会提供一个默认的构造函数;如果有显式的给出了构造函数,则java不会提供默认的构造函数2.方法重载:可以通过构造器方法的重载来对一个类提供各种不同的初始化方案3.Java中区分重载的方法:每个重载的方法都必须有一个独一伍尔的参数类型列表(参数的个数,参数的类型,不原创 2016-09-07 13:28:32 · 617 阅读 · 0 评论 -
Think IN JAVA --------JAVA访问权限控制
1.JAVA为类中的field以及mehod提供四种访问权限:public protected private (默认访问权限)包访问权限1>public 修饰的field method ,包内其他的类以及外包中的类均可访问2>private 修饰的field method , 只有同一类中的其他field 或method 才能访问该field或方法3>包原创 2016-09-06 21:04:45 · 496 阅读 · 0 评论 -
JAVA中subString的用法
1.subString(int index)String str="abcde";str.subString(2);----->return bcde2.subString(int index ,int index)String str="abcdef";str.subString(2,3);----->return c原创 2016-08-26 16:34:20 · 14089 阅读 · 5 评论 -
Object类的输出
今天一个同学读取List中的一个对象,直接用于输出。输出结果是Student@c17164,现在来分析一下哈。1.Object类 类Object是类层次结构的根类。每个类都使用Object作为超类。所有对象(包括数组)都实现这个类的方法。 2.Object类的toString()方法 public String toString() 返回该对象的字符串表示。通常,toSt转载 2016-08-25 19:00:27 · 1446 阅读 · 0 评论 -
获得键盘输入的方法Scanner
public class ScannerTest { public static void main(String []args){ System.out.println("Enter:"); Scanner sc=new Scanner(System.in); //nextLine方法读完一行之后,还允许用户继续输入 System.out.println(s原创 2016-08-24 15:47:47 · 605 阅读 · 0 评论 -
判定一段中文字符串是否是数字
import java.util.regex.Matcher;import java.util.regex.Pattern;public class CCF { public static void main(String[] args) { String s="二八三八八六四三"; String regex="^[一二三四五六七八九十]+$"; Pattern p=Patter原创 2016-08-23 16:03:56 · 364 阅读 · 0 评论 -
JAVA中线程创建的2种方法
Java提供了线程类Thread来创建多线程的程序。其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象。每个Thread对象描述了一个单独的线程。要产生一个线程,有两种方法:◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法;◆实现Runnalbe接口,重载Runnalbe接口中的run()方法。转载 2016-09-07 17:05:51 · 1418 阅读 · 0 评论 -
JAVA异常处理
异常处理的执行顺序(针对try{}catch{}finally{}而言) 对于try{}catch{}finally{}而言,,它们的执行顺序很简单,如果在try{}中捕获相应的异常,中断当前代码的执行,转而去执行catch{}中的内容,最后去执行 finally{}中方法,一般来说finally中的方法都是会被执行的,其中finally中很大程度上用于资源的释放。转载 2016-10-21 14:37:28 · 267 阅读 · 0 评论 -
JAVA InputStream读取文件数据
1. 关于InputStream.read() 在从数据流里读取数据时,为图简单,经常用InputStream.read()方法。这个方法是从流里每次只读取读取一个字节,效率会非常低。 更好的方法是用InputStream.read(byte[] b)或者InputStream.read(byte[] b,int off,int len)方法,一次读取多个字节。2.转载 2016-11-23 22:54:42 · 1411 阅读 · 0 评论 -
Java中文件的读写操作
1.将String写入文件public class File(){ FileWriter fw=new FileWriter("d:\\test.txt"); fw.write("你好可爱"); fw.write("很强壮"); fw.flush(); fw.close();}转载 2016-08-23 12:45:42 · 478 阅读 · 0 评论 -
四核8线程与八核的区别
四核八线程是指使用了超线程技术 , 把一个物理核心,模拟成 两个逻辑核心, 理论上要像八颗物理核心一样在同一时间执行八个线程,所以设备管理器和任务管理器中会显示出八个核心,但事实上并不是真正的八个核心,四核八线程就是真四核,虚拟八核;四核八线程在有些情况下比如任务量不大能让CPU利用率提高很多从而使其性能接近八核CPU的水平,而在另外一些情况比如CPU占用100%满负荷工作的情况下,这时候原创 2016-11-14 12:39:29 · 40154 阅读 · 3 评论 -
Java的自定义异常类
11.7.1 编写自定义异常类的模式编写自定义异常类实际上是继承一个API标准异常类,用新定义的异常处理信息覆盖原有信息的过程。常用的编写自定义异常类的模式如下: public class CustomException extends Exception { //或者继承任何标准异常类 public CustomException() {}转载 2016-10-27 09:11:46 · 1659 阅读 · 0 评论 -
java中的异常
1)Java程序在执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。 2)当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。 3)如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。转载 2016-10-26 21:28:57 · 487 阅读 · 0 评论