- 浏览: 23202 次
- 性别:
-
最新评论
-
约巴拿:
强!
发篇文章觉醒下 -
try1085793021:
发篇文章觉醒下 -
柯小芍:
初始容量要定义成素数,不然就很容易造成哈希冲突
Java集合框架分析(七)——自己实现hash表 -
ayaome:
写得不错哈
从我的android说起
文章列表
[置顶] 发篇文章觉醒下
- 博客分类:
- 感悟,技术
感觉这两天效率有点低,发个文章觉醒下。 刚把mzd学长的博客又看了一遍,真是感觉激励人心。这学期到现在,先总结下做了什么事: 1.2月份的时候跟着丁少他们搞android游戏:那时候接触了and ...
因为暑假要去金山实习了,虽然是个好机会但是因为才大一,感觉技术的积淀和深度都不够,所以要在这两个月把自己的技术来个完完整整的提升,准备就以博客的形式来记录这两个月的学习。当然这两个月估计困难重重,比如两天之后要考线代,比如五一爹娘要过来不然多了多好的三天黄金时间啊!!比如5.17还要街舞专场还要排练,比如最后还有考试周,就先来篇博客记录即将开始的玩命的两个月甚至三个四个月。
好吧说到正题,大概会出这么几篇的博客:
个人方面:
1.java集合框架系列的分析
...
hadoop学习笔记(二)——IO的5种模型
- 博客分类:
- hadoop
之前说了为了分析hadoopRPC机制,就要了解NIO,在说NIO之前我想先把IO的5种模式简要的记录下。
首先在Unix网络编程中IO大致分为5种:
1.阻塞IO
2.非阻塞IO
3.多路复用IO
4.信号驱动IO
5.异步IO
因为第四种不常用,所以我就分析剩下的四种模型。
当然我在研究这些模式的时候还是经常搞混一些东西,比如大家肯定听过什么同步IO,阻塞IO,同步非阻塞IO,当时我也对这些概念很模糊,现在就先来理一理。
...
为了分析HDFS,就要研究他的RPC机制,为了研究RPC机制,就要了解动态代理,反射机制和NIO,写篇文章就记录下学习动态代理的过程吧。
每一种技术的诞生都是为了解决一个问题,那么我们可以从这么几个问题来 ...
上一篇已经分析的很透彻了,代码应该很好实现了,来个简单版的,直接定义k=8,忽略P(error),直接上代码:
/**
* 简单的布隆过滤器实现,k值设为8,不计算P(error)值,测试的的时候输入10000个字符串,位集大小设成5000 << 10000
* @author lenovo
*
*/
class BloomFilterdemo {
//设置的位集大小
private int defaultSize = 5000 << 10000;
//最大索引位置
private int basic = defaultSi ...
上篇文章简单的介绍了下布隆过滤器,让大家知道了下其原理,现在我们进行下深入分析。
首先,我们要明确布隆过滤器的几个参数,之前 我们的例子是有一亿的网址要存储,要先建立一个16亿的bit array,然后以每个网址为键值得到8个value值,这里我们就有疑问了,为什么要16亿,为什么要8个value值?那我们不妨把这些都设成未知数,设我们要输入n个元素,生成m个bit位,需要k个hash function得到value值。然后还有我们要分析的一个参数,误报率P(error)。这样一来我们再来看看布隆过滤器的算法。
首先系统要算出n个元素需要多少 ...
Java集合框架分析(八)——从哈希到布隆过滤器
- 博客分类:
- 数据结构
今天说一个新的数据结构,布隆过滤器。
一.哈希的优缺点:
首先我们要从哈希说起,对于数据的存储,查询,插入,哈希表肯定是最好的选择,他的时间复杂度接近于O(1)。但是为了减少哈希冲突,也就是为 ...
开始之前先吐槽一下,妈蛋实现代码花了一个小时,调试起码花了一晚上,终于在这时候差不多了。和jdk的对比了下,10W以下的数据还好,10W以上就开始差别大了。不管怎么说还是实现了。原先是想把HashMap的源码分析一起弄上来的不过在实现的过程中就差不多把源码分析一遍了,其他小伙伴很多都分析了就不再出博客分析了,直接上代码:
package com.hash.demo;
/**
* 自己实现一个hash表,参考了jdk的HashMap的源码
*
* @author Linhaoxinag
*
* @param <K>
* ...
今天来分析数据结构的一个大头,哈希表。
主要分析这么几个方面:1.哈希表的概念 2.哈希冲突 3.哈希冲突的解决方法 4.哈希表的时空复杂度 5.装载因子的分析
一.哈希表的概念:
我们先来看下官方的解释:
散列表(Hash table,也叫哈希表),是根据关键字(Key value)而直接访问在内存存储位置的数据结构。也就是说,它通过把键值通过一个函数的计算,
花了半个小时复习了下栈,自己用数组简单实现了下,也为之后要分析到的Vector和Stack做个准备,只是个简单的数组栈,还没有像Stack里面那么优化,代码如下:
class Stack {
// 定义一个数组来实现栈
private Object[] stack;
// 栈内的元素个数,也可以当做栈顶元素的游标来用
private int size = 0;
// 初始化一个容量来创建栈
private int capacityIncrement = 0;
// 指定一个初始容量来创建stack
public Stack(int ca ...
继续说List集合的另一个大头,LinkedList,首先我们先对它有个整体的了解,首先看这段代码:
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
这里� ...
安装ubantu遇到的问题:
失败方法(不推荐):
网上有许多方法,我首先采用了制作u盘系统启动盘来安装ubantu系统http://jingyan.baidu.com/article/60ccbceb18624464cab197ea.html,结果开机没出现引导界面。一开始,以为是系统有问题。用了两个版本的ubantu系统,重复安装了四五次都是这种情况。最后想到应该是主引导程序的配置的问题,也就是在用UltraISO软件将ubantu系统镜像文件写入到u盘时,设置便捷启动
继续之前的ArrayList分析,分析完源代码之后我们就实现一点实例来看看ArrayList中常用API的用法,不多说先上代码:
public class ArrayListDemo2 {
public static void main(String[] args) {
ArrayList<Object> al = new ArrayList<Object>();
al.add(new Person("asdf", 25));
al.add(new Person("asdf1", 32));
...
Java集合框架分析(二)——List集合之ArrayList源码分析
因为复习集合框架的本意是要学习集合框架,因此我接下来做三个任务,分析源码,自己实现对应的数据结构,实现下集合中的大部分常用方法。
上一章说到List的特点:元素是有序的并且元素是可以重复的,因为该集合有索引,讲到这里学过数据结构的人就知道了其实这就是一个线性表,确实list的底层数据结构就是线性表。
我们来看List接口的实现类,最常见的大概就四种,ArrayList, LinkedList, Vector, Stack.,这里我们就对ArrayList和LinkedL ...
Java集合框架分析(一)——总体概述
集合框架大家肯定都用过,但是什么事集合框架?他是基于什么数据结构?每个方法都实现了吗?相信很多人没有深入研究过,因为搞云计算要分析hadoop源码,就把java又重头复习了一遍,集合框架这部分我觉得有必要深入研究下。
好了不说废话直接开始。首先集合框架都在java的util包下,先截个API的图看下
这是util包下的部分截图,这是java的工具库类包,包含集合