
Java
文章平均质量分 89
bu会水的鱼
这个作者很懒,什么都没留下…
展开
-
Java类的加载过程
概述在Java语言中,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会为Java应用程序提供高度的灵活性,Java里天生可以动态扩展的语言特性就是依赖运行期动态加载和动态链接这个特点实现的。例如,如果编写一个面向接口的应用程序,可以等到运行时再指定其实际的实现类:用户可以通过Java预定义和自定义类加载器,让一个本地的应用程序可以在运行时...原创 2020-03-07 16:50:03 · 541 阅读 · 0 评论 -
垃圾收集器如何判定对象可被回收
概述Java运行时内存会分为几个部分,这其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着对象死了吗在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还活着,哪些已经死了(不再被任何途径使用的对象)。引用计数算法书面解释:给对象添加一个引用计数器,每当有一个地方引用他时,计数器值加1,当引用失效...原创 2020-03-07 01:15:04 · 463 阅读 · 0 评论 -
一文搞懂Java内存回收算法
前言由于垃圾收集算法的实现涉及大量的程序细节,而且各个平台的虚拟机操作内存的方法又各不相同,因此本节不打算过多地讨论算法的实现,只是介绍几种算法的思想及其发展过程。标记-清除最基础的收集算法就是"标记-清除"算法,算法分标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。之所以说他是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其不足进行改...原创 2020-03-06 17:27:34 · 508 阅读 · 0 评论 -
Android面试题集锦(持续更新)
一、java熟练掌握java是很关键的,大公司不仅仅要求你会使用几个api,更多的是要你熟悉源码实现原理,甚至要你知道有哪些不足,怎么改进,还有一些java有关的一些算法,设计模式等等。(一)java基础面试知识点1) java中==和equals和hashCode的区别== 在用关系操作符 == 比较的是值本身;equals 比较两个对象的引用是否相等,即 是否指向同一个对象;hash...原创 2020-03-01 16:26:09 · 880 阅读 · 0 评论 -
这几年看过的书,都是经典书
原创 2020-02-20 11:47:35 · 220 阅读 · 0 评论 -
Java 泛型
1. 概述什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来...原创 2018-05-30 21:06:07 · 292 阅读 · 0 评论 -
Java序列化
序列化什么事序列化?简单来说,序列化就是将对象转化为字节流,反序列化就是字节流转化为对象。在Java中具体是如何来使用的呢?他是如何实现的?有什么优缺点?基本用法Serializable要让一个类支持序列化,只需要让这个类实现接口java.io.Serializable,Serializable没有定义任何方法,只是一个标记接口。声明实现了Serializable接口后,保存/读取对象就可以使用Ob翻译 2018-02-23 17:38:03 · 193 阅读 · 0 评论 -
Java 日志规范
前言一个在生产环境里运行的程序如果没有日志是很让维护者提心吊胆的,有太多杂乱又无意义的日志也是令人伤神。程序出现问题时候,从日志里如果发现不了问题可能的原因是很令人受挫的。本文想讨论的是如何在Java程序里写好日志。一般来说日志分为两种:业务日志和异常日志,使用日志我们希望能达到以下目标: 1. 对程序运行情况的记录和监控; 2. 在必要时可详细了解程序内部的运行状态; 3. 对系统性能的影响尽转载 2017-11-09 18:23:59 · 1923 阅读 · 0 评论 -
重构--重新组织函数
重构手法中,很大一部分是对函数进行整理,使之更恰当地包装代码。几乎所有问题都源于过长的函数,这很讨厌,因为它们往往包含太多的信息,这些信息又被函数错综复杂的逻辑遮盖,不易鉴别。对付过长函数,一项重要的重构手法就是把一段代码从原先函数中提取出来,放进一个单独函数中。 提取函数最大的困难就是处理局部变量,而临时变量则是其中一个主要的困难源头。参数带来的问题比临时变量稍微少一些,前提是你不在函数内赋值给翻译 2016-04-11 17:52:01 · 2642 阅读 · 0 评论 -
重构--第一个案例
1.1 起点实例非常简单。这是一个影片出租店的程序,计算每一位顾客的消费金额并打印详单。操作者告诉程序:顾客租了哪些影片、租期多长,程序便根据租赁时间和影片类型算出费用。影片分为三类:普通片、儿童片和新片。除了计算费用,还要为常客计算积分,积分会根据租片种类是否为新片而有所不同。 我会逐一列出这些类的代码。Movie(影片)public class Movie { public stati翻译 2016-03-28 16:56:14 · 3451 阅读 · 0 评论 -
Java反射Reflection
1. 了解Java中的反射1.1 什么是java的反射Java反射是可以让我们在运行时获取类的函数、属性、父类、接口等Class内部信息的机制。通过反射还可以让我们在运行期实例化对象,调用方法,通过调用get/set方法获取变量的值,即使方法火属性是私有的也可以通过反射的形式调用,这种看透class的能力被成为内省,这种能力在框架开发中尤为重要。有些情况下,我们要使用的类在运行时才能确定,这个时候我原创 2016-03-14 14:55:38 · 746 阅读 · 0 评论 -
Java 注解(一)
注解,也被称为元数据,为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。 注解是众多引入到Java SE5中的重要语言变化之一。他们可以提供用来完整的描述程序所需的信息,而这些信息无法用Java来表达的。原创 2016-03-12 01:03:09 · 768 阅读 · 0 评论 -
Java线程
Java线程的概念和其他多数计算机语言不通,Java内置支持多线程编程。多线程程序包含两条或两条以上并发运行的部分。程序中每个这样的部分都叫一个线程,每个线程都有独立的执行路径。因此,多线程是多任务处理的一种特殊形式。 你一定知道多任务处理,因为他实际上被所有的现代操作系统所支持。然而,多任务处理有两种截然不同的类型:基于进程的和基于线程的。认识两者的不通是十分重要的、对很多读者,基于进程的多任务原创 2016-03-21 00:59:59 · 353 阅读 · 0 评论