自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java进阶书籍推荐

学习Java,书籍是必不可少的学习工具之一,尤其是对于自学者而言。废话不多说,下边就给大家推荐一些Java进阶的好书。第一部分:Java语言篇1.《Java编程规范》 适合对象:初级、中级介绍:这本书的作者是被誉为Java之父的James Gosling,入门者推荐阅读,对基础的讲解很不错。2.《Java编程思想》 适合对象:初级、中级介绍:豆瓣给出了9.1

2017-08-19 10:28:58 810

原创 Java中Comparable和Comparator接口区别分析

本文要来详细分析一下Java中Comparable和Comparator接口的区别,两者都有比较的功能,那么究竟有什么区别呢,感兴趣的Java开发者继续看下去吧。Comparable 简介Comparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。  即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable

2017-08-18 16:05:57 624

原创 Java List 用法代码分析——非常详细

Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对Java List用法做了详解。List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3,角标2上也可以有个3)因为该集合体系有索引ArrayList:底层的数据结构使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删较慢)线程不同步LinkedList:底层

2017-08-18 15:19:47 896

原创 最全面的Java多线程用法解析

最全面的java多线程用法解析,如果你对Java的多线程机制并没有深入的研究,那么本文可以帮助你更透彻地理解Java多线程的原理以及使用方法。1.创建线程在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的

2017-08-18 15:03:17 410

原创 20个非常有用的Java程序片段

下面是20个非常有用的Java程序片段,希望能对你有用。1. 字符串有整型的相互转换String a = String.valueOf(2); //integer to numeric string int i = Integer.parseInt(a); //numeric string to an int2. 向文件末尾添加内容BufferedWriter ou

2017-08-18 13:29:52 1200 1

原创 我是如何理解Java抽象类和接口的

在面试中我们经常被问到:Java中抽象类和接口的区别是什么?然后,我们就大说一通抽象类可以有方法,接口不能有实际的方法啦;一个类只能继承一个抽象类,却可以继承多个接口啦,balabala一大堆,就好像把标准答案熟练的说出来一样。抽象类和接口这篇文章讲到了他们的区别和联系,它们确实有很多相似的地方,但是从本质上看,或从语言的设计角度来看,这不是它们最本质的区别。不卖关子,我个

2017-08-18 10:34:42 815 1

原创 Java 反射机制分析指南

一、JAVA是动态语言吗?一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,JAVA和C++一样,都不是动态语言。但JAVA它却有着一个非常突出的动态相关机制:反射。通过反射,Java可以于运行时加载、探知和使用编译期间完全求和的类、生成其对象实体,调用其方法或者对属性设值。所以Java算是一个半动态的语言吧。反射的概念:在Ja

2017-08-18 10:21:34 440

原创 Java习惯用法总结

在Java编程中,有些知识 并不能仅通过语言规范或者标准API文档就能学到的。在本文中,我会尽量收集一些最常用的习惯用法,特别是很难猜到的用法。(Joshua Bloch的《Effective Java》对这个话题给出了更详尽的论述,可以从这本书里学习更多的用法。)我把本文的所有代码都放在公共场所里。你可以根据自己的喜好去复制和修改任意的代码片段,不需要任何的凭证。实现eq

2017-08-18 10:14:21 529

原创 Java初学者必知:Java语言的11大特点

Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的静态语言。那么java语言的特点是什么呢?1、Java语言是简单的Java 语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑 的那些特性,如操作符重载、多继承、自动的强制类型转换。特

2017-08-18 09:52:43 607

原创 40个Java集合面试问题和答案

Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点。这里,我列出了一些关于Java集合的重要问题和答案。1.Java集合框架是什么?说出一些集合框架的优点?每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。

2017-08-18 09:06:43 430 1

原创 提高 Java 代码性能的各种技巧

Java 6,7,8 中的 String.intern – 字符串池这篇文章将要讨论 Java 6 中是如何实现 String.intern 方法的,以及这个方法在 Java 7 以及 Java 8 中做了哪些调整。字符串池字符串池(有名字符串标准化)是通过使用唯一的共享 String 对象来使用相同的值不同的地址表示字符串的过程。你可以使用自己定义的 Map<String

2017-08-18 08:44:33 790

