邵珠庆の日记 生命只有一次,你可以用它来做很多伟大的事情–Make the world a little better and easier


1210月/11

Mysql导出表结构及表数据 mysqldump用法

发布在 邵珠庆

命令行下具体用法如下:  mysqldump -u用戶名 -p密码 -d 數據库名 表名 脚本名;

    1、导出數據库為dbname的表结构(其中用戶名為root,密码為dbpasswd,生成的脚本名為db.sql)
    mysqldump -uroot -pdbpasswd -d dbname >db.sql;

    2、导出數據库為dbname某张表(test)结构
    mysqldump -uroot -pdbpasswd -d dbname test>db.sql;

    3、导出數據库為dbname所有表结构及表數據(不加-d)
    mysqldump -uroot -pdbpasswd  dbname >db.sql;

    4、导出數據库為dbname某张表(test)结构及表數據(不加-d)
    mysqldump -uroot -pdbpasswd dbname test>db.sql;

 

mysql查表大小

查整个库的状态:
select concat(truncate(sum(data_length)/1024/1024,2),'MB') as data_size,
concat(truncate(sum(max_data_length)/1024/1024,2),'MB') as max_data_size,
concat(truncate(sum(data_free)/1024/1024,2),'MB') as data_free,
concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_size
from information_schema.tables where TABLE_SCHEMA = 'databasename';

查单表:
select concat(truncate(sum(data_length)/1024/1024,2),'MB') as data_size,
concat(truncate(sum(max_data_length)/1024/1024,2),'MB') as max_data_size,
concat(truncate(sum(data_free)/1024/1024,2),'MB') as data_free,
concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_size
from information_schema.tables where TABLE_NAME = 'tablename';

1010月/11

awk命令小记详解

发布在 邵珠庆

awk 用法:awk ' pattern {action} ' 

变量名 含义
ARGC 命令行变元个数
ARGV 命令行变元数组
FILENAME 当前输入文件名
FNR 当前文件中的记录号
FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符
NF 当前记录里域个数
NR 到目前为止记录数
OFS 输出域分隔符
ORS 输出记录分隔符

1、awk '/101/'               file 显示文件file中包含101的匹配行。
   awk '/101/,/105/'         file
   awk '$1 == 5'             file
   awk '$1 == "CT"'          file 注意必须带双引号
   awk '$1 * $2 >100 '       file 
   awk '$2 >5 && $2<=15'     file


2、awk '{print NR,NF,$1,$NF,}' file 显示文件file的当前记录号、域数和每一行的第一个和最后一个域。
   awk '/101/ {print $1,$2 + 10}' file 显示文件file的匹配行的第一、二个域加10。
   awk '/101/ {print $1$2}'  file
   awk '/101/ {print $1 $2}' file 显示文件file的匹配行的第一、二个域,但显示时域中间没有分隔符。


3、df | awk '$4>1000000 '         通过管道符获得输入,如:显示第4个域满足条件的行。


4、awk -F "|" '{print $1}'   file 按照新的分隔符“|”进行操作。
   awk  'BEGIN { FS="[: \t|]" }
   {print $1,$2,$3}'       file 通过设置输入分隔符(FS="[: \t|]")修改输入分隔符。

   Sep="|"
   awk -F $Sep '{print $1}'  file 按照环境变量Sep的值做为分隔符。   
   awk -F '[ :\t|]' '{print $1}' file 按照正则表达式的值做为分隔符,这里代表空格、:、TAB、|同时做为分隔符。
   awk -F '[][]'    '{print $1}' file 按照正则表达式的值做为分隔符,这里代表[、]


5、awk -f awkfile       file 通过文件awkfile的内容依次进行控制。
   cat awkfile
/101/{print "\047 Hello! \047"} --遇到匹配行以后打印 ' Hello! '.\047代表单引号。
{print $1,$2}                   --因为没有模式控制,打印每一行的前两个域。


6、awk '$1 ~ /101/ {print $1}' file 显示文件中第一个域匹配101的行(记录)。


7、awk   'BEGIN { OFS="%"}
   {print $1,$2}'           file 通过设置输出分隔符(OFS="%")修改输出格式。


8、awk   'BEGIN { max=100 ;print "max=" max}             BEGIN 表示在处理任意行之前进行的操作。
   {max=($1 >max ?$1:max); print $1,"Now max is "max}' file 取得文件第一个域的最大值。
   (表达式1?表达式2:表达式3 相当于:
   if (表达式1)
       表达式2
   else
       表达式3
   awk '{print ($1>4 ? "high "$1: "low "$1)}' file 


9、awk '$1 * $2 >100 {print $1}' file 显示文件中第一个域匹配101的行(记录)。


10、awk '{$1 == 'Chi' {$3 = 'China'; print}' file 找到匹配行后先将第3个域替换后再显示该行(记录)。
    awk '{$7 %= 3; print $7}'  file 将第7域被3除,并将余数赋给第7域再打印。


11、awk '/tom/ {wage=$2+$3; printf wage}' file 找到匹配行后为变量wage赋值并打印该变量。


12、awk '/tom/ {count++;} 
         END {print "tom was found "count" times"}' file END表示在所有输入行处理完后进行处理。


13、awk 'gsub(/\$/,"");gsub(/,/,""); cost+=$4;
         END {print "The total is $" cost>"filename"}'    file gsub函数用空串替换$和,再将结果输出到filename中。
    1 2 3 $1,200.00
    1 2 3 $2,300.00
    1 2 3 $4,000.00

    awk '{gsub(/\$/,"");gsub(/,/,"");
    if ($4>1000&&$4<2000) c1+=$4;
    else if ($4>2000&&$4<3000) c2+=$4;
    else if ($4>3000&&$4<4000) c3+=$4;
    else c4+=$4; }
    END {printf  "c1=[%d];c2=[%d];c3=[%d];c4=[%d]\n",c1,c2,c3,c4}"' file
    通过if和else if完成条件语句

    awk '{gsub(/\$/,"");gsub(/,/,"");
    if ($4>3000&&$4<4000) exit;
    else c4+=$4; }
    END {printf  "c1=[%d];c2=[%d];c3=[%d];c4=[%d]\n",c1,c2,c3,c4}"' file
    通过exit在某条件时退出,但是仍执行END操作。
    awk '{gsub(/\$/,"");gsub(/,/,"");
    if ($4>3000) next;
    else c4+=$4; }
    END {printf  "c4=[%d]\n",c4}"' file
    通过next在某条件时跳过该行,对下一行执行操作。

