Quantcast
Channel: IT社区推荐资讯 - ITIndex.net
Viewing all 11805 articles
Browse latest View live

豌豆荚要把旗下业务拆分独立运营,即将由一家公司变成四家

$
0
0

当 Google 在 2015 年 8 月把自己重组成一家伞形结构的公司,并希望借此来让旗下各块业务更好地发展时,很多人都比较看好 Alphabet 在未来的表现。现在,豌豆荚也打算用类似的方式调整自己公司的业务:把旗下豌豆荚一览、Snap 效率锁屏、开眼、SnapTube 等产品分别成立新公司,并独立运营。

现在的豌豆荚除了我们所熟知的应用分发业务外,内部还有豌豆荚一览、Snap 效率锁屏、开眼、SnapTube 等多款产品。随着应用分发的市场分布日趋稳定,豌豆荚其实也在不断探索新的业务增长点,比如在 2015 年 8 月份公开亮相的豌豆荚一览就被王俊煜形容为豌豆荚的第二次创业。

wandoujia

具体来说,这次业务调整之后:

1:豌豆荚的原有公司实体会继续专注于应用搜索业务,

2:以应用内搜索技术为基础的豌豆荚一览、Snap 效率锁屏将共同组成新公司,

3:短视频应用开眼将独自组成新公司,

4:针对海外用户的多媒体工具  SnapTube 也将独自组成新公司,据豌豆荚称其已拥有千万级的用户规模。

在各个产品独立运营之后,各自独立的新公司也将开放融资计划,以引入新的资金支持产品发展。至于王俊煜本人的职责会有什么变化,PingWest 品玩正在向豌豆荚方面进行求证,得到回复后将会在文中更新。

本文链接


从0到1构建美团压测工具

$
0
0

美团内部的RPC服务大多构建在Thrift之上,在日常开发服务的过程中,需要针对这些服务进行压力测试(以下简称压测)来发现潜在问题。常用的方法有:

  • 使用一些脚本语言如:Python、Ruby等,读取线上日志构建请求,用多线程模拟用户请求进行压测
  • 使用开源工具进行压测

然而,无论采取哪种方法,压测都是一个十分耗时而又繁琐的过程,主要痛点有:

  • 需要写很多代码解析日志,还原请求,对于比较复杂的请求,解析很容易出错
  • 需要搭建脚本或者工具的运行环境,通常这一过程比较耗时
  • 由于打压方法没有统一,导致打压的结果指标比较混乱,有的结果甚至以终端输出的方式展示,非常不直观
  • 对一个应用的打压测试,由于环境、代码的问题,导致组内同学很难共享

针对上述问题,提供一个简单好用的压测工具是十分有必要的。

是否有必要重复造轮子

在构建压测工具之前,对于一些现有的开源工具进行了调研。现在主流的压测工具主要有以下几个:

JMeter

JMeter是一个比较老牌的压测工具,主要针对HTTP服务进行打压,该工具在以下方面并不满足美团内部的压测需求:

  • 默认不支持Thrift的打压测试
  • 需要本地安装,并且配置复杂
  • 对于用户操作并不友好

Jmeter

twitter/iago

iago是一个由Twitter开源的压测工具,支持对HTTP、Thrift等服务进行压测,其主要问题如下:

  • 对每个压测应用都需要创建一个项目
  • 压测结果并不直观
  • 流量重放依赖本地文件
  • 项目依赖于一个较老版本的Scala,搭建不便
  • 相关文档比较少

除此之外,当时还考察了 GatlingGrinderLocust等一些常见的压测工具,都因为适用场景和美团的需求有些出入而排除了。

综上,针对当前压测工具的一些现状,构建一个简单易用的压测工具还是很有必要的。

目标

针对之前提到的痛点,新的压测工具主要提供以下功能:

  • 线上流量拷贝
  • 简单易用的操作界面(接入压测的时间应该控制在1小时以内)
  • 清晰的图表能反映压测应用的各项指标
  • 满足包括Thrift、HTTP等服务的压测需求

如何构建

抽象

目标已经明确,怎么实现呢?首先是抽象压测的过程。
一个典型的压测过程如图所示,首先在init方法里面,进行一些初始化的工作,比如连接数据库,创建客户端等。接下来,在run方法里面发出压测请求,为了保证能够对服务产生足够的压力,这里通常采用多线程并发访问,同时记录每次请求的发起时间和结束时间,这两个时间的简单相减就能够得到每次请求的响应时间,利用该结果就可以计算出TP90、平均响应时间、最大响应时间等指标,等压测结束后,通过destroy方法进行资源回收等工作。

Model

以上过程可以用接口表示,无论是压测Thrift服务还是HTTP服务,本质上都是这三个方法实现的不同。考虑到压测工具的灵活性和通用性,压测工具可以将这个接口交给打压测试的同学实现,而压测工具则重点实现多线程打压,打压结果的聚合等比较耗时的工作。

interface Runner {
    def init(Test app) // 初始化压测
    def run(Test app, String log) // 每次打压请求,传入log方便构建请求
    def destroy(Test app) // 压测完毕后,回收资源
}

拷贝流量

Thrift服务打压的难点之一就是如何简单地拷贝线上真实流量用来构建打压请求。一些大型的Thrift服务数据结构非常复杂,写打压脚本的时候需要很多代码来解析日志,而且容易出错。 因此提供一个简单好用的拷贝流量方法是十分有必要的。

在这里压测工具提供了一个叫VCR(录像机)的工具来拷贝流量。VCR能够将线上的请求序列化后写到Redis里面。

考虑到用户需要查看具体请求和易用性等需求,最终选取了JSON格式作为序列化和反序列化的协议。同时需要部署在生产环境,为了降低对线上服务的影响,这里采取了单线程异步写的方式来拷贝流量。

VCR

聚合数据

应用打压完成后,需要一些指标来评估压测结果,常见的指标有:

  • 最大响应时间
  • 平均响应时间
  • QPS
  • TP90
  • TP50

压测工具采用了 InfluxDB来完成数据的聚合工作。
以TP90为例子,仅需要一行查询就能实现需求。

SELECT PERCENTILE(response_time, 90) FROM test_series GROUP BY time(10s)

架构

整体而言,整个打压过程如下:

Loading Test

实践

拷贝流量

美团内部的服务大多使用Java来构建,VCR以Maven Package的方式提供给用户。

对用户来说只需要2行代码可以拷贝流量。

为了不影响线上服务,通常选取单台机器进行流量拷贝工作。


public class TestAppRPC implements TestApp.Iface {

    private Vcr _vcr = new Vcr("testapp"); // 指定拷贝流量的key

    @Override
    public TestResponse echo(TestRequest req) throws TException {
        _vcr.copy(req); // 拷贝操作
        long start = System.currentTimeMillis();
        TestResponse response = new TestResponse();
        return response;
    }
}

一旦流量拷贝完成后,通过Web界面,用户能够查看日志的收集情况和单条日志的详情。
vcr

压测逻辑实现

压测工具采用Groovy来进行编写。对每个应用来说,只需要实现 runner接口就可以实现对应用的打压。

interface Runner {
    def init(Test app)
    def run(Test app, String log)
    def destroy(Test app)
}

以Thrift服务为例:


class TestServiceRunner implements Runner {

    RPCService.Client _client
    TTransport _transport;

    @Override
    def init(Test app) {
        def conf = app.config // 读取应用配置
        _transport = new TFramedTransport(new TSocket(conf.get("thrift_service_host") as String, conf.get("thrift_service_port") as int))
        TProtocol protocol = new TBinaryProtocol(_transport)
        _client = new RPCService.Client(protocol)
        _transport.open()
    }

    @Override
    def run(Test app, String log) {
        TestRequest req = Vcr.deSerialize(log, TestRequest.class) // 将拷贝流量反序列化
        _client.echo(req) // 发送请求
    }

    @Override
    def destroy(Test app) {
        _transport.close() // 关闭服务
    }
}

创建应用

实现以上接口后,就可以对应用进行打压了。

用户可以通过Web界面创建应用,除了必填配置以外,用户可以按照应用灵活配置。

vcr

性能指标

用户可以通过直观的图表来查看应用的各种性能指标。

result

结束语

压测工具上线以来,已经接入了20多个应用,完成数百次打压实验,现在应用的接入时间仅需要15~30分钟。保证了美团服务的稳定和节省了开发同学的时间,使大家告别了以往繁琐冗长的打压测试。

欢迎对这方面有兴趣的同学一起讨论。

公共WIFI为何成为公众安全隐患

$
0
0

译者: 明诚原文地址: medium.com

请慎读这则关于公共WIFI的故事。

我们将一名黑客带到一家咖啡馆,在20分钟之内,他获得了所有人的出生地,就读学校,以及他们最近Google过的5件事等信息。

Wouter Slotnoom,34岁,在他的背包里随身带着一个比香烟盒略大、配有天线的黑色装置。我在阿姆斯特丹中心的一家咖啡馆见到了Wouter。那天天气很好,咖啡馆里几乎满客。有人在聊天,有人在用手提电脑工作,也有人在玩他们的智能手机。

Wouter从他的背包里取出手提电脑,并把那个黑色装置放在桌子上,藏在了菜单下面。一位女招待走过来,我们向她要了两杯咖啡和店里WIFI的密码。与此同时,Wouter打开手提电脑和黑色的装置,打开了一些程序,不久,屏幕上布满了绿色的文本行。渐渐地,我开始清楚地意识到Wouter的装置正在连接这个咖啡馆客人们的手提电脑、智能手机和平板电脑。

Wouter的屏幕上开始出现“尤里斯的IPhone”和“西蒙的MacBook”这样的字眼。黑色装置的天线截获了我们身边的手提电脑、智能手机和平板电脑发送的信号。

屏幕上开始出现更多的文字。我们能够看到我们身边的设备以前连接过哪些WIFI网络。其中,有些设备连接过的网络的名称由数字和随机字母组成,这让我们很难确定这些网络是哪儿的,但更多的WIFI网络则泄露了它们的位置。

我们知道了尤里斯以前去过麦当劳,可能在西班牙度过假(因为很多网络名称是西班牙文的),玩过赛车(他曾连接过当地一家著名的赛车中心)。马丁,另外一个咖啡馆的客人,他曾登录过希思罗机场和美国西南航空的网络。在阿姆斯特丹,他可能在白色郁金香宾馆留宿过。他还到过一家名为“斗牛犬”的咖啡店。

Session 1:

让所有人连接到我们伪造的网络

那个女招待给我们送来了咖啡,告诉了我们WIFI密码。在Slotboom连接上WIFI后,他可以为所有客人提供一个网络连接,并通过他的黑色装置重新定向所有设备的网络流量。

大部分智能手机、手提电脑和平板电脑会自动搜索并连接WIFI网络。它们通常会优先连接到一个之前登录过的网络。比如,如果你在火车上曾登录过德国电信的网络,那么当你再次来到同样的区域,你的设备就会搜索德国电信的网络。

Slotboom的装置能够记录这些搜索,然后以这些网络的身份出现。我突然看到我的家庭/公司网络的名称出现在了我手机的可用网络列表上,同样地,咖啡馆、旅馆、火车和其他我去过的公共场合的网络也都出现在手机的可用网络列表上。

Slotboom也能伪造一个虚假的网络名称,使网络用户相信他们连接到的是他们所在场所的网络。比如,某地的WIFI名称由随机的字母和数字组成——Fritzbox xyz123,Slotboom会提供一个叫做Starbucks的名称,他说,人们更愿意连接这样名称的网络。

我们看到越来越多的客人登录到我们的伪造网络,黑色装置的指示音不停地鸣叫。已经有20部智能手机和手机电脑是我们的啦。如果Slotboom愿意,他可以现在就毁掉人们的生活:他可以获得他们的密码,可以拿到他们的身份信息,可以窃取他们的银行账户。今天晚些时候,他向我展示了这一切如何办到。为了让他展示他能做到哪些,我允许他黑进我的设备,尽管他也可以用任何人的正在搜索网络的智能手机和连接到WIFI的手提电脑。

一切设备,几乎没有例外地都能被破解。

公共WIFI并不安全这件事确切来说已经不是新闻,然而,这样的消息却一直在重复着。当前,全世界有超过14.3亿的智能手机用户,其中美国有超过1.5亿。在美国成年人中,有超过9200万人拥有平板电脑,超过1.55亿人拥有手提电脑。每年,世界范围内的手提电脑和平板电脑需求仍在增长。在2013年,全世界大约销售了2.06亿部平板电脑和1.8亿部手提电脑。几乎每个可携带设备的拥有者都连接过公共WIFI:在喝咖啡时、在乘火车时或者是在住旅馆时。

