2014年2 月月 发布的文章

JavaScript变量

局部 JavaScript 变量
在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。
您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。
只要函数运行完毕,本地变量就会被删除。
全局 JavaScript 变量
在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。
JavaScript 变量的生存期
JavaScript 变量的生命期从它们被声明的时间开始。
局部变量会在函数运行以后被删除。
全局变量会在页面关闭后被删除。
向未声明的 JavaScript 变量来分配值
如果您把值赋给尚未声明的变量,该变量将被自动作为全局变量声明。
这条语句:

carname="Volvo";

将声明一个全局变量 carname,即使它在函数内执行。

大数据热门职业薪酬榜

随着越来越多企业开始投身于大数据技术的革新洪流,对于IT专业人士的市场需求也水涨船高。时至今日,具备收集、整理、分析以及构建不同来源数据技能的人才正迎来自己职业生涯的上升期。
在当下的数字化时代,数据量的丰富程度远远超过历史上的任何时期,很多时候这种丰富程度甚至成为一种沉重的负担。企业开始将大量资源投入到云技术、移动技术以及社交媒体当中。结合这些新兴领域,再加上企业自身运营所必然产生的信息,我们发现目前需要收集的数据总量单单用“爆炸式”已经不足以形容其扩张速度。根据Kforce公司(一家总部位于佛罗里达州坦帕市的人力资源企业)的调查,伴随着数据量的节节攀升,市场对于有能力收集、整理并利用数据内容的人才显现出旺盛的需求态势。
需要强调的是,本文中所列举的所有薪酬都按照一位典型IT专业人士以每周四十小时的工作时长来计算。
一、Hadoop开发人员
Hadoop是一套基于Java的开源框架,旨在支持大规模数据集的处理流程。根据Kforce公司的调查结果,Hadoop框架中的数据及其它一系列相关技术——包括Hive、HBase、MapReduce、Pig等——都对使用者提出了很高的专业知识要求。由于受到当下数据规模的有力推动,而且事实上如果不借助规模化分布式处理机制的强大能力、企业根本无法承受由传统商务智能工具处理海量数据所带来的高昂成本及漫长的时间周期。
“纵观当前的大数据发展环境,拥有Hadoop框架使用经验的人才最受市场追捧。这些职位往往主要负责帮助企业完善其长期大数据战略并使其趋于成熟,”Kforce公司CTO Greg Jones表示。
平均年薪:15-17.5万美元
平均时薪:70美元
二、信息架构师
“大数据让整个世界对数据掌控权的重要性产生了新的认识。”Kforce公司大数据团队指出。
要充分利用企业数据优势并构建起具备可操作性的规划,相关人员必须拥有特殊的技能储备。信息架构师需要了解如何定义并记录关键性元素,同时确保以最具影响力的方式向企业解释数据内容。主数据管理、业务知识以及数据模型构成了这类从业人员必须掌握的三大关键性技能。
平均年薪:11.375-13.535万美元
平均时薪:65美元
三、ETL开发人员
企业用户的数据量以及数据类型出现爆炸式增长,因此市场也为有能力收集并整合大数据内容的专业人士提供了非常广阔的发展空间。ETL开发人员的主要工作内容在于从企业的各类不同数据源处收集数据,并创造出多种能够从中提取数据信息的途径。除此之外,他们还需要根据企业的实际需求对提取结果加以导入及修改,并最终将其添加到数据仓库当中。
“由于ETL软件行业目前已经相当成熟,这些岗位很可能会在大数据资源池当中获得最为稳定且持久的任期,包括雇员或者外包这两种方式,”Kforce公司CTO Greg Jones指出。
平均年薪:11-13万美元
平均时薪:63.02美元
四、预测分析开发人员
“预测分析如今被营销团队大量使用,旨在预测消费者的未来行为与产品的目标受众,”Kforce公司解释称。
这一角色有时候似乎与数据科学家在工作中的探索天性颇为相近,双方都需要利用企业数据研究多种“假设”场景的可能走向。这些技能高超的IT人员精于创建潜在业务场景,并懂得如何利用历史数据表现来假设并测试阈值以及未来的表现。
平均年薪:10.37-12.9万美元
平均时薪:60美元
五、可视化工具开发人员
数据规模的极度膨胀也给分析工作带来了诸多挑战。以Spotfire、Qlikview以及Tableau为代表的各类可视化工具集帮助我们直观快捷地完成数据探测工作。另外,与之相关的岗位也很可能最终趋近于通用型商务智能开发类别。根据Kforce公司的调查,Hadoop目前的人气相当高涨,同时也将成为一种全新的专业技能门类。
“这些技能在短期内将作为热门资源受到高度追捧。随着此类资源的供给与需求逐渐达到平衡,加之相关工具集的日益成熟,未来职位的薪酬水平有可能有所放缓,具备这些资源的人才也很可能转化为全职员工。”Kforce公司CTO Greg Jones表示。
平均年薪:15-17.5万美元
平均时薪:57.50美元
六、数据仓库设备专家
“这些专家专门打理数据仓库设备,例如来自Teradata、Neteeza以及Exadata公司的产品。”Kforce指出。与这类职业角色相关联的核心任务包括数据集成、管理以及利用高端设备实现性能优化等。这些专业设备用于为企业用户提供规模化并行处理(简称MPP)流程,并通过对内存、磁盘以及数据存储架构进行特殊优化来构建适合实际需求的分析处理环境。”
——Kforce公司大数据团队
平均年薪:9.795-12.36万美元
平均时薪:57.5美元
七、OLAP开发人员
在线分析处理(简称OLAP)开发人员是数据组织优化方面的专家,擅长所谓的“大卸八块”式分析。在这一流程中,数据取向关系类或者非结构化数据源,并需要根据数据内容创建三维模型——通常被称为“星状”或者“雪花状”架构,然后再打造出用户界面、保证使用者能够通过高性能预定义查询实现数据访问。
平均年薪:9.79-11.555万美元
平均时薪:55美元
八、数据科学家
作为IT业界中的组成部分,数据科学家过去曾经被称为“数据架构师”。数据科学家是另一种全新类型的技术专业人士,其主要能力在于将自身的数据组织技能融入到商业价值主张当中。这类从业者还必须具备良好的沟通技巧,从而顺利完成向IT领导者及企业高层解释数据结果的任务。这些数据科学家通常都拥有自己的一套沙箱环境,利用它实现组织数据的探索与研究,并帮助推动业务创新活动。
“一部分属于分析师、一部分属于艺术家,数据科学家这一角色需要始终保持着旺盛的好奇心、能够一直紧盯着数据及焦点趋势。这几乎像是在文艺复兴时期对发展走向加以梳理,并根据结果指导企业的经营变化,”IBM公司大数据产品副总裁Anjul Bhambhri解释道。
PS:个人认为,做数据处理的其实没什么,做数据分析的才是大数据的关键!

