Category Archives: 数据结构和算法

josephus环的实现

一个比较经典的面试题: 已知n个人(以编号1,2,3…n分别表示)围成一个圆圈。从编号为1一个人开始报数,数到k的那个人出列;他的下一个人又从1开始报数,数到k的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 import java.util.LinkedList; import java.util.Queue; public class Josephus { public static T getLast(T[] array, int k) { final Queue queue = new LinkedList(); for (T t : array) { queue.add(t); } int i = 1; while (queue.size() > 1) … Continue reading

Posted in 数据结构和算法 | Comments Off

一致性的hash的简单实现-java

最简单的consistent hashing的java实现 import java.util.Collection; import java.util.SortedMap; import java.util.TreeMap; public class ConsistentHash { private final HashFunction hashFunction; private final int numberOfReplicas; private final SortedMap circle = new TreeMap(); public ConsistentHash(HashFunction hashFunction, int numberOfReplicas, Collection nodes) { this.hashFunction = hashFunction; this.numberOfReplicas = … Continue reading

Posted in 数据结构和算法 | Comments Off

【转载】一致性hash 算法(consistent hashing)

consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛; 1 基本场景 比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache ; hash(object)%N 一切都运行正常,再考虑如下的两种情况; 1 一个 … Continue reading

Posted in 数据结构和算法 | Comments Off

[原创]AES加密和解密

AES是一个迭代的、对称密钥分组的密码,可使用128、192和256位密钥,并用128位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。 Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式,加密后的文本也很简短 ?View Code JAVA  /** * AES算法加密文本 * * @param secretKey * 密钥 * @param originalString * 需要加密的文本 * @return 加密的文本(Base64格式) **/ public static String aesEncrypt(String secretKey, String originalString) { if (StringUtils.isEmpty(secretKey)) throw new IllegalArgumentException("this secretKey must not be … Continue reading

Posted in 数据结构和算法, 编程开发 | Comments Off

[原创]Converting Hex String to/from Byte Array in java

1.hex转byte数组
2.byte数组转hex Continue reading

Posted in 数据结构和算法, 编程开发 | Comments Off

用位移求int值得二进制码

?View Code JAVApublic class BinaryTransfer { public static String transfer(int x) { final StringBuilder sb = new StringBuilder(""); int i = 31; if (x >= 0) { while (i >= 0) {// 高位->低位,一一求出每位的值 sb.append((x >>> i) & 1); i–; } … Continue reading

Posted in 数据结构和算法 | Comments Off

c语言实现的冒泡排序

冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。 算法复杂度是O(n^2) ?View Code C#include <stdio.h>   void printArray(int num[],int length); int main(int argc, char** argv) { int num[]={2,9,0,6,2,3,1}; int i=0; int length=sizeof(num)/sizeof(num[0]); for(i=0;i<length;i++){ int j=0; for(j=length-1;j>i;j–){ if(num[j-1]>num[j]){ int tmp=num[j]; num[j]=num[j-1]; num[j-1]=tmp; } } } printArray(num,length); }   void printArray(int … Continue reading

Posted in 数据结构和算法, 编程开发 | 1 Comment