好消息是:有些网络是受到了较好保护的,一些电子邮件和社交媒体服务通过加密的方式使其比竞争者更加安全。但是,和Wouter在这个城市穿梭了一天之后,你会发现几乎所有连接过WIFI的东西都能够被破解。一份来自 威胁智能感知咨询公司RIsk Based Security的报告估计,2013年世界范围内有超过8.22亿份记录被暴露,包括信用卡账号,生日,医疗信息,电话号码,社会安全号码,地址,用户名,电子邮件,姓名和密码。这些记录的65%来自于美国。根据信息技术安全公司Kaspersky Lab的估测,2013年全世界有3730万用户和45万美国人成为网络钓鱼或者网络嫁接攻击的受害者,这意味着付款明细通过被黑的电脑、智能手机或者网页被窃取了。

一份又一份的报告显示数字身份欺诈正在成为一个日益严峻的问题。现在的黑客们在攻击时有很多不同的手段。开放的、没有保护的WIFI网络的盛行使得黑客们如鱼得水。荷兰国家网络安全中心(安全和司法部的一个分支)给出了以下建议:不建议在公共场所使用开放的WIFI网络,如果使用了开放的WIFI,应尽量避免用其从事与工作或财务相关的活动。

Slotboom称自己为“有道德的黑客”或者“一个好人”,一个想要揭示因特网技术潜在危险的技术爱好者。正如今天他所做的那样,他通过展示危害是如何轻而易举地发生的,来为个人和企业提出保护其信息安全的建议。因为这实在是小孩子的把戏:设备很便宜,拦截流量的软件很容易下载到,而且很容易操作。“你只需要70欧元,普通的智商,和一点耐心就可以了。”他说。在这里,我会尽量避免谈到更多关于技术方面的细节,比如破解所用到的设备、软件和应用等。

Session 2:

览姓名、密码和性取向


带着Slotboom的背包,我们来到了一家咖啡馆,这家咖啡馆以能够在拿铁咖啡泡沫上拉出美丽的花样而闻名,同时这里也是自由作家们用手提电脑搞创作的热门场所。这儿的人们都正在聚精会神的看着他们的屏幕。

Slotboom打开他的装置。经过与之前相同的操作,在几分钟时间里,大约有29台设备连接到了我们的装置上。我们再次看到了设备的Mac地址、登录历史和一些设备主人的姓名。在我的要求下,我们现在要获取更多信息了。

Slotboom打开了另一个程序(也能轻易下载到),利用这个程序,他能从那些连接到他的设备的智能手机和手提电脑上获取更多的信息。我们能看到那些手机的型号(三星Galaxy S4),不同设备的语言设置和设备操作系统的版本(IOS 7.0.5)。若一台设备使用了有漏洞的过时的操作系统(过时的操作系统通常都有着已知的漏洞),黑客将很容易地利用这些漏洞对该设备进行攻击。一批咖啡馆客人的样本显示:所有连接到Slotboom的装置上的设备都没有安装最新版本的操作系统。它们安装的这些过时系统的一个已知的漏洞已被公布在了网上。

现在我们能够看到一些充斥在我们身边的真实的网络流量。我们看到一个MacBook的使用者正在浏览Nu.nl网站,许多设备正在使用WeTransfer发送文件,有的设备正在连接到Dropbox,有的则正在访问Tumblr。我们看到有的人刚刚登陆了FourSquare,也看到了那名登陆者的姓名。在Google他的姓名后,我们认出了他就是坐在离我们几英尺远处的那个人。

大量的信息涌了进来,甚至是从那些目前没有在工作或者网上冲浪的客人那里涌了进来。许多邮件程序和应用持续地连接到它们的服务器——这是一个设备接收新邮件的必经步骤。对有些设备和程序来说,我们能够看到它们正在通过哪个服务器发送什么信息。

接下来的信息就相当的私人化了。我们看到一位访客的智能手机上装有一款同性恋约会应用“Grindr”。我们也能看到他使用的智能手机的名称和型号(iPhone 5S).我们到这里停下了,但是如果想要找出这部手机属于谁,也是非常容易的。我们也看到一个人的手机正在试图连接到一个位于俄罗斯的服务器,同时正在发送密码,而这个密码是我们能够截取的。

Session 3:

获得职业、兴趣和关系问题等信息

许多应用、程序、网站和各类软件都使用了加密技术。这些都可以保证从一个设备上发送和接收的信息不会被未经授权的窥视者看到。但是,一旦用户连接到Slotboom的WiFi网络,在破解软件的帮助下,这些安全措施可以被相对容易地绕过。

让我俩惊讶的是,我们看到了一个应用正在向一家推销在线广告的公司发送个人信息。另外,我们看到了定位信息、手机的技术信息,以及WiFi网络的信息。我们也可以看到一个正在使用 社会化书签网站Delicious的女人的名字(包括名和姓)。Delicious允许用户共享网站、书签和他们感兴趣的所有事。原则上,Delicious用户分享的网页是公开的,但当我们意识到基于这些信息,我们能知道这个女人的多少事时,我们不禁感到自己像个偷窥者。

首先,我们搜索了她的名字,这使我们能够立刻确定她的模样,以及她坐在咖啡店的什么地方。我们知道了她出生在另外一个欧洲国家,只是最近才搬到了荷兰。通过Delicious,我们发现她访问过一个荷兰语课程网站,并且把一个有 荷兰语整合课程信息的网站添加到书签。

在不到20分钟里,我们获得了那个坐得离我们10英尺远的女人的信息:她在哪儿出生,在哪儿学习,她对瑜伽感兴趣,她收藏了一个卖防打鼾咒语的网页,最近访问了泰国和老挝,并对一个提供维护关系的技巧的网站有着特别兴趣。

Slotboom向我展示了更多的黑客技巧。利用他手机上的一款应用,他能够改变任意网站上的特定单词。例如,每当提到“Opstelten”(荷兰政客的名字)这个词时,人们将会看到页面上呈现是“Dutroux”(被定罪的连环杀手的名字)。我们测试了这个操作,并且成功了。我们尝试了另一个操作:任何人加载带有图片的网站时都会看到Slotboom选定图片。如果你想要的是一个恶作剧,这听起来将会很有趣。但这个手法也可以让手机加载到儿童色情图片,而持有儿童色请图片是一种犯罪行为。

截获密码

我们又来到了另一家咖啡馆。我向Slotboom提出最后一个请求,希望他能向我展示如果他想伤害我,他会怎么做。他让我访问Live.com(微软邮箱网站)并输入一个随机的用户名和密码。几秒钟后,我刚刚输入的信息出现在了他的屏幕上。“现在我拥有了你邮箱账号的详细登录信息,”Slotboom说,“我首先会更改你的邮箱密码,并且向你使用的其他服务表示我忘记了密码——大部分人使用同一个邮箱注册所有的服务——然后那些新的密码就会发送到你的邮箱,这意味着我也可以支配你使用的所有服务了。”我们在Facebook上做了同样事情,Slotboom同样能够轻易截获我输入的登录名和密码。


Slotboom使用的另一个操作是转移我的网络流量。比如,每当我要访问银行的网页时,他能通过某个程序把我的访问重新定向到他自己的网页:一个看起来与受信任网站完全相同的克隆网站——实际上这个网站是由Slotboom完全控制的。黑客们称之为DNS欺诈。我输入的信息被保存在由Slotboom拥有的服务器上。在20分钟内,他获得了登录细节,包括我的Live.com、SNS、Facebook和DigiD账户的密码。

我再也不会连接那些没有采取安全措施的不安全公共WIFI了。

除了Slotboom,文中其他姓名皆为虚构。我们对截获的信息极尽小心地进行处置,并在我们的最后一次见面后将其销毁了。

Android开发Tips

$
0
0

欢迎Follow我的 GitHub, 关注我的 CSDN.

介绍一些, 在Android开发中, 会经常使用的小知识点.

Android

1. Download文件夹

绝对路径

/storage/emulated/0/Download/xxx

遍历

        File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
        File[] files = file.listFiles();
        for (int i = 0; i < files.length; ++i) {
            Log.e(TAG, files[i].getAbsolutePath());
        }

2. ButterKnife多参数

绑定多个参数

    @OnClick({
            R.id.dialog_dau_share_wx,
            R.id.dialog_dau_share_wx_timeline,
            R.id.dialog_dau_share_weibo,
            R.id.dialog_dau_share_qq
    })

3. submodule的使用方法

submodule与git可以保持实时同步.
添加

git submodule add https://github.com/SpikeKing/DroidPlugin.git DroidPlugin

使用

git submodule update --init --recursive

导入, 路径多于一个, 前面不添加冒号(:).

include ':app', 'DroidPlugin:project:Libraries:DroidPlugin'

引用

compile project(':DroidPlugin:project:Libraries:DroidPlugin')

4. 更新Github的Fork库

参考

5. 检测App是否安装

使用PackageManager.

// 检查App是否安装
private boolean appInstalledOrNot(String uri) {
    PackageManager pm = getPackageManager();
    boolean app_installed;
    try {
        pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
        app_installed = true;
    } catch (PackageManager.NameNotFoundException e) {
        app_installed = false;
    }
    return app_installed;
}

6. Canvas重绘

invalidate(). 参考.

7. 按钮的默认点击效果

波纹效果(5.0+), 阴影效果(5.0-).

android:background="?android:attr/selectableItemBackground"

继承样式

<!--按钮--><style name="PersonInfoButton" parent="@android:style/ButtonBar"><item name="android:layout_width">@dimen/d80dp</item><item name="android:layout_height">@dimen/d32dp</item><item name="android:textSize">@dimen/d14sp</item></style>

注意: @android:style/ButtonBar

8. Proguard去除Log信息

默认删除log.i, .v, 可以指定删除.d, .e. 参考.

# 删除Log
-assumenosideeffects class android.util.Log { *; }
-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** e(...);
}

9. 简化数据库的使用

在使用数据库时, 操作有些复杂, Sugar库简化使用方法. 参考.

compile 'com.github.satyan:sugar:1.3'

10. 点击被填充链接的EditView.

通过在结尾处添加一个不占位的空格(“\u200B”).

    // 设置可以点击和编辑的EditText
    private void setEditClickable() {
        mEtEditText.setMovementMethod(LinkMovementMethod.getInstance());
        Spannable spannable = new SpannableString("http://www.baidu.com");
        Linkify.addLinks(spannable, Linkify.WEB_URLS);

        // 添加了零宽度空格(​\u200B​​​), 才可以点击到最后的位置, 否则会触发链接
        CharSequence text = TextUtils.concat(spannable, "\u200B");

        mEtEditText.setText(text);
    }

OK. That’s all!

作者:u012515223 发表于2016/1/9 7:49:14 原文链接
阅读:0 评论:0 查看评论

如何实践设计原则

$
0
0
大家都知道遵循设计原则是开发高质量软件的重要基础,但实际运用时并不容易。Booch在<< 面向对象分析与设计>>中提出了四个基础原则:
  • 抽象   核心思想是不变性的概念。去除不关心的属性,而强化重要的属性,帮助人们思考要做什么。
  • 封装  核心是分离关注和信息隐藏,让程序借助最少的工作进行可靠的修改。
  • 模块化  核心思想是分而治之,各个模块应当高内聚、低耦合。
  • 层次结构  核心是对抽象的分级和排序,可以简化对系统的理解。

这些概念看起都比较容易理解,但实际运用并不简单。所以<< Refactoring for Software Design Smells: Managing Technical Debt>>(哪位手上有这个资源,可以分享一下。)的作者们使用所谓的使能技术(enabling techniques),为每个原则提出实践的建议: 


详细内容,请查看原文: How to apply design principles in practices.

作者:HorkyChen 发表于2016/1/9 3:24:23 原文链接
阅读:143 评论:0 查看评论

如何优雅地改变他人?学习这8个心理技巧吧!

$
0
0

译:陈雪梅 | 壹心理专栏翻译

你对心理调节感兴趣吗?无论是自我调节还是帮助他人调节?

下列8条建议摘自于心理博客上发布的近期心理研究。

前4条建议是关于如何进行自我调节。

1.自我调节的首要条件是自我肯定

如果贸然提议别人进行调节,通常他们会进入自我防御状态,并试图证明自己当前的行为是正确的。

而通过简单的自我肯定练习能够打开人们的思维定势,进而调节自身的行为。

自我肯定练习就是想想什么对自己才是重要的——可能是家人、工作、宗教信仰或任何有特殊意义的东西。

当人们自我肯定时,他们会发现改变也不是那么难以接受了。

2.成长心态

促进自我改变的关键就是要相信自己能够成长,能够改变。

研究人员发现相信人可以改变的青年能更好地处理中学的各种挑战。

此外,研究人员还发现那些坚定人可以改变的人们还具有以下特征:

压力更小;焦虑更少;自我感觉更加良好;身体健康状况更好。

