`
dieslrae
  • 浏览: 35369 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论
文章列表
    ArrayBlockingQueue是concurrent包提供的一个线程安全的队列,由一个数组来保存队列元素.通过takeIndex和putIndex来分别记录出队列和入队列的下标,以保证在出队列时不进行元素移动. //在出队列或者入队列的时候对takeIndex或者putIndex进行累加,如果已经到了数组末尾就又从0开始,保证数组的循环使用. final int inc(int i) { return (++i == items.length) ? 0 : i; } //入队列操作 private void insert(E x) { ...
    作为前言,首先是要吐槽一下公司的脑残编译部署方式,web和core分开部署本来没什么问题,但是这丫居然不把json的包作为基础包而作为web的包,导致了core端不能使用,而且我们的core是可以当web来用的(不要在意这些细节),所以在core中处理json串就是个问题.没办法,跟编译那帮人也扯不清楚,只有自己写json的解析了.     思路还是将json的解析拆分为两类,一类为Object,解析为map,一类为Array,解析为list.     先谈Object的,比如是一个这样的串:{aa:bb,cc:{dd:ee,ff:gg}},不管它的层次有多深,先将其拆分为key1:va ...
        好久没碰wxPython了,于是就想在自己的centos中装上温习一下,顺便重新熟悉下linux.于是上官网下安装包,结果坑爹的发现linux只提供源码编译安装(或许是因为我英语不好没发现).源码就源码嘛,反正mysql也是源码装的,下好源码开始装...于是发现坑得一手好爹,各种缺包,各种报错.这种情况当然只能问谷歌了,结果是还是装不上.         后来想能不能用yum装呢?再问谷歌,发现悲催的被墙了,这下只能问度娘了,还好度娘给了我个yum源的地址http://springdale.math.ias.edu/data/puias/6/x86_64/os/Addons.欢欢 ...

Python版B树

话说以前的树都用java写的,最近发现python有点生疏了,于是用python写了个B树实现,B树在索引领域用得还是蛮多了,如果没记错mysql的默认索引好像就是B树... 首先是数据实体对象,很简单,只存放key,value class Entity(object): '''数据实体''' def __init__(self,key,value): self.key = key self.value = value 然后节点对象 class Node(object): '''B树的节点''' ...

二叉树:堆

    博客分类:
  • Tree
    这里说的堆其实是一个完全二叉树,每个节点都不小于自己的子节点,不要跟jvm的堆搞混了.由于是完全二叉树,可以用数组来构建.用数组构建树的规则很简单:     一个节点的父节点下标为: (当前下标 - 1)/2     一个节点的左节点下标为: 当前下标 * 2 + 1     一个节点的右节点下标为: 当前下标 * 2 + 2         用数组来构建时,可以非常方便的访问最后一个最后一个节点,所以,堆比较适合于优先级队列之类的应用.每次新增节点时,总是先插入到数组最后一个空位,再依次跟父节点比对,如果父节点小就交换;每次删除节点时总是删除并返回根,然后将最后一个节点放到根的位置, ...

多叉树:2-3-4树

    博客分类:
  • Tree
    平衡树多叉树,每个节点最多有4个子节点和3个数据项,2,3,4的含义是指一个节点可能含有的子节点的个数,效率比红黑树稍差.一般不允许出现重复关键字值.2-3-4树有以下特征:     1、有一个数据项的节点总是有2个子节点(称为2-节点)     2、有两个数据项的节点总是有3个子节点(称为3-节点)     3、有三个数据项的节点总是有4个子节点(称为4-节点)     简单的说,非叶节点的子节点树总是比它含有的数据项多1,叶节点可能含有一个,两个或三个数据项.空叶节点不存在.2-3-4树的规则如下:     1、第一个子节点的关键字值小于父节点第一个数据项     2、第二个子节点 ...
    所谓二叉树,就是一个节点最多只能有两个子节点,而二叉搜索树就是一个经典并简单的二叉树.规则是一个节点的左子节点一定比自己小,右子节点一定大于等于自己(当然也可以反过来).在树基本平衡的时候插入,搜索和删除速度都很快,时间复杂度为O(logN).但是,如果插入的是有序的数据,那效率就会变成O(N),在这个时候,树其实变成了一个链表. tree代码: public class Tree { private Node root; /** * 插入节点 * @param data */ public void ...

二叉树:红黑树

    博客分类:
  • Tree
    红黑树是一种自平衡的二叉树,它的查找,插入,删除操作时间复杂度皆为O(logN),不会出现普通二叉搜索树在最差情况时时间复杂度会变为O(N)的问题.     红黑树必须遵循红黑规则,规则如下     1、每个节点不是红就是黑。    ...
public void quickSort(int[] array){ this.quickSort(array, 0, array.length - 1); } public void quickSort(int[] array,int left,int right){ if(right - left <= 0){ return; }else{ int partition = this.partition(array, left, right ...
public void shellSort(int[] array){ int limit = 1; int temp; int index; while(limit <= array.length/3){ limit = limit * 3 + 1; } while(limit != 0){ for(int i=limit;i<array.length;i++){ ...
public void mergeSort(int[] array){ int temp = array.length/2; if(temp == 0){ return; } int[] a = new int[temp]; int[] b = new int[array.length - temp]; for(int i=0;i<temp;i++){ a[i] ...
public void insertSort(int[] array){ int temp; for(int i=1;i<array.length;i++){ temp = array[i]; for(int k=i-1;k>=0;k--){ if(array[k] > temp){ array[k+1] = array[k]; ...
public void selectSort(int[] array){ int select; for(int i=0;i<array.length;i++){ select = i; for(int k=i+1;k<array.length;k++){ if(array[select] > array[k]){ select = k; ...
public void bubbleSort(int[] array){ for(int i=1;i<array.length;i++){ for(int k=0;k<array.length-i;k++){ if(array[k] > array[k+1]){ int swap = array[k]; array[k] = array[k+1]; array[k+ ...
最近没有什么学习欲望,修改之前的线程池的计划一直搁置,这几天比较闲,还是做了一次重构,由之前的2个类拆分为现在的4个类. 1、首先是工作线程类:TaskThread,此类为一个工作线程,用于完成一个工作任务,提供等待(wait),继续(proceed),绑定任务(bindTask)等方法 #!/usr/bin/env python # -*- coding:utf8 -*- import threading class TaskThread(threading.Thread): def __init__(self): super(TaskThrea ...
Global site tag (gtag.js) - Google Analytics