04 2018 档案
摘要:作者:王下邀月熊链接:https://www.zhihu.com/question/273440522/answer/373538291来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 回答节选自技术之路/笔记系统与知识管理这篇文章,一点浅见,还望指正。 技术分为术与道
阅读全文
摘要:参考链接:https://blog.csdn.net/huzhigenlaohu/article/details/51595676
阅读全文
摘要:简要说明的话,Java对象的创建过程分为下面几步: 1、执行相关检查; 2、为对象分配内存,将分配到的内存空间都初始化为零值; 3、进行构造代码块和构造函数的初始化 下面详细介绍这几个步骤: 1、执行相关检查 虚拟机遇到一条new指令时,将会去检查这个指令的参数是否能在常量池中定位到一个类的符号引用
阅读全文
摘要:1.获取链表第i个数据的算法思路 2.单链表第i个数据插入结点的算法思路 3.单链表第i个数据删除结点的算法思路 分析一下刚才我们讲解的单链表插入和删除算法,我们发现,它们其实都是由两部分组成:第一部分就是遍历查找第i个结点;第二部分就是插入和删除结点。 4.单链表整表创建的算法思路 生成一新结点赋
阅读全文
摘要:首先 File 类是对文件系统的映射 并不是硬盘上真实的文件所以 new File("xxx.xxx") 只是在内存中创建File文件映射对象,而并不会在硬盘中创建文件 如果需要创建文件需要以下操作:判断映射的文件是否真实存在 file.exists() //true存在 false不存在如果存在即
阅读全文
摘要:很多人认为方法区(或者HotSpot虚拟机中的永久代)是没有垃圾收集的,Java虚拟机规范中确实说过可以不要求虚拟机在方法区实现垃圾收集,而且在方法区进行垃圾收集的“性价比”一般比较低:在堆中,尤其是在新生代中,常规应用进行一次垃圾收集一般可以回收70%~95%的空间,而永久代的垃圾收集效率远低于此
阅读全文
摘要:Java中的强引用,软引用,弱引用,虚引用有什么用? - 菜鸟窝的回答 - 知乎 https://www.zhihu.com/question/37401125/answer/226100181 Java中的强引用,软引用,弱引用,虚引用等四种引用的存在主要是为了更好的进行内存管理而设置的一套机制,
阅读全文
摘要:1.单链表 n个结点(ai的存储映像)链结成一个链表,即为线性表(a1,a2,...,an)的链式存储结构,因为此链表的每个结点中只包含一个指针域,所以叫做单链表。单链表正是通过每个结点的指针域将线性表的数据元素按其逻辑次序链接在一起 有时,为了更加方便地对链表进行操作,会在单链表的第一个结点前附设
阅读全文
摘要:Java中几乎所有的对象实例都存放在堆中,在垃圾收集器对堆内存进行回收前,第一件事情就是要确定哪些对象还“存活”,哪些对象已经“死去”(即不可能再通过任何途径被使用)。 引用计数算法 首先需要声明,至少主流的Java虚拟机里面都没有选用引用计数算法来管理内存。 什么是引用计数算法:给对象中添加一个引
阅读全文
摘要:概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。 jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,
阅读全文
摘要:1.描述顺序存储结构需要三个属性 存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置 线性表的最大存储容量:数组长度MaxSize 线性表的当前长度:length 2.插入算法的思路 3、删除算法的思路 4、线性表的顺序存储结构的优缺点 优点: 无须为表示表中元素之间的逻辑关系而增
阅读全文
摘要:1.简单介绍 类的生命周期如下图 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定)。另外注意
阅读全文
摘要:1. 什么是 Java 类加载机制 Java 虚拟机一般使用 Java 类的流程为:首先将开发者编写的 Java 源代码(.java 文件)编译成 Java 字节码(.class 文件),然后类加载器会读取这个 .class 文件,并转换成 java.lang.Class 的实例。有了该 Class
阅读全文
摘要:MyClass myClass=new MyClass(); new的时候在堆中新建了一个对象。这个对象是MyClass的实例。其中myClass是该对象的引用。
阅读全文
摘要:1. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可
阅读全文
摘要:常见时间复杂度还有:nlogn阶,立方阶,指数阶O(2^n)等耗费时间:O(1)<O(logn)<O(n)<O(nlogn)<O(n²)<O(n³)<O(2^n)<O(n!)<O(n^n)最坏情况与平均情况:***平均运行时间是期望的运行时间。***最坏运行时间是一种保证,在应用中,这是一种最重要的
阅读全文
摘要:算法时间复杂度的定义:进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复
阅读全文
摘要:一、什么是线程池 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。 二、线程池的特性 1.减少在创建和销毁线程上所花的时间以及系统资源的开销 2.避免因系统创建大量线程而导致消耗完系统内存的情况出现 这里类比数据库连接池,这种“池”的作用一般就是两点: 复用
阅读全文
摘要:如何度量算法的效率?效率一般指算法的执行时间。那么如何度量算法的执行时间?① 事后统计方法:【可以把算法跑若干次,用计时器计时】通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率高低。 缺陷:必须依据算法,事先编制好测试程序,大量耗费时间精力。而且对
阅读全文
摘要:算法:对某一问题的解决方法的步骤的总结,计算机中表现为指令的有限序列,每条指令表示多个操作。算法包括5个方面:输入,输出,有穷性,确定性,可行性。输入:0或至少1个输入(可以理解为入参)。输出:至少一个。有穷性:算法通过有限步骤解决问题。不会死循环。确定性:算法解决每个步骤有特定的作用;通常算法只有
阅读全文
摘要:什么是数据结构?程序设计=数据结构+算法数据结构就是关系,即数据元素相互之间存在的一种或多种特定关系的集合。 数据结构分为逻辑结构和物理结构。 逻辑结构:数据对象中数据元素之间的相互关系 物理结构:数据的逻辑结构在计算机中的存储形式。(非主要) 四大逻辑结构:1. 集合结构:结构中的数据元素同属
阅读全文