心理学家称之为“成长心态”。

3.人的性格真的能够改变吗?

多年来,人格心理学家一直坚信:人的性格是无法改变的。

然而,近15年来,这个观点发生了变化。

人格心理学家一度认为:人到了30岁,性格就定型了,不会改变了。如今,有证据表明人到了30岁性格仍会有些许改变。

该项研究证明:人的性格是可以改变的,甚至是两年内也会有所变化。

事实上,这两年性格的变化程度与其他人口统计学变量的改变一致,例如婚姻状况、就业情况与收入情况。

4.只需要说“停止”

这里有一条改变习惯的小建议:

德国雷根斯堡大学近期通过试验发现:人们可以刻意“忘记”长期的习惯。

他们发现:试验后,仅仅通过告诉你要忘记某个习惯,你就真的可以“忘记”了!

5.三个步骤帮助别人进行改变

首先,这个人得愿意进行改变。

人们通常会不自觉地维护自己的习惯,行为或思维方式的形成是需要很多年的。

其次,要热情,并且给予对方支持。

要记住你是一个有帮助的朋友,你的目的是帮助对方获得幸福,而且你仍然接受对方的现状。

再次,帮助对方树立自我意识。

习惯的核心特征是人们无意识地做某件事情,并且在相同的情境下重复地做这件事情。

所以改变习惯的重点就是辨别习惯出现的情境。

你可以委婉地指出促使他们形成该习惯的因素(旁观者清),以帮助他们辨别习惯出现的情境。

6.让人们自己说服自己

改变人的思维的难度不亚于改变他们的行为的难度。

但是自我说服是一个很不错的点子。

引导人们自己说出你的观点。

最近研究发现:同样的观点,人们自己提出比被动听说更能说服他们。

这就说明:我们自己提出的论点对我们更有说服力,即使该论点与我们自己的观点相悖。

这和吸烟是一个道理。

相较于被动收到一条反对吸烟的消息,人们更倾向于在主动发出一条反对吸烟的消息后掐掉烟头。

你能够激励别人说服他们自己进行改变吗?

7.确认偏向

改变思维的主要心理障碍之一就是确认偏向。

确认偏向就是人们通常会搜寻那些符合他们世界观的信息,无视那些不符合的信息。

改变确认偏向的方法说起来容易,做起来难。

你必须想出并测试对立假设。

听起来确实很简单,但是这不是我们的天性。

费劲脑力去思考为什么我们会被误导、被误传,这并不有趣。

试着指出那些不符合他们世界观的事实真相。

8.8个步骤改变思维

改变别人的思维并不是告诉这些人他们错了,即使他们真的错了。

想要对方信服必须讲究说话的方式。

劝说必须简明扼要,并且不断重复,你还需要抨击错误信息的源头。

原题:自我改变和改变他人的8个心理技巧

原文链接: http://www.spring.org.uk/2015/06/change-can-change-others.php

作者:JeremyDean

责任编辑:serotonin

e14efb72474ff131bc889d8853a21e5a.png

用户运营究竟在运营什么?

$
0
0

一说起用户运营是做什么的,可能大家都可以说出不同的见解。我在这方面其实也还是新人,毕业两年多,也是因为机缘巧合,从一个不了解互联网是什么,到现在总算对这个行业有了多少了解。而在这个用户运营这个岗位上的时间也不多,一路上也多亏了很多前辈的指点和教导。虽然资历尚欠,但是他们说要想进步就要懂得总结,所以才斗胆写一下自己对用户运营的体会和心得。

yinghu

用户运营做的事情也很杂,不同的公司和不同的产品可能都会不同。例如我是智能硬件产品的用户运营,可能对产品要十分熟悉,在用户面前是个专家,但是在研发面前却是用户的代言人,一直替用户讲出产品不足之处。我觉得我虽然做很多事,但是总结起来无非就是几点:搭建完整的用户体系,引导用户产出优质UCG,为产品谋求更多的附加值。

001

搭建完整的用户体系

在工业时代,对于很多的企业而言,购买自己产品的不叫用户,而是客户。因为他们购买了自己的产品,所以在法律责任上会对客户负责,但是极少的企业会主动的联系客户,除非是为了推销新的产品。但是当来到了互联网时代,尤其是免费的概念横行,企业为谋求盈利,必须要让产品有二次盈利的能力。此时,“粉丝”的概念变得火热起来,它不再单纯指喜欢明星的某一群人,也是指喜欢某一款产品或某一项服务的那一群人。

但是,当你的用户达到了一定量级的时候,你就必须做出选择,要从中筛选出优质的用户进行重点维护,因为没有任何一家企业可以真的做到对每一个用户都有完美的服务。筛选用户的过程也就大家熟悉的“漏斗法则”。

把用户分等级之后,处理问题就有了优先级。对于那些在领域内有一定话语权的KOL用户,就必须给予他们最大的空间,不要过多的干涉,要让他们自主的帮你去宣传产品。而对核心用户就要加大引导力度,要让他们对产品有更多的依赖,让他们在产品的社群里面有一定的影响力。而对普通用户要在故障处理和意见反馈上做到响应迅速,还要让他们在社群或者社区有一定的归宿感。

引导用户产生优质UCG

不同性质的产品可能对UCG的数量和质量有不同的要求,例如简书、知乎就是靠用户产生内容的社区,所以简书和知乎极度依赖UCG,他们必须邀请不同领域的大腕,也就是KOL来产生内容,从而带动其他用户生产内容的积极性。所有,可能产品开始要求的是数量,而后通过运营的干涉,让质量也赶上来。

而类似于电视盒子或者手机这样的智能硬件,对于UCG的需求较少,而UCG的类型可能也多数为产品开箱评测、玩机教程等更有技术含量的内容。所以我们可能会找一些科技类或者相关领域的达人,免费送产品给他,请他给我们写评测。这样的内容力求真实,他也会跟对内容有疑问或者其他意见的人有更多的互动,从而达到宣传的效果,这应该也是多数硬件产品新品上市必做的一个项目吧!

这里就是体现KOL用户价值的地方,一篇优质UCG,可能带来的效果比多篇软文和硬广好的多。

提高产品附加值

对于用户而言,产品的价值等同于他购买产品的价格或者花费时间的多少。用户花钱买了1000块钱买了手机,那么手机的价值就是1000元;如果用户花了2分钟下载了一个软件,那么这个软件的价值就是用户的2分钟。用户可能不会自主的去想,这个程序员多么努力,写出这么漂亮的代码;那个设计师多么有情怀,做出了这么完美的设计。

用户从来不会这样想,所以就需要运营人员告诉他们:我们为什么要做这个东西,我们做这个东西是给予你们什么。在这样的过程中,才会让用户感受到产品的温度,用户才会慢慢了解到产品原来不止值那么多钱。

苹果手机也不是贵在硬件上,乔布斯就是让用户感知到了他的用心,让用户体验到了这个产品价值远远大于购买产品的价格。所以,这个过程就需要运营人员带着用户去创造不同的玩法,要把产品玩出更多的价值。

周鸿祎说过,免费的东西才更要做到极致,因为免费的东西别人更不懂得珍惜。如果一个手机很便宜,外壳刮花了可能就会换掉。免费的软件更是如此,体验不好马上卸载。所以,互联网的硬件不赚钱就要靠软件赚钱,软件不赚钱就要靠服务赚钱。

那么优质的服务怎么让用户感知,就是靠的就是前线的客服和用户运营人员,这也是用户运营的价值所在。只有留住了用户,才会有以后的一切无限可能。

 

本文由 @一个人的村庄 原创发布于人人都是产品经理 ,未经许可,禁止转载。


人人都是产品经理微信公众号:woshipm,随时随地,学产品、学运营,听讲座。

2016年热门技术方向预测

$
0
0

英文原文: 2016 Predictions for Developers

关于 2016 年对技术的预测众说纷纭,我有一些在 MongoDB 公司的朋友和我说了他们的预测。关于 Kafka 和 Container Orchestration 的预测看来非常正确。我还想补充的一点是,微服务仍将很重要,以及 Apache Spark 将会如同星星之火燎原。我觉得 Scala、Go、Python 将急剧上升,Java 将保持稳定。很多很酷的新项目和技术会以大数据,云和 devops 的工作形式出现。让我们一起拭目以待吧。

数据开始在会议上展露头角:CDO(开发总监)成为财富 500 强的必备头衔

CIO 关注于用基础设施来处理数据。CDO 的任务是让组织将数据当作资本:使得数据可被访问、管理和支配,并找到提取数据值和减少违规风险之间的平衡。

日益增长的 Kafka:数据流连接数据库到强大的现代业务 app

Kafka 将成为企业数据基础架构的重要结合点,促进建立智能化、分布式的系统。随着 IoT、全球性部署、以及微服务的增长,在数据被存储在数据库之前捕捉和控制数据,变得越来越重要。Kafka 和其他的流系统,如 Spark 和 Storm 将补充数据库作为企业堆栈的关键部分,用以管理跨应用程序和数据中心的数据。

容器之争已经结束:Container Orchestration 之争的烽烟却已燃起

Docker 显然已经赢得了容器之争的胜利,每个人现在都以此为标准。当前战斗已经转移到了 Container Orchestration,并且数据中心的控制正处于紧要关头。有赢家,也有输家,还有一些意外。有趣的是,胜利者将是现任供应商——Red Hat 和 VMW——他们指明了如何从 Docker 和 Google(Kubernetes)获取开源码,构建到自己的商业产品中,并销售给现有的买家。

应用性能瓶颈从存储转移到 CPU 和网络

在十多年来,性能瓶颈压倒性地取决于存储层。在此期间,CPU 和网络的发展速度保持平稳,并没有太大的性能问题,因为存储层才是短板。随着存储中的关键创新——英特尔的 3D XPoint,一种 NAND 闪存的新形式,可以增加密度、耐久性和性能,还具备了 NVME SSD 的绕过文件系统的更佳更快的接口——企业架构师现在需要集中精力去优化位于 CPU 和网络层的应用程序。结果就是,应用程序的代码将需要被优化,以及部署架构——和内存计算,还有保持全球范围内用户附近的数据副本一样——将成为关键。

-

译文链接: http://www.codeceo.com/article/2016-predictions-for-developer.html

翻译作者: 码农网 – 小峰

本文链接


2015年云计算最具颠覆性的9大创新

$
0
0

3417eb9bbd9017f9612a08
1、Cloud是即成事实,并且混合云是一个用户首选的策略

混合云模式可将公有云和私有云的优点融于一体。众多大型 企业需要私有云和公有云对接,在私有云和公有云之间自由切换,将对混合云架构产生巨大需求。

调查显示,93%的组织已经在IaaS上运行应用或者正在评估IaaS相对于2014年74%的比例,82%的企业已经有了混合云的策略。

大企业很大程度集中在了“云的入门者”和“云的开拓者”上。在2015年,有很多的企业进入了“云的开拓者”的行列,“云的开拓者”比例上升到了38%。

大的组织正努力向着云前进,只有3%的大企业受访者希望仍然停留在“云的观望者” 阵营。

大企业希望使用多个云,82%的受访者希望支持多云策略,而2014年这个比率只有74%。今年的调查发现,55%的大企业正在计划实施混合云,13%希望使用多个公有云,而14%则希望使用多个私有云。

2、公有云的使用比例领先,但私有云承载了更多的应用

调查显示,88%的组织正在使用公有云,而63%在使用私有云13%的企业在公有云上运行了超过1000个VM,而22%的企业在私有云上云心过了超过1000个VM。

虽然公有云的使用在数量上保持了领衔。私有云却在使用程度上占了优势。只有13%的大企业受访者在公有云上运行了超过1000个VM,但是却有22%在私有云上运行了超过1000个VM。对比起来,大企业通常都有长期运行的虚拟化环境。在使用程度上保持领先的私有云,代表了现有的虚拟环境已经被增强或者重新标注成私有云。但是,当我们朝前看的时候,大企业正期望增加他们在公有云上的使用程度。大企业正在均分他们在公有云和私有云上的使用程度,而非云的虚拟环境却保持不变。

3、DevOps在上升;Docker开始起飞

自从2006年AWS的创立,云和DevOps就紧密的结合在了一起。对于许多的组织来说,云基础架构是一个用来支持持续集成和持续交付,以及发布周期的关键支柱,而这些都是由DevOps 驱动的。2015年的调查报告显示对DevOps的使用程度在持续增长达到了66%。大企业由于其规模带来的复杂性,更是在寻找更高的灵活性。在 DevOps的使用比例上,大企业的71%要高于SMB的63%。

