- 浏览: 14004 次
- 性别:
- 来自: 山西
最新评论
文章列表
面试中常用的数据结构和算法
- 博客分类:
- 数据结构
一、数据结构部分
1、数组和链表的区别
C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。而在实际应用中用户使用数组之前有时无法准确确定数组的大小,只能将数组定义成足够大,这样数组中有些空间可能不被使用,从而造成内存空间的浪费。链表是一种常见的数据组织形式,它采用动态分配内存的形式实现。需要时可以用new分配内存空间,不需要时用delete将已分配的空间释放,不会造成内存空间的浪费。
从逻辑结构来看:数组必须事先定义固定的长度(元素个数),不能适应数据动态的增减的情况,即数组的 ...
Java容器Collections介绍
- 博客分类:
- Java语言
Java类库的集合类层次结构:
这个类包含了专门的静态方法来操作或者返回集合。它包含了多种算法来操作集合或者包装器,来返回一个新的特殊的集合和一些其他的东西。如果集合或者类对象提供给的是为n ...
ConcurrentHashMap是线程安全并且高效的HashMap。
为什么要使用ConcurrentHashMap?
线程不安全的HashMap,因为多线程环境下,使用它进行put操作会引起死循环,导致CPU利用率接近100%。所以在并发情况下不能使用HashMap。
效率低下的HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法时,其他线程访问HashTable的同步方法时,可能会进入阻塞或轮询状态。如线程1使用put进 ...
Java高性能系列-(三)虚拟机致命错误处理
- 博客分类:
- Java语言
HotSpot VM的设计者们认为为它的使用者和开发者提供充分的信息来诊断和修复VM的致命错误是重要的。一个常见大的VM致命错误是OutOfMemoryError。另一个在Solaris和Linux平台常见的致命错误是分段错误。也就是Windows上所说的 ...
Java高性能系列-(一)VM生命周期
- 博客分类:
- Java语言
HotSpot VM Runtime负责启动和停止hotSpot VM。这篇文章简单介绍了一下一个Web应用的启动和停止。
启动HotSpot VM的组件被称作启动器(launcher)。有许多HotSpot VM启动器,最常用的有Unix/Linux上的java 命令和Windows的java和javaw命令。
启动器 ...
package test;
public class LinkList {
private static class Node{
int data;
Node next;
Node(int data){
this.data = data;
this.next = null;
}
}
Node head;//头结点
public LinkList(){//链表的构造方法
head = null;
}
public void clear(){//清空链表
head = null;
}
public ...
此文章,我们将一起了解一下hash和indexFor方法在hashmap内部起什么作用。hash和indexFor方法属于HashMap类,为什么JDK开发者在key对象已经有他自己的hashcode方法的情况下还需要另一个hash函数?
首先看一下hash和indexFor方法的代码:
/**
* Applies a supplemental hash function to a given hashCode, which
* defends against poor quality hash functions ...