原创 Spring基础知识汇总——Java开发必看

Spring简介Spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。Spring总结起来优点如下低侵入式设计,代码的污染极低独立于各种应用服务器,基于Spring框架的应用,可以真正

2017-08-17 12:44:36 812

原创 简洁Java之道

计算机专家在问题求解时非常重视表达式简洁性的价值。Unix的先驱者Ken Thompson曾经说过非常著名的一句话:“丢弃1000行代码的那一天是我最有成效的一天之一。”这对于任何一个需要持续支持和维护的软件项目来说,都是一个当之无愧的目标。早期的Lisp贡献者Paul Graham甚至将语言的简洁性等同为语言的能力。这种对能力的认识让可以编写紧凑、简介的代码成为许多现代软件项目选择语言的首要标准

2017-08-17 12:28:27 896 1

原创 Java内存管理原理及内存区域详解

一、概述Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同的数据区域,这些区域都有各自的用途以及创建和销毁的时间。Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图所示:下面就每一个区域进行阐述。二、运行时数据区域程序计数器程序计数器,可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器

2017-08-17 11:14:21 666

原创 20个高级Java面试题汇总

这是一个高级Java面试系列题中的第一部分。这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题。什么是可变参数?断言的用途?什么时候使用断言?什么是垃圾回收?用一个例子解释垃圾回收?什么时候运行垃圾回收?垃圾回收的最佳做法?什么是初始化数据块?什么是静态初始化器?什么是实例初始化块?什么是正则表达式?什么是令牌化?给出令牌化的例子?如何使用扫描器类(S

2017-08-17 10:55:18 18312

原创 Java集合类操作优化经验总结

在实际的项目开发中会有很多的对象,如何高效、方便地管理对象,成为影响程序性能与可维护性的重要环节。Java 提供了集合框架来解决此类问题,线性表、链表、哈希表等是常用的数据结构,在进行 Java 开发时,JDK 已经为我们提供了一系列相应的类来实现基本的数据结构,所有类都在 java.util 这个包里,清单 1 描述了集合类的关系。清单 1.集合类之间关系Collection├Li

2017-08-17 10:50:05 392

原创 Java I/O 操作及优化建议

Java I/OI/O,即 Input/Output(输入/输出) 的简称。就 I/O 而言,概念上有 5 种模型:blocking I/O,nonblocking I/O,I/O multiplexing (select and poll),signal driven I/O (SIGIO),asynchronous I/O (the POSIX aio_functions)。不同的操作

2017-08-17 10:21:44 343

原创 Java 本地接口 JNI 使用详解

对于Java程序员来说,java语言的好处和优点,我想不用我说了,大家自然会说出很多一套套的。但虽然我们作为java程序员,但我们不得不承认java语言也有一些它本身的缺点。比如在性能、和底层打交道方面都有它的缺点。所以java就提供了一些本地接口,他主要的作用就是提供一个标准的方式让java程序通过虚拟机与原生代码进行交互,这也就是我们平常常说的java本地接口(JNI——java native

2017-08-17 10:14:48 908

原创 10个经典的 Java main 方法面试题

以下是笔者认为比较经典的关于Java main方法的面试题,与其说是Java面试题,其实也是Java的一些最基础知识问题,分享给大家,如有错误,请指出。1.不用main方法如何定义一个类?不行,没有main方法我们不能运行Java类。在Java 7之前,你可以通过使用静态初始化运行Java类。但是,从Java 7开始就行不通了。2.main()方法需要的参数不是字符

2017-08-17 09:50:51 814

原创 史上最全的 Java 新手问题汇总

Java是目前最流行的编程语言之一——它可以用来编写Windows程序或者是Web应用,移动应用,网络程序,消费电子产品,机顶盒设备,它无处不在。有超过30亿的设备是运行在Java之上的。根据Oracle的统计数据,光是使用中的Java Card就有有50亿。超过900万程序员选择使用Java进行开发,它是最受开发人员欢迎的语言,同时也是最流行的开发平台。本文为那些准Jav

2017-08-17 09:21:29 454

原创 35 个 Java 代码性能优化总结

前言代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每

2017-08-17 09:13:45 485

原创 一张图读懂Java多线程

1、带着疑问看图1)竞争对象的锁和竞争CPU资源以及竞争被唤醒2)何种情况下获取到了锁,何种情况下会释放锁2、还是那张图3、详细图解1)Thread t = new Thread(),初始化一个线程,实际上就是一个普通对象,此时他的状态为New2)t.start(); 线程处于就绪状态(可运行状态),也就是随时等待着运行, 不要小看这个start