跨域问题

Uncaught SecurityError: Blocked a frame with origin “http://click.youku.com” from accessing a frame with origin “http://index.youku.com”. The frame requesting access set “document.domain” to “youku.com”, but the frame being accessed did not. Both must set “document.domain” to the same value to allow access.
还是跨域问题,父页面和子页面没有明确指出在同一个域下
在子页面中加入如下代码,显示声明:

<script>
        document.domain='youku.com';
</script>

Hadoop权威博客

请关注Yahoo! Hadoop团队的博客(developer.yahoo.com/blogs/hadoop)。
Hadoop在eBay的应用内容是根据eBay研究人员的技术博客[2]整理而成的,其中参考了eBay分析平台开发部Anil Madan介绍的Hadoop在eBay的使用情况,大家如果想要了解Hadoop在eBay应用的更多信息,可以关注eBay研究人员的技术博客(www.ebaytechblog.com)。
百度使用Hadoop平台的情况则是根据近几届Hadoop中国云计算大会上百度研究人员的报告整理而成,大家如果想了解更详细的信息或Hadoop中国云计算大会的相关信息可登录Hadoop in China网站:http://www.hadooper.cn。
Facebook使用Hadoop的情况是根据Facebook相关技术人员在各个云计算大会上所做的报告整理而成的。
Hadoop平台上的海量数据排序的相关内容是根据Hadoop基准排序测试的报告[3],[4]撰写而成,如果大家想要了解排序基准测试的更多细节或排名情况,可以登录http://sortbenchmark.org查看。
[1] Alan Gates, Pig and Hive at Yahoo!, http://developer.yahoo.com/blog/hadoop/posts/2010/08/ pig_and_hive_at_yahoo/
[2] Anil Madan, Hadoop-The power of the Elephant, http://www.ebaytechblog.com/2010/10/29/ hadoop-the-power-of-the-elephant/
[3] Owen O扢allay, TeraByte Sort on Apache Hadoop, http://sortbenchmark.org/YahooHadoop.pdf
[4] Owen O扢allay & Arun C.Murthy, Winning a 60 Second Dash with a Yellow Elephant, http://sortbenchmark.org/Yahoo2009.pdf

Java对象初始化详解

在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本文在最后也会对类的初始化进行介绍,相对于对象初始化来说,类的初始化要相对简单一些)。
1.Java对象何时被初始化
Java对象在其被创建时初始化,在Java代码中,有两种行为可以引起对象的创建。其中比较直观的一种,也就是通常所说的显式对象创建,就是通过new关键字来调用一个类的构造函数,通过构造函数来创建一个对象,这种方式在java规范中被称为“由执行类实例创建表达式而引起的对象创建”。
当然,除了显式地创建对象,以下的几种行为也会引起对象的创建,但是并不是通过new关键字来完成的,因此被称作隐式对象创建,他们分别是:
● 加载一个包含String字面量的类或者接口会引起一个新的String对象被创建,除非包含相同字面量的String对象已经存在与虚拟机内了(JVM会在内存中会为所有碰到String字面量维护一份列表,程序中使用的相同字面量都会指向同一个String对象),比如,

class StringLiteral {
    private String str = "literal";
    private static String sstr = "s_literal";
}

● 自动装箱机制可能会引起一个原子类型的包装类对象被创建,比如,

class PrimitiveWrapper {
    private Integer iWrapper = 1;
}

● String连接符也可能会引起新的String或者StringBuilder对象被创建,同时还可能引起原子类型的包装对象被创建,比如(本人试了下,在mac ox下1.6.0_29版本的javac,对待下面的代码会通过StringBuilder来完成字符串的连接,并没有将i包装成Integer,因为StringBuilder的append方法有一个重载,其方法参数是int),

public class StringConcatenation {
    private static int i = 1;
    public static void main(String... args) {
        System.out.println("literal" + i);
    }
}

2.Java如何初始化对象
当一个对象被创建之后,虚拟机会为其分配内存,主要用来存放对象的实例变量及其从超类继承过来的实例变量(即使这些从超类继承过来的实例变量有可能被隐藏也会被分配空间)。在为这些实例变量分配内存的同时,这些实例变量也会被赋予默认值。
引用
关于实例变量隐藏

class Foo {
    int i = 0;
}
class Bar extends Foo {
    int i = 1;
    public static void main(String... args) {
        Foo foo = new Bar();
        System.out.println(foo.i);
    }
}