随着DevOps的增长,可用的工具在增多。DevOps 团队经常会使用一些自动化工具,如Chef、Puppet、Salt 以及Ansible。在过去一年中,Docker,一种基于容器的实现方案,作为 另一种在基础架构上部署代码的方式,正以风暴的速度席卷这个领域。所有的这些工具都和一些提供多云架构的云管理平台配合使用。Chef和Puppet仍然是最常使用的DevOps工具。然而,Docker,尽管是第一年,已经取得了 13%的支持率。而超过35%的受访者提到他们将计划使用Docker。

4、AWS继续领跑公有云,Azure则在企业得到了不错的进展

在2013年之后更多的云服务提供商进入市场,我们能看到清晰的竞争蓝图。2015年Microsoft 和 Google 以及 VMWare vCloud Air的变化不可谓不大。在私有云战线上,VMWare 和 OpenStack 继续演进各自的方案,而 Microsoft 则引入了 Azure Pack,后者在微软私有云方案上提供 Azure 公有云的 API。

调查显示,57%的被访者采用了AWS,而Azure比例从2014年的6%增长到12%;企业受访者中,相对于AWS的50%采用比例,有19%采用了Azure IaaS;紧接AWS和Azure之后,有10%的企业采用了vCloud Air(译者注:VMWare的混合云)。

同样,在许多特定的云的挑战上有着巨大的增长。当云被采用的范围扩大,公司沿着他 们的云端路线前进,对于稀缺的云专家的竞争加强了。因此,云资源和专家的匮乏是27%受访者认为的主要挑战。 另一个被经常提到的挑战是多个云服务的管理,当企业增加他们云服务的数量,他们开始为不同云服务提供商上的可控、自动化、监督能力 而烦恼。

5、私有云在2015年基本没有发生变化

相对于2014年,2015年的私有云市场变化不大。调查显示,VMWare仍然保持领先,OpenStack也保持很高的热度。最大的变化在于微软的Azure Pack,虽然是第一年,但7%的受访者表示已经在使用了。私有云发展缓慢的一个主要原因是由于部署私有云环境的复杂造成的。但是,这个热度仍然很高,可能会导致明年一个再次的加速增长。

在大企业里面,VMWare是最广泛使用的。微软的System Center 保住了第三的位置,而OpenStack的使用率则增长到了18%。微软的Azure Pack也已经有11%的大企业受访者开始使用。

在SMB市场里面,VMware vSphere保持了23%的领先地位,而OpenStack 则有 10%。

6、企业的核心IT团队是云服务的关键力量

虽然早先云的使用是由业务部门率先尝试的,但现在核心IT团队正在增加重视程度,并付费。大企业 IT部门正快速的向着云服务代理的角色变化(并不仅仅是私有云),来满足内部客户的需求和期望。他们希望通过创建企业服务门户来提供更便捷的公有云和私有云资源的访问,而同时控制成本和保持监督。

调查显示,62%的企业证实他们的核心IT团队是做出云端采购决定的主要力量;43%的IT团队在提供一个自服务门户来提供对云端服务的访问,而41%的企业正在考虑开发一个门户。

但是,企业内部的核心IT团队和业务部门在核心IT团队应该扮演什么样的角色上有着截然不同的观点。业务部门通常认为核心IT团队的角色是有限的。这种冲突的起因主要是来自于业务部门对于业务更灵活的需求,而且他们认为核心IT团队在云的采用上的太多过于谨慎,特别是公有云服务。核心IT团队对云安全的关心程序下降了,因此,核心IT团队增加了他们对公有云的注意力。

除此之外,核心IT团队得到从内部业务部门的更大更清晰的声音,也就是后者业务快速开通的需求。

虽然核心IT团队正在主导着企业云服务的导入,对云业务使用的监督却在2014年一年停滞不前。相当大一部分企业仍然缺少对云服务使用监督的关键要素,包括一个确定的云服务提供商;关于什么样应用应该迁移到云端的指导纲领;云服务的SLA以及容灾策略;以及基本的审批流程。企业在如何实现云端成本控制上取得了一些进步。

7、市场规模增长 创新创业应用成为亮点

云计算正在成为IT产业发展的战略重点,全球IT公司已经意识到这一趋势,纷纷向云计算转型,也带来市场规模的进一步增长。

今年第一季度,全球云计算基础设施增长了25.1%,达63亿美元。这是过去5个季度中增长最快的季度之一。其中,私有云基础设施支出同比增加24.4%,达24亿美元,公有云基础设施支出增长25.5%,达39亿美元。

这些数据反映出一个也许我们还未直观感受到的事实:云计算正在快速从“建设期”向“普及期”过渡。随着移动互联网的飞速发展,传统业务互联网化已成发展趋势,超高负载、多并发对传统企业架构带来巨大冲击,促使企业应用向云迁移。

具体到国内市场,中国用户需求“云化”的主流途径是基于现有数据中心虚拟化实现。另外,移动应用正快速改变传统的业务模式和行业格局,成为中国用户的投资重点。

各国云市场需求也许不尽相同,但却共同构建了一个庞大的云计算版图。

8、云计算企业拥抱开源软件 SaaS服务成为创新热点

企业物理边界的逐渐模糊及移动互联网使用的普及,使得移动办公的需求越来越迫切。越来越多的企业表示将在Saas层面增加预算投入,而移动云办公领域将成为优先考虑的项目之一。

2015年云计算企业纷纷拥抱开源软件。开源软件正在成为推动云计算技术发展的重要动力。2014年,包括华为、华胜天成在内,越来越多的云服务企业和用户开始使用开源云平台,并且参与开源云平台的建设。目前,华为已经成为OpenStack峰会的金牌会员,围绕OpenStack构建云计算解决方案的研发人员超过500人。华胜天成则推出中国首家OpenStack服务中心。

2015年健康、教育等民生服务创新成为热点。2014年,个人领域的SaaS服务成为云计算创新的热点,大型互联网企业在健康、教育、交通等领域不断创新,推出个人服务产品。电信运营商基于数据优势,在全国各城市布局教育、健康等领域的信息服务。云计算中小创业公司则将教育作为创业首选领域,51talk、91外教、云校等一批创业公司都进入教育云领域。

2015年IaaS仍是企业级云服务创新重点。节省高昂的IT投入费用、提高IT设施的利用率、降低企业信息化成本,进而提升企业的智能化程度,提升生产效率、提高产品附加值是企业使用云计算的主要目的,也是近两年云服务厂商提供企业级云服务的方向。目前,受限于市场普及程度和企业信息程度,企业级SaaS服务进展缓慢。2014年,企业级云服务的多数进展依然集中在云主机、云存储、网络服务等IaaS层服务。

9、在中国,云计算相关政策不断,政策利好显现

年初,国务院发布了《国务院关于促进云计算创新发展培育信息产业新业态的意见》,明确了我国云计算产业的发展目标、主要任务和保障措施。7月,国务院又发布了《关于积极推进“互联网+”行动的指导意见》,提出到2025年,“互联网+”成为经济社会创新发展的重要驱动力量。11月,工业和信息化部印发《云计算综合标准化体系建设指南》。

无限利好的前景为云计算企业的升级与转型提供了契机。统计显示,我国云计算的市场规模2010年就已达到350亿元,2013年更是达到900亿元,2014年超过1000亿元,年均发展增速达到37%。从行业来看,云计算提供商解决方案日趋成熟,应用领域不断扩展,产业链基本形成。业内人士普遍认为,我国云计算行业正在走向成熟,处在爆发的前夕,信息设备国产化的步伐未来有望进一步加快,云计算行业有望迎来爆发式增长。

尽管我们已经见证了各种令人叹服的创新,但一切才刚刚起步。在2016年及以后,云将会带来触及我们生活的各个方面、令人兴奋的创新。

您可能也喜欢的文章:

华数传媒牵手阿里云计算  共建媒体云平台

2016年互联网行业十大预测:云计算、大数据、人工智能

《小门神》中“馄饨的香味“居然来自云计算

2015年云计算趋势预测

SAP:云计算未来三年预测
无觅

日本为一名乘客保留火车站

$
0
0
日本北海道最北的上白泷站(Kami-Shirataki)多年来只有一名乘客上下车:一名高中女孩搭乘火车去上学。火车一天只在这个站停两次,接女孩上学和送女孩回家。这一决定是日本铁道在3年前做出的。因为地点偏僻, 上白泷站的乘客数量不断减少,货运也已经停止了。日本铁道准备关闭这个火车站,直到他们注意到有个高中女孩每天都搭乘火车。所以他们决定保留这个火车站直至她高中毕业。他们甚至还根据女孩的日程表调整火车时刻表。她将在今年3月毕业,这座火车站将从此关闭。更新:这篇新闻的原始来源是FB上的CCTV帐号,根据另一个来源,这名女孩是在另一个叫Kyu-Shirataki的车站乘车上学,不是她独自一人,还有多位同学。日本铁道将在今年3月关闭使用率不高的Kami-Shirataki、Kyu-Shirataki和Shimo-Shirataki车站,这一决定与这名女孩是否即将毕业可能没什么关系。






三招教你写好工作汇报,早日升职加薪迎娶白富美

$
0
0

花了一天的时间参加了李忠秋老师结构思考力课程的上海站社群答谢活动,99RMB听了一天的课程,首先说结论:“非常值!”

作为全场100多号人里面20个看过《金子塔》原理,并且是7个看完这本书的人里面的站起来大言不惭的讲这本书本身写的不够金字塔的人,对这门课程的第一感觉是实用,第二感觉是用心!

首先讲实用,课程去掉了金字塔中很多繁杂的东西,加入了很多本土化基于企业实际情况的更接地气的案例(如果你有听过另外一门同类课程,老师都是拿我党的公文做案例的时候,你就明白这个是多么的难能可贵了),所讲内容非常切合企业的真实工作需求,学完之后就能够立即用上,课堂最后的案例演练也证明了这一点。

第二个就是用心,说真心话,把简单的东西讲复杂真的很容易,但是把复杂的东西讲简单,是需要智慧和耐心的,就从本身课程的设计上来讲就是符合结构化思考的,这个也能看出老师本身的知行合一。课程中大量的案例,总结,提炼,教学活动都是经过精心设计的,非常有助于学学员的理解和接受,这点真的难能可贵!

以下是这次课程大概内容的笔记,提前预警,凭记忆写作,可能会有错误或疏漏!

一、结构思考力概念介绍

这部分内容很少,大概的介绍了结构思考的概念和收益,不知道现场有多少人注意到了,其实在这个过程中也蕴含了一个非常强大的结构模式,就是传说中的why-what-how.

 why-为什么要学习思考力?

总结起来就是一句话:结构思考力能够让你思考清晰,表达有力,生活清爽,工作高效!

 what-什么事结构思考力?

结构思考力是一种帮助人们察觉并改善自身思考结构的思考艺术,通过结构思考力“理解、重构、呈现”循环方法的运用,我们可以从结构的视角更加全面、清晰地看待和认知失误,有效改善思考质量。

其实这个概念的定义就有点类似于课程中讲到的序言的写作模式。

how-如何做到结构思考呢?

同样还是高度总结概括成了三点,分别是:

  • 理解:隐性思维显性化
  • 重构:显性思维结构化
  • 呈现:结构思维形象化

二、理解-隐性思维显性化

在理解部分,老师通过了关于书法介绍的案例导入,系统的介绍了理解的三个步骤,分别是:

  • 第一步,【识别】:识别信息中的事实理由以及结论,找出信息中哪些是观点类的,哪些是事实描述类的信息,观点类的信息哪些是结论,哪些是理由,并将其区分开来。第二步,【判断】:判断事实与观点的对应关系,并画出结构图。然后,找出这些事实和观点的对立关系,依据事实、理由、结论的对应关系画出树形图。第三步,【概括】一句话概括出所有内容。接受信息除了前两步做到看清楚想明白,最后还要简单扼要地概括出所有内容,做到说简洁。

其中在这里关于序言的描述部分老师给了一个非常牛叉的万能公式:

在-----的基础上,从-----,----,----,N个方面,说明了-------。

据说这个公式是新东方为了对付我大天朝的语文老师而创立,仔细回想一下貌似真的是非常有道理的,比如说服丈母娘把同意把女儿嫁给你的时候,就可以这么描述,在两个人相爱的基础上,从经济条件,年龄要求,学历层次,家庭背景四个方面,说明了你女儿应该嫁给我是正确的选择!(这个是已婚人士的自我YY),这样一来当年就省下了好多事情!

三、重构:显性思维结构化

重构部分主要讲了两个模块四个步骤,分别从横向和纵向两个维度做了讲解,纵向部分的要点是结论先行,以上统一;横向部分的要点是归类分组,逻辑递进,总结起来就是四个字 论证类比