14、awk '{ print FILENAME,$0 }' file1 file2 file3>fileall 把file1、file2、file3的文件内容全部写到fileall中,格式为
    打印文件并前置文件名。


15、awk ' $1!=previous { close(previous); previous=$1 }   
    {print substr($0,index($0," ") +1)>$1}' fileall 把合并后的文件重新分拆为3个文件。并与原文件一致。


16、awk 'BEGIN {"date"|getline d; print d}'         通过管道把date的执行结果送给getline,并赋给变量d,然后打印。 


17、awk 'BEGIN {system("echo \"Input your name:\\c\""); getline d;print "\nYour name is",d,"\b!\n"}'
    通过getline命令交互输入name,并显示出来。
    awk 'BEGIN {FS=":"; while(getline< "/etc/passwd" >0) { if($1~"050[0-9]_") print $1}}'
    打印/etc/passwd文件中用户名包含050x_的用户名。

18、awk '{ i=1;while(i<NF) {print NF,$i;i++}}' file 通过while语句实现循环。
    awk '{ for(i=1;i<NF;i++) {print NF,$i}}'   file 通过for语句实现循环。    
    type file|awk -F "/" '
    { for(i=1;i<NF;i++)
    { if(i==NF-1) { printf "%s",$i }
    else { printf "%s/",$i } }}'               显示一个文件的全路径。
    用for和if显示日期
    awk  'BEGIN {
for(j=1;j<=12;j++)
{ flag=0;
  printf "\n%d月份\n",j;
        for(i=1;i<=31;i++)
        {
        if (j==2&&i>28) flag=1;
        if ((j==4||j==6||j==9||j==11)&&i>30) flag=1;
        if (flag==0) {printf "%02d%02d ",j,i}
        }
}
}'


19、在awk中调用系统变量必须用单引号,如果是双引号,则表示字符串
Flag=abcd
awk '{print '$Flag'}'   结果为abcd
awk '{print  "$Flag"}'   结果为$Flag

总结:

求和:

    $awk 'BEGIN{total=0}{total+=$4}END{print total}' a.txt   -----对a.txt文件的第四个域进行求和!

  • $ awk '/^(no|so)/' test-----打印所有以模式no或so开头的行。

  • $ awk '/^[ns]/{print $1}' test-----如果记录以n或s开头,就打印这个记录。

  • $ awk '$1 ~/[0-9][0-9]$/(print $1}' test-----如果第一个域以两个数字结束就打印这个记录。

  • $ awk '$1 == 100 || $2 < 50' test-----如果第一个或等于100或者第二个域小于50,则打印该行。

  • $ awk '$1 != 10' test-----如果第一个域不等于10就打印该行。

  • $ awk '/test/{print $1 + 10}' test-----如果记录包含正则表达式test,则第一个域加10并打印出来。

  • $ awk '{print ($1 > 5 ? "ok "$1: "error"$1)}' test-----如果第一个域大于5则打印问号后面的表达式值,否则打印冒号后面的表达式值。

  • $ awk '/^root/,/^mysql/' test----打印以正则表达式root开头的记录到以正则表达式mysql开头的记录范围内的所有记录。如果找到一个新的正则表达式root开头的记 录,则继续打印直到下一个以正则表达式mysql开头的记录为止,或到文件末尾。

910月/11

渠道:关键词

发布在 邵珠庆

营销学中的渠道

  美国营销协会(AMA)对渠道的定义是:公司内部的组织单位和公司外部的代理商、批发商与零售商的结构。   

渠道级别 销售渠道结构
0级销售渠道 生产者→消费者
1级销售渠道 生产者→零售商→消费者
2级销售渠道 生产者→批发商→零售商→消费者
  生产者→代理商→零售商→消费者
3级销售渠道 生产者→代理商→批发商→零售商→消费者
  生产者→批发商→中间商→零售商→消费者

1、“渠道”在“4P”中的地位和应用

  “4P”是市场营销中一个很重要的概念:产品、价格、渠道、促销。   当一件产品具备了“产品”的定义之后,自然会形成期内在的价值,也就是我们通常说的价格。价格 的浮动是一个很复杂的问题,价格在一定意义上决定了产品的生命力。但是在产品从生产者下线开始,就面临着一个很重要的问题——流通。产品只有能在市场上正 常地运转和流通才是其得以生存的根本所在。所以,“渠道”和一个生产单位的“资金流”一样,都具有非凡的意义。   只有在现实的市场流通中注重产品的渠道维护,才能从根本上去杜绝产品滞销带来的诸多的问题。在4P中,渠道的维护是一个相当重要的概念。

2、“渠道”在销售过程中的维护

  我们参照上面的这个“逐级分化”的渠道图标来分析一下,渠道在正常的运转之中需要注意的问题和其实际意义所在。   “0级销售渠道”其实就是“直营”的模式,中间减少了不必要的流通环节,把更多的利益缩减。 “0级销售渠道”是时下比较潮流的渠道模式,但是并不是对所有的产品都适用。这种类似于“点对点”的渠道模式比较适用于重型机械、大规模工程设施等“非快 速消耗产品”(和“非快消品”不是一个概念)。但是并不是只有这些行业可以采取该种模式,例如目下比较畅销的XX化妆品也采用了该种销售模式。一个关键的 问题是,该种销售模式需要的整个渠道的长期系统维护,需要投注比较多的人力,难以在整个系统中进行实际有效的维护。   “3级销售渠道”,我们跳过中间的两个模式,因为只要理解了这个比较复杂的模式,前两者都是类似的。为了便于说明问题,我们举一个简单的例子来分析。我们单单从“价格”这个方面来诠释该种渠道模式,因为在产品的整个的流通过程之中,“价格”的因素是最直观的。   我们举例的产品是一箱饼干(我们拿快消品来举例是因为最直观和比较能说明问题)。我们的这箱饼 干含有10包饼干。也就是说,10包饼干构成一箱饼干。生产一箱饼干的成本是10元(以下价格均为虚构价,但是其每道流通环节的增幅可以视为实际)。成本 为10元的饼干的出厂价格我们设为20元。因为任何的企业都是以盈利为目的的。假设我们的市场为A县城,A县城的张三代理了这个品牌,张三就是该公司在A 县城的代理商。这箱饼干到了张三的手中价格成了21元,因为中间存在了一次流通环节。张三做代理的目的是“薄利多销”。他以每箱饼干23元的价格分销给各 个批发商,并且和批发商议,面对销售终端店的价格为25元。这样,一箱饼干在张三这里可以赚取4元,在批发商那里可以赚取2元。当这箱饼干到了超市之后, 它的价值“骤增”,每包饼干的零售价格成了4元,整箱全部出售的话,可以卖40元,减去进货价25元,超市净赚15元。在整个的流通环节之中,终端的盈利 是最大的,要远远超越中间的各个环节。   我们不难看出,使得整个流通环节顺畅的关键的因素是逐级让利。一个好的产品,要想在市场上正常运转是相当困难的。我们单单就价格的一个因素来分析其实是不全面的,关键还是整个市场的渠道正常。需要有人力来进行维护和拓展。良好的渠道运作是公司梦寐以求的。