上面的代码中,Foo和Bar中都定义了变量i,在main方法中,我们用Foo引用一个Bar对象,如果实例变量与方法一样,允许被覆盖,那么打印的结果应该是1,但是实际的结果确是0。
但是如果我们在Bar的方法中直接使用i,那么用的会是Bar对象自己定义的实例变量i,这就是隐藏,Bar对象中的i把Foo对象中的i给隐藏了,这条规则对于静态变量同样适用。
在内存分配完成之后,java的虚拟机就会开始对新创建的对象执行初始化操作,因为java规范要求在一个对象的引用可见之前需要对其进行初始化。在Java中,三种执行对象初始化的结构,分别是实例初始化器、实例变量初始化器以及构造函数。
2.1. Java的构造函数
每一个Java中的对象都至少会有一个构造函数,如果我们没有显式定义构造函数,那么Java编译器会为我们自动生成一个构造函数。构造函数与类中定义的其他方法基本一样,除了构造函数没有返回值,名字与类名一样之外。在生成的字节码中,这些构造函数会被命名成方法,参数列表与Java语言书写的构造函数的参数列表相同(这样的方法名在Java语言中是非法的,但是对于JVM来说,是合法的)。另外,构造函数也可以被重载。
Java要求一个对象被初始化之前,其超类也必须被初始化,这一点是在构造函数中保证的。Java强制要求Object对象(Object是Java的顶层对象,没有超类)之外的所有对象构造函数的第一条语句必须是超类构造函数的调用语句或者是类中定义的其他的构造函数,如果我们即没有调用其他的构造函数,也没有显式调用超类的构造函数,那么编译器会为我们自动生成一个对超类构造函数的调用指令,比如,

public class ConstructorExample {
}

对于上面代码中定义的类,如果观察编译之后的字节码,我们会发现编译器为我们生成一个构造函数,如下,

aload_0
invokespecial    #8; //Method java/lang/Object."<init>":()V
return

上面代码的第二行就是调用Object对象的默认构造函数的指令。
正因为如此,如果我们显式调用超类的构造函数,那么调用指令必须放在构造函数所有代码的最前面,是构造函数的第一条指令。这么做才可以保证一个对象在初始化之前其所有的超类都被初始化完成。
如果我们在一个构造函数中调用另外一个构造函数,如下所示,

public class ConstructorExample {
    private int i;
    ConstructorExample() {
        this(1);
        ....
    }
    ConstructorExample(int i) {
        ....
        this.i = i;
        ....
    }
}

对于这种情况,Java只允许在ConstructorExample(int i)内出现调用超类的构造函数,也就是说,下面的代码编译是无法通过的,

public class ConstructorExample {
    private int i;
    ConstructorExample() {
        super();
        this(1);
        ....
    }
    ConstructorExample(int i) {
        ....
        this.i = i;
        ....
    }
}

或者,

public class ConstructorExample {
    private int i;
    ConstructorExample() {
        this(1);
        super();
        ....
    }
    ConstructorExample(int i) {
        ....
        this.i = i;
        ....
    }
}

Java对构造函数作出这种限制,目的是为了要保证一个类中的实例变量在被使用之前已经被正确地初始化,不会导致程序执行过程中的错误。但是,与C或者C++不同,Java执行构造函数的过程与执行其他方法并没有什么区别,因此,如果我们不小心,有可能会导致在对象的构建过程中使用了没有被正确初始化的实例变量,如下所示,

class Foo {
    int i;
    Foo() {
        i = 1;
        int x = getValue();
        System.out.println(x);
    }
    protected int getValue() {
        return i;
    }
}
class Bar extends Foo {
    int j;
    Bar() {
        j = 2;
    }
    @Override
    protected int getValue() {
        return j;
    }
}
public class ConstructorExample {
    public static void main(String... args) {
        Bar bar = new Bar();
    }
}

如果运行上面这段代码,会发现打印出来的结果既不是1,也不是2,而是0。根本原因就是Bar重载了Foo中的getValue方法。在执行Bar的构造函数是,编译器会为我们在Bar构造函数开头插入调用Foo的构造函数的代码,而在Foo的构造函数中调用了getValue方法。由于Java对构造函数的执行没有做特殊处理,因此这个getValue方法是被Bar重载的那个getValue方法,而在调用Bar的getValue方法时,Bar的构造函数还没有被执行,这个时候j的值还是默认值0,因此我们就看到了打印出来的0。
2.2. 实例变量初始化器与实例初始化器
我们可以在定义实例变量的同时,对实例变量进行赋值,赋值语句就时实例变量初始化器了,比如,

public class InstanceVariableInitializer {
    private int i = 1;
    private int j = i + 1;
}

如果我们以这种方式为实例变量赋值,那么在构造函数执行之前会先完成这些初始化操作。
我们还可以通过实例初始化器来执行对象的初始化操作,比如,

public class InstanceInitializer {
    private int i = 1;
    private int j;
    {
        j = 2;
    }
}

上面代码中花括号内代码,在Java中就被称作实例初始化器,其中的代码同样会先于构造函数被执行。
如果我们定义了实例变量初始化器与实例初始化器,那么编译器会将其中的代码放到类的构造函数中去,这些代码会被放在对超类构造函数的调用语句之后(还记得吗?Java要求构造函数的第一条语句必须是超类构造函数的调用语句),构造函数本身的代码之前。我们来看下下面这段Java代码被编译之后的字节码,Java代码如下,

public class InstanceInitializer {
    private int i = 1;
    private int j;
    {
        j = 2;
    }
    public InstanceInitializer() {
        i = 3;
        j = 4;
    }
}

编译之后的字节码如下,

aload_0
invokespecial    #11; //Method java/lang/Object."<init>":()V
aload_0
iconst_1
putfield #13; //Field i:I
aload_0
iconst_2
putfield #15; //Field j:I
aload_0
iconst_3
putfield #13; //Field i:I
aload_0
iconst_4
putfield #15; //Field j:I
return

上面的字节码,第4,5行是执行的是源代码中i=1的操作,第6,7行执行的源代码中j=2的操作,第8-11行才是构造函数中i=3和j=4的操作。
Java是按照编程顺序来执行实例变量初始化器和实例初始化器中的代码的,并且不允许顺序靠前的实例初始化器或者实例变量初始化器使用在其后被定义和初始化的实例变量,比如,