(在此不得不对李老师牛叉的总结能力表示深深的叹服,请接收我深深的敬意)。

  • 【结论先行】每次表达的时候都先讲结论,并且每个结论只表达一个中心思想,类似于我们写议论文中的论点部分;这里给的一个技巧是:多问所以呢?
  • 【以上统下】要求在在任何层次上的思想都必须是下一层次思想的高度总结概括,并且是一个结论;
  • 【归类分组】每一个模块的内容和思想都必须在同一个框架之内,符合上面的结论,一般建议是每个小组内容在3-7条;这里的给到的工具是源自麦肯锡的“MECE”法则。
  • 【逻辑递进】每一个组的内容也要按照一定的逻辑顺序进行安放排列,这样能够更有效的传递出想要传递的信息;主要包括三种:时间顺序,结构顺序和重要性顺序

四:呈现:结构思维形象化

关于呈现部分,因为时间因素并没有讲太多,主要是从流程步骤上做了一些演示和示范,也包括三部分,分别是配关系,得图示,上包装,简称配得上!

课堂当中还展示一些关于如何提炼精简和总结的案例,包括各种各样的关系图,具体的细节都在下面这张结构罗盘中,我就不详细解释了,个人的感觉是这种东西第一要有意识,第二要看多积累,第三就是要多思考,第四这个还跟天赋和文学素养有关。我会告诉你我当年在混某国企的时候,为了写好PPT,我专门买了本《文心雕龙》么?


图来自于李忠秋老师结构思考力课件,版权归原作者所有

最后以一首小诗对课程感受和内容作了简短的总结:

参加李忠秋老师结构思考力上海一日答谢课

价格实惠内容好,老师有料颜值高!结论先行很重要,万能公式别小瞧;论证类比说重构,透过结构看思考;思维呈现配得上,工作汇报賊有效!

【如果你觉得内容对你有帮助,请点击分享或打赏,你的认可是我写作的动力!】



 

Elasticsearch 分片交互过程分析

$
0
0

一、Elasticseach如何将数据存储到分片中

问题:当我们要在ES中存储数据的时候,数据应该存储在主分片和复制分片中的哪一个中去;当我们在ES中检索数据的时候,又是怎么判断要查询的数据是属于哪一个分片。

 

  • 数据存储到分片的过程是一定规则的,并不是随机发生的。

 

  • 规则:shard = hash(routing) % number_of_primary_shards

 

  • Routing值可以是一个任意的字符串,默认情况下,它的值为存数数据对应文档 _id 值,也可以是用户自定义的值。Routing这个字符串通过一个hash的函数处理,并返回一个数值,然后再除以索引中主分片的数目,所得的余数作为主分片的编号,取值一般在0到number_of_primary_shards - 1的这个范围中。通过这种方法计算出该数据是存储到哪个分片中。

 

  • 正是这种路由机制,导致了主分片的个数为什么在索引建立之后不能修改。对已有索引主分片数目的修改直接会导致路由规则出现严重问题,部分数据将无法被检索。

 

二、主分片与复制分片如何交互

为了说明这个问题,我用一个例子来说明。

 

在上面这个例子中,有三个ES的node,其中每一个index中包含两个primary shard,每个primary shard拥有一个replica shard。下面从几种常见的数据操作来说明二者之间的交互情况。

 

1、索引与删除一个文档

 

 

这两种过程均可以分为三个过程来描述:

阶段1:客户端发送了一个索引或者删除的请求给node 1。

 

阶段2:node 1通过请求中文档的 _id 值判断出该文档应该被存储在shard 0 这个分片中,并且node 1知道shard 0的primary shard位于node 3这个节点上。因此node 1会把这个请求转发到node 3。

 

阶段3:node 3在shard 0 的primary shard上执行请求。如果请求执行成功,它node 3将并行地将该请求发给shard 0的其余所有replica shard上,也就是存在于node 1和node 2中的replica shard。如果所有的replica shard都成功地执行了请求,那么将会向node 3回复一个成功确认,当node 3收到了所有replica shard的确认信息后,则最后向用户返回一个Success的消息。

 

2、更新一个文档

 

 

该过程可以分为四个阶段来描述:

阶段1:客户端向node 1发送一个文档更新的请求。

 

阶段2:同样的node 1通过请求中文档的 _id 值判断出该文档应该被存储在shard 0 这个分片中,并且node 1知道shard 0的primary shard位于node 3这个节点上。因此node 1会把这个请求转发到node 3。

 

阶段3:node 3从文档所在的primary shard中获取到它的JSON文件,并修改其中的_source中的内容,之后再重新索引该文档到其primary shard中。

 

阶段4:如果node 3成功地更新了文档,node 3将会把文档新的版本并行地发给其余所有的replica shard所在node中。这些node也同样重新索引新版本的文档,执行后则向node 3确认成功,当node 3接收到所有的成功确认之后,再向客户端发送一个更新成功的信息。

  

3、检索文档

CRUD这些操作的过程中一般都是结合一些唯一的标记例如:_index,_type,以及routing的值,这就意味在执行操作的时候都是确切的知道文档在集群中的哪个node中,哪个shard中。

而检索过程往往需要更多的执行模式,因为我们并不清楚所要检索的文档具体位置所在, 它们可能存在于ES集群中个任何位置。因此,一般情况下,检索的执行不得不去询问index中的每一个shard。

但是,找到所有匹配检索的文档仅仅只是检索过程的一半,在向客户端返回一个结果列表之前,必须将各个shard发回的小片的检索结果,拼接成一个大的已排好序的汇总结果列表。正因为这个原因,检索的过程将分为查询阶段与获取阶段(Query Phase and Fetch Phase)。

 

  • Query Phase

在最初的查询过程中,查询请求会广播到index中的每一个primary shard和replica shard中,每一个shard会在本地执行检索,并建立一个优先级队列(priority queue)。这个优先级队列是一个根据文档匹配度这个指标所排序列表,列表的长度由分页参数from和size两个参数所决定。例如:

 

 

下面从一个例子中说明这个过程:

 

Query Phase阶段可以再细分成3个小的子阶段:

子阶段1:客户端发送一个检索的请求给node 3,此时node 3会创建一个空的优先级队列并且配置好分页参数from与size。

 

子阶段2:node 3将检索请求发送给该index中个每一个shard(这里的每一个意思是无论它是primary还是replica,它们的组合可以构成一个完整的index数据)。每个shard在本地执行检索,并将结果添加到本地优先级队列中。

 

子阶段3:每个shard返回本地优先级序列中所记录的_id与sort值,并发送node 3。Node 3将这些值合并到自己的本地的优先级队列中,并做全局的排序。

 

  • Fetch Phase

Query Phase主要定位了所要检索数据的具体位置,但是我们还必须取回它们才能完成整个检索过程。而Fetch Phase阶段的任务就是将这些定位好的数据内容取回并返回给客户端。

 

同样也用一个例子来说明这个过程:

 

Fetch Phase过程可以分为三个子过程来描述:

子阶段1:node 3获取了所有待检索数据的定位之后,发送一个mget的请求给与数据相关的shard。

 

子阶段2:每个收到node 3的get请求的shard将读取相关文档_source中的内容,并将它们返回给node 3。

 

子阶段3:当node 3获取到了所有shard返回的文档后,node 3将它们合并成一条汇总的结果,返回给客户端。

http://my.oschina.net/galenz/blog/422189



已有 0人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



接口安全调用该怎么做?签名?证书?服务安全?

$
0
0
在这个以“数据为生命”的时代,每一个开发商都尽可能的收集客户的数据建立自己的BI库,各系统、各平台间数据的传输和调用变得非常普遍且非常重要;那么作为开发人员,我们不但要防止系统被攻击被入侵,我们还要确保数据的安全和完整。

在内网传输和外网传输的数据对安全的要求一般是不同的,因为内网数据的传输得到了网络防火墙的保护,起到了隔绝外部攻击的作用,但也并非一定安全;相比之下,对外部开放的接口则需要做的更多更好。我们简单通过四种方式介绍下常见的调用鉴权方式:

一、普通的参数验证(内网系统常用)

2.1 简单参数验证

通过ws接口方法中的参数,验证用于鉴权的参数的值是否正确,起到简单验证作用。如:

public int GetNumberStatus(String Number,String sysPssword) {}

这种接口方法可以说没有任何防御性,通过简单的抓包就可以得到参数中的password,进而篡改等等。

2.2 请求对象中加帐号密码

在请求参数较多的情况下,我们会选择把参数封装成一个对象,其中需要验证的部分作为对象的头信息,数据本身作为对象体。这种方式其实也是没有太大的防御作用,不过我们通过头信息的方式可以对接口进行权限控制。如:

public Msgreqheader getMsgreqheader(){
   Msgreqheader header = new Msgreqheader();
   header.setOperidString( "admin" );
   header.setChannelidString ("chananl1" );
   return header;
}
通过soap方式请求报文如:

<messagereq>
  <msgreqheader>

      <operatorid>admin</operatorid>

      <channelid>channel1</channelid>

  </msgreqheader>

  <msgbody>
    <xxx></xxx>

  </msgbody>
</messagereq>
通过XML报文中的消息头的参数识别接口调用的验证以及权限。

总结:这两种方式应用都非常的普遍,采用哪一种,需要根据请求的参数去判断,对接口安全要求低,数据安全要求低的系统可以采用。

二、ws-security UsernameToken表头验证

三、数字签名(digital signature)

以前对安全验证以及数字认证方面的知识一直觉得讳莫如深,在最近接触的一个项目中,涉及到了数字签名的使用,从一开始我兴致勃勃的以为终于可以搞数字认证了,接触了才发现,原来只是需要数字签名,并没有用到数字认证(相对比较麻烦),其实也蛮好理解和开发。

数字签名的使用,目前接触到的有两种方式,1、签名作为参数;2、全文签名

3.1 签名作为参数

在使用http或者soap传输数据的时候,签名作为其中一个参数,可以起到关键作用:1、鉴权(通过客户的密钥,服务端的密钥匹配);2、数据防篡改(参数是明文传输,将参数及密钥加密作为签名与服务器匹配);下面来分析下具体的方式:

将请求参数中的各个键值对按照key的字符串顺序升序排列(大小写敏感),把key和value拼成一串之后最后加上密钥,组成key1value1key2value2PRIVATEKEY的格式,转成utf-8编码的字节序列后计算md5,作为请求的签名。计算出来的签名串应当全为小写形式。如果某个参数的值为空,则此参数不参与签名。

下面举个例子。假设参数列表为:

a 123
b 帐号
c 密码
假设密钥为:123456

则待签名的明文为:a123b帐号c密码123456

将明文按utf-8取字节序列,并计算md5为:332ce52ed0a9686cc32bdd0eb45de577

客户端调用的例子如: http://host:port/search?a=123&b=帐号&c=密码&&sign =332ce52ed0a9686cc32bdd0eb45de577

注:因为md5加密是不可逆的,在服务端取到参数后按同样的规则进行匹配,起到了鉴权及数据完整性的作用。(HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。GET方式:特定浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。因此对于GET提交时,传输数据就会受到URL长度的限制。)

3.2 对象签名

为了加深印象,可以互联网上用图文描述签名的文章来帮助理解, 原文地址

当我们如通过ws进行较大数据的传输时,如一篇文章,一个长达1w个号码的号码集。同样可以通过签名的方式确保数据的完整性。简单地说:
(1)
1、对数据本身使用Hash函数生成摘要(digest),再通过上述讲到的私钥进行“数字签名”生成。

(2)
2、将该数字签名作为对象的属性传输到服务端。

(3)
3、服务端取得数据,对数据使用Hash函数得到摘要A,并将客户端请求的数字签名进行解密得到摘要B。

4、对比摘要A及摘要B,如果两者一致,则可以确保该数据未被篡改。

总结:这种方式的调用一般应用于重要数据的传输,如:淘宝与商家的支付接口、一些兑换平台的兑换接口等等都采用签名。

四、数字认证(digital certificate)

已有 0人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



广告计算——平滑CTR

$
0
0

一、广告计算的基本概念

1、广告的形式

在互联网发展的过程中,广告成为了互联网企业盈利的一个很重要的部分,根据不同的广告形式,互联网广告可以分为:

  • 展示广告(display ads)
  • 赞助商搜索广告(sponsored search)
  • 上下文广告(contextual advertising)

2、竞价模型

对于在线广告,主要有如下的几种竞价模型:

  • 按展示付费(pay-per-impression):直观来讲,按展示付费是指广告商按照广告被展示的次数付费,这是一种最普遍的竞价模型;
  • 按行为付费(pay-per-action):按行为付费是指只有在广告产生了销售或者类似的一些转化时,广告商才付费;

