
Java相关
Java知识积累
lifeidroid
且听风吟 静待花开
展开
-
java的四大特性
编程语言分为面向过程和面向对象,而java就是一种面向对象的编程语言。什么是面向过程编程呢?就是一流程为单位,注重最后的结果。比如小明要从郑州去北京,他第一步就是要先买火车票,然后去火车站乘车,坐火车到北京。这就是面向过程编程,必须每一步都做到,才会有最后的结果。这样一来面向过程编程的缺点就很明显了:不利于程序的维护 功能之间有很强的关联性,就是说你每一次改动一步,可能就会涉及到好几步的更改。什么是面向对象变成呢?就是把一个事物看做一个整体,从事物的属性和功能两方面进行描述面向对象..转载 2020-06-05 16:31:19 · 172 阅读 · 0 评论 -
Java final、finally、finalize 的区别
初步了解这是一道非常典型的面试题,而它也是有一系列的典型回答的:final可以用来修饰类、方法、变量,分别有不同的意义所在,final修饰的class代表不可继续扩展(继承),final修饰的变量代表不可修改,final修饰的方法代表不可重写。finally则是java保证某一段重点代码一定要被执行的修饰符,例如:我们需要用try块让JDBC保证连接,保证unlock锁等动作finalize是基础类java.lang.Object的一个方法,它的设计目的是为了保证对象在垃圾回收之前完成特定资..转载 2020-06-05 14:52:54 · 165 阅读 · 0 评论 -
Java泛型
概述泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、转载 2020-06-05 12:05:55 · 116 阅读 · 0 评论 -
Java中四大引用
强引用(StrongReference)概念介绍:在此说明一下,StrongReference只是对强引用的一个称呼,但是强引用没有对应的实体类。使用强引用的对象就算是内存出现OutOfMemory(内存溢出)的异常也不会回收。也就是说该对象永远不会被垃圾回收器回收,不论内存是否充足。平常代码中用的最多的就是强引用。Demo验证:static Object object = new Object();......................................./**转载 2020-06-04 17:05:24 · 139 阅读 · 0 评论 -
软件设计六大设计原则
了解设计模式的朋友们,想必都听说过“六大设计原则”吧。其实最经典的23种设计模式中或多或少地都在使用这些设计原则,也就是说,设计模式是站在设计原则的基础之上的。所以在学习设计模式之前,很有必要对这些设计原则先做一下了解。1、单一职责原则There should never be more than one reason for a class to change.理解:不同的类具备不同的职责,各司其职。做系统设计是,如果发现有一个类拥有了两种职责,那么就要问一个问题:可以将这个...转载 2020-06-04 15:04:00 · 1067 阅读 · 0 评论 -
Java多线程和线程池
1.为什么要使用线程池在java中,如果每个请求到达就创建一个新线程,开销是相当大的。在实际使用中,服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源。如果在一个jvm里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足。为了防止资源不足,服务器应用程序需要采取一些办法来限制任何给定时刻处理的请求数目,尽可能减少创建和销毁线程的次数,特别是一些资源耗费比较大转载 2020-06-04 14:24:01 · 126 阅读 · 0 评论 -
Java反射机制
什么是反射机制JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制(注意关键词:运行状态)换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods反射机制主要提供的功能在运行时判断任意一个对象所属的类; 在运行时构造任意一个类转载 2020-06-04 09:20:11 · 191 阅读 · 0 评论 -
Java类加载机制
我们知道,我们写的java文件是不能直接运行的,我们可以在IDEA中右键文件名点击运行,这中间其实掺杂了一系列的复杂处理过程。这篇文章,我们只讨论我们的代码在运行之前的一个环节,叫做类的加载。这篇文章的大致结构:首先,认识类加载机制;然后,详细介绍类加载的过程;最后,介绍了类加载器,还有双亲委派原则。一、什么是类的加载在介绍类的加载机制之前,先来看看,类的加载机制在整个java程序运行期间处于一个什么环节,下面使用一张图来表示:从上图可以看,java文件通过编译器变成了.c.转载 2020-06-03 14:30:13 · 178 阅读 · 0 评论 -
垃圾回收机制与调用System.gc()区别
java垃圾回收与System.gc()介绍垃圾回收机制:1.垃圾收集算法的核心思想Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽,以及不恰当的内存释放所造成的内存非法引用。垃圾收集算法的核心思想是:对虚拟机可用内存空间,即堆空间中的对象进行识别,如果对象正在被引用,那么称其为存活对象,反之,如果对象不再被引用,则为垃圾对象,可以回收其占据的空间,用于再分配。转载 2020-06-03 09:18:56 · 895 阅读 · 0 评论 -
垃圾回收算法(JVM)
说起垃圾收集(Garbage Collection,下文简称GC),有不少人把这项技术当作Java语言的伴生产物。事实上,垃圾收集的历史远远比Java久远,在1960年诞生于麻省理工学院的Lisp是第一门开始使用内存动态分配和垃圾收集技术的语言。当Lisp还在胚胎时期时,其作者John McCarthy就思考过垃圾收集需要完成的三件事情:哪些内存需要回收? 什么时候回收? 如何回收?经过半个世纪的发展,今天的内存动态分配与内存回收技术已经相当成熟,一切看起来都进入了“自动化”时代,那为什么我们还转载 2020-06-01 17:19:27 · 342 阅读 · 0 评论 -
Java内存模型
java内存模型(Java Memory Model,JMM)是java虚拟机规范定义的,用来屏蔽掉java程序在各种不同的硬件和操作系统对内存的访问的差异,这样就可以实现java程序在各种不同的平台上都能达到内存访问的一致性。可以避免像c++等直接使用物理硬件和操作系统的内存模型在不同操作系统和硬件平台下表现不同,比如有些c/c++程序可能在windows平台运行正常,而在linux平台却运行有问题。物理硬件和内存首先,在单核电脑中,处理问题要简单的多。对内存和硬件的要求,各种方面的考虑没有在多核转载 2020-06-01 10:29:59 · 123 阅读 · 0 评论 -
Java 容器(HashMap、HashSet、LinkedList、ArrayList)原理与对比
HashMapHashSetLinkList原理总结:1、数据存储基于双向链表的数据结构,查询慢,增删快。线程不安全。2、插入数据很快。先是在双向链表中找到要插入节点的位置index,找到之后,再插入一个新节点。 双向链表查找index位置的节点时,有一个加速动作:若index < 双向链表长度的1/2,则从前向后查找; 否则,从后向前查找。add(E)添加到末尾,复杂度O(1);add(index, E)添加第几个元素后,需要先查找到第几个元素,直接指针指...原创 2020-05-29 14:05:12 · 657 阅读 · 0 评论