309月/11

网站运营一定要做的八件事

发布在 邵珠庆

一、内容建设

一个成功的网站核心是什么?那就是内容,如何去建设呢,下面介绍几点:

1、提供内容

内容是围绕用户的需求创建的,通过数据分析,市场调研来分析用户的行为,确定用户的需求.给用户提供有用的内容,这是主要的方向。

2、激励用户贡献内容

内容的建设起初是运营人员去创建内容,吸引用户,当网站有一定人气后,一定要做的是内容的日常维护和管理,主要通过运营策略去刺激用户不断地创造更多的内容,通过不断循环,带来新用户,产生更多内容。

3、挖掘忠实用户:

产品发展成熟后,可实行管理制度,主要是交流社区这一块,让忠实的用户去管理和交流,引导用户去维护,让内容和讨论都有针对性。

二、用户维护

用户维护是管理产品与用户群之间的关系,以社区类网站说明以下几点:

1、建立和完善帮助系统,发布友好的产品公告

2、及时解决用户的反馈的问题,为他们提供更好的服务(客服)

3、主动邀请用户来体验和尝试新产品,让用户参与到我们网站中来

4、对虚拟系统和等级系统进行合理的设置,并在运营中对其进行优化改进

5、在社区交友中,会存在一些用户之间的情绪问题,要调节用户之间的矛盾,争议并能调和氛围

6、社区管理员在用户群中会有一定的权威性,一定要树立一个好的形象,让用户建立对网站的信任度很重要,这样不仅能提高用户的忠诚度,而且能提高产品的品牌形象,为口碑营销打下好的基础。

三、产品需求

产品虽然是产品人员的工作,但是在运营过程中,运营人员与用户接触的最多,这样更能理解用户的需求,不断给产品提出建议,也是运营人员要做的事情,产品和运营人员共同策划出的产品,才能更好的满足用户的需求。

四、数据分析

数据分析是产品运营中最重要的一部分,以下介绍几点:

1、通过数据能了解产品的问题

每个产品都会有要分析的数据指标:pv,uv,登录数,会员数,帖子数,回帖数等,这些数据根据产品的不同,会有所改变的,通过分析这些数据的变化可以了解到产品目前存在哪些问题,发现问题所在,则需要对产品提出优化需求。

2、通过数据能了解用户的行为

通过一些特定的数据指标,分析用户在网站上的操作情况,更有利于了解用户的行为,如用户最喜欢进入的页面,最喜欢看的内容是哪些,通过一系列的分析,更能对产品进行深层次的优化。

3、作数据分析需要出的文档

数据记录表格(excel)和数据报告(word)

五、活动计划

产品发展到一定阶段是需要活动来维系的,一般有几种活动目的,第一个是引导用户创造内容;第二个活跃社区的气氛,增加用户群关系;第三个通过对外合作的方式,增强产品的品牌。

下面介绍下运营人员需要作的具体工作:

1、制定半年的活动计划:大概的了解下产品可能需要做什么活动,优先在脑海中思考下,当然这也随着时间的变化,活动也会有改变的。

2、活动的收集:多参考其它产品,看看其它产品做了什么活动并做收集,以便以后在做具体方案时,能够做参考。

3、活动方案制定:具体执行方案的文档内容包括主题,内容,时间地点,目的,奖项设置,说明,活动投入预算等。

4、活动总结:对结束的活动进行总结,输出总结报告,包括主题,时间地点,目的,实现效果,活动的优缺点,实际的预算。

六、营销计划

产品在推广过程中需要对外营销,提高产品的品牌形象,以下说明几点:

1、广告合作

2、渠道合作

3、病毒营销

4、事件营销

对于营销做的不是很多,只大概的说明几点,希望与有经验的高手一起学习探讨。

七、产品分析

分析同类产品是所有运营人员也需要做的

从产品角度:主要借鉴其它产品的优势和弥补我们产品的不足,多看多用能够给我们带来更多的灵感,也更能给产品提出好的建议。

从运营角度:在使用其它产品的同时,多多思考其它网站的运营思路和盈利模式,通过怎样的运营策略运用到自己的产品中。

产品分析的要点: 产品的内容,用户群,产品风格,发展方向,流量,盈利模式等。

八、运营总结

运营人员在做一段时间后,都会有一些运营的心得体会,感受等,可以将自己的想法记录下来,这也是一个成长的经历,如果能够发表到网站上与大家一起分享,交流,学习,与同行业的人沟通的越多,才能跑的更快,更远!

289月/11

十道海量数据处理面试题与十个方法总结

发布在 邵珠庆

第一部分、十道海量数据处理面试题

1、海量日志数据,提取出某日访问百度次数最多的那个IP。

      首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法, 比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大 的几个)及相应的频率。然后再在这1000个最大的IP中,找出那个频率最大的IP,即为所求。

或者如下阐述(雪域之鹰):
算法思想:分而治之+Hash
1.IP地址最多有2^32=4G种取值情况,所以不能完全加载到内存中处理;
2.可以考虑采用“分而治之”的思想,按照IP地址的Hash(IP)%1024值,把海量IP日志分别存储到1024个小文件中。这样,每个小文件最多包含4MB个IP地址;
3.对于每一个小文件,可以构建一个IP为key,出现次数为value的Hash map,同时记录当前出现次数最多的那个IP地址;
4.可以得到1024个小文件中的出现次数最多的IP,再依据常规的排序算法得到总体上出现次数最多的IP;

