![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 76
fxkcsdn
学习要有一定的广度才能触发深度学习的兴趣,有兴趣再去深度学习,否则达不到真正的深度
展开
-
Logback使用学习
Logback使用学习导入依赖普通项目<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.1.11</version></dependency><dependency> <groupId>ch.qos.logb原创 2021-05-18 22:35:05 · 263 阅读 · 1 评论 -
比较message,cause,tostring,printstachTrace四个方法区别
比较getMessage,getCause,toString,printStackTrace四个方法区别先说下结论:e.getMessage():获取错误描述,该错误描述可以通过参数message设置e.toString():获取异常类型+错误描述,例如java.lang.RuntimeException: myMessagee.printStackTrace():将这个throwable及其回溯打印到标准错误流,第一行是异常类型+错误描述,第二行是抛出异常地方,最后一行是第一个调用方法,第二行到最原创 2021-05-17 11:35:40 · 566 阅读 · 0 评论 -
【java基础】LinkedHashMap源码分析
摘要: HashMap和双向链表合二为一即是LinkedHashMap。所谓LinkedHashMap,其落脚点在HashMap,因此更准确地说,它是一个将所有Entry节点链入一个双向链表的HashMap。由于LinkedHashMap是HashMap的子类,所以LinkedHashMap自...转载 2018-08-19 22:31:53 · 117 阅读 · 0 评论 -
【java基础】HashSet源码分析
HashSet底层是使用HashMap实现的。public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable{ static final long serialVersionUID = -502474...原创 2018-08-19 17:48:44 · 211 阅读 · 0 评论 -
【java基础】重写hashCode和equals方法
在使用HashMap和HashSet保存数据时,需要根据键的哈希值来进行散列,先来看如果不重写这两个方法会怎么样?public class Main { public static void main(String[] args) { //HashSet hs=new HashSet(); HashMap<People,Integer> map=new HashMa...原创 2018-08-19 17:24:20 · 450 阅读 · 0 评论 -
【java基础】TreeMap源码分析
TreeMap 简介TreeMap 是一个有序的key-value集合,它是通过红黑树实现的。TreeMap继承于AbstractMap,所以它是一个Map,即一个key-value集合。TreeMap 实现了NavigableMap接口,意味着它支持一系列的导航方法。比如返回有序的key集合。TreeMap 实现了Cloneable接口,意味着它能被克隆。TreeMap 实现了...原创 2018-08-16 20:37:15 · 243 阅读 · 0 评论 -
【java基础】java方法调用之动态调用多态(重写override)的实现原理——方法表
结论基于基类的调用和基于接口的调用,从性能上来讲,基于基类的调用性能更高 。因为invokevirtual是基于偏移量的方式来查找方法的,而invokeinterface是基于搜索的。概述多态是面向对象程序设计的重要特性。多态允许基类的引用指向派生类的对象,而在具体访问时实现方法的动态绑定。java对方法动态绑定的实现方法主要基于方法表,但是这里分两种调用方式invokevirtua...转载 2018-08-16 13:37:03 · 381 阅读 · 0 评论 -
【java基础】Java动态绑定机制的内幕
在Java方法调用的过程中,JVM是如何知道调用的是哪个类的方法源代码? 这里面到底有什么内幕呢? 这篇文章我们就将揭露JVM方法调用的静态(static binding) 和动态绑定机制(auto binding) 。★ 静态绑定机制//被调用的类package hr.test;class Father{ public static void f1(){ ...转载 2018-08-16 09:44:58 · 138 阅读 · 0 评论 -
【java基础】Stack源码分析
Stack只继承了Vector类,通过Vector底层数组实现栈功能publicclass Stack<E> extends Vector<E> { /** * Creates an empty Stack. */ public Stack() { }//省略其他函数}peek()函数实现 public sy...原创 2018-08-18 22:22:25 · 367 阅读 · 0 评论 -
【java基础】Vector
Vector和ArrayList一样,底层都是使用数组实现。但是Vector是线程安全的,而ArrayList不是,ArrayList扩容是增加50%,而Vector是两倍,或者指定的capacityIncrement。...原创 2018-08-18 22:14:33 · 111 阅读 · 0 评论 -
【java基础】多线程
Java中的多线程你只要看这一篇就够了 引如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“...转载 2018-08-20 22:39:22 · 108 阅读 · 0 评论 -
【java基础】Java中的ReentrantLock和synchronized两种锁定机制的对比
https://blog.csdn.net/fw0124/article/details/6672522转载 2018-08-20 23:01:13 · 231 阅读 · 0 评论 -
【JAVA高级】线程基础知识
并发解决的问题1.速度:避免了单线程阻塞 2.完整的仿真涉及大量的任务,需要使用协作多线程并发存在的问题共享内存和I/O资源,编写多线程要协调多线程对资源的使用,以使得资源不会被多个任务同时使用。线程驱动任务线程可以驱动任务,所以需要一种描述任务的方式,这可以由runnable接口来提供。thread调用方式 new Thread(new Runn...原创 2019-09-05 21:30:55 · 155 阅读 · 0 评论 -
【JAVA高级】反射
反射是什么?RTTI是类型在编译器就知道了,但是如果类型在编译期不可知,那么就需要使用反射来获取运行时得类型信息。Class和java.lang.reflect类库为反射提供了支持。使用反射时,需要先检查这个对象,看它属于哪个类,然后加载这个类的class对象,那个类的class文件对于jvm来说必须是可获取的,可以在本地机器,也可以是从网络取得。class对象java class文件...原创 2019-09-03 14:46:40 · 187 阅读 · 0 评论 -
【Java基础】Integer自动拆箱、装箱
在看java代码规范的时候看到有这么一条,等级为强制,特此验证。【强制】所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。说明:对于 Integer var = ? 在-128 至 127 范围内的赋值,Integer 对象是在 IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行 判断,但是这个区间之外...原创 2019-08-07 10:26:55 · 789 阅读 · 0 评论 -
对象序列化
18.12 对象序列化当你创建对象时,只要你需要,他就会一直存在,但是在程序终止时,无论如何他都不会继续存在。尽管这么做肯定是有意义的。但是仍旧存在某些情况,如果对象能够在程序不运行的情况下仍能存在并保存其信息,那将非常有用。这样,在下次运行程序时,该对象将被重建并且拥有的信息与在程序上次运行时他所有拥有的信息相同。当然,你可以通过信息写入文件或数据库来达到相同的效果,但是在使万物都成为对象的...原创 2018-07-04 15:09:59 · 204 阅读 · 0 评论 -
java运行时异常和一般异常
Throwable是所有Java程序中错误处理的父类,有两种资类:Error和Exception。Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形.应用程序不应该抛出这种类型的对象(一般是由虚拟机抛...转载 2017-01-17 15:35:34 · 394 阅读 · 0 评论 -
【java基础】Java内部类详解
说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲:目录一.内部类基础二.深入理解内部类三.内部类的使用场景和好处四.常见的与内部类相关的笔试面试题一.内部类基础 在Java中,可以将一个类定义...转载 2019-01-09 17:17:35 · 135 阅读 · 0 评论 -
【java基础】不可变类String
转载地址:https://www.cnblogs.com/jaylon/p/5721571.html一、不可变类简介不可变类:所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值。如JDK内部自带的很多不可变类:Interger、Long和String等。可变类:相对于不可变类,可变类创建实例后可以改变其成员变量值,开发中创建的大部分类都属于可变类。二、不可变类的优点...转载 2018-08-31 20:31:26 · 122 阅读 · 0 评论 -
【java基础】LinkedList源码分析
LinkedList底层是通过链表实现的:transient int size = 0;//容器元素数量transient Node<E> first;//头结点transient Node<E> last;//尾节点private static class Node<E> { E item;//节点内容 Nod...原创 2018-08-18 16:34:26 · 115 阅读 · 0 评论 -
【java基础】一个类所实现的两个不同的接口中,有同名的方法,怎么知道实现的是哪个接口中的方法
今天遇到一个问题,代码(后面各个版本的代码都是基于此代码进行变更的)如下:public interface Type1 { void f(); void f1(); void f11();}public interface Type2 { void f(); void f2(); void f22();}public class IFTest imp...转载 2018-08-18 15:23:36 · 2673 阅读 · 0 评论 -
【java基础】原码, 反码, 补码 详解
原码, 反码, 补码 详解本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进...转载 2018-07-22 16:12:18 · 370 阅读 · 0 评论 -
【java基础】-socket通信的一个简单例子
在java语言中,Socket可以分为两种类型:面向连接的Socket通信协议(TCP),和面向无连接的Socket通信协议(UDP).任何一个Socket都是由IP地址和端口号唯一确定的。Socket的生命周期可以分为3个阶段,打开Socket、使用Socket收发数据和关闭Socket。在Java语言中,可以使用ServerSocket来作为服务器端,Socket作为客户端来实现网络通信。...原创 2018-07-23 21:01:44 · 2291 阅读 · 0 评论 -
【java基础】-String、StringBuffer、StringBuilder的区别
1.String是不可变类也就是说,String对象一旦创建,其值将不能被改变,String对象改变实质是new了一个新的String对象。对于String s1="abc"语句与String s2=“abc”语句,在JVM中存在着一个字符串池,其中保存着很多String对象。并且可以被共享使用,s1、s2引用的是同一个常量池中的对象。由于String的实现采用了Flyweight的设计模式,...原创 2018-07-23 17:02:04 · 132 阅读 · 0 评论 -
【java基础】-java数组和Object关系
java数组和Object关系public class Test { public static void main(String[] args) { // TODO Auto-generated method stub //在维度相同的情况下 获得的字节码是同一个字节码 a1与a2是同一个字节码 int[] a1=new int[]{1,2,3,4}; ...原创 2017-08-10 15:31:29 · 5028 阅读 · 0 评论 -
java 继承和多态
abstract class Shape {void draw(){System.out.println(this+".draw()");}abstract public String toString();}public class Circle extends Shape{public String toString(){return "Circ原创 2017-07-21 19:15:46 · 245 阅读 · 0 评论 -
相对路径 各种情况
1.相对路径概念 1.1 相对路径就是相对于目标文件或(相对虚拟目录)的位置。,请看上图,“a.html” 文件里引用了“b.jpg”图片,由于“b.jpg”图片相对于“a.html”来说,是在同一个目录的,那么要在“a.html”文件里使用以下代 码后,只要这两个文件的相对位置没有变(也就是说还是在同一个目录内),那么无论上传到Web服务器的哪个位置,在浏览器里都能正确地显示图片. &...原创 2018-07-04 09:56:05 · 2790 阅读 · 0 评论 -
SpringMVC4+thymeleaf3的一个简单实例
这是我看到的一篇很不错的文章,分享一下https://www.cnblogs.com/asdop/p/6093599.html原创 2018-04-26 14:10:10 · 190 阅读 · 0 评论 -
java泛型与c++泛型比较
下面是使用模板的C++示例,你将注意到用于参数化类型的语法十分相似,因为Java是受C++启发:#includeusing namespace std;template class Manipulator{ T obj; public: Manipulator(T x){obj=x;} void manipulate(){obj.f();}};class HasF{原创 2017-08-06 21:21:33 · 2877 阅读 · 0 评论 -
泛型-擦出的神秘之处
泛型-擦出的神秘之处当你开始更深入地钻研泛型时,会发现有大量的东西初看起来是没有意义的。例如,尽管可以声明ArrayList.class,但是不能声明ArrayList.class。请考虑下面的情况:public class ErasedTypeEquivalence { public static void main(String[] args) { Class c1=new Ar原创 2017-08-06 20:22:46 · 359 阅读 · 0 评论 -
【Java基础】浅谈++运算符
1.我们先看一个例子来引出今天的话题:int i=1,j=1;i=i++;j=j+++j;System.out.println("i="+i+",j="+j);大家看看结果是什么?答案是:i=1,j=3下面我们来分析一下到底发生了什么?这里涉及到一个很重要的概念:java的编译器在遇到i++和i- -的时候会重新为变量运算分配一块内存空间!下面用图来展示内存的变化:...原创 2018-07-22 17:46:51 · 242 阅读 · 0 评论 -
【java基础】-java移位运算符:右移运算符和无符号右移运算符
下表列出了位运算符的基本运算,假设整数变量A的值为60和变量B的值为13:操作符 描述 例子 & 如果相对应位都是1,则结果为1,否则为0 (A&B),得到12,即0000 1100 | 如果相对应位都是0,则结果为0,否则为1 (A | B)得到61,即 0011 1101 ^ 如果相对应位值相同,则结果为0,否则为1 (A ^ B...原创 2018-07-30 18:32:00 · 1548 阅读 · 0 评论 -
【java基础】ArrayList源码解析
ArrayList底层是用数组实现的。private static final long serialVersionUID = 8683452581122892189L; //默认初始容量 private static final int DEFAULT_CAPACITY = 10; //空数组 private static final Object[...原创 2018-08-18 14:15:27 · 233 阅读 · 0 评论 -
【Java基础】泛型初级
引言泛型实现了参数化类型的概念,使代码可以应用于多种类型,通过解耦类或方法与所使用的类型之间的约束来实现。java泛型设计的一个很重要原因就是容器类。1.简单的泛型泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且由编译器来保证类型的正确性。泛型类型也就是另一种类型罢了,只是用来限制类型,容易误导的一点,类字面常量 .class用法是:类.class,不可用于泛型。下面来...原创 2018-08-08 22:46:07 · 1134 阅读 · 1 评论 -
Class进阶(包含instanceof,Class.isAssignableFrom用法)
Class进阶(包含instanceof,Class.isAssignableFrom用法)首先先定义五个类,继承关系如下:public class Pet {}public class Dog extends Pet{}public class Cat extends Pet{}public class Pug extends Dog{}public class Man...原创 2017-07-23 15:52:42 · 1277 阅读 · 0 评论 -
【java基础】java的this关键字用法
知识点一:this究竟是啥this代表对当前对象的引用public class Animal { public Animal f(){ return this;//当需要返回当前对象的引用时,常常在return语句里这样写。 } public static void main(String[] args) { Animal a=new Animal(); Animal ...原创 2017-07-05 11:05:23 · 258 阅读 · 0 评论 -
【java基础】类字面常量.class
类字面常量1.什么是字面常量java提供了另外一种方法来生成对Class对象的引用,即字面常量。就像下面这样FancyToy.class;这样做不仅简单而且安全,因为它在编译时就会接受检查(因此不需要置于try语句块中)类字面常量不仅可以应用于普通的类,也可以应用于接口,数组,以及基本数据类型。另外,对于基本数据类型的包装器类,还有一个标准字段TYPE。TYPE字段是一个引用,...原创 2017-07-22 12:17:01 · 2651 阅读 · 0 评论 -
【java基础】TreeSet源码分析
TreeSet底层是通过TreeMap来实现的所有功能。 private transient NavigableMap<E,Object> m;//NavigableMap是TreeMap的父类 //定义一个静态常量,TreeSet使用TreeMap实现增加的时候,(key,value)中的value都是这个对象。 private static final Obj...原创 2018-08-18 08:39:47 · 247 阅读 · 0 评论 -
【Java基础】HashMap和Hashtable区别
HashMap和Hashtable区别hash数组初始化时机不同,Hashtable是在构造函数初始化,而HashMap是在第一次put()初始化hash数组。 在HashTable中,hash数组默认大小是11,增加的方式是old*2+1。在HashMap中,hash数组默认大小是16,增加的方式是2*old而且一定是2的整数. HashMap允许空(null)键值(key),而Hash...原创 2018-08-07 20:59:02 · 4115 阅读 · 1 评论 -
【java基础】HashMap实现原理及源码分析
1.hash算法的原理散列表(Hash table,也叫哈希表),是依据关键码值(Key value)而直接进行訪问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来訪问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。负载因子:比方我们存储7个元素,但我们可能为这7个元素申请了10个元素的空间。7/10=0.7,这个数字称为负载因子。负载因子...原创 2018-08-02 21:19:02 · 1720 阅读 · 0 评论