public class InstanceInitializer {
    {
        j = i;
    }
    private int i = 1;
    private int j;
}
public class InstanceInitializer {
    private int j = i;
    private int i = 1;
}

上面的这些代码都是无法通过编译的,编译器会抱怨说我们使用了一个未经定义的变量。之所以要这么做,是为了保证一个变量在被使用之前已经被正确地初始化。但是我们仍然有办法绕过这种检查,比如,

public class InstanceInitializer {
    private int j = getI();
    private int i = 1;
    public InstanceInitializer() {
        i = 2;
    }
    private int getI() {
        return i;
    }
    public static void main(String[] args) {
        InstanceInitializer ii = new InstanceInitializer();
        System.out.println(ii.j);
    }
}

如果我们执行上面这段代码,那么会发现打印的结果是0。因此我们可以确信,变量j被赋予了i的默认值0,而不是经过实例变量初始化器和构造函数初始化之后的值。
引用
一个实例变量在对象初始化的过程中会被赋值几次?
在本文的前面部分,我们提到过,JVM在为一个对象分配完内存之后,会给每一个实例变量赋予默认值,这个时候实例变量被第一次赋值,这个赋值过程是没有办法避免的。
如果我们在实例变量初始化器中对某个实例x变量做了初始化操作,那么这个时候,这个实例变量就被第二次赋值了。
如果我们在实例初始化器中,又对变量x做了初始化操作,那么这个时候,这个实例变量就被第三次赋值了。
如果我们在类的构造函数中,也对变量x做了初始化操作,那么这个时候,变量x就被第四次赋值。
也就是说,一个实例变量,在Java的对象初始化过程中,最多可以被初始化4次。
2.3. 总结
通过上面的介绍,我们对Java中初始化对象的几种方式以及通过何种方式执行初始化代码有了了解,同时也对何种情况下我们可能会使用到未经初始化的变量进行了介绍。在对这些问题有了详细的了解之后,就可以在编码中规避一些风险,保证一个对象在可见之前是完全被初始化的。
3.关于类的初始化
Java规范中关于类在何时被初始化有详细的介绍,在3.0规范中的12.4.1节可以找到,这里就不再多说了。简单来说,就是当类被第一次使用的时候会被初始化,而且只会被一个线程初始化一次。我们可以通过静态初始化器和静态变量初始化器来完成对类变量的初始化工作,比如,

public class StaticInitializer {
    static int i = 1;
    static {
        i = 2;
    }
}

上面通过两种方式对类变量i进行了赋值操作,分别通过静态变量初始化器(代码第2行)以及静态初始化器(代码第5-6行)完成。
静态变量初始化器和静态初始化器基本同实例变量初始化器和实例初始化器相同,也有相同的限制(按照编码顺序被执行,不能引用后定义和初始化的类变量)。静态变量初始化器和静态初始化器中的代码会被编译器放到一个名为static的方法中(static是Java语言的关键字,因此不能被用作方法名,但是JVM却没有这个限制),在类被第一次使用时,这个static方法就会被执行。上面的Java代码编译之后的字节码如下,我们看到其中的static方法,

static {};
  Code:
   Stack=1, Locals=0, Args_size=0
   iconst_1
   putstatic    #10; //Field i:I
   iconst_2
   putstatic    #10; //Field i:I
   return

在第2节中,我们介绍了可以通过特殊的方式来使用未经初始化的实例变量,对于类变量也同样适用,比如,

public class StaticInitializer {
    static int j = getI();
    static int i = 1;
    static int getI () {
        return i;
    }
    public static void main(String[] args) {
        System.out.println(StaticInitializer.j);
    }
}

上面这段代码的打印结果是0,类变量的值是i的默认值0。但是,由于静态方法是不能被覆写的,因此第2节中关于构造函数调用被覆写方法引起的问题不会在此出现。
http://blog.jobbole.com/23939/

网站运营的工作内容

网站运营专员的岗位方向分为三部分:一,偏文案网站运营专员;二,偏活动网站运营专员;三,偏用户管理网站运营专员。
   
偏文案网站运营专员的岗位职责主要包括:
1.对网站内商品进行整理和反馈,包括对商品的评价、平分,对新增商品的购买;
2.对网站内部信息的管理和促进,包括对论坛、留言等部分的关注;
3.通过运营工具对网站的浏览者和用户进行针对性联系,有效地介绍网站的业务,并引导浏览者成为注册用户,注册用户成为买家和卖家;
4.实现对卖家的近距离服务,对卖家进行商品上柜引导,对其个人成果店地维护,并保护卖家信息的整合和关系的维护;
5.对买家以及潜在买家的引导,引导买家查询到他们需要的商品,并刺激他们购买,并保护买家信息整合和关系维护;
6.收集网站用户和浏览者的需求及意见,反馈给产品部门,对网站进行完善;
7.定期整理网站用户列表,并进行信息的整合分类,供运营部进行影响性动作时使用;
8.根据公司的运营需求,撰写各种与运营相关类型文案,包括新闻、公关、活动宣传文案等;
9.每天对网站的运营数据进行整理,每周对网站的运营数据进行集中整合分析,整理出相关数据报表;
10.配合主管达成网站活动、交易次数、交易额度等运营指标。
   
