外部排序优化
优化外部排序主要步骤重新拆分如下第一阶段1.将未排序的大文件切分(spilterReceiver)2.一个线程池专门接收byte[],并将其转化为long[] (prepareReceiver)3.一个线程池专门排序long[] (sortReceiver)4.一个线程池专门将已经有序的long[]写入文件 (writerReceiver)这个过程直接写long类型的数字到文件,因为写入文本占...
外部排序
外部排序如果需要排序的文件超过了内存的大小,就需要分块排序,按块写入文件,最后再归并已经有序的分块文件。第一阶段 切分排序1.将原始未排序的大文件,分为有序的小文件 1.1确定大文件切分的位置 1.2主线程按块读取原始文件,然后交给排序线程 1.3排序线...
MySQL的Group By分组
一直以来,还是Oracle用的比较多。MySQL的分组,看着总是有些奇怪。实验如下,创建初始化数据:create table sod_artist_category_relation( songid int , CategoryID int);insert into sod_artist_category_relation v...
MySQL binary 区分大小写
坑爹,绝对的坑爹MySQL居然不区分大小写??我开始差点以为眼花了再做个查询..这是神马结果啊可以使用binary将字符串先转换为二进制字符串,在进行比较加上binary,终于正常了。
JAVA栅栏
JAVA并发编程实践 83页栅栏与闭锁不同的是,栅栏可以重复使用。import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; public class Test { //一个同步辅助类,它允许一组线程互相等待,直...
JAVA闭锁
JAVA并发编程实践 79页 闭锁设置线程的集合点import java.util.*;import java.util.concurrent.*;public class TestHarness{ public long timeTasks(int nThreads,final Runnable task) throws Exception ...
JAVA信号量
JAVA并发编程实践 83页JAVA信号量实际用的并不多,书上的例子记录一下。若许可证不足,则线程阻塞import java.util.*;import java.util.concurrent.*;public class BoundedHashSet<T>{ private final Set<T> set;...
简明 Python 教程
参考:http://woodpecker.org.cn/abyteofpython_cn/chinese/
MySQL lastIndexOf
MySQL貌似没有lastIndexOf函数,可以使用如下的方法SELECT REVERSE(LEFT(REVERSE(filename),INSTR(REVERSE(filename),'.')))转载自:http://www.ethanpad.com/2010/11/lastindexof-truncate-in-mysql/
学习Javascript闭包
参考:http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
Java实现在控制终端显示的字符进度条
今天看到一个很有意思的小程序,记录一下import java.text.DecimalFormat;/** * 控制台字符型进度条。 * * @author 傲风 */public class ConsoleProgressBar { &n...
JAVA内存映射文件实现多线程下载
JAVA NIO内存映射文件可以实现多线程下载首先,使用firefox下载一个tomcatJAVA多线程下载程序import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.RandomAccessFile;import java.net.HttpURLConnection;...
一致性Hash学习
参考:http://www.lanceyan.com/tech/arch/consistenthashing_and_solr.html
使用副本集搭建MongoDB集群
MongoDB的副本集,我的理解就是自带故障转移的主从复制。集群的入口还是主节点,数据也是从主节点分发,这个和MySQL都是一致的。和MySQL Master-Slave不一样的是,副本集记录各个节点的心跳信息。一旦主节点不可用,其余的节点会推举一个新的主节点,进行故障转移,而这些操作对于应用是透明的。mongodb新建副本集的时候...
JAVA切分大文件
假设一个很大的文本文件,每行以\n结束。下面的代码,可以切分指定的大文件,并且保证每个文件都是\n结束。这是外部排序切分的前提条件。import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;...
行转列的一种优化思路
在论坛看到一个帖子,需求是行转列。但是表中的数据是千万级别的,运行很慢。楼主的SQLset linesize 300;set pagesize 300;WITH t AS( SELECT 'shop001' AS shopcode, 'store002' storecode,101 b_ID, 2 num,10.5 price FROM dual UNION ALL...
MySQL Join Buffer
MySQL采用嵌套循环连接的算法假设驱动表10条记录,被驱动表100条记录,而被驱动表的连接字段没有创建索引,这样被驱动表会被扫描10次。Join Buffer 我理解就是 不直接扫描被驱动表,而是缓存下来,假设缓存了驱动表的10条记录,最终只需要全表扫描一次被驱动表,就可以得到结果了。参考:http://hidba.org/?p=300htt...
MySQL Handler变量解析
To see the effect of a query do the following steps:FLUSH STATUS;Execute the querySHOW SESSION STATUS LIKE 'handler_read%';Do an EXPLAIN of the query实验数据初始化:CREATE TABLE test ( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY&nb...
Java使用Zip压缩
import java.util.zip.*;import java.io.*;public class ZipUtil { public static void main(String[] args) throws IOException { unzip("/home/lihuilin/桌面/src.zip", "/home/li...
我在后勤那三年
时间回到2011年的4月份。这是自从神州泰岳离职之后的第9个月。 从实施转行研发的计划并不顺利,没有公司愿意雇佣一个没有研发经验的年轻人。 而那时的我已经25岁了。大龄,待业。很难说清当时的感受。 机缘巧合,简历被内推到了15所。这是一个我熟悉的地方,我从小就是在这一片长大的,离钢院附中非常的近。笔试面试...