自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 收藏
  • 关注

原创 solr调优

    基于Lucene的SOLR一直以稳定、高性能著称,虽然其在高并发下对CPU要求较高,但能解决复杂的查询并能以如此快的速度内返回搜索结果,实在是开发搜索的一大利器。公司部署在Linux服务器上的Master-Slave架构的SOLR在过去1年多以来运行都比较稳定。    最近一周,有开发人员反馈索引更新速度非常慢,造成一大堆数据还未等待索引操作,客户端提交索引的逻辑优化很多遍都没有效果...

2014-03-07 09:31:58 358

原创 FAB利益销售法(转)

FAB利益销售法 FAB利益销售法(特征—优点—利益)目录[隐藏]1 什么是FAB利益销售法?2 FAB法操作实务3 用FAB法进行商品推介4 FAB法使用原则5 FAB利益销售法商品推介的技巧[编辑]什么是FAB利益销售法?  FAB法,是推销员向顾客分析产品利益的好方法。FAB销售陈述:即在进行产品介绍、销售政策(...

2013-12-09 09:24:58 1010

原创 Java偏向锁实现原理(Biased Locking)

转:http://kenwublog.com/theory-of-java-biased-locking阅读本文的读者,需要对Java轻量级锁有一定的了解,知道lock record, mark word之类的名词。可以参考我的一篇博文:Java轻量级锁原理详解(Lightweight Locking)Java偏向锁(Biased Locking)是Java6引入的一项多线程优化。它通...

2013-11-29 09:32:32 194

原创 nutch源代码阅读心得

主要类分析:一、 org.apache.nutch.crawl.Injector:     1,注入url.txt    2,url标准化    3,拦截url,进行正则校验(regex-urlfilter.txt)    4,对符URL标准的url进行map对构造<url, CrawlDatum>,在构造过程中给CrawlDatum初始化得分,分数可影响url host的搜索排序,...

2013-06-26 13:33:42 154

原创 nutch源码阅读(10)-Fetch

private static class QueueFeeder extends Thread { private RecordReader<Text, CrawlDatum> reader; private FetchItemQueues queues; //生产者和消费者的共享序列,分层,一层对应一个host private int...

2013-06-26 09:44:47 157

原创 nutch源码阅读(9)-Fetch

Fetcher这个模块在Nutch中有单独一个包在实现,在org.apache.nutch.fetcher,其中有Fetcher.java, FetcherOutput 和FetcherOutputFormat来组成,看上去很简单,但其中使用到了多线程,多线程的生产者与消费者模型,MapReduce的多路径输出等方法。下面我们来看一下Fetcher的注释,从中我们可以得到很多有用的信息。首先,这...

2013-06-25 16:52:49 123

原创 (转)hadoop/mapred 优化方法

谭东的空间:http://thethethethethethe.spaces.live.com/default.aspx 从三个方面着手优化 :1. hadoop配置2. 设计mapred/job3. 代码级别.4. 改造hadoop一. conf/hadoop-site.xml配置.经验要求高, 特别需要结合实际情况.典型参数如复制因子,mapred.child.java.opts,mapred...

2013-06-25 16:42:03 106

原创 nutch源码阅读(8)-Generator

接着看下最后一个Job.........................................................//判断是否更新 if (getConf().getBoolean(GENERATE_UPDATE_CRAWLDB, false)) { // update the db from tempDir // 产生临时目...

2013-06-25 07:12:41 125

原创 nutch源码阅读(7)-Generator

继续向下看,第二个Job............................................................ // read the subdirectories generated in the temp // output and turn them into segments List<Path> g...

2013-06-25 07:01:11 129

原创 nutch源码阅读(6)-Generator

 for (i = 0; i < depth; i++) { // generate new segment //根据传入参数depth来决定循环次数,生成segment Path[] segs = generator.generate(crawlDb, segments, -1, topN, System ...

2013-06-25 06:40:40 96

原创 Centos6.3上编译OpenJDK7源码

转:http://www.cnblogs.com/xleequ/archive/2013/01/07/2849449.html本文包括4部分内容:1.基本流程(阅读README和README-builds.html)2.安装基础软件包3.配置变量4.检查环境是否配置ok与编译jdk源码下载源码openjdk-7u6-fcs-src-b24-28_aug_2012.zip,...

2013-06-17 10:49:10 209

原创 Hadoop重温(4)--ipc

依赖于Hadoop Writable类型的支持。Hadoop Writable接口要求每个实现类都得确保将本类的对象正确序列化(writeObject)与反序列化(readObject)。因此,Hadoop RPC使用Java动态代理与反射实现对象调用方式,客户端到服务器数据的序列化与反序列化由Hadoop框架或用户自己来实现,也就是数据组装是定制的。Hadoop IPC在org.apach...

2013-06-07 17:11:52 123

原创 重温hadoop(3)--序列化

Hadoop的序列化机制特征:紧凑:带宽是hadoop集群中最稀缺的资源,一个紧凑的序列化机制可以充分利用带宽。快速:mapreduce会大量的使用序列化机制。因此,要尽可能减少序列化开销。可扩张:序列化机制需要可定制互操作:可以支持不同开发语言间的通信。    java本身的序列化,将要序列化的类,类签名、类的所有非暂态和非静态成员的值,以及所有的父类都要写入,导致序...

2013-06-04 16:12:13 113

原创 nutch源码阅读(5)-Injector总结

nutch的inject 有二个job 第一个job 如下图 map :InjectMapper 功能如下   1  url是否有tab分割的k-v 对如果有记录下来, 2  如果配置了过滤使用 URLNormalizers和 URLFilters 对url 进行格式化和过滤, 3  如果过滤的url 不为空则创建CrawlDatum对象,状态 STATUS_INJECTED,设置fetche...

2013-05-30 09:10:46 119

原创 nutch源码阅读(4)-Injector的第二个MapReduce

JobConf mergeJob = CrawlDb.createJob(getConf(), crawlDb); //可以看到上一个MP的输出tempDir,就是这个MP的输入 FileInputFormat.addInputPath(mergeJob, tempDir); mergeJob.setReducerClass(InjectReducer.cl...

2013-05-28 09:48:51 119

原创 nutch源码阅读(3)-Injector的Mapper

上篇看到Injector的初始化,这次继续阅读,看看Mapperpublic void map(WritableComparable key, Text value, OutputCollector<Text, CrawlDatum> output, Reporter reporter) throws IOExceptio...

2013-05-28 09:24:37 98

nutch源码阅读(2)-Injector的初始化

            从上篇的Crawl可以看到,抓取过程是按一个一个阶段,逐步进行。所以先看Injector(             org.apache.nutch.crawl.Injector)          // initialize crawlDb injector.inject(crawlDb, rootUrlDir);,从代码可以很明显看出,nu...

2013-05-27 17:28:32 220

原创 nutch源码阅读(1)-Crawl

        org.apache.nutch.crawl.Crawl实现的是一个完成的抓取过程,所以由它开始。        /* Perform complete crawling and indexing (to Solr) given a set of root urls and the -solr parameter respectively. More inf...

2013-05-27 15:45:17 109

原创 重温Hadoop(2)-- MapReduce流程及partition

1.map(K1, V1) –> list (K2, V2)                    // 对输入数据进行抽取过滤排序等操作 2.combine(K2, list(V2)) –> list(K2, V2)        // 为了减少reduce的输入,需要在map端对输出进行预处理,类似3.reduce。不是所有的reduce都在部分数据集上有效,比如求平均...

2013-05-16 10:25:59 131

重温Hadoop(1)--Mapredure

Mapreduce概念:一种分布式编程模型,在hadoop中用于负责mapreduce任务的是JobTracker,TaskTracker,                       Hadoop中只有一台JobTracker。                    1.JobTracker:用于任务的管理和调度工作。                    2.TaskTrack...

2013-05-15 14:53:12 223

原创 Failed to set permissions of path问题

错误信息:Exception in thread "main" java.io.IOException:Failed to set permissions of path:\tmp\hadoop-yth\mapred\staging\yth-2036315919\.staging to 0700 官方BUG参考:https://issues.apache.org/jira/bro...

2013-05-10 16:42:39 455

原创 hadoop问题解决

1.ssh免密码访问配置失败   ssh-keygen -t rsa     cd ~/.ssh/      cat id_rsa.pub >> authorized_keys    chmod 600 authorized_keys    访问仍需密码 用root tail -f /var/log/secure     tail -f /var/log/se...

2013-05-10 12:37:44 89

原创 nutch eclipse 缺少的jar

nekohtml http://nekohtml.sourceforge.net/ dk.brics.automaton http://www.brics.dk/automaton/ rome http://mirrors.ibiblio.org/pub/mirrors/maven2/rome/rome/0.9/rome-0.9.jar tagsoup-1.1.3 http://www.findj...

2013-05-09 16:13:58 109

原创 nutch杂记

1. 如何绕过目标站点的robots.txt限制 多数站点都是只允许百度、google等搜索引擎抓取的,所以会在robots.txt里限制其他爬虫。 nutch自然是会遵循robots协议的,但是我们可以通过修改nutch源码来绕过限制。 相关代码位于(nutch版本1.5.1,其他版本未测试): org.apache.nutch.fetcher.Fetcher的run方法. 找到以下几行代码...

2013-04-24 07:24:16 93

原创 Nutch相关框架安装使用最佳指南

 转:http://user.qzone.qq.com/281032878/blog/1342675154#!app=2&via=QZ.HashRefresh&pos=1362131478Chinese installing and using instruction  -  The best guidance in installing and using...

2013-04-17 07:16:05 159

原创 linux 下的sar工具命令小结

    sar这东西,一开始还以为是内部有的,原来是外部的工具,可以到http://pagesperso-orange.fr/sebastien.godard/download.html去下载   1 安装    tar zxvf  xxx.tar.gz   ./configure    make    make install   2  ...

2013-04-15 17:06:33 98

原创 Memcached介绍

Memcached的主要特点基于C/S架构,协议简单基于libevent的事件处理自主内存存储处理基于客户端的Memcached分布式1.数据存储方式:Slab Allocation                           Slab Allocator的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题。       ...

2013-04-12 11:09:50 111

原创 MySQL 5.5.x 单机多实例配置实践

背景/需求: 在一台服务器上通过源码编译安装一个版本为5.5以上的MySQL数据库; 将所有配置文件与数据等均存放在/opt/mysql,便于今后实现快速迁移、整体备份和快速复制; 在同一个MySQL中运行两个实例,一个绑定在端口3306,另一个绑定在端口3307; 绑定在3306端口的实例,不开启binlog,数据存放在/opt/mysql/data; 绑定在3307端口的实例,开启bin...

2013-03-27 15:01:30 102

原创 MySQL定期分析检查与优化表

定期分析表ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] 本语句用于分析和存储表的关键字分布。在分析期间,使用一个读取锁定对表进行锁定。这对于MyISAM, BDB和InnoDB表有作用。对于MyISAM表,本语句与使用myisamchk -a相当。 MySQL使用已存储的关键字分布来决定,当您对除常数以外...

2013-03-26 10:31:32 105

原创 MySQL主从复制几个重要的启动选项

(1)   log-slave-updateslog-slave-updates这个参数用来配置从服务器的更新是否写入二进制日志,这个选项默认是不打开的,但是,如果这个从服务器B是服务器A的从服务器,同时还作为服务器C的主服务器,那么就需要开发这个选项,这样它的从服务器C才能获得它的二进制日志进行同步操作   (2)   master-connect-retry ma...

2013-03-26 10:30:30 176

原创 浅析MySql二进制日志的应用

mysql有4种不同的日志,分别是二进制日志,查询日志,慢查询日志和错误日志,这些日记记录着数据库工作的方方面面,可以帮助我们了解数据库的不同方 面的踪迹,下面先介绍二进制日志的作用和使用方法,并利用二进制日志对数据库进行各种维护和优化,其他日志也会在后面陆续会做详细的介绍。 二进制日志(bin-log日志) 在上一篇介绍mysql主从配置的blog中,已经提过bin-log日志的作用和使用,b...

2013-03-26 10:29:24 85

原创 源码编译安装 MySQL 5.5.x 实践

1.安装cmake MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具。 因此,我们首先要在系统中源码编译安装cmake工具。# wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz# tar zxvf cmake-2.8.4.tar.gz# cd cmake-2.8...

2013-03-26 10:15:29 84

原创 MySQL主从复制

MySQL主从复制(Master-Slave)Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数...

2013-03-26 10:14:05 108

原创 LMAX的Disruptor如何工作?(stackoverflow的回答)

原文地址http://stackoverflow.com/questions/6559308/how-does-lmaxs-disruptor-pattern-work第一个回答(answered Jul 3 '11 at 8:03 Michael Barker):Disruptor最简单的描述就是:它是线程间通信最高效的方式。它可以用来替代队列,同时有很多SEDA和Actors模式...

2013-03-18 15:48:31 97

原创 disruptor - Concurrent Programming Framework 并发编程框架

disruptor发布了Java的2.0版本(.Net版本见这里),disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式实现,或者事件-监听模式的实现,直接称disruptor模式。disruptor最大特点是高性能,其LMAX架构可以获得每秒6百万订单,用1微秒的延迟获得吞吐量为100K+。disruptor与传统高性能模型...

2013-03-18 15:38:15 114

原创 LMAX架构

Martin Fowler最近的一篇文章:LMAX架构。LMAX是一种新型零售金融交易平台,它能够以很低的延迟(latency)产生大量交易(吞吐量). 这个系统是建立在JVM平台上,核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单. 业务逻辑处理器完全是运行在内存中(in-memory),使用事件源驱动方式(event sourcing). 业务逻辑处理器的核心是Disrupto...

2013-03-18 13:25:31 139

原创 JVM伪共享

伪共享False sharing说明JVM底层技术也不让人那么放心。内存缓存系统中基本单元是高速缓存行(Cache lines). cpu会把数据从内存加载到高速缓存中 ,这样可以获得更好的性能,高速缓存默认大小是64 Byte为一个区域,一个区域在一个时间点只允许一个核心操作,也就是说不能有多个核心同时操作一个缓存区域。因为高速缓存是64字节,而Hotspot JVM的对象头是两个部分...

2013-03-18 13:06:43 131

原创 疑问学习

<!--StartFragment -->1.instriment  btrace的实现2.Java文件是如何转成字节码的3.为什么在java转成bytecode优化相对来说比虚拟机内部优化少4.数据的推模式和拉模式各有什么特点,在XX场景下适用什么5.hashmap详解 和并发的Map有什么区别,在并发环境下会导致什么问题6.String和StringBuilder有什么区别,如...

2013-03-14 05:51:50 98

原创 堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物...

堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统 下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms355...

2013-03-11 13:28:32 1404

原创 python str()与repr()区别

The str() function is meant to return representations of values which are fairly human-readable, while repr() is meant to generate representations which can be read by the interpreter (or will for...

2013-03-04 16:41:49 97

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除