偏活动网站运营专员岗位职责包括:
偏活动方向的岗位职责与偏文案方向岗位职责的第一至第七点是相同的,除此之外,活动专员的工作还需完成以下内容:
1.根据网站的需求,制定符合预算范围内确实可行的活动计划;配合活动计划与产品计划,制定与之相关的网站内宣传计划;
2.根据活动计划,对具体的活动完成详细的活动活动策划执行案;
3.组织和协调其他部门人员一起配合完成活动,在活动发生意外时,能保证活动的顺利进行完毕;
4.活动结束后对活动信息进行收集、整理和分析,根据活动的结果,定期分析网站用户,并不断改善其后的活动计划。
偏用户管理网站运营专员岗位职责包括:
偏用户管理网站运营专员岗位职责除包括偏文案专员的第一至第七点外,还需完成以下三部分工作:
1.根据运营的需求,按照网站内对集市管理员的要求,招聘并管理站内各集市兼职管理员;
2. 根据运营的需求,随时调整网站内对集市管理员的要求,并落实具体的要求执行到网站内的各个集市;
3. 根据运营的需求,对集市管理员进行考核,并按实际情况进行任免。

MiB和MB,KiB和KB等的区别

MiB和MB,KiB和KB等的区别:

1KB(kilobyte)=1000byte,    1KiB(kibibyte)=1024byte
1MB(megabyte)=1000000byte, 1MiB(mebibyte)=1048576byte

硬盘生产商是以GB(十进制,即10的3次方=1000,如1MB=1000KB)计算的,而电脑(操作系统)是以GiB(2进制,即2的10次方,如1MiB=1024KiB)计算的,但竖内用户一般理解为1MB=1024KB, 所以为了便于中文化的理解,翻译MiB为MB也是可以的。
同样根据硬盘厂商与用户对于1MB大小的不同理解,所以好多160G的硬盘实际容量按计算机实际的1MB=1024KB算都不到160G,这也可以解释为什么新买的硬盘“缺斤短两”并没有它所标示的那么大。

宽带网络中,运营商们所说的1M带宽是指1Mbps(megabits per second,兆比特每秒)。bps是bit per Second的缩写,也就是每秒多少“位”(bit)的意思。是用来计算资料传输速率的单“位”。举例来说,电信局通常说的1M的宽,所使用的单位就是bps,我们都知道一个字节等于8位,而我们电脑的存储单位使用的是字节,也就是理论上每秒可以向硬盘下载1X1024/8=128KB/sec的数据。但这也只是理论上的速度。实际上则要再扣约12%的数据头信息(包Ethernet Header,IP Header,TCP Header,ATM Header等),各种各样的控制讯号。所以传输速度上限应112KB/sec左右,而不应该望文生义地理解为“每秒钟可以传送1M字节的数据。所以千万不要迷信广告,传输单位的写法上,B和b分别代表Bytes和bits,两者定义不同,差距是8倍

这就是北漂的答案?!