当然,对于以上的两种竞价模型各有其局限性:在按展示付费模型中,压根没有考虑到广告的效果,只是按照广告流量进行售卖的模式;对于按行为付费模型,虽然其考虑到了广告效果,但其的条件是产生了某种转化,这种转化有时很难追踪和记录。此时,为了解决这两种模型的局限性,通常可以按照一个用户是否会点击广告作为最终的度量标准,即按点击付费模型(pay-per-click)。

  • 按点击付费(pay-per-click):根据用户是否会点击广告来付费。

这里便出现了一个重要的概念,便是广告点击率(the click-through rate, CTR)。

3、广告点击率(CTR)

广告点击率CTR是度量一个用户对于一个广告的行为的最好的度量方法,广告点击率可以定义为:对于一个广告的被点击(click)的次数于被展示(impression)的次数的比值。

CTR=#click#impression

广告点击率对于在线广告有着重要的作用,在网络中,对于有限的流量,通常要选择出最优质的广告进行投放,此时,CTR可以作为选择广告和确定广告顺序的一个重要的标准。

但是在计算CTR时,由于数据的稀疏性,利用上述的计算方法得到的CTR通常具有较大的偏差,这样的偏差主要表现在如下的两种情况:

  • 1、例如展示impression的次数很小,如1次,其中,点击的次数也很小(这里的很小是指数值很小),如1,按照上述的CTR的计算方法,其CTR为1,此时的点击率就被我们估计高了;
  • 2、例如展示的次数很大,但是点击的次数很小,此时,利用上述的方法求得的CTR就会比实际的CTR要小得多。

出现上述两种现象的主要原因是我们对分子impression和分母click的估计不准确引起的,部分原因可能是曝光不足等等,对于这样的问题,我们可以通过相关的一些广告的展示和点击数据对CTR的公式进行平滑处理。

二、CTR的平滑方法

1、数据的层次结构——贝叶斯平滑

假设有N个相同的账号(a1,a2,⋯,aN),对于网页p,对于这样的网页和账号组(p,ai)。假设(C1,C2,⋯,CN)为观测到点击数据,(r1,r2,⋯,rN)为隐含的CTR的值,为点击率,点击率在此是一个隐含的参数,广告是否被点击满足二项分布,即Binomial(Ii,ri),其中,Ii表示广告被展示的次数。

贝叶斯思想认为,隐含的参数不是一个具体的值,而是满足某个分布,我们知道贝叶斯参数估计的基本过程为:

先验分布+数据的知识=后验分布

已知二项分布的共轭分布为Beta分布,对此,有以下的两点假设:

  • 1、对于一个广告,其点击Ci符合二项分布Binomial(Ii,ri),其中,Ii表示的是展示的次数,ri表示的是广告被点击的概率;
  • 2、对于所有的广告,有其自身的CTR,其CTR满足参数是α和β的贝塔分布Beta(α,β)。

假设有N个广告,广告被展示的次数为(I1,I2,⋯,IN),广告被点击的次数为(C1,C2,⋯,CN),上述的两个假设可以表示为如下的形式:

这里写图片描述

其对应的概率图模型为:

这里写图片描述

点击率ri不仅与(Ii,Ci)相关,而且与参数α和参数β相关,我们可以通过计算得到参数α和参数β的估计α̂ 和β̂ ,一旦α̂ 和β̂ 被确定后,则ri的估计为:

ri=Ci+α̂ Ii+α̂ +β̂ 

所以,现在,我们需要求解参数α和参数β的估计α̂ 和β̂ 。

点击C的似然函数为:ℙ(C1,C2,⋯,CN∣I1,I2,⋯,IN,α,β),由于点击的次数以及展示的次数之间都是相互独立的,因此上式可以表示为:

ℙ(C1,C2,⋯,CN∣I1,I2,⋯,IN,α,β)=∏i=1Nℙ(Ci∣Ii,α,β)=∏i=1N∫riℙ(Ci,ri∣Ii,α,β)dri=∏i=1N∫riℙ(Ci,∣ri,Ii)ℙ(ri∣α,β)dri

已知

ℙ(Ci,∣ri,Ii)=rCii(1−ri)Ii−Ci

ℙ(ri∣α,β)=Γ(α+β)Γ(α)Γ(β)rα−1i(1−ri)β−1

则上式可以写成:

=∏i=1N∫riℙ(Ci,∣ri,Ii)ℙ(ri∣α,β)dri=∏i=1N∫rirCii(1−ri)Ii−CiΓ(α+β)Γ(α)+Γ(β)rα−1i(1−ri)β−1dri=∏i=1N∫riΓ(α+β)Γ(α)Γ(β)rCi+α−1i(1−ri)Ii−CI+β−1dri=∏i=1NΓ(α+β)Γ(Ii+α+β)Γ(Ci+α)Γ(α)Γ(Ii−Ci+β)Γ(β)

此时,我们需要求得该似然函数的最大值,首先,我们对上述的似然函数取对数,即为:

logℙ(C1,C2,⋯,CN∣I1,I2,⋯,IN,α,β)=∑i=1NlnΓ(α+β)−lnΓ(Ii+α+β)+lnΓ(Ci+α)−lnΓ(α)+lnΓ(Ii−Ci+β)−lnΓ(β)

将上述的log似然函数分别对α和β求导数,即为:

dlogℙ(C1,C2,⋯,CN∣I1,I2,⋯,IN,α,β)dα=∑i=1NΨ(α+β)−Ψ(Ii+α+β)+Ψ(Ci+α)−Ψ(α)

dlogℙ(C1,C2,⋯,CN∣I1,I2,⋯,IN,α,β)dβ=∑i=1NΨ(α+β)−Ψ(Ii+α+β)+Ψ(Ii−Ci+β)−Ψ(β)

其中,Ψ(x)=ddxlnΓ(x)。通过 the fixed-point iteration方法,可以得到如下的结果:

αnew=α∑Ni=1[Ψ(Ci+α)−Ψ(α)]∑Ni=1[Ψ(Ii+α+β)−Ψ(α+β)]

βnew=β∑Ni=1[Ψ(Ii−Ci+β)−Ψ(β)]∑Ni=1[Ψ(Ii+α+β)−Ψ(α+β)]

上述的求解过程是一个迭代的过程,一旦求出了参数α和参数β的估计α̂ 和β̂ ,便可以求出点击率的估计:

ri=Ci+α̂ Ii+α̂ +β̂ 

2、数据在时间上的一致性——指数平滑

相比上述的贝叶斯平滑,指数平滑相对要简单点,对于CTR中的点击,这是个与时间相关的量,假设对于一个广告,有M天的点击和展示数据(I1,I2,⋯,IM),(C1,C2,⋯,CM)。若要估计第M天的CTR的值,我们需要对分别对I和C进行平滑,得到平滑后的Π和Ĉ 。其计算方法如下:

