自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 java中的==、equals()、hashCode()源码分析

java中的==、equals()、hashCode()源码分析在java编程或者面试中经常会遇到 == 、equals()的比较。自己看了看源码,结合实际的编程总结一下。java中的==是比较两个对象在JVM中的地址。比较好理解。看下面的代码:public class ComAddr{ public static void main(String[] args) throws ...

2019-03-28 17:39:30 285

原创 Java集合容器复习5————HashSet、TreeSet 与LinkedHashSet

Set接口Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。Set判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用equals方法比较返回true,Set就不会接受这两个对象。HashSet与TreeSet都是基于Set接口的实现类。其中TreeSet是Set的子接口SortedSet的实现类。Se...

2019-03-14 00:50:04 307

原创 Java集合容器复习4————HashMap、Hashtable、ConcurrentHashMap的原理与区别

HashMapHashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。HashMap 实现了Serializable接口,因此它支持序列化,实现了Cloneable接口...

2019-03-13 23:06:46 393

原创 Java集合容器复习3—————Iterator和fail-fast机制

IteratorIterator iterator = list.iterator();while(iterator.hasNext()){ String string = iterator.next(); // do something } 迭代其实我们可以简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类,它是一个很典型的设计模式。Iterator模式是用于遍历集合...

2019-03-13 21:12:16 182

原创 Java集合容器复习2————LinkedList和Queue

LinkedListLinkedList 的简介LinkedList是基于链表实现的,LinkedList是一种双向链表,双向链表我认为有两点含义:1、链表中任意一个存储单元都可以通过向前或者向后寻址的方式获取到其前一个存储单元和其后一个存储单元2、链表的尾节点的后一个节点是链表的头结点,链表的头结点的前一个节点是链表的尾节点LinkedList的基本存储单元,它是LinkedList...

2019-03-13 19:55:47 320

原创 Java 集合容器复习1————ArrayList,Vector与Stack

ArrayListArrayList介绍ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。ArrayList 继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加、...

2019-03-13 16:35:56 415

转载 设计模式之————面向对象7大设计原则及实例

面向对象7大设计原则及实例开闭原则(Open-Closed Principle,OCP)开闭原则是这七大设计原则中最常见、最基本的开闭原则定义:软件实体对扩展是开放的,但对修改是关闭的。意思就是说在不修改软件实体的基础上去扩展其他功能。开闭原则实例:比如实现一个绘制图线的功能设计方案如下图所示用户类中直接调用画直线类,但是如果有一个新需求,要求我们画斜线或者曲线的话,这时就需要修改...

2019-03-11 11:01:13 734

转载 设计模式之——初探Spring中的设计模式魔力

初探Spring中的设计模式魔力1.简单工厂模式又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况...

2019-03-10 02:06:10 185

转载 程序员颈椎保护指南

程序员颈椎保护指南我们程序员天天对着电脑,眼睛,颈椎等等,都会落下不少的职业病。来说说怎么治疗自己的颈椎病。一、颈椎病是怎么产生的形成颈椎病的核心原因是:不良生活习惯我们身体的绝大部分疾病都是来自不良的生活习惯,生活习惯不改,再厉害的治疗也只能是缓解,无法根除。影响形成颈椎病的生活习惯有那些呢?1、不良坐姿习惯:天天长时间弯腰低头看文件看电脑,颈椎不出问题才怪,同时也容易驼背和腰疼。你...

2019-03-10 01:05:10 472

转载 设计模式之————JDK中的设计模式

JDK中的设计模式经典设计模式在JDK中的体现1.Singleton(单例)作用:保证类只有一个实例;提供一个全局访问点JDK中体现:(1)Runtime(2)NumberFormatpublic class Runtime { private static final Runtime currentRuntime = new Runtime(); public s...

2019-03-10 01:01:38 211

原创 设计模式之————从JAVA的IO包重谈装饰者模式和适配器模式

从JAVA的IO包重谈装饰着模式装饰者模型详解装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。装饰者模式设计类之间的关系其中Component是一个超类,ConcreteComponen是被装饰者,Decorator是装饰者,装饰者和被装饰者有共同的超类Component,但是此时我们发现Decorator和Component还有另外一条线,这条线...

2019-03-10 00:24:59 184

原创 设计模式之————结构型设计模式

结构型设计模式//结构型模式总结:/*代理模式是做方法增强的,适配器模式是把鸡包装成鸭这种用来适配接口的,桥梁模式做到了很好的解耦,装饰模式从名字上就看得出来,适合于装饰类或者说是增强类的场景,门面模式的优点是客户端不需要关心实例化过程,只要调用需要的方法即可,组合模式用于描述具有层次结构的数据,享元模式是为了在特定的场景中缓存已经创建的对象,用于提高性能。*//////...

2019-03-09 14:02:50 139

原创 设计模式之————结构型设计模式

二、结构型模式旨在通过改变代码结构来达到解耦的目的,使得我们的代码容易维护和扩展。*///1.代理模式/*既然说是代理,那就要对客户端隐藏真实实现,由代理来负责客户端的所有请求。当然,代理只是个代理,它不会完成实际的业务逻辑,而是一层皮而已,但是对于客户端来说,它必须表现得就是客户端需要的真实实现。*/public interface FoodService { Foo...

2019-03-09 12:36:46 108

原创 设计模式之————创建型设计模式

创建型设计模式//工厂模式//1.简单工厂模式public class FoodFactory { public static Food makeFood(String name) { if (name.equals("noodle")) { Food noodle = new LanZhouNoodle(); no...

2019-03-09 12:33:16 103

原创 Java基础复习之--------代理模式之动态代理,JDK实现和CGlib实现

代理模式之动态代理,JDK实现和CGlib实现本文参考了http://www.cnblogs.com/ygj0930/p/6542259.html1.代理模式既然说是代理,那就要对客户端隐藏真实实现,由代理来负责客户端的所有请求。当然,代理只是个代理,它不会完成实际的业务逻辑,而是一层皮而已,但是对于客户端来说,它必须表现得就是客户端需要的真实实现。静态代理的实现:1:首先定义一个接口,...

2019-03-09 02:43:08 170

原创 Java基础复习之-----依赖、关联、聚合和组合之间区别的理解

依赖、关联、聚合和组合之间区别的理解在学习面向对象设计对象关系时,依赖、关联、聚合和组合这四种关系之间区别比较容易混淆。特别是后三种,仅仅是在语义上有所区别,所谓语义就是指上下文环境、特定情景等。依赖(Dependency)关系是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义。例如,一个人(Person)可以买车(car)和房子(House),Person类依赖于Car类和House...

2019-03-08 23:17:00 627

转载 Java并发指南1:并发基础与Java多线程

Java并发指南1:并发基础与Java多线程what is 并发?过去单CPU时代,单任务在一个时间点只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个CPU,并交由操作系统来完成多任务间对CPU的运行切换,以使得每个任务都有机会获得一定的时间片运行。随着多任务对软件开发者带来的新挑战,程序不在...

2019-01-24 15:45:45 180

转载 Java基础16:深入理解Java多线程基础3

多线程的实现以及线程之间的状态转换代码体现多线程的几种实现方法public class 多线程实例 { //继承thread类 @Test public void test1() { class A extends Thread { @Override public void run() { ...

2019-01-15 23:16:24 117

原创 Java基础16:深入理解Java多线程基础2

线程同步&synchronize关键字的用法synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种:修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;修饰一个静态的方法,其作用的范围是整个静...

2019-01-15 21:52:22 137

原创 Java基础16:深入理解Java多线程基础1

深入理解Java多线程基础Java中的线程Java之父对线程的定义  线程是一个独立执行的调用序列,同一个进程的线程在同一时刻共享一些系统资源(比如文件句柄等)也能访问同一个进程所创建的对象资源(内存资源)。java.lang.Thread对象负责统计和控制这种行为。  每个程序都至少拥有一个线程-即作为Java虚拟机(JVM)启动参数运行在主类main方法的线程。在Java虚拟机初始化过...

2019-01-15 20:30:52 235

原创 Java基础15:深入理解Java枚举类

Java基础15:深入理解Java枚举类(本文参考了https://blog.csdn.net/a724888/article/details/80173457 )  枚举(enum)类型是Java 5新增的特性,存放在 java.lang 包中,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示。引入枚举类  在程序设计中,有时会用到由若干个有限数据元素组...

2019-01-10 22:23:26 291

原创 Java基础14:离开IDE,使用java和javac构建项目

Java基础14:离开IDE,使用java和javac构建项目具体的细节参见 How 2 Play Life 前言:本文教你怎么用javac和java命令,讲解了classpath的原理,以及如何利用脚本(shell或bat)进行项目部署,离开ide,还原最本质的Java编译运行过程,并用简单的实例展示这些用法。IDE是把双刃剑,它可以什么都帮你做了,你只要敲几行代码,点几下鼠标,程序就跑...

2019-01-10 20:01:16 224

转载 深入理解JVM虚拟机11:Java内存异常原理与实践

深入理解JVM虚拟机11:Java内存异常原理与实践转自 How 2 Play Life Java内存异常原理与实践实战内存溢出异常大家好,相信大部分Javaer在code时经常会遇到本地代码运行正常,但在生产环境偶尔会莫名其妙的报一些关于内存的异常,StackOverFlowError,OutOfMemoryError异常是最常见的。今天就基于上篇文章JVM系列之Java内存结构详解讲解的...

2019-01-10 16:31:54 167

转载 深入理解JVM虚拟机10:JVM常用参数以及调优实践

本文转自[JVM常用参数以及调优实践](https://blog.csdn.net/a724888/article/details/78367780)   JVM常用参数选项 jvm 可配置的参数选项可以参考 Oracle 官方网站给出的相关信息:http://www.oracle.com/techne...

2019-01-09 22:12:46 414

转载 深入理解JVM虚拟机9:JVM监控工具与诊断实践

深入理解JVM虚拟机9:JVM监控工具与诊断实践转载JVM监控工具与诊断实践在常见的线上问题时候,我们多数会遇到以下问题:内存泄露某个进程突然cpu飙升线程死锁响应变慢…等等其他问题。如果遇到了以上这种问题,在线下可以有各种本地工具支持查看,但到线上了,就没有这么多的本地调试工具支持,我们该如何基于监控工具来进行定位问题?我们一般会基于数据收集来定位,而数据的收集离不开监控工具...

2019-01-09 22:04:33 135

转载 深入了解JVM虚拟机8:Java的编译期优化与运行期优化

深入了解JVM虚拟机8:Java的编译期优化与运行期优化java编译期优化java语言的编译期其实是一段不确定的操作过程,因为它可以分为三类编译过程:1.前端编译:把.java文件转变为.class文件2.后端编译:把字节码转变为机器码3.静态提前编译:直接把*.java文件编译成本地机器代码从JDK1.3开始,虚拟机设计团队就把对性能的优化集中到了后端的即时编译中,这样可以让那些不是...

2019-01-09 21:25:53 162

转载 深入理解JVM虚拟机7:Tomcat类加载器实现

深入理解JVM虚拟机7:Tomcat类加载器实现打破双亲委派模型  上文提到过双亲委派模型并不是一个强制性的约束模型,而是 Java设计者推荐给开发者的类加载器实现方式。在Java 的世界中大部分的类加载器都遵循这个模型,但也有例外。  双亲委派模型的一次“被破坏”是由这个模型自身的缺陷所导致的,双亲委派很好地解决了各个类加载器的基础类的统一问题(越基础的类由越上层的加载器进行加载) ,基础...

2019-01-09 17:50:01 187

转载 深入理解JVM虚拟机6:深入理解JVM类加载机制

深入理解JVM虚拟机6:深入理解JVM类加载机制简述:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。下面我们具体来看类加载的过程:类从被加载到内存中开始,到卸载出内存,经历了加载、连接、初始化、使用四个阶段,其中连接又包含了验证、准备、解析三个步骤。这些步骤总体上是按照图中顺序进行的...

2019-01-09 13:22:28 186

转载 深入理解JVM虚拟机5:虚拟机字节码执行引擎

深入理解JVM虚拟机5:虚拟机字节码执行引擎虚拟机字节码执行引擎转自https://juejin.im/post/5abc97ff518825556a727e66所谓的「虚拟机字节码执行引擎」其实就是 JVM 根据 Class 文件中给出的字节码指令,基于栈解释器的一种执行机制。通俗点来说,也就是 JVM 解析字节码指令,输出运行结果的一个过程。接下来我们详细看看这部分内容。方法调用的本质...

2019-01-08 21:42:03 190

转载 深入理解JVM虚拟机4:Java class介绍与解析实践

深入理解JVM虚拟机4:Java class介绍与解析实践转自https://juejin.im/post/589834a20ce4630056097a56前言身为一个java程序员,怎么能不了解JVM呢,倘若想学习JVM,那就又必须要了解Class文件,Class之于虚拟机,就如鱼之于水,虚拟机因为Class而有了生命。《深入理解java虚拟机》中花了一整个章节来讲解Class文件,可是看...

2019-01-08 15:20:26 139

转载 深入理解JVM虚拟机3:垃圾回收器详解

深入理解JVM虚拟机3:垃圾回收器详解转自How 2 Play Life 垃圾回收器详解关于 JVM 内存管理或者说垃圾收集,大家可能看过很多的文章了,笔者准备给大家总结下。这算是系列的第一篇,接下来一段时间会持续更新。本文主要是翻译《Memory Management in the Java HotSpot Virtual Machine》白皮书的前四章内容,这是 2006 的老文章了,当...

2019-01-08 14:33:54 172

转载 深入理解JVM虚拟机2:JVM垃圾回收基本原理和算法

深入理解JVM虚拟机2:JVM垃圾回收基本原理和算法JVM GC基本原理与GC算法Java的内存分配与回收全部由JVM垃圾回收进程自动完成。与C语言不同,Java开发者不需要自己编写代码实现垃圾回收。这是Java深受大家欢迎的众多特性之一,能够帮助程序员更好地编写Java程序。下面四篇教程是了解Java 垃圾回收(GC)的基础:垃圾回收简介圾回收是如何工作的?垃圾回收的类别这篇教...

2019-01-07 16:25:31 193

转载 深入理解JVM虚拟机1:JVM内存的结构与永久代的消失

深入理解JVM虚拟机1:JVM内存的结构与永久代的消失本文转自:How 2 Play Life JVM内存的结构与永久代的消失所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问题就会变的非常常见,了解JVM内存也是为了服务器出现性能问题的时候可以...

2019-01-06 23:37:02 131

原创 Java基础13——深入理解java中的反射机制

java中的反射机制什么是反射?  反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。  简而言之,通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。   程序中一般的对象的类型都是在编译期就确定下来的,而Java反射机制可以动态地创建对象并调用其属性,这样的对象的类型在编译...

2019-01-03 22:38:41 168

原创 Java基础12——深入理解Class类和Object类

深入理解Class类和Object类一、所有类的类型信息的记录员——Class类先来简单了解一下Java虚拟机中类的加载过程:「加载」阶段是「类加载」过程的第一个阶段,虚拟机需要完成以下三件事情:1. 通过一个类的全限定名来获取定义此类的二进制字节流(.class文件即保存 着类的二进制数据)。2. 将该字节流所代表的静态存储结构转化为方法区的运行时数据结构。3. 在Java堆中生成一...

2019-01-03 20:41:22 365

原创 Java基础11———深入理解Java泛型

Java泛型why need 泛型?首先,我们看下下面这段简短的代码:public class GenericTest { public static void main(String[] args) { List list = new ArrayList(); list.add("孟木子"); list.add("heheda");...

2019-01-02 20:43:53 240

原创 Java基础10——深入理解Java异常

深入理解Java异常为什么使用异常?  使用异常机制它能够降低错误处理代码的复杂度,如果不使用异常,那么就必须检查特定的错误,并在程序中的许多地方去处理它,而如果使用异常,那就不必在方法调用处进行检查,因为异常机制将保证能够捕获这个错误,并且,只需在一个地方处理错误,即所谓的异常处理程序中。这种方式不仅节约代码,而且把“概述在正常执行过程中做什么事”的代码和“出了问题怎么办”的代码相分离。总之...

2019-01-02 16:30:57 232

原创 Java基础9——深入理解java回调机制

Java回调机制回调的引入故事 转载自Bro_超// 同步回调1 public interface doJob2 {3 public void fillBlank(int a, int b, int result);4 }1 public class SuperCalculator2 {3 public void add(int a, int b, doJ...

2018-12-31 14:16:01 109

原创 Java基础8——深入理解java的内部类

深入理解内部类内部类基础  在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。问题:为什么要使用内部类?  在《Think in java》中有这样一句话:使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现...

2018-12-29 22:46:29 139

转载 Java基础7——深入理解Java类与包

java类与包(文章部分内容转载于How 2 Play Life )*.Java文件问题:一个”.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?答案:可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。一个文件中可以只有非public类,如果只有一个非public类,此类可以跟文件名不同。为什么一个java源文件中只能有一个publ...

2018-12-29 15:28:39 250

空空如也

空空如也

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

TA关注的人

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