2、搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。
    假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),请你统计最热门的10个查询串,要求使用的内存不能超过1G。

    典型的Top K算法,还是在这篇文章里头有所阐述,详情请参见:十一、从头到尾彻底解析Hash表算法。
   
    文中,给出的最终算法是:
    第一步、先对这批海量数据预处理,在O(N)的时间内用Hash表完成统计之前写成了排序,特此订正。July、2011.04.27);
    第二步、借助堆这个数据结构,找出Top K,时间复杂度为N‘logK。
        即,借助堆结构,我们可以在log量级的时间内查找和调整/移动。因此,维护一个K(该题目中是10)大小的小根堆,然后遍历300万的Query,分别 和根元素进行对比所以,我们最终的时间复杂度是:O(N) + N'*O(logK),(N为1000万,N’为300万)。ok,更多,详情,请参考原文。

    或者:采用trie树,关键字域存该查询串出现的次数,没有出现为0。最后用10个元素的最小推来对出现频率进行排序。

3、有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。

    方案:顺序读文件中,对于每个词x,取hash(x)%5000,然后按照该值存到5000个小文件(记为x0,x1,...x4999)中。这样每个文件大概是200k左右。

    如果其中的有的文件超过了1M大小,还可以按照类似的方法继续往下分,直到分解得到的小文件的大小都不超过1M。
    对每个小文件,统计每个文件中出现的词以及相应的频率(可以采用trie树/hash_map等),并取出出现频率最大的100个词(可以用含100个结 点的最小堆),并把100个词及相应的频率存入文件,这样又得到了5000个文件。下一步就是把这5000个文件进行归并(类似与归并排序)的过程了。

4、有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序。

    还是典型的TOP K算法,解决方案如下:
    方案1:
    顺序读取10个文件,按照hash(query)%10的结果将query写入到另外10个文件(记为)中。这样新生成的文件每个的大小大约也1G(假设hash函数是随机的)。
   
    找一台内存在2G左右的机器,依次对用hash_map(query, query_count)来统计每个query出现的次数。利用快速/堆/归并排序按照出现次数进行排序。将排序好的query和对应的 query_cout输出到文件中。这样得到了10个排好序的文件(记为)。

    对这10个文件进行归并排序(内排序与外排序相结合)。

    方案2:
     一般query的总量是有限的,只是重复的次数比较多而已,可能对于所有的query,一次性就可以加入到内存了。这样,我们就可以采用trie树/hash_map等直接来统计每个query出现的次数,然后按出现次数做快速/堆/归并排序就可以了。

    方案3:
    与方案1类似,但在做完hash,分成多个文件后,可以交给多个文件来处理,采用分布式的架构来处理(比如MapReduce),最后再进行合并。

5、 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?

    方案1:可以估计每个文件安的大小为5G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。

    遍历文件a,对每个url求取hash(url)%1000,然后根据所取得的值将url分别存储到1000个小文件(记为a0,a1,...,a999)中。这样每个小文件的大约为300M。

    遍历文件b,采取和a相同的方式将url分别存储到1000小文件(记为b0,b1,...,b999)。这样处理后,所有可能相同的url都在对应的小 文件(a0vsb0,a1vsb1,...,a999vsb999)中,不对应的小文件不可能有相同的url。然后我们只要求出1000对小文件中相同的 url即可。

    求每对小文件中相同的url时,可以把其中一个小文件的url存储到hash_set中。然后遍历另一个小文件的每个url,看其是否在刚才构建的hash_set中,如果是,那么就是共同的url,存到文件里面就可以了。

    方案2:如果允许有一定的错误率,可以使用Bloom filter,4G内存大概可以表示340亿bit。将其中一个文件中的url使用Bloom filter映射为这340亿bit,然后挨个读取另外一个文件的url,检查是否与Bloom filter,如果是,那么该url应该是共同的url(注意会有一定的错误率)。

    Bloom filter日后会在本BLOG内详细阐述。

6、在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数。

    方案1:采用2-Bitmap(每个数分配2bit,00表示不存在,01表示出现一次,10表示多次,11无意义)进行,共需内存2^32 * 2 bit=1 GB内存,还可以接受。然后扫描这2.5亿个整数,查看Bitmap中相对应位,如果是00变01,01变10,10保持不变。所描完事后,查看 bitmap,把对应位是01的整数输出即可。

    方案2:也可采用与第1题类似的方法,进行划分小文件的方法。然后在小文件中找出不重复的整数,并排序。然后再进行归并,注意去除重复的元素。

7、腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?

    与上第6题类似,我的第一反应时快速排序+二分查找。以下是其它更好的方法:
    方案1:oo,申请512M的内存,一个bit位代表一个unsigned int值。读入40亿个数,设置相应的bit位,读入要查询的数,查看相应bit位是否为1,为1表示存在,为0表示不存在。

    dizengrong:
    方案2:这个问题在《编程珠玑》里有很好的描述,大家可以参考下面的思路,探讨一下:
又因为2^32为40亿多,所以给定一个数可能在,也可能不在其中;
这里我们把40亿个数中的每一个用32位的二进制来表示
假设这40亿个数开始放在一个文件中。

    然后将这40亿个数分成两类:
      1.最高位为0
      2.最高位为1
    并将这两类分别写入到两个文件中,其中一个文件中数的个数<=20亿,而另一个>=20亿(这相当于折半了);