为什么现在的很多年轻人愿意来北上广深打拼,即使过得异常艰苦,远离亲人,仍然义无反顾?修改为什么现在的年轻人,大都愿意来北上广深打拼,即使过的异常艰苦,远离亲人,仍然义无反顾,在家踏实过日子难道不好吗,听说有些城市的年轻人基本都走光了,是不是这个社会体制的原因使大家的价值观都扭曲了,才会形成一个恶性循环?
王远成,春花虽好,也要期于秋实
在手机上看见这个问题,于是到电脑前来怒答,因为感触实在是太深了。我估计我会写很长。中间夹杂了很多个人感情,结论在最后。
答主男,2008年某三流西安民办大专毕业,怀揣了2000块钱,我买了一张火车票,来到上海。这里没有任何亲戚,朋友,甚至因为跷课,当时的学校暂扣了我的毕业证。我到上海唯一的理由,是喜欢互联网。在这里,我合租在有9个人合租的一套房。小单间月租金650块钱。房间里只放得下一张床和一个笔记本电脑。
7月的太阳实在太热,求职问路基本靠12580。每周末去上海体育馆的招聘会,遇见突如其来的暴雨,浑身湿透根本不是个事,每天奔波而惶恐,我连毕业证都没有谁会要?
一个月之后我遇见了我工作的第一任主管,那天我求职时迷了路,步行走了一公里,找到面试公司的时候满头大汗。整个衣服湿透的,头发上的汗跟洗过了一样,中暑几乎站不稳,他递了我一杯水,然后让我聊了聊对SNS的看法,估计是他可怜我的落魄,他给老总打电话说暂时不要我的毕业证,先看看我的工作表现。
我进入到一家非常优秀的国内优秀的互联网公司,虽然工资只有1800。但我丝毫不介意,第一次参加例会,身边有了一堆来自迅雷,阿里巴巴,腾讯,百度的同事,知道了产品经理的这个职位,那人比我小两岁,是公司从盛大挖来的,他会用Axure,会用思维脑图,开会时能迅速提炼精髓,有着清晰的产品分析能力。分析互联网比我透彻的太多,遇见了正规军的我第一次明白,天外有天,我那点以往炫耀的知识根本连入门都算不上。
早晨6点半起床,挤地铁,为了节约,基本中午不吃午饭。别人去吃饭的时候我就一个人上顶楼的天台,对着上海的高楼大厦发呆。租住的住所卫生间的浴室龙头需要9个人共用,每天晚上做饭需要排队,上厕所的马桶只有一个,时间长就会被室友骂,电淋浴器的热水,别人用完了你就要等好久。每天到家写分析报告到夜里两点,困得不行就把闹钟设置到早上六点,然后睡觉。四个小时睡眠对我来说足够。当当满300-150的的时候,买了一大堆互联网的书狂补,周末,参加各类的产品经理聚会,不敢说话,只坐在最后安静的听。听他们分析,讲一堆我压根不明白的词,然后记在本子上,回家用百度查。
国庆长假,离家近的同事都回家,我一个人替全部门的同事加班,3倍工资的待遇让我用一个星期的时间买了第一部智能手机——魅族m8。
幸运的是我遇见了我一辈子的两个好哥们,公司里的一个PHP程序员和一个广告销售,我们三个人就像《中国合伙人》中的三个人那样一样形影不离,他们俩都是上海人。销售在我眼里算半个富二代,但特别努力上劲,比我在上海见过的很多外地人都要努力,这哥们与人打交道的人,各方面想法都更真实,本地人也有底气,他帮助我在各种情况下度过难关。经济,事业,感情……为了我们的项目,他甚至住在公司里过,程序员是个特别老实有点内向的男孩,执行力强很适合做程序员,总之,我们三个好的穿一条裤子。
付出当然要有回报,2010年,团购刚刚兴起,我们开始负责公司里的团购导航,这是公司的一个很重点的项目。我们三个每天都像打了鸡血,那时候从没有考虑过是否和公司给的待遇对等,我们都抱着创业的理想做。销售去北京出差,我俩聊产品从晚上8点打到12点,四个小时的长途,他会将访问客户第一手的资料给我,我迅速做产品要求,然后提交程序员,程序员加班当晚就做产品迭代。有时候半夜两点我们会突然想到点子,然后我会打电话讨论,加班到夜里三点是太经常的事情,张江满满的路灯和空无一人的街道,然后挡车送下属回家,再回家睡几个小时,接着赶到第二天公司上班。有时在夜里一点发现一个页面bug然后打电话给技术。他也会立即起来改正。
这是上海工作的人对工作的执着,绝大多数的人,只要是他份内的工作,你多晚打搅他都不会怪你,而且很负责。三个人的拼命很快有了回报,几年的时间,我变成这个项目的经理,我有一个近十人的小团队,他俩也都是各自业务的骨干,
上海的生活节奏很快,你感觉自己有一天不努力就会落后,这让你有了动力拼命学习,她的配套设施很好,张江楼下的便利店有很多24小时服务,你能在加班到半夜三点饿了的时候下楼钻进任意一间吃关东煮或者让店员用微波炉加热一个鸡块便当给你。
职位和收入上来之后,生活状态也变化了,周末可以去田子坊和女朋友逛街。从世博会看各国风光,去ChinaJoy找萌妹子拍照,去崇明岛抓小螃蟹,去阳澄湖吃大闸蟹,去松江大学城喝咖啡,坐在小店里看日落。自由的自己带着女朋友干自己想干的事情,去想去的地方。我的工资可以轻易的买得起IPAD,IPHONE,网购的东西基本第二天就到了,而且包邮。
我也遇见了很多我这辈子都佩服的人,他们是各个领域的专家。他们知识渊博,彬彬有礼,充满智慧,穿着时尚得体,说话恰到好处,做事井井有条。男男女女都好聪明,遇见他们你就会觉得,我也要努力变成这样。
再后来,搞销售的哥们开始带着我见客户,吃饭聊天,教我克服自己的弱点与人交流。过于内向是我的弱点,有了他的帮助,内向的我敢在公司战略会议上发言,为团队争资源,争利益。团队有一个正牌的复旦大学的中文系硕士和上师大的新闻学硕士。是的,作为他们的经理,我是西安一个三流野鸡民办大学差点没混上毕业证的大专生。
离开的时候。月薪10k。每年14个月工资,我知道这个工资在上海并不算高,但,其实,我觉得她对得起我自己的努力,至少我所在的公司,节假日3倍工资,晚上加班有额外工资, 餐厅有免费的面包饼干方便面咖啡火腿肠,免费早餐。各种制度严格执行。
周围有同事收入比我高,但他们也确实比我强。学历,工作能力,为人处事。我输的心服口服。然后只要快速学习就好了。
上海是个神奇的城市,她不问你的出生,学历,不会鄙视你家庭条件,她只看你是否努力,真的。
——————华丽丽的分割线——————
2013年5月,母亲查处患肺癌,胸腔积液止不住,几乎丢了性命,我为了母亲离开上海,回到家乡,西北省会乌鲁木齐,在这座并不算小的,我曾生活了20年的城市,我发至今无法适应。
家里的条件并不差,父母早年做生意,遭遇火灾,但我的生活还是并不拘谨的。作为独生子,家里父母自住一套房,05年给我买了一套房结婚用,去年全乌鲁木齐公务员分房又买了一套出租。加上早年购买的在外出租的几个商铺,当然,这些东西,每一分,都是父母这辈子的血汗钱。我在上海的拘谨,只是因为我始终有一个信念,就是不愿在毕业后花父母的钱,事实上我做到。
乌鲁木齐属于三线城市,新疆首府,经济上并不是落后太多。但回来后的我还是很不习惯,公共车基本不准时,服务人员没有服务意识,办酒店入住,我在等房卡,两个服务员在商量中午吃什么。等办好了进到客房,才发现上个客人走了房间没有收拾。要知道这并不是小酒店。鹿港小镇忙的时候,吃一个菜要催三次以上,服务员一脸的不情愿,餐厅服务员的服务让我时刻有种想要投诉的冲动,想起在上海的红辣椒,普通的川菜馆,服务员时刻观察你的举动,帮你脱掉大衣,帮你倒茶。这个城市里的每个人都在很认真的生活,于是,有些时候,开始对家乡失望。
首先是没有合适的工作:
回到家乡后,我的职业工作并不好找,新疆因为物流和互联网落后,电商落后不是一点点。后来,母亲不顾我的反对,送礼托关系把我搞到了机关,事业单位。一年以后可以拿到事业编制。上班,没完没了的上班,维护稳定。上班基本没事做,有食堂有宿舍,所有的东西都不用花钱。就是不让你回家。好几天回一次家,只能在家待一天。有时候感觉自己像在养老院。你不需要太好的电脑知识,会重装windows设置打印机和路由器,在这里就是专家。会淘宝,简直就是大神。
其次,能力是个屁,人际关系和家族势力基本就是一切:
每天,机关服务大厅都有一些不满意的群众,有的吵架有的哭闹,我刚去的时候非常惊讶,但同事都习以为常。甚至好心的提醒我:不要管。管了就是你的事。
机关的小领导很势力,给我安排各种工作,在这种机关单位,你有能力,那你就多干活,没有能力你就混日子。反正月底大家拿的工资一样,一段时间后她知道我是某个领导的亲戚,对我的态度完全变了,什么都不用我干,还立即给我评了先进,让我哭笑不得。
你必须承认,这就是小城市的工作现状,你努力上劲根本没用,因为,谁该受到重用和提拔就是领导说了算,人脉和后台就是一切。
于是,新来的非编制临岗合同工,拿着全机关最低的工资,干着没完没了的活。大部分拿到编制的,日复一日的工作就是游戏,吃饭,睡觉,聊天,上网。
再次:你的仕途完全是巴结和拍马屁,而周围的人都劝你说:这是太正常不过的事情。
新上任的机关领导,每天的工作就是斗地主,每天中午都和某上级下派领导聊天,然后帮领导洗碗献殷勤,三个月后,他迅速升成了主任……回家后我诧异的跟母亲提起,母亲说很正常。反而认真的找我谈话,说我太死板,不懂得溜须拍马。我无法辩解,三观崩溃。
最后,所有人判断你是否成功的标准,就是公务员:
我有一个亲戚,托关系进了警察系统。35岁的他收入4000多元,开着20多万的车,,单位有食堂而且伙食很不错,却永远和一堆朋友去外边吃,用他的话说这就是人脉。因为看上一套别墅但父母不给买就和父母吵架。 经常问父母要钱,就是这样的一个人,母亲无比羡慕,认为他很优秀,他是公务员,出门有排场,有灰色收入,生活有保障,这一切深深的伤害着我的心,我有时候特别想离开家。只是,我舍不得化疗后身体虚弱的妈妈。一方面她年轻时候一个人干着两份工作,白手起家到给我准备了两套房子若干间商铺,把这辈子的一切都给了我,另一方面却又在试图更改我的价值观,告诉我要在机关时刻防着别人,要学会溜须拍马。她不许我做生意,不许我找私企的工作,只想让我进机关吃大锅饭。
这真的不是我家的个例,是几乎这座小城所有人的价值观。任何的事情都要靠关系。
而且,这里有一群,是一大群三观基本一致的亲戚,茶余饭后的话题就是谁家条件好谁家孩子收入高谁家媳妇抽了婆婆一耳光。参加家庭聚会没完没了的教育你学会溜须领导,要圆滑处事,要多懂点脑子不要那么善良,你不参加家庭聚会就是你不懂事你不合群。
除非你完全按照他们的意思办。
其实我知道,原本两个世界的人,他们看不懂我的内心的想法,他们没有经历。也许我也不懂他们的良苦用心。我回来的半年几乎没有跟父亲讲过话,因为他一直固执的觉得,那么多人在北上广打拼,有几个人拼成功了?还是回家乡做个公务员吧。
他们要的就是你回家,有份铁饭碗的公务员工作,找一个能照顾你的善良姑娘,赶快结婚生个孩子,过他们眼中完美的生活。生活本来就该是平庸的。
如今的我就生活在这种种不如意中,在看似富足却有些苦楚不安的状态下生活,我知道,我永远不会为了升职而去拍领导马屁给领导洗碗,我无法成为自己原本最看不起的人,我在机关单位永远没有前途。
我更知道我有一天会回上海的,哪怕会变成房奴按揭。我不在乎自己是否有房,因为我有理想。留在上海,让我的后代有更好的生活,已经是我此生最大的理想。
回答你的问题:
我也知道家乡安稳,衣食无忧,在家乡我不需要一分钱贷款,买辆好车拉着姑娘过平凡的生活。吃吃饭看看电影。每月1号的时候穿着大拖鞋到租客那里收租子。
我也知道北上广房价高也许要做一辈子房奴,买杯豆浆还要排队,坐地铁挤得像汉堡包,买辆车还要摇号,一个破车牌8万块。
那年幼稚的为了省钱不吃早饭的自己付出的代价就是如今每年体检都要观察随时准备切除的胆囊上的息肉。
你以为我不解亲情,为了一点钱放弃家乡到4000公里以外的城市拼的昏天黑地,看不到父母日益的年迈,就是为了回来过年聚会的时候喝着咖啡笑着告诉你我收入比你高?
你还说我虚荣我自私我价值扭曲?
我知道,再也遇不见那个陪我住650一个月的房子,给我做饭学削土豆皮弄伤手指,我发烧时整夜跪在地下给我换毛巾的女孩子了。
我再也遇不见为了一个页面的用户体验几个哥们争得面红耳赤约好下班吃火锅边笑边骂对方傻逼的铁哥们了。
再也没有在办公室被经理骂的狗血淋头然后回到家努力改一个用户体验报告到半夜2点半的自己了。
那些放弃了家乡富足生活去一线城市打拼的,都是有理想有希望的孩子,他们才是这个国家各个领域改变的希望。
大城市奋斗的孩子和那些小城市养尊处优的孩子,到底是谁才是价值扭曲的?你倒是说说看?
—————2014年2月3日00:03更新:—————
一下午获得2000多个赞的自己表示真的吓尿了。200多知友加我好友,几十条私信,还有好多知友在新浪微博的转载。评论,私信,大家的想法都有看到,真的很感谢大家。真没办法一条一条回复.
统一回复如下:
1.母亲化疗了四期完毕,现在靶向治疗,身体暂时没有大碍。只是特别虚弱。
2.有老乡说对家乡的看法有些偏激,说真的我很爱乌鲁木齐,(大盘鸡脑残粉吃货怎么可能不爱新疆?^_^)你们可以看这里我的回答:新疆为何屡屡被外省人「黑」?也许正是因为爱,才对这种现状不满。但其实这是所有非一线城市共同的状况,乌鲁木齐非个例。
也欢迎知友们来玩啊,来的给我私信啊,带你们吃好多好吃的,带你们认识美女啊。。。
3.还有部分待毕业,刚毕业的知友私信问及选择的问题,谢谢信任,可是我真的帮不了你们,还是要问你们自己。其实不是呆在哪好,只是适合不适合。有恋家情节的人,家乡是不错的选择。我身边喜欢安逸生活的同学真幸福爆了,在乌鲁木齐结了婚生了孩子整天在微信里晒照片。
有理想有抱负的出去看看,怕失败其实不必。年轻该有年轻的勇气。至少我觉得,如今,上海的那段经历让我不害怕在任何一个城市遇见困难站住脚。单这一条,够本了。
至于说家乡好的各种孩子,我觉得大多数一直强调家乡好的多是在家乡上过大学的,其实出去过都明白,外面的世界很精彩。所以,当年大学我毫不犹豫选省外。
4.关于父母强逼考公务员,事业编,国企和体制内问题,还有人说我提到梦想特别假,好吧。
2011年乔布斯去世,上海的朋友应该记得,整个上海的灯箱广告上到处都是凡客做的乔布斯广告,那句“活着就是为了改变世界”让很多人追捧。我们都被iphone的惊艳打败,羡慕苹果的敬业,对国产的东西恨铁不成钢。可是如果我们都抱着公务员心态,这些东西就都没有改变。到我们的孩子,我们孩子的孩子.总要有人改变,对吧?
不知道为什么,随着中国的发展和开放,我总觉得不久后,公务员,事业编会逐步洗牌(类似98年的国企大下岗,温州不是在试行公务员聘用制吗?),所以,真不建议往火坑里跳,哪怕不改变,一眼望到头的生活,难得一世。
——————————下面是相反的观点,仅供参考————————-
但是,王远成同学为什么放弃了上海呢,他说,因为父母身体不好,因为拗不过父母让他当公务员。打个不恰当的比喻:这就像一个衣食无忧的宠物,在赞美一条流浪犬所处的环境充满激情和理想,认为自己的生活无聊,却又用冠冕堂皇的理由解释自己不得不做宠物。
我相信王远成的真诚,但在我看来,他洋洋洒洒的文字,其实有撒娇的成分。
1,用家乡小城的不好,去对比大城市的不好,这种对比方式,不公允。大城市肯定也有不好的一面,但你不能为了对当下的不满,而故意忽略。你忽略了上海可能带给你的困扰:房价、户籍、孩子的教育。
2,既然认为公务员的生活无聊,即便不能离开家乡,但也可以离开这个行尸走肉的工作。当然,是拗不过父母,呵呵。
3,父母是阻碍你追逐梦想的人吗?不,父母是最爱你的人。父母以他们的阅历告诉你,所谓的大城市的梦想,根本就不靠谱。当你住在家乡的房子里的时候,你忘了上海的房价,当你身为家乡养尊处优的公务员的时候,你忘了在上海你被一些上海人称为“洋盘”、“王德彪”。
4,其实,你没忘记,只是为了强化家乡的不如意和赞美不属于你的上海,而故意忽略了。归根结底,潜意识里,你还是认同目前养尊处优的公务员生活。如果不是有这样的生活,你哪有心情,去俯视家乡和自己当下的种种不如意呢?
5总之,截至目前,你太幸运。如果你是一个农民的孩子,这一切的“烦恼”都没有了!因为,如果你的父母是农民,他们无法帮你这个大专生在家乡找到这份养尊处优的工作并让你有时间感慨。他们一定会为你在上海每月挣到1万元而骄傲,他们无论如何不会劝你放弃上海。他们会认为在上海无论多么艰辛,对于他们能够给你的生活,都优越很多。
不幸的是,准确地说,幸运的是,你的父母不是农民,也不是小市民。而是体制中人,是能够给你他们认为的体面的工作,还有几个商铺能收到不菲的房租的人。他们是三线城市,最大的既得利益者。他们让你回家,是为了继承这些利益,同时,他们对上海嗤之以鼻,并认为——那里的繁华,属于那里的既得利益者,跟你们没多大的关系。
写到这里,我不无沮丧认为:不要因为家乡的“不理想”,美化了所谓的“人生理想”,在阅尽人生的父母那里,这世界上,哪有什么人生理想。不幸的是,多年之后,你面对自己长大成人的孩子,也会像你现在的父母一样,保守,以延续既得利益为己任。
最后,我以自己的经历作为总结:作为一个经历过乡村、县城、地级市、省会城市,已经在北京谋生10多年,最终在大城市有立足之地的外地人,我当年之所以远离家乡到异乡找寻不确定的未来,是因为我早就确信,我的家乡根本就没有我的未来,而绝不是因为所谓的理想。
我家乡的未来,可能属于家乡的王远成们吧。
王远成们,还是安心地在家乡做一条幸福的咸鱼吧,你们若一边在家乡收着商铺的租金,一边在一线城市与我竞争工作机会和竞买高价房,我会彻底绝望的……

html元素代码原样显示,而不解析为dom结构

碰到的问题:
title中存在html代码,在浏览器中会被直接解析成为dom元素,希望是原样显示code才行;

转码修改前

转码修改前


转码修改后

转码修改后


实现方法:

//html元素原样显示,而不解析为dom结构
function escapeHtml(unsafe) {
    return unsafe
         .replace(/&/g, "&amp;")
         .replace(/</g, "&lt;")
         .replace(/>/g, "&gt;")
         .replace(/"/g, "&quot;")
         .replace(/'/g, "&#039;");
 }

JS调用:

var title = Base64.decode(video.title);
title = escapeHtml(title);
if(title.length > 24){
   title = title.substring(0,10);
}

http://stackoverflow.com/questions/6234773/can-i-escape-html-special-chars-in-javascript