
数据结构
kourouboy
这个作者很懒,什么都没留下…
展开
-
浅谈垃圾回收算法
一、首先我们需要如何判断一个对象已死?引用计数法引用计数描述的算法为: 给对象增加一个引用计数器,每当有一个地方引用它时,计数器就+1;当引用失效时,计数器就-1;任何时刻计数 器为0的对象就是不能再被使用的,即对象已"死"。 引用计数法实现简单,判定效率也比较高,在大部分情况下都是一个不错的算法。比如Python语言就采用引用计 数法进行内存管理。 但是,在主流的JVM中没有选用...原创 2019-10-16 00:44:48 · 207 阅读 · 0 评论 -
ArrayList源码分析超详细
ArrayList源码分析超详解想要分析下源码是件好事,但是如何去进行分析呢?以我的例子来说,我进行源码分析的过程如下几步:找到类:利用 IDEA 找到所需要分析的类(ztrl+N查找ArraList)(此处就是 ArrayList) 新建类:新建一个类,命名为 ArrayList,将源码拷贝到该类。因为我们分析的时候肯定是需要进行代码注释,以及调试的,而jdk的源码,我们是没法在里面直...转载 2019-09-13 21:11:44 · 136 阅读 · 0 评论 -
(转)Java中HashMap底层实现原理(JDK1.8)源码分析
在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。简单说下HashMap的实现原理:首先有一...转载 2019-09-04 21:11:08 · 165 阅读 · 0 评论 -
关于HashMap的一些基础面试题
“你用过HashMap吗?” “什么是HashMap?你为什么用到它?” 几乎每个人都会回答“是的”,然后回答HashMap的一些特性,譬如HashMap可以接受null键值和值,而Hashtable则不能;HashMap是非synchronized;HashMap很快;以及HashMap储存的是键值对等等。这显示出你已经用过HashMap,而且对它相当的熟悉。但是面试官来个急转直下,从此刻...原创 2019-09-04 21:08:58 · 488 阅读 · 0 评论 -
HashMap、Hashtable、HashSet和ConcurrentHashMap的比较
HashMap 和 Hashtable 的区别 HashMap 和 Hashtable 都实现了 Map 接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步 (synchronization),以及速度。HashMap 几乎可以等价于 Hashtable,除了 HashMap 是非 synchronized 的,并可以接受 null(HashMap 键值 (...原创 2019-09-04 21:05:46 · 214 阅读 · 1 评论 -
ArrayLIst、Vector、LinkedList关系与区别
相同点:1.ArrayLIst、Vector、LinkedList都属于List接口常用子类;2.ArrayLIst、Vector是基于数组实现,LinkedList基于链表实现;不同点:1.ArrayList采用懒加载策略,扩容为原先数组的1.5倍,采用异步处理,线程不安全,性能较高;2.Vector当产生对象时就初始化...原创 2019-08-16 22:05:00 · 195 阅读 · 0 评论 -
ConcurrentHashMap如何高效实现线程安全
典型回答Java 提供了不同层面的线程安全支持。在传统集合框架内部,除了 Hashtable 等同步容器,还提供了所谓的同步包装器(Synchronized Wrapper),我们可以调用 Collections 工具类提供的包装方法,来获取一个同步的包装容器(如 Collections.synchronizedMap),但是它们都是利用非常粗粒度的同步方式,在高并发情况下,性能比较低下。...转载 2019-08-06 22:56:05 · 391 阅读 · 0 评论 -
合唱团 -- 牛客网
1.题目描述:有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗?2.题目解析:题目要求n各学生中选择k个,使这k个学生的能力值乘积最大。这是一个最优化的问题。另外,在优化过程 中,提出了相邻两个学生的位置编号差不超过d的约束。解决的方法是采...原创 2019-07-31 16:35:40 · 383 阅读 · 0 评论 -
网易2020校招笔试题目-测试开发工程师
题目分为三部分:1.选择题:主要考察基础知识点。2.编程题:四个编程题。3.问答题:一个关于测试用例,一个关于MySQL的基本检索语句。选择题记不太清楚了,反正就是各个知识点。编程题:1.俄罗斯方块游戏机。题目:自定义俄罗斯方块列数,每次俄罗斯方块下落个数为1*1,当一行都落满俄罗斯方块时,得分+1。现在小明玩到m个俄罗斯方块,求此时的分数。输入:第一行 列...原创 2019-08-04 13:35:06 · 1420 阅读 · 1 评论 -
在IDEA上基于JDBC的MySQL表格的增删查找操作
在这里先介绍一下JDBC: Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。步骤:加载驱动 a. Class.forName("com.mysql.jdbc.Driver"); 获取连接 a. C...原创 2019-07-31 00:29:25 · 346 阅读 · 0 评论 -
Java中如果父类方法使用private定义,子类使用public 覆写,是否正确?
看以下代码:父类使用private定义的方法,子类使用public覆写:class Father{ public void fun(){ this.print(); } //如果现在父类使用了private定义,那么就表示该方法只能被父类使用,子类无法使用,换句话说,子类是不知道父类有这样的方法的。 private void print()...原创 2019-02-25 20:42:49 · 3376 阅读 · 0 评论 -
数据结构 — 顺序表的实现(基于数组实现线性表)
顺序表的储存结构1 2 3 4 5 …… 线性表的顺序存储结构式指⽤⼀组地址连续的存储单元依次存放线性表的元素。(附带顺序表的分析,优点与缺点和使用场景)首先定义一个Squence接口:/** * 线性表规范 */public interface Sequence { /...原创 2019-03-15 20:19:13 · 544 阅读 · 0 评论 -
数据结构 — 单链表的实现
单链表的储存结构: 定义: 单链表指的是每个节点只保留一个引用,该引用指向当前节点的下一个节点,没有引用指向头节点,尾节点的next引用为null。 功能梳理:插入 、查找 、删除 。 代码的实现:1.首先还是定义一个接口:/** * 线性表规范 */public interface Sequence { /** *向綫性表...原创 2019-03-18 18:03:54 · 185 阅读 · 0 评论 -
数据结构 -- 栈的实现
一、栈的概念及结构 -- 先进后出!栈就是一种特殊线性表,只允许再固定的一端进行元素的插入和删除操作。进行数据的插入和删除操作的一端称为栈顶,另一端为栈底。 栈中的数据元素遵守后进先出LIFO(Last in First Out)的原则。 压栈:栈的插入操作叫做进栈/压栈/入栈,进去的数据在栈顶。 出栈:栈的删除操作。出数据也在栈顶。 结构如下:二、栈的特点分析从栈的操作特...原创 2019-05-25 12:30:43 · 247 阅读 · 0 评论 -
数据结构 -- 二叉树及实现
一、概念及结构概念:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。 特点: 2.1:二叉树有天然递归的特性。 2.2:每个结点最多有两棵子树,即二叉树不存在度大于2的结点。 2.3:二叉树的子树有左右之分,其子树的次序不能颠倒。 3.特殊的二叉树: ...原创 2019-06-19 17:44:03 · 219 阅读 · 0 评论