与要查找的数的最高位比较并接着进入相应的文件再查找

    再然后把这个文件为又分成两类:
      1.次最高位为0
      2.次最高位为1

    并将这两类分别写入到两个文件中,其中一个文件中数的个数<=10亿,而另一个>=10亿(这相当于折半了);
    与要查找的数的次最高位比较并接着进入相应的文件再查找。
    .......
    以此类推,就可以找到了,而且时间复杂度为O(logn),方案2完。

   附:这里,再简单介绍下,位图方法:
    使用位图法判断整形数组是否存在重复
    判断集合中存在重复是常见编程任务之一,当集合中数据量比较大时我们通常希望少进行几次扫描,这时双重循环法就不可取了。

    位图法比较适合于这种情况,它的做法是按照集合中最大元素max创建一个长度为max+1的新数组,然后再次扫描原数组,遇到几就给新数组的第几位置上 1,如遇到5就给新数组的第六个元素置1,这样下次再遇到5想置位时发现新数组的第六个元素已经是1了,这说明这次的数据肯定和以前的数据存在着重复。这 种给新数组初始化时置零其后置一的做法类似于位图的处理方法故称位图法。它的运算次数最坏的情况为2N。如果已知数组的最大值即能事先给新数组定长的话效 率还能提高一倍。

    欢迎,有更好的思路,或方法,共同交流。

8、怎么在海量数据中找出重复次数最多的一个?
  
    方案1:先做hash,然后求模映射为小文件,求出每个小文件中重复次数最多的一个,并记录重复次数。然后找出上一步求出的数据中重复次数最多的一个就是所求(具体参考前面的题)。

9、上千万或上亿数据(有重复),统计其中出现次数最多的钱N个数据。

    方案1:上千万或上亿的数据,现在的机器的内存应该能存下。所以考虑采用hash_map/搜索二叉树/红黑树等来进行统计次数。然后就是取出前N个出现次数最多的数据了,可以用第2题提到的堆机制完成。

10、一个文本文件,大约有一万行,每行一个词,要求统计出其中最频繁出现的前10个词,请给出思想,给出时间复杂度分析。

    方案1:这题是考虑时间效率。用trie树统计每个词出现的次数,时间复杂度是O(n*le)(le表示单词的平准长度)。然后是找出出现最频繁的前10 个词,可以用堆来实现,前面的题中已经讲到了,时间复杂度是O(n*lg10)。所以总的时间复杂度,是O(n*le)与O(n*lg10)中较大的哪一 个。

附、100w个数中找出最大的100个数。

    方案1:在前面的题中,我们已经提到了,用一个含100个元素的最小堆完成。复杂度为O(100w*lg100)。

    方案2:采用快速排序的思想,每次分割之后只考虑比轴大的一部分,知道比轴大的一部分在比100多的时候,采用传统排序算法排序,取前100个。复杂度为O(100w*100)。

    方案3:采用局部淘汰法。选取前100个元素,并排序,记为序列L。然后一次扫描剩余的元素x,与排好序的100个元素中最小的元素比,如果比这个最小的 要大,那么把这个最小的元素删除,并把x利用插入排序的思想,插入到序列L中。依次循环,知道扫描了所有的元素。复杂度为O(100w*100)。

致谢:http://www.cnblogs.com/youwang/

 

第二部分、十个海量数据处理方法大总结

    ok,看了上面这么多的面试题,是否有点头晕。是的,需要一个总结。接下来,本文将简单总结下一些处理海量数据问题的常见方法,日后,本BLOG内会具体阐述这些方法。

    下面的方法全部来自http://hi.baidu.com/yanxionglu/blog/博客,对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎讨论。

一、Bloom filter

  适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集

  基本原理及要点:
  对于原理来说很简单,位数组+k个独立hash函数。将 hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。同时也不 支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其他的关键字。所以一个简单的改进就是 counting Bloom filter,用一个counter数组代替位数组,就可以支持删除了。

  还有一个比较重要的问题,如何根据输入元素个数n,确定位数组m的大小及hash函数 个数。当hash函数个数k=(ln2)*(m/n)时错误率最小。在错误率不大于E的情况下,m至少要等于n*lg(1/E)才能表示任意n个元素的集 合。但m还应该更大些,因为还要保证bit数组里至少一半为0,则m应该>=nlg(1/E)*lge 大概就是nlg(1/E)1.44倍(lg表示以2为底的对数)。

  举个例子我们假设错误率为0.01,则此时m应大概是n的13倍。这样k大概是8个。

  注意这里m与n的单位不同,m是bit为单位,而n则是以元素个数为单位(准确的说是不同元素的个数)。通常单个元素的长度都是有很多bit的。所以使用bloom filter内存上通常都是节省的。

  扩展:
  Bloom filter将集合中的元素映射到位数组中,用k(k为哈希函数个数)个映射位是否全1表示元素在不在这个集合中。Counting bloom filter(CBF)将位数组中的每一位扩展为一个counter,从而支持了元素的删除操作。Spectral Bloom Filter(SBF)将其与集合元素的出现次数关联。SBF采用counter中的最小值来近似表示元素的出现频率。

  问题实例:给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出A,B文件共同的URL。如果是三个乃至n个文件呢?

  根据这个问题我们来计算下内存的占用,4G=2^32大概是40亿*8大概是340 亿,n=50亿,如果按出错率0.01算需要的大概是650亿个bit。现在可用的是340亿,相差并不多,这样可能会使出错率上升些。另外如果这些 urlip是一一对应的,就可以转换成ip,则大大简单了。

二、Hashing

  适用范围:快速查找,删除的基本数据结构,通常需要总数据量可以放入内存

  基本原理及要点:
  hash函数选择,针对字符串,整数,排列,具体相应的hash方法。
  碰撞处理,一种是open hashing,也称为拉链法;另一种就是closed hashing,也称开地址法,opened addressing。

      扩展:
  d-left hashing中的d是多个的意思,我们先简化这个问题,看一看2-left hashing。2-left hashing指的是将一个哈希表分成长度相等的两半,分别叫做T1和T2,给T1和T2分别配备一个哈希函数,h1和h2。在存储一个新的key时,同 时用两个哈希函数进行计算,得出两个地址h1[key]和h2[key]。这时需要检查T1中的h1[key]位置和T2中的h2[key]位置,哪一个 位置已经存储的(有碰撞的)key比较多,然后将新key存储在负载少的位置。如果两边一样多,比如两个位置都为空或者都存储了一个key,就把新key 存储在左边的T1子表中,2-left也由此而来。在查找一个key时,必须进行两次hash,同时查找两个位置。

  问题实例:
  1).海量日志数据,提取出某日访问百度次数最多的那个IP。
  IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。