{Ĉ j=CjĈ j=γCj+(1−γ)Ĉ j−1 if j=1 if j=2,⋯,M

{Πj=IjΠj=γIj+(1−γ)Πj−1 if j=1 if j=2,⋯,M

其中,γ称为平滑因子,且0<γ<1。对于上述的公式,若要计算第M天的平滑点击,可以得到下面的公式:

Ĉ M=γCM+(1−γ)Ĉ M−1=γCM+(1−γ)(γCM−1+(1−γ)Ĉ M−2)=γCM+γ(1−γ)CM−1+⋯+γ(1−γ)jCM−j+⋯+γ(1−γ)M−1C1

参考文献

  • Click-Through Rate Estimation for Rare Events in Online Advertising.Xuerui Wang, Wei Li, Ying Cui, Ruofei (Bruce) Zhang, Jianchang Mao Yahoo! Labs, Silicon Valley United States
作者:google19890102 发表于2016/1/11 18:19:15 原文链接
阅读:224 评论:0 查看评论

[微言]要不要送孩子上学?

$
0
0

【2015-09-11】

@按当地市话标准计费手机快速注册:辉格,可否问一个略不相干的问题?家长竞相给小学老师送钱,两千块起。但是因为有家长送贵重首饰,送几千块的还是被老师看不起,在学校还是很容易被老师抓住小辫子批评。六年级刚开学。有什么好办法避免这种情况吗?谢谢

@whigzhou: 一毛别送,并建议孩子无视这位老师的批评

@whigzhou: 如果孩子足够好学的话,不上学也没关系,多买点书放家里就行了,我记忆中在课堂上从来没学到过什么(体育课和生物解剖课除外),一般开学那天课本发下来当天就看完了,然后一学期就发呆,可惜我小时候可读的东西实在太少,我们镇上每面墙上糊的报纸差不多都被我读完了,读过最无聊的东西是一本化学词典

@熊也餐厅: 如果孩子不足够好学的话更没有必要送去读书了。

@whigzhou: “不足够好学”的孩子,也可能“不足够不好学”

@whigzhou: 原则上我不反对学校教育,正如许多朋友在评论中指出的,同龄伙伴环境很重要,自家生十几个还是有点困难,我昨天的评论是有上下文的,意思是,如果可供选择的学校已恶劣到如此程度(其实我并不了解到底有多恶劣,只是基于随机传闻而有此印象),那么不上学的坏处跟这种恶劣相比,可能远更容易接受。


又是一年 CES,今年有什么值得关注的新产品?

$
0
0

It was a quiet year for CES.

正如 The Verge 这句话所言,这是一年相对平静的 CES,没有爆炸性的新趋势,也没有重磅的产品发布,技术已经达到了一个尴尬的中间时期:

传统的智能手机、笔记本电脑以及平板电脑等,产品形态已非常成熟,而 VR 和自动驾驶技术等新事物还处在早期阶段。

在过去一周的 CES 2016 上,我们的视线被这一堆新技术所吸引:VR、无人机、智能家电以及智能汽车,可穿戴设备正在更加广泛地走向大众,传统与怀旧的电子产品也被人重新唤醒。

我们总结了 10 个来自 CES 2016 大会上的产品,一览接下来一年的电子消费趋势。

这些产品来自“ CES 2016 Innovation Awards”、“ Best of CES 2016 Awards”、“ The Verge Awards at CES 2016”以及我们认为值得关注的产品。

VR 推进世界向虚拟化迈进了一大步,在今年的 CES 上,HTC 向我们展示了 VR 更进一步的使用场景。在第二代开发者版本的 HTC VIVE Pre 中加入前置摄像头,具备 3D 扫描功能,也对手柄控制器与外观进行了重新设计,使得真实世界与虚拟世界互动成为可能。

通过映射房间周围的标记,摄像头可以把真实世界的三维重建模型显示在用户视野中,让用户更清楚自己所处的空间位置,当行走到边缘时会自动切换到真实视野。

这一改进使得开发者终于可以朝着真正的增强现实制作更加雄心勃勃的游戏与内容了。

Image title

  • 最佳汽车技术(Best Automotive Technology): Chevy Bolt EV

有人说,CES 已经变成了车展,可我并不同意,这里展示的汽车技术,让门得以趣窥探未来的汽车设计方向。

我们进入了一个电动汽车的时代,对于雪佛兰博尔特(Chevy Bolt EV)来讲,它是一个非常实用主义 —— 有着 200 英里行驶范围与以及高性价比。在坚实的基础之上,它还有着通用汽车最好的信息娱乐系统。也许在这个点上,我们可以说出那句:再见,汽油。

Image title

在过去的一年里,无人机引起了好几次广泛的争议,我们都希望头顶上天空是安全的。

于是我们看到了 Yuneec Typhoon H 无人机 —— 将 Intel RealSense Camera 技术充分利用,让该机可以试试避开障碍物,这使得无人机将可以胜任实际工作,RealSense 将带着无人机进入一个更加成熟的领域。

Image title

CES 上永远少不了下一年的电视产品,至少对于目前来说。今年,LG 再次证明了它的旗舰级 OLED 电视仍然是领先群雄的。

虽然我们还不知道它的价格,但是 G6 已经带着令人难以置信的超薄设计、HDR 增强技术以及 Ultra HD Premium 认证,打响了下一年的电视争霸之战。

Image title

Image title

这一次,雷蛇让骨灰级玩家在超极本上像发狂的野兽一般打游戏的梦想成为现实。

在这块 12.5 英寸与 2.75 磅重的 Razer Blade Stealth 上,加入了最新的 USB-C 与 Thunderbolt 技术,支持全尺寸的桌面级图片处理器,让玩家可以获得最佳的游戏体验以及便携性。

Image title

  • 最佳可穿戴设备(Best Wearable): Bragi Dash

在上一篇文章中曾写到,它是我眼中下一代智能耳机的雏形,Bragi Dash 是一款令人印象深刻的产品。

它是一款由两颗独立的蓝牙无线耳机所组成的可穿戴设备,除了提供优异的播放音质之外,还兼备运动追踪设备的各项功能。Bragi Dash 在工业设计上的造诣与软件证明它不是一个噱头,而是一个巨大的进步,无线耳机正在脱离它原来的形态变成一种全新的智能设备。

Image title

  • 最佳出行工具(Best Rideable): Inboard

关于出行方式,我们在去年也有不少讨论,但并不是每个一产品都具有革命性。

在 Inboard 这里,我们看到呢一些真正创新的东西,在诸多电动滑板中,M1 第一个将可热插拔的电动机设计在了后轮里,这使得正在没有接通的情况下,它可以变成一个普通的滑板使用。当然我们仍然受制于电池技术的进步,但至少把很酷的事情变得更加实用,是我们都想看到的。

Image title

CES 上亮相了一个让人难以相信的产品,松下复活了传说中的 Technics SL-1200 唱片机。重新设计之后,采用微处理器控制系统的唱片机,可以有效消除「齿槽效应」,不仅获得了更加清晰的音质,还可以将其直接输出数字音频。

Image title

  • 最另类的产品(Best Offbeat Product): EHang 184

可以载人的全电力低空自动驾驶无人机?好吧, 亿航确实在 CES 上发布了这么一款产品,4 支可折叠螺旋翼,高 1.5 米,额定载重 100 千克,续航时间 23 分钟,平均巡航速度 100 公里每小时,可载一名乘客。

然而在现场我们并没有看到载人的飞行展示,这让我对它的安全性不得不打上问号,并且对于相关国家飞行管控政策,也很难让我们对它抱有过多期待。

Image title

如果有一项技术可以减少成千上万的暴力伤害,那将是一个巨大的成就。对于可以购买枪支的国家来说,Smart Trigger Lock 将带来实际的好处,它可是使用指纹识别器来验证用户的身份,避免开枪走火,这也许可以在一定程度上解决每年枪支丢失的问题。

Image title

除了以上我们列出的产品,在 CES 2016 大会上还有很多值得关注的产品,我们把他们 整理到了 NEXT 的产品集中,方便大家收藏与查看。

图中部分图片来自 The Veger

Image title

转载一篇单字符串匹配KMP算法最好理解的文章

$
0
0

字符串匹配的KMP算法

http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html

   字符串匹配是计算机的基本任务之一。

  举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?

  许多算法可以完成这个任务, Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。

  这种算法不太容易理解,网上有很多 解释,但读起来都很费劲。直到读到 Jake Boxer的文章,我才真正理解这种算法。下面,我用自己的语言,试图写一篇比较好懂的KMP算法解释。

  1.

  首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。

  2.

  因为B与A不匹配,搜索词再往后移。

  3.

  就这样,直到字符串有一个字符,与搜索词的第一个字符相同为止。

  4.

  接着比较字符串和搜索词的下一个字符,还是相同。

  5.

  直到字符串有一个字符,与搜索词对应的字符不相同为止。

  6.

  这时,最自然的反应是,将搜索词整个后移一位,再从头逐个比较。这样做虽然可行,但是效率很差,因为你要把"搜索位置"移到已经比较过的位置,重比一遍。

  7.

  一个基本事实是,当空格与D不匹配时,你其实知道前面六个字符是"ABCDAB"。KMP算法的想法是,设法利用这个已知信息,不要把"搜索位置"移回已经比较过的位置,继续把它向后移,这样就提高了效率。

  8.

  怎么做到这一点呢?可以针对搜索词,算出一张《部分匹配表》(Partial Match Table)。这张表是如何产生的,后面再介绍,这里只要会用就可以了。

  9.

  已知空格与D不匹配时,前面六个字符"ABCDAB"是匹配的。查表可知,最后一个匹配字符B对应的"部分匹配值"为2,因此按照下面的公式算出向后移动的位数:

  移动位数 = 已匹配的字符数 - 对应的部分匹配值

  因为 6 - 2 等于4,所以将搜索词向后移动4位。

  10.

  因为空格与C不匹配,搜索词还要继续往后移。这时,已匹配的字符数为2("AB"),对应的"部分匹配值"为0。所以,移动位数 = 2 - 0,结果为 2,于是将搜索词向后移2位。

  11.

  因为空格与A不匹配,继续后移一位。

  12.

  逐位比较,直到发现C与D不匹配。于是,移动位数 = 6 - 2,继续将搜索词向后移动4位。

  13.

  逐位比较,直到搜索词的最后一位,发现完全匹配,于是搜索完成。如果还要继续搜索(即找出全部匹配),移动位数 = 7 - 0,再将搜索词向后移动7位,这里就不再重复了。

  14.

  下面介绍《部分匹配表》是如何产生的。

  首先,要了解两个概念:"前缀"和"后缀"。 "前缀"指除了最后一个字符以外,一个字符串的全部头部组合;"后缀"指除了第一个字符以外,一个字符串的全部尾部组合。

  15.

  "部分匹配值"就是"前缀"和"后缀"的最长的共有元素的长度。以"ABCDABD"为例,

  - "A"的前缀和后缀都为空集,共有元素的长度为0;

  - "AB"的前缀为[A],后缀为[B],共有元素的长度为0;

  - "ABC"的前缀为[A, AB],后缀为[BC, C],共有元素的长度0;

  - "ABCD"的前缀为[A, AB, ABC],后缀为[BCD, CD, D],共有元素的长度为0;

  - "ABCDA"的前缀为[A, AB, ABC, ABCD],后缀为[BCDA, CDA, DA, A],共有元素为"A",长度为1;

  - "ABCDAB"的前缀为[A, AB, ABC, ABCD, ABCDA],后缀为[BCDAB, CDAB, DAB, AB, B],共有元素为"AB",长度为2;

  - "ABCDABD"的前缀为[A, AB, ABC, ABCD, ABCDA, ABCDAB],后缀为[BCDABD, CDABD, DABD, ABD, BD, D],共有元素的长度为0。

  16.

  "部分匹配"的实质是,有时候,字符串头部和尾部会有重复。比如,"ABCDAB"之中有两个"AB",那么它的"部分匹配值"就是2("AB"的长度)。搜索词移动的时候,第一个"AB"向后移动4位(字符串长度-部分匹配值),就可以来到第二个"AB"的位置。



已有 0人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



基于大数据的用户画像构建(理论篇)

$
0
0

yonghudashuj

什么是用户画像?

简而言之,用户画像是根据用户社会属性、生活习惯和消费行为等信息而抽象出的一个标签化的用户模型。构建用户画像的核心工作即是给用户贴“标签”,而标签是通过对用户信息分析而来的高度精炼的特征标识。

举例来说,如果你经常购买一些玩偶玩具,那么电商网站即可根据玩具购买的情况替你打上标签“有孩子”,甚至还可以判断出你孩子大概的年龄,贴上“有5-10岁的孩子”这样更为具体的标签,而这些所有给你贴的标签统在一次,就成了你的用户画像,因此,也可以说用户画像就是判断一个人是什么样的人。

除去“标签化”,用户画像还具有的特点是“低交叉率”,当两组画像除了权重较小的标签外其余标签几乎一致,那就可以将二者合并,弱化低权重标签的差异。

用户画像的作用

罗振宇在《时间的朋友》跨年演讲上举了这样一个例子:当一个坏商家掌握了你的购买数据,他就可以根据你平常购买商品的偏好来决定是给你发正品还是假货以提高利润。且不说是否存在这情况,但这也说明了利用用户画像可以做到“精准销售”,当然了,这是极其错误的用法。

其作用大体不离以下几个方面:

  1. 精准营销,分析产品潜在用户,针对特定群体利用短信邮件等方式进行营销;
  2. 用户统计,比如中国大学购买书籍人数 TOP10,全国分城市奶爸指数;
  3. 数据挖掘,构建智能推荐系统,利用关联规则计算,喜欢红酒的人通常喜欢什么运动品牌,利用聚类算法分析,喜欢红酒的人年龄段分布情况;
  4. 进行效果评估,完善产品运营,提升服务质量,其实这也就相当于市场调研、用户调研,迅速下定位服务群体,提供高水平的服务;
  5. 对服务或产品进行私人定制,即个性化的服务某类群体甚至每一位用户(个人认为这是目前的发展趋势,未来的消费主流)。比如,某公司想推出一款面向5-10岁儿童的玩具,通过用户画像进行分析,发现形象=“喜羊羊”、价格区间=“中等”的偏好比重最大,那么就给新产品提供类非常客观有效的决策依据。
  6. 业务经营分析以及竞争分析,影响企业发展战略

构建流程

1

数据收集

数据收集大致分为网络行为数据、服务内行为数据、用户内容偏好数据、用户交易数据这四类。

  • 网络行为数据:活跃人数、页面浏览量、访问时长、激活率、外部触点、社交数据等
  • 服务内行为数据:浏览路径、页面停留时间、访问深度、唯一页面浏览次数等
  • 用户内容便好数据:浏览/收藏内容、评论内容、互动内容、生活形态偏好、品牌偏好等
  • 用户交易数据(交易类服务):贡献率、客单价、连带率、回头率、流失率等

当然,收集到的数据不会是100%准确的,都具有不确定性,这就需要在后面的阶段中建模来再判断,比如某用户在性别一栏填的男,但通过其行为偏好可判断其性别为“女”的概率为80%。

还得一提的是,储存用户行为数据时最好同时储存下发生该行为的场景,以便更好地进行数据分析。

行为建模

该阶段是对上阶段收集到数据的处理,进行行为建模,以抽象出用户的标签,这个阶段注重的应是大概率事件,通过数学算法模型尽可能地排除用户的偶然行为。

这时也要用到机器学习,对用户的行为、偏好进行猜测,好比一个 y=kx+b 的算法,X 代表已知信息,Y 是用户偏好,通过不断的精确k和b来精确Y。

在这个阶段,需要用到很多模型来给用户贴标签。

用户汽车模型

根据用户对“汽车”话题的关注或购买相关产品的情况来判断用户是否有车、是否准备买车

用户忠诚度模型

通过判断+聚类算法判断用户的忠诚度

身高体型模型

根据用户购买服装鞋帽等用品判断

文艺青年模型

根据用户发言、评论等行为判断用户是否为文艺青年

用户价值模型

判断用户对于网站的价值,对于提高用户留存率非常有用(电商网站一般使用RFM 实现)

还有消费能力、违约概率、流失概率等等诸多模型。

用户画像基本成型

该阶段可以说是二阶段的一个深入,要把用户的基本属性(年龄、性别、地域)、购买能力、行为特征、兴趣爱好、心理特征、社交网络大致地标签化。

为什么说是基本成型?因为用户画像永远也无法100%地描述一个人,只能做到不断地去逼近一个人,因此,用户画像既应根据变化的基础数据不断修正,又要根据已知数据来抽象出新的标签使用户画像越来越立体。

关于“标签化”,一般采用多级标签、多级分类,比如第一级标签是基本信息(姓名、性别),第二级是消费习惯、用户行为;第一级分类有人口属性,人口属性又有基本信息、地理位置等二级分类,地理位置又分工作地址和家庭地址的三级分类。

数据可视化分析

这是把用户画像真正利用起来的一步,在此步骤中一般是针对群体的分析,比如可以根据用户价值来细分出核心用户、评估某一群体的潜在价值空间,以作出针对性的运营。

如图:

2

后记

这里只写了用户画像的构建流程和一些原理,下次有时间我会写篇关于大数据平台的实践文章,并说一下一些行为模型的算法原理,有兴趣的朋友可以关注下。

 

本文由 @我勒个矗 原创发布于人人都是产品经理 ,未经许可,禁止转载。


人人都是产品经理微信公众号:woshipm,随时随地,学产品、学运营,听讲座。

怎么用API网关构建微服务|架构

$
0
0
转于http://www.tuicool.com/articles/bMnEbmv
当选择将应用程序构建为一组微服务时,需要确定应用程序客户端如何与微服务交互。在单体应用程序中,只有一组(通常是重复的、负载均衡的)端点。然而,在微服务架构中,每个微服务都会暴露一组通常是细粒度的端点。在本文中,我们将讨论一下这对客户端与应用程序之间的通信有什么影响,并提出一种使用API网关的方法。

让我们想象一下,你要为一个购物应用程序开发一个原生移动客户端。你很可能需要实现一个产品详情页面,上面展示任何指定产品的信息。

例如,下图展示了在Amazon Android移动应用中滚动产品详情时看到的内容。


虽然这是个智能手机应用,产品详情页面也显示了大量的信息。例如,该页面不仅包含基本的产品信息(如名称、描述、价格),而且还显示了如下内容:

购物车中的件数;

订单历史;

客户评论;

低库存预警;

送货选项;

各种推荐,包括经常与该产品一起购买的其它产品,购买该产品的客户购买的其它产品,购买该产品的客户看过的其它产品;

可选的购买选项。

当使用单体应用程序架构时,移动客户端将通过向应用程序发起一次REST调用(GET api.company.com/productdetails/<productId>)来获取这些数据。负载均衡器将请求路由给N个相同的应用程序实例中的一个。然后,应用程序会查询各种数据库表,并将响应返回给客户端。

相比之下,当使用微服务架构时,产品详情页面显示的数据归多个微服务所有。下面是部分可能的微服务,它们拥有要显示在示例中产品详情页面上的数据:

购物车服务——购物车中的件数;

订单服务——订单历史;

目录服务——产品基本信息,如名称、图片和价格;

评论服务——客户的评论;

库存服务——低库存预警;

送货服务——送货选项、期限和费用,这些单独从送货方的API获取;

推荐服务——建议的产品。

我们需要决定移动客户端如何访问这些服务。让我们看看都有哪些选项。

客户端与微服务直接通信

从理论上讲,客户端可以直接向每个微服务发送请求。每个微服务都有一个公开的端点(https ://<serviceName>.api.company.name)。该URL将映射到微服务的负载均衡器,由它负责在可用实例之间分发请求。为了获取产品详情,移动客户端将逐一向上面列出的N个服务发送请求。

遗憾的是,这种方法存在挑战和局限。一个问题是客户端需求和每个微服务暴露的细粒度API不匹配。在这个例子中,客户端需要发送7个独立请求。在更复杂的应用程序中,可能要发送更多的请求。例如,按照Amazon的说法,他们在显示他们的产品页面时就调用了数百个服务。然而,客户端通过LAN发送许多请求,这在公网上可能会很低效,而在移动网络上就根本不可行。这种方法还使得客户端代码非常复杂。

客户端直接调用微服务的另一个问题是,部分服务使用的协议不是Web友好协议。一个服务可能使用Thrift二进制RPC,而另一个服务可能使用AMQP消息传递协议。不管哪种协议都不是浏览器友好或防火墙友好的,最好是内部使用。在防火墙之外,应用程序应该使用诸如HTTP和WebSocket之类的协议。

这种方法的另一个缺点是,它会使得微服务难以重构。随着时间推移,我们可能想要更改系统划分成服务的方式。例如,我们可能合并两个服务,或者将一个服务拆分成两个或更多服务。然而,如果客户端与微服务直接通信,那么执行这类重构就非常困难了。

由于这些问题的存在,客户端与微服务直接通信很少是合理的。

使用API网关

通常,一个更好的方法是使用所谓的API网关。API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、“请求整形(request shaping)”与管理、静态响应处理。

下图展示了API网关通常如何融入架构:

API网关负责服务请求路由、组合及协议转换。客户端的所有请求都首先经过API网关,然后由它将请求路由到合适的微服务。API网管经常会通过调用多个微服务并合并结果来处理一个请求。它可以在Web协议(如HTTP与WebSocket)与内部使用的非Web友好协议之间转换。

API网关还能为每个客户端提供一个定制的API。通常,它会向移动客户端暴露一个粗粒度的API。例如,考虑下产品详情的场景。API网关可以提供一个端点(/productdetails?productid=xxx),使移动客户端可以通过一个请求获取所有的产品详情。API网关通过调用各个服务(产品信息、推荐、评论等等)并合并结果来处理请求。

Netflix API网关是一个很好的API网关实例。Netflix流服务提供给数以百计的不同类型的设备使用,包括电视、机顶盒、智能手机、游戏系统、平板电脑等等。最初,Netflix试图为他们的流服务提供一个通用的API。然而他们发现,由于各种各样的设备都有自己独特的需求,这种方式并不能很好地工作。如今,他们使用一个API网关,通过运行特定于设备的适配器代码来为每个设备提供一个定制的API。通常,一个适配器通过调用平均6到7个后端服务来处理每个请求。Netflix API网关每天处理数十亿请求。

API网关的优点和不足

如你所料,使用API网关有优点也有不足。使用API网关的最大优点是,它封装了应用程序的内部结构。客户端只需要同网关交互,而不必调用特定的服务。API网关为每一类客户端提供了特定的API。这减少了客户端与应用程序间的交互次数,还简化了客户端代码。

API网关也有一些不足。它增加了一个我们必须开发、部署和维护的高可用组件。还有一个风险是,API网关变成了开发瓶颈。为了暴露每个微服务的端点,开发人员必须更新API网关。API网关的更新过程要尽可能地简单,这很重要。否则,为了更新网关,开发人员将不得不排队等待。

不过,虽然有这些不足,但对于大多数现实世界的应用程序而言,使用API网关是合理的。

实现API网关

到目前为止,我们已经探讨了使用API网关的动机及其优缺点。下面让我们看一下需要考虑的各种设计问题。

性能和可扩展性

只有少数公司有Netflix的规模,每天需要处理数十亿请求。不管怎样,对于大多数应用程序而言,API网关的性能和可扩展性通常都非常重要。因此,将API网关构建在一个支持异步、I/O非阻塞的平台上是合理的。有多种不同的技术可以用于实现一个可扩展的API网关。在JVM上,可以使用一种基于NIO的框架,比如Netty、Vertx、Spring Reactor或JBoss Undertow中的一种。一个非常流行的非JVM选项是Node.js,它是一个以Chrome JavaScript引擎为基础构建的平台。另一个选项是使用NGINX Plus。NGINX Plus提供了一个成熟的、可扩展的、高性能Web服务器和一个易于部署的、可配置可编程的反向代理。NGINX Plus可以管理身份验证、访问控制、负载均衡请求、缓存响应,并提供应用程序可感知的健康检查和监控。

使用响应式编程模型

API网关通过简单地将请求路由给合适的后端服务来处理部分请求,而通过调用多个后端服务并合并结果来处理其它请求。对于部分请求,比如产品详情相关的多个请求,它们对后端服务的请求是独立于其它请求的。为了最小化响应时间,API网关应该并发执行独立请求。然而,有时候,请求之间存在依赖。在将请求路由到后端服务之前,API网关可能首先需要调用身份验证服务验证请求的合法性。类似地,为了获取客户意愿清单中的产品信息,API网关必须首先获取包含那些信息的客户资料,然后再获取每个产品的信息。关于API组合,另一个有趣的例子是Netflix Video Grid。

使用传统的异步回调方法编写API组合代码会让你迅速坠入回调地狱。代码会变得混乱、难以理解且容易出错。一个更好的方法是使用响应式方法以一种声明式样式编写API网关代码。响应式抽象概念的例子有Scala中的Future、Java 8中的CompletableFuture和JavaScript中的Promise,还有最初是微软为.NET平台开发的Reactive Extensions(RX)。Netflix创建了RxJava for JVM,专门用于他们的API网关。此外,还有RxJS for JavaScript,它既可以在浏览器中运行,也可以在Node.js中运行。使用响应式方法将使你可以编写简单但高效的API网关代码。

服务调用

基于微服务的应用程序是一个分布式系统,必须使用一种进程间通信机制。有两种类型的进程间通信机制可供选择。一种是使用异步的、基于消息传递的机制。有些实现使用诸如JMS或AMQP那样的消息代理,而其它的实现(如Zeromq)则没有代理,服务间直接通信。另一种进程间通信类型是诸如HTTP或Thrift那样的同步机制。通常,一个系统会同时使用异步和同步两种类型。它甚至还可能使用同一类型的多种实现。总之,API网关需要支持多种通信机制。

服务发现

API网关需要知道它与之通信的每个微服务的位置(IP地址和端口)。在传统的应用程序中,或许可以硬连线这个位置,但在现代的、基于云的微服务应用程序中,这并不是一个容易解决的问题。基础设施服务(如消息代理)通常会有一个静态位置,可以通过OS环境变量指定。但是,确定一个应用程序服务的位置没有这么简单。应用程序服务的位置是动态分配的。而且,单个服务的一组实例也会随着自动扩展或升级而动态变化。总之,像系统中的其它服务客户端一样,API网关需要使用系统的服务发现机制,可以是服务器端发现,也可以是客户端发现。下一篇文章将更详细地描述服务发现。现在,需要注意的是,如果系统使用客户端发现,那么API网关必须能够查询服务注册中心,这是一个包含所有微服务实例及其位置的数据库。

处理局部失败

在实现API网关时,还有一个问题需要处理,就是局部失败的问题。该问题在所有的分布式系统中都会出现,无论什么时候,当一个服务调用另一个响应慢或不可用的服务,就会出现这个问题。API网关永远不能因为无限期地等待下游服务而阻塞。不过,如何处理失败取决于特定的场景以及哪个服务失败。例如,在产品详情场景下,如果推荐服务无响应,那么API网关应该向客户端返回产品详情的其它内容,因为它们对用户依然有用。推荐内容可以为空,也可以,比如说,用一个固定的TOP 10列表取代。不过,如果产品信息服务无响应,那么API网关应该向客户端返回一个错误信息。

如果缓存数据可用,那么API网关还可以返回缓存数据。例如,由于产品价格不经常变化,所以如果价格服务不可用,API网关可以返回缓存的价格数据。数据可以由API网关自己缓存,也可以存储在像Redis或Memcached那样的外部缓存中。通过返回默认数据或者缓存数据,API网关可以确保系统故障不影响用户的体验。

在编写代码调用远程服务方面,Netflix Hystrix是一个异常有用的库。Hystrix会将超出设定阀值的调用超时。它实现了一个“断路器(circuit breaker)”模式,可以防止客户端对无响应的服务进行不必要的等待。如果服务的错误率超出了设定的阀值,那么Hystrix会切断断路器,在一个指定的时间范围内,所有请求都会立即失败。Hystrix允许用户定义一个请求失败后的后援操作,比如从缓存读取数据,或者返回一个默认值。如果你正在使用JVM,那么你绝对应该考虑使用Hystrix。而如果你正在使用一个非JVM环境,那么你应该使用一个等效的库。

小结

对于大多数基于微服务的应用程序而言,实现一个API网关是有意义的,它可以作为系统的唯一入口。API网关负责服务请求路由、组合及协议转换。它为每个应用程序客户端提供一个定制的API。API网关还可以通过返回缓存数据或默认数据屏蔽后端服务失败。在本系列的下一篇文章中,我们将探讨服务间通信。

已有 0人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



开车时给手机充电太浪费:美国每年损失2亿美元

$
0
0

据彭博社报道,开车时给手机充电不但浪费资源,还会造成严重的环境污染。据预计,仅在美国,开车时给手机充电每年会额外产生约97万吨二氧化碳,额外浪 费2亿美元的汽油。开车时打手机会给社会带来威胁,同样,开车时给手机充电也会危及地球。 这是因为手机在充电时,每个USB端口会把每加仑汽油(约3.8 升)的行驶里程降低0.03英里(约0.48公里)。据通用汽车已退休技术高管乔恩·博瑞萨(Jon Bereisa)预计,仅在美国,开车时给手机充电每年会额外产生约97万吨能让地球变暖的二氧化碳。

由于汽车厂商仍在继续为汽车增加可为手机充电的USB端口,相信这种情况还会进一步加剧。美国汽车零部件制造商Delphi Automotive工程副总裁马力·古思坦斯基(Mary Gustanski)称:“当前汽车上的USB端口数量远未达到上限。而且,随着技术的创新,USB端口不仅能为手机充电,甚至还能连接无线。因为消费者想把汽车当成家。”

这不仅仅是一个环境问题。随着各种消费电子产品的普及,仪表盘触摸屏及其他技术的发展,12V的汽车供电系统将逐渐被淘汰。一些汽车厂商已经表示,未来型号产品将配备48V供电系统。

调研公司IHS数据显示,去年美国售出了1460万辆具有USB充电端口的汽车,而2005年约为330万辆。IHS预计,2022年该数字将增加到1670万辆。全球范围内,2022年将售出8500万辆具有USB充电端口的汽车,而去年约为4900万辆。

IHS的报告并未提及每辆汽车拥有多少个USB端口。以克莱斯勒去年推出的小型货车Pacifica为例,该车拥有9个USB充电端口,高于任何一辆汽车。

博瑞萨称,手机在充电时,每个USB端口会把每加仑汽油(约3.8升)的行驶里程降低0.03英里(约0.48公里)。在美国,司机每年行驶的里程约为3万亿英里,以每加仑平均30英里的速度计算,手机充电每年会额外使用1亿加仑的汽油,成本约为2亿美元。

另据一环境保护机构称,按照美国每辆汽车为一部手机充电计算,每年产生的额外的二氧化氮数量相当于185257辆客运车辆所产生的二氧化碳,同时也相当于燃烧9.45亿磅(约合4.3亿公斤)煤炭所造成的污染。

博瑞萨还称,到目前为止智能手机最经济的充电方式就是在家充电。按照每加仑汽油2美元计算,车内充电的成本是每小时2美分。而在家充电,每小时成本仅为0.06美分。

Viewing all 11805 articles
Browse latest View live