2017-08-16 15:38:09 925

原创 Java中的String为什么是不可变的?—— String源码分析

什么是不可变对象?众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变。区分对象和对象的引用对于Ja

2017-08-16 14:51:43 547 1

原创 Java Executor 框架学习总结

大多数并发都是通过任务执行的方式来实现的。一般有两种方式执行任务:串行和并行。class SingleThreadWebServer { public static void main(String[] args) throws Exception { ServerSocket socket = new ServerSocket(80); while(true) {

2017-08-16 14:02:06 396

原创 Java 泛型中? super T和? extends T的区别

经常发现有List、Set的声明,是什么意思呢?表示包括T在内的任何T的父类,表示包括T在内的任何T的子类,下面我们详细分析一下两种通配符具体的区别。extendsList foo3的通配符声明,意味着以下的赋值是合法的:// Number "extends" Number (in this context)List extends Number> foo3 = new A

2017-08-16 13:42:35 695 2

原创 Java 异步回调机制实例解析

一、什么是回调回调,回调。要先有调用,才有调用者和被调用者之间的回调。所以在百度百科中是这样的:软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。回调是一种特殊的调用,至于三种方式也有点不同。1、同步回调,即阻塞,单向。2、回调,即双向(类似自行车的两个齿轮)。3、异步调用,即通过异步消息进行通

2017-08-16 13:20:40 479

原创 如何提高 Java 中锁的性能

两个月前向公司引进线程死锁的检测之后,我们开始收到一些类似于这样的询问:“棒极了!现在我知道造成程序出现性能问题的原因了,但是接下来该怎么做呢?”我们努力为自己的产品所遇到的问题思考解决办法,但在这篇文章中我将给大家分享几种常用的技术,包括分离锁、并行数据结构、保护数据而非代码、缩小锁的作用范围,这几种技术可以使我们不使用任何工具来检测死锁。锁不是问题的根源,锁之间的竞争才是

2017-08-16 12:12:20 452 1

原创 Java多线程处理任务的封装

最近公司项目很多地方使用多线程处理一些任务,逻辑代码和java多线程处理代码混合在一起,造成代码的可读性超级差,现在把Java多线程相关的处理抽出来,方面代码中重复使用。抽的不好,欢迎大家拍砖使用方法很简单,有两种使用方法1.直接传递一批任务给到多线程处理方法,返回处理结果代码如下:/** * Created with IntelliJ IDEA. * 测试多线程处

2017-08-16 11:19:24 622

原创 为什么Java中1000==1000为false而100==100为true?

这是一个挺有意思的讨论话题。如果你运行下面的代码Integer a = 1000, b = 1000; System.out.println(a == b);//1 Integer c = 100, d = 100; System.out.println(c == d);//2你会得到falsetrue基本知识:我们

2017-08-16 10:51:29 1237

原创 Java程序员们值得一看的好书推荐

学习的最好途径就是看书"学习的最好途径就是看书",这是我自己学习并且小有了一定的积累之后的第一体会。个人认为看书有两点好处:1、能出版出来的书一定是经过反复的思考、雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超其他资料2、对着书上的代码自己敲的时候方便"看完书之后再次提升自我的最好途径是看一些相关的好博文",我个人认为这是学习的第二步,因为一本书往往有好几

2017-08-16 10:37:08 914 2

原创 开发维护大型 Java 项目的建议

假设你是正在开发和维护一个包含2000个类并使用了很多框架的Java开发者。你要如何理解这些代码?在一个典型的Java企业项目小组中,大部分能够帮你的高级工程师看起来都很忙。文档也很少。你需要尽快交付成果,并向项目组证明自己的能力。你会如何处理这种状况?这篇文字为开始一个新项目的Java开发者提供了一些建议。1、不要试图一下子搞懂整个项目好好考虑一下,为什么理解项目代码是第一位的?

2017-08-16 09:27:37 852

原创 10 个 Java 程序员容易犯的错误

1. Array 转 ArrayList一般开发者喜欢用:List list = Arrays.asList(arr);Arrays.asList() 会返回一个ArrayList,这是Arrays里内嵌的一个私有静态类,而并不是java.util.ArrayList类java.util.Arrays.ArrayList 有set(), get(), contains()方法,

2017-08-15 14:53:21 621

原创 Java高级特性之枚举学习总结

在Java SE5之前,我们要使用枚举类型时,通常会使用static final 定义一组int常量来标识,代码如下public static final int MAN = 0;public static final int WOMAN = 1;相信很多小伙伴,在实际开发中也是那么干的,既然这样已经能实现枚举的功能,为什么还要引入枚举呢?我们接着往下看当我们需要是同这组“int枚举

2017-08-15 10:54:37 445

原创 Java异常的深入研究与分析

前言本文是异常内容的集大成者,力求全面,深入的异常知识研究与分析。本文由金丝燕网独家撰写,参考众多网上资源,经过内容辨别取舍,文字格式校验等步骤编辑而成,以飨读者。对于本文的内容,建议小白需要多多思考力求掌握,对于老手只需意会温故知新。对于本文的内容,属于基础知识研究范畴,切勿以为读完此文就能将异常知识掌握到家。切记:操千曲而后晓声,观千剑而后识器,所以我觉得没有大量的源码阅读经验

2017-08-15 09:23:55 528

原创 Java反射机制详解

动态语言动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之外如Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态语言。(引自: 百度百科)var execString = "alert(Math.floor(Math.random

2017-08-15 08:17:52 715 1

原创 Java NIO:浅析I/O模型

也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,最后介绍了两种和高性能IO设计相关的设计模式(Reactor和Pr

2017-08-14 16:08:32 389

原创 深入分析Java的序列化与反序列化

序列化是一种对象持久化的手段。普遍应用在网络传输、RMI等场景中。本文通过分析ArrayList的序列化来介绍Java序列化的相关内容。主要涉及到以下几个问题:怎么实现Java的序列化为什么实现了java.io.Serializable接口才能被序列化transient的作用是什么怎么自定义序列化策略自定义的序列化策略是如何被调用的ArrayList对序列化的实现有什么好处

2017-08-14 14:22:06 423

原创 Java高级软件工程师面试考纲

如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构、算法、网络、操作系统等知识。因此本文不会讲解具体的技术,笔者综合自己应聘各大公司的经历,整理了一份大公司对Java高级开发工程师职位的考核纲要,希望可以帮助到需要的人。当前,市面上有《Java XX宝典》类似的图书,而且图书中的内容都着重在讲解Java最为基础的部分,最严重的是,里面有着大量错误的

2017-08-14 11:31:16 627

原创 4个理由告诉你Java为何排行第一

Java已经有20年的历史了,甚至更久,而这取决于你所询问的人和你的计算方式。忽略它的年龄不看,Java依然排行第一。它的实用性、性能和向后兼容性都彰显其价值所在。2016年伊始,标志着我们已经走过了Java的20年历程。事实上,虽然Java宣称是于1995年5月23日公开发行(HotJava 浏览器却并没有获得同样的成功),但第一版官方JDK是在1996年的1月23日才正式发行,因此Ja

2017-08-14 10:22:18 538

原创 2017年Java开发岗位面试题归类

下面是我自己收集整理的2017年Java岗位的面试题,可以用它来好好准备面试。一、Java基础1. String类为什么是final的。2. HashMap的源码,实现原理,底层结构。3. 说说你知道的几个Java集合类:list、set、queue、map实现类咯。。。4. 描述一下ArrayList和LinkedList各自实现和区别5. Jav

2017-08-14 10:08:04 1700 1

《阿里巴巴Java工作手册》学习笔记

最近浏览了一下阿里巴巴的Java开发手册,感觉内容确实非常的赞,发现了不少自己在编程中的误区,因此决定通过成文牢固掌握,文中将选取个人认为比较重要的部分进行描述与分析。”愿站在巨人的肩膀上,码出高效,码出质量“。

2017-12-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除