三、bit-map

  适用范围:可进行数据的快速查找,判重,删除,一般来说数据范围是int的10倍以下

  基本原理及要点:使用bit数组来表示某些元素是否存在,比如8位电话号码

  扩展:bloom filter可以看做是对bit-map的扩展

  问题实例:
  1)已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数。
  8位最多99 999 999,大概需要99m个bit,大概10几m字节的内存即可。
  2)2.5亿个整数中找出不重复的整数的个数,内存空间不足以容纳这2.5亿个整数。

  将bit-map扩展一下,用2bit表示一个数即可,0表示未出现,1表示出现一次,2表示出现2次及以上。或者我们不用2bit来进行表示,我们用两个bit-map即可模拟实现这个2bit-map。

四、堆

  适用范围:海量数据前n大,并且n比较小,堆可以放入内存

  基本原理及要点:最大堆求前n小,最小堆求前n大。方法,比如求前n小,我们比较当前 元素与最大堆里的最大元素,如果它小于最大元素,则应该替换那个最大元素。这样最后得到的n个元素就是最小的n个。适合大数据量,求前n小,n的大小比较 小的情况,这样可以扫描一遍即可得到所有的前n元素,效率很高。

  扩展:双堆,一个最大堆与一个最小堆结合,可以用来维护中位数。

  问题实例:
  1)100w个数中找最大的前100个数。
  用一个100个元素大小的最小堆即可。

 

五、双层桶划分----其实本质上就是【分而治之】的思想,重在“分”的技巧上!

  适用范围:第k大,中位数,不重复或重复的数字
  基本原理及要点:因为元素范围很大,不能利用直接寻址表,所以通过多次划分,逐步确定范围,然后最后在一个可以接受的范围内进行。可以通过多次缩小,双层只是一个例子。

  扩展:
  问题实例:
  1).2.5亿个整数中找出不重复的整数的个数,内存空间不足以容纳这2.5亿个整数。
  有点像鸽巢原理,整数个数为2^32,也就是,我们可以将这2^32个数,划分为2^8个区域(比如用单个文件代表一个区域),然后将数据分离到不同的区域,然后不同的区域在利用bitmap就可以直接解决了。也就是说只要有足够的磁盘空间,就可以很方便的解决。

  2).5亿个int找它们的中位数。
  这个例子比上面那个更明显。首先我们 将int划分为2^16个区域,然后读取数据统计落到各个区域里的数的个数,之后我们根据统计结果就可以判断中位数落到那个区域,同时知道这个区域中的第 几大数刚好是中位数。然后第二次扫描我们只统计落在这个区域中的那些数就可以了。

  实际上,如果不是int是int64,我们可以经过3次这样的划分即可降低到可以接受 的程度。即可以先将int64分成2^24个区域,然后确定区域的第几大数,在将该区域分成2^20个子区域,然后确定是子区域的第几大数,然后子区域里 的数的个数只有2^20,就可以直接利用direct addr table进行统计了。

六、数据库索引

  适用范围:大数据量的增删改查

  基本原理及要点:利用数据的设计实现方法,对海量数据的增删改查进行处理。

七、倒排索引(Inverted index)

  适用范围:搜索引擎,关键字查询

  基本原理及要点:为何叫倒排索引?一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。

 以英文为例,下面是要被索引的文本:
    T0 = "it is what it is"
    T1 = "what is it"
    T2 = "it is a banana"

我们就能得到下面的反向文件索引:

    "a":      {2}
    "banana": {2}
    "is":     {0, 1, 2}
    "it":     {0, 1, 2}
    "what":   {0, 1}

 检索的条件"what","is"和"it"将对应集合的交集。

  正向索引开发出来用来存储每个文档的单词的列表。正向索引的查询往往满足每个文档有序 频繁的全文查询和每个单词在校验文档中的验证这样的查询。在正向索引中,文档占据了中心的位置,每个文档指向了一个它所包含的索引项的序列。也就是说文档 指向了它包含的那些单词,而反向索引则是单词指向了包含它的文档,很容易看到这个反向的关系。

  扩展:
  问题实例:文档检索系统,查询那些文件包含了某单词,比如常见的学术论文的关键字搜索。

八、外排序

  适用范围:大数据的排序,去重

  基本原理及要点:外排序的归并方法,置换选择败者树原理,最优归并树

  扩展:

  问题实例:
  1).有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16个字节,内存限制大小是1M。返回频数最高的100个词。

  这个数据具有很明显的特点,词的大小为16个字节,但是内存只有1m做hash有些不够,所以可以用来排序。内存可以当输入缓冲区使用。

九、trie树

  适用范围:数据量大,重复多,但是数据种类小可以放入内存

  基本原理及要点:实现方式,节点孩子的表示方式

  扩展:压缩实现。

  问题实例:
  1).有10个文件,每个文件1G,每个文件的每一行都存放的是用户的query,每个文件的query都可能重复。要你按照query的频度排序。
  2).1000万字符串,其中有些是相同的(重复),需要把重复的全部去掉,保留没有重复的字符串。请问怎么设计和实现?
  3).寻找热门查询:查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个,每个不超过255字节。

十、分布式处理 mapreduce

  适用范围:数据量大,但是数据种类小可以放入内存

  基本原理及要点:将数据交给不同的机器去处理,数据划分,结果归约。

  扩展:
  问题实例:
  1).The canonical example application of MapReduce is a process to count the appearances of
each different word in a set of documents:
  2).海量数据分布在100台电脑中,想个办法高效统计出这批数据的TOP10。
  3).一共有N个机器,每个机器上有N个数。每个机器最多存O(N)个数并对它们操作。如何找到N^2个数的中数(median)?

经典问题分析
  上千万or亿数据(有重复),统计其中出现次数最多的前N个数据,分两种情况:可一次读入内存,不可一次读入。

  可用思路:trie树+堆,数据库索引,划分子集分别统计,hash,分布式计算,近似统计,外排序

  所谓的是否能一次读入内存,实际上应该指去除重复后的数据量。如果去重后数据可以放入 内存,我们可以为数据建立字典,比如通过 map,hashmap,trie,然后直接进行统计即可。当然在更新每条数据的出现次数的时候,我们可以利用一个堆来维护出现次数最多的前N个数据,当 然这样导致维护次数增加,不如完全统计后在求前N大效率高。

  如果数据无法放入内存。一方面我们可以考虑上面的字典方法能否被改进以适应这种情形,可以做的改变就是将字典存放到硬盘上,而不是内存,这可以参考数据库的存储方法。

  当然还有更好的方法,就是可以采用分布式计算,基本上就是map-reduce过程, 首先可以根据数据值或者把数据hash(md5)后的值,将数据按照范围划分到不同的机子,最好可以让数据划分后可以一次读入内存,这样不同的机子负责处 理各种的数值范围,实际上就是map。得到结果后,各个机子只需拿出各自的出现次数最多的前N个数据,然后汇总,选出所有的数据中出现次数最多的前N个数 据,这实际上就是reduce过程。

  实际上可能想直接将数据均分到不同的机子上进行处理,这样是无法得到正确的解的。因为 一个数据可能被均分到不同的机子上,而另一个则可能完全聚集到一个机子上,同时还可能存在具有相同数目的数据。比如我们要找出现次数最多的前100个,我 们将1000万的数据分布到10台机器上,找到每台出现次数最多的前 100个,归并之后这样不能保证找到真正的第100个,因为比如出现次数最多的第100个可能有1万个,但是它被分到了10台机子,这样在每台上只有1千 个,假设这些机子排名在1000个之前的那些都是单独分布在一台机子上的,比如有1001个,这样本来具有1万个的这个就会被淘汰,即使我们让每台机子选 出出现次数最多的1000个再归并,仍然会出错,因为可能存在大量个数为1001个的发生聚集。因此不能将数据随便均分到不同机子上,而是要根据hash 后的值将它们映射到不同的机子上处理,让不同的机器处理一个数值范围。

  而外排序的方法会消耗大量的IO,效率不会很高。而上面的分布式方法,也可以用于单机版本,也就是将总的数据根据值的范围,划分成多个不同的子文件,然后逐个处理。处理完毕之后再对这些单词的及其出现频率进行一个归并。实际上就可以利用一个外排序的归并过程。

  另外还可以考虑近似计算,也就是我们可以通过结合自然语言属性,只将那些真正实际中出现最多的那些词作为一个字典,使得这个规模可以放入内存。

289月/11

关键词:软文

发布在 邵珠庆

软文的定义

1.基本定义

  软文,是一种不拘泥于形式的文字表达方式;它是为了推广而出现的一系列的文字性操作方法。同时也是这种表达方式下的文字、文章等产物的代称。

2.狭义的

  指企业花钱在报纸或杂志等宣传载体上刊登的纯文字性的广告。这种定义是早期的一种定义,也就是所谓的付费文字广告。

3.广义的

   指企业通过策划在报纸、杂志、DM、网络、手机短信等宣传载体上刊登的可以提升企业品牌形象和知名度,或可以促进企业销售的一些宣传性、阐释性文章,包 括特定的新闻报道、深度文章、付费短文广告、案例分析等。在大部分报刊、杂志都会提供登一块广告,付送一大块软文的地方。有的电视节目会以访谈、坐谈方式 进行宣传,这也归软文。   软文的最高境界就是把广告写的不像广告

 

软文的几种形式

  软文之所以备受推崇,第一个原因就是硬广告的效果下降、电视媒体的费用上涨,第二个原因就是媒体最初对软文的收费比硬广告要低好多,在资金不是很雄厚的情况下软文的投入产出比较科学合理。所以企业从各个角度出发愿意以软文试水,以便使市场快速启动。   软文虽然千变万化,但是万变不离其宗,主要有以下几种方式:

1.悬念式

   也可以叫设问式。核心是提出一个问题,然后围绕这个问题自问自答。例如“人类可以长生不老?”、“什么使她重获新生?”、“牛皮癣,真的可以治愈吗?” 等,通过设问引起话题和关注使这种方式的优势。但是必须掌握火候,首先提出的问题要有吸引力,答案要符合常识,不能作茧自缚漏洞百出。

2.故事式

   通过讲一个完整的故事带出产品,使产品的“光环效应”和“神秘性”给消费者心理造成强暗示,使销售成为必然。例如“1.2亿买不走的秘方”、“神奇的植 物胰岛素”、“印第安人的秘密”等。讲故事不是目的,故事背后的产品线索是文章的关键。听故事是人类最古老的知识接受方式,所以故事的知识性、趣味性、合 理性是软文成功的关键。

3.情感式

   情感一直是广告的一个重要媒介,软文的情感表达由于信息传达量大、针对性强,当然更可以叫人心灵相通。“老公,烟戒不了,洗洗肺吧”、“女人,你的名字 是天使”、“写给那些战‘痘'的青春”等,情感最大的特色就是容易打动人,容易走进消费者的内心,所以“情感营销”一直是营销百试不爽的灵丹妙药。

4.恐吓式

  恐吓式软文属于反情感式诉求,情感诉说美好,恐吓直击软肋——“高血脂,瘫痪的前兆!”、“天啊,骨质增生害死人!”、“洗血洗出一桶油”。实际上恐吓形成的效果要比赞美和爱更具备记忆力,但是也往往会遭人诟病,所以一定要把握度,不要过火。

5.促销式

   促销式软文常常跟进在上述几种软文见效时——“北京人抢购***”、“***,在香港卖疯了”、“一天断货三次,西单某厂家告急”……这样的软文或者是 直接配合促销使用,或者就是使用"买托"造成产品的供不应求,通过“攀比心理”、“影响力效应”多种因素来促使你产生购买欲。

6.新闻式

  所谓事件新闻体,就是为宣传寻找一个由头,以新闻事件的手法去写,让读者认为就仿佛是昨天刚刚发生的事件。这样的文体有对企业本身技术力量的体现,但是,告诫文案要结合企业的自身条件,多与策划沟通,不要天马行空地写,否则,多数会造成负面影响。   上述六类软文绝对不是孤立使用的,是企业根据战略整体推进过程的重要战役,如何使用就是布局的问题了。

 

-------------------------------------

广告阵风吹,公关春光浴;   

广告点到面,公关点到线;   

广告予于形;公关在于实;   

广告自以为是,公关以众为是;   

广告无人不及,公关有的放矢;   

广告狂轰烂炸,公关日积月累;   

广告办多少事就得花多少钱,公关花小钱就办大事;   

广告创意难寻,公关新意不断;   

广告钟情老品牌,公关热恋新品牌;   

广告形迹可疑,公关诚信有加;   

广告诡异,公关严谨;   

广告维护品牌,公关树立品牌;   

广告潮退,公关潮起。   

---------------------------------------

软文操作的八大技巧

论点一:提前做好软文广告计划   

论点二:给软文拟一个新闻标题   

论点三:用新闻体组织正文结构   

论点四:善于运用新闻惯用词汇   

论点五:广告信息要巧妙地融合   

论点六:遵循新闻排版风格设计   

论点七:发布时和新闻粘在一起   

论点八:媒体公关工作必不可少

269月/11

值得开发人员关注的jQuery技术网站和博客20个

发布在 邵珠庆

1. John Resig - http://ejohn.org

毫无疑问,jQuery的缔造者的博客是你首先必须关注的。

2. Filmament Group Lab

这个也是必看之一,因为jQuery UI类库就出自这个网站

3.  Learning jQuery

老牌的学习jQuery的网站之一,这个网站是由几个作者联合建立

4.  Soh Tnaka Blog

非常酷的一个jQuery设计和分享网站,风格非常酷,里面的教程和插件实现非常有艺术感,本人这里强烈推荐。

5.  nettuts

老牌的网页设计网站,里面包含了非常多的jQuery教程和技巧。同时这个网站也有大量的设计相关的文章,大家可以学习。

6. jQuery4u

老牌的jQuery网站学习网站,里面有很多jQuery的教程,及其收集的jQuery插件。

7. WebResourceDepot

收集了许多jQuery插件教程及其信息

8.  The Sea of ideas - personal blog of Paul Bakus

Paul Bakus是jQueryUI的创始者并且也是很多著名插件的开发人,在他的博客中我们可以找到大量javascript,jQuery,jQueryUI开发的信息和文章

9.  James Padolsey

Jame是一个具有丰富开发经验的前端开发工程师,在他的博客中,他经常介绍最新的开发技术和价格,并且分享很多jQuery代码及其实现

10.  jankoatwarpspeed

Janko的博客发布有很多写的非常好的jQuery开发文章,并且也有新书的发布

11. jQueryhowto

jQueryHowto提供了大量的代码片段帮助你解决jQuery编程中的个实现问题,非常实用的开发查询网站,GBin1这里强烈推荐

12.  Marcofolio

这个博客拥有很多不错的教程,帮助大家实现非常实用的jQuery功能, 例如,如何实现TechCrunch的像素Logo

13.  Build internet

Build internet拥有很多书写的非常好的jQuery教程,当然由于它是一个综合性的网站,也拥有很多其它的web开发教程和资料

14. W3CSchools

比较老牌的一个网站,主要提供各种W3C相关教程,包括HTML,XML,CSS,Javascript,也包括jQuery等其它教程

15. Addy Osmani Blog

Addy Osmani拥有很多详细讲解的jQuery教程及其相关Javascript toolkit。

16. jQuery style

一个完全讲解jQuery类库的网站,分享代码片段及其各种jQuery插件。

17. The Ultimate jQuery List

一个非常完整的jQuery类库,插件,演示及其教程说明, 完全值得大家去查看内容

18. Queness

这个个人blog拥有很多实用的jQuery资源

19. Tutorialzine

这个博客有很多实用的资源,可以直接在代码中实用

20. GBin1

GBin1是提供互联网相关技术的综合类博客,我们提供最新的互联网信息,技术及其教程,希望能帮助大家了解最新的互联网技术和信息

229月/11

同比、环比、定基比的含义和对比

发布在 邵珠庆

今天收集需求遇到了几个很专业的名词 同比、环比、定基比

1、综述

  发展速度由于采用基期的不同,可分为同比发展速度、环比发展速度和定基发展速度。均用百分数或倍数表示。

2、同比

  同比("相同时期相比"的简称)发展速度主要是为了消除季节变动的影响,用以说明本期发展水平与去年同期发展水平对比而达到的相对发展速度。如,本期2月比去年2月,本期6月比去年6月等。   其计算公式为:同比发展速度=(本期发展水平-去年同期发展水平)/去年同期发展水平×100%   在实际工作中,经常使用这个指标,如某年、某季、某月与上年同期对比计算的发展速度,就是同比发展速度。

3、环比

  环比分为日环比、周环比、月环比和年环比。   环比发展速度是以报告期水平与其前一期水平对比(相邻期间的比较),所得到的动态相对数。表明现象逐期的发展变动程度。如计算一年内各月与前一个月对比,即2月比1月,3月比2月,4月比3月 ……12月比11月,说明逐月的发展程度。   环比计算公式=本期数据/上期数据*100%   环比增长率=(本期数据-上期数据)/上期数据*100%

4、定基比

  定基比发展速度也叫总速度。是报告期水平与某一固定时期水平之比,表明这种现象在较长时期内总的发展速度。如"九五"期间各年水平都以1995年水平为基期进行对比,一年内各月水平均以上年12月水平为基期进行对比,就是定基发展速度。

5、三者的区别

  与历史同时期比较,例如2009年11月份与2008年11月份相比,叫同比。   与上一个统计周期比较,例如2009年11月份与2009年10月份相比较,称为环比。   定基比发展速度,也简称总速度,一般是指报告期水平与某一固定时期水平之比,表明这种现象在较 长时期内总的发展速度。同比发展速度,一般指是指本期发展水平与上年同期发展水平对比,而达到的相对发展速度。环比发展速度,一般是指报告期水平与前一时 期水平之比,表明现象逐期的发展速度。   同比和环比,这两者所反映的虽然都是变化速度,但由于采用基期的不同,其反映的内涵是完全不同的;一般来说,环比可以与环比相比较,而不能拿同比与环比相比较;而对于同一个地方,考虑时间纵向上发展趋势的反映,则往往要把同比与环比放在一起进行对照。

189月/11

几个不错的国外网站,职业上有帮助

发布在 邵珠庆

Offers users the ability to upload and share publicly or privately PowerPoint presentations, Word documents and Adobe PDF Portfolios.

 

http://www.slideshare.net/

 

 

120 million+ members | Manage your professional identity. Build and engage with your professional network. Access knowledge, insights and opportunities.

 

www.linkedin.com/

159月/11

[信息图表]2012世界末日

发布在 邵珠庆

http://shaozhuqing.com/wp-content/uploads/auto_save_image/2011/09/0813243ly.gif