您当前位置: 南顺网络>> 官方资讯
  • 南顺网络恭祝大家新春快乐!

    北风挡不住春天的脚步,2018已向我们挥手告别;冰雪封不住青春的热情,2019正随春潮滚滚而来!春节即将如期而至,在合作伙伴的关注与支持下,本年度南顺网络的工作也将要画上圆满的句号。感谢各位合作伙伴在这一年,对我们工作的支持与配合!在此公布南顺网络2019年春节放假时间:                                  2019年2月2日--2019年2月10日,2月11号(初七)正式开工。     南顺网络恭祝大家在新的一年里,诸事顺利,万事如意,财源滚滚,心想事成!

  • 南顺网络技术开发部户外团建活动

    今年公司接手多个重大项目,技术部同事为项目付出了辛勤的汗水,加班加点,任劳任怨,终于把多个项目顺利完成,做为IT人员,每天面对着代码,是很枯燥无味的,在公司领导关怀体恤下,伙伴们趁着冬日暖阳,抓着年底的尾巴,南顺网络技术部伙伴结伴而行,组织到安义千年古村游山玩水,吃喝玩乐,晒晒太阳,看看风景,好不惬意!大家边走边看,有说有笑,阳光照进每个人的心中,美好的心情洋溢在每个伙伴的脸上,这一年的辛酸,这一年的苦辣,都不算什么!走在千年古村的石坚小路上,远远的就能感受到古村的神秘风采,一览古村田园风光,乡村风貌,让平时待在市中心的我们,有着另一番体验。这些古老的玩意,现在怕是很难再见到了吧,是不是让你想起了小时候在乡村的时光啦,伙伴们还是玩得挺开心的!时间过得飞快,让我们把这一刻保存下来,成为我们美好的回忆吧!

  • 南顺网络团队建设与企业文化建设

    2018年是南顺网络创新团队,树品牌的重要转折年,在2018年12月,南顺网络进行了一次团建文化会议,会议中南顺网络总经理张总,运营总监叶总对这一年团队建设与企业文化建设做了重要讲话。    在会中,南顺网络运营总监叶总对成长型企业应该佣有怎样的团队和企业文化做了详细的分解,同事们都细心听讲,深刻理解,一个公司大到团队,小到个人,都是需要包容与合作,需要自我提升,才能让公司得到更大的发展,并鼓励团队的每一个人都要敢于提出问题,分享自己,团队才会更有凝聚力,企业文化氛围才会更浓厚!    会议后,南顺网络总经理张总也为此次会议做了总结,为团队建设与企业文化建设提出了自己的建议,并为在坐的每一位家人鼓励,提出在团队中,每一个人把简单的事情都做好,那就是不简单,相信通过此次团建会议,大家会更加努力工作,团队协作更融洽!

  • 盈科(南昌)律师事务所:互联网+律师事务所平台建设合作项目

    11月15日,南顺网络与合作伙伴北京市盈科(南昌)律师事务所签订互联网+律师事务所平台建设合作项目。律师介绍  于丰恺主任律师:盈科股权高级合伙人,华东政法大学法律硕士,公司法与企业风险管理法律事务部主任,江西省知识产权局特聘特派员,劳动人事争议仲裁委员会仲裁员,江西卫视《金牌调解》栏目特邀观察员,江西卫视《都市现场》栏目特邀律师。担任多家国家机关、团体、企事业单位的常年法律顾问,承办了多起各类重大、疑难民商事诉讼案件,具有丰富的诉讼和非诉讼实务经验。  擅长为企事业单位进行法律风险管理,建立法律风险管理制度与体系,对高层管理人员进行法律培训;在企业应收账款管理、合同风险诊断、分析、评估、出具解决方案,对投资项目法律风险分析论证有十分丰富的经验和独到的见解。熟悉建设工程行业、房地产业、金融投资、抵押担保、交通物流、化工涂料行业、环保行业、IT 行业、银行、生产加工销售业、电子行业、租赁市场所涉及的法律知识和实践经验。项目分析“互联网+”时代,任何互联网技术在律师事务所领域的应用都能够产生非常巨大和直接的力量。用户需求不数年出现,互联网律师事务所不能彻底满足、其实,互联网技术在律师事务所行业的应用就是借助新的技术满足用户新需求的过程。南顺将从市场的角度和客户需求出发,融合视觉美学及有效策略,为客户提供专业化、品牌化的网站界面设计、网站策划,网站建设与研发等。南顺优势1、专注互联网+技术解决方案:构建有生命力的平台体系南顺网络创造出“电脑营销型网站+手机营销型网站+微信网站+APP客户端”为一体的四网合一网站建站系统。2、案例更多经验更加丰富超过1000多例成功为政企信息提供完整的解决方案,20个互联网行业应用,让互联网+重塑传统企业边界,我们始终坚持为每个客户定制网站。

  • 南顺网络面向智慧校园布局

         2017年,教育部办公厅关于印发《2017年教育信息化工作要点》的通知中明确指出:引导各级各类学校开展数字校园、智慧校园建设与应用。数字校园和智慧校园成了学校信息化的代名词,各省市也相继出台相关政策,明确数字校园和智慧校园要建设的内容,无线网络作为一个基础接入网络,是数字校园和智慧校园必不可少的组成部分。2018年,教育部か公厅关于印发《2018年教育信息化和网络安全工作要点》的通知,该通知中第二条明确提到,鼓励具备条件的学校开展“无线校园”建设,配备师生用教学终端。第三条提出引导各级各类学校结合实际特色发展,开展数字校园、智慧校园建设与应用。南顺网络自主研发的智慧校园三大特征:智慧消息、智慧生活、智慧家校      南顺网络经过十年的高速发展,跟随互联网时代的步伐,不断创新与实践,在不同的技术领域实现更大的可能,从当初的网站建设到高端APP开发到布局智慧校园、始终坚持以技术开发为核心,提升行业竞争力!      南顺网络开发的智慧校园项目是公司自主研发的“智慧校园”管理系统,依托应用人脸识别、视频监控和无线网络等物联网先进技术,实现对人和物身份及状态信息的智能传感,构建一个创新的、安全的、和谐的校园综合管理模式。

  • 南顺网络被邀请入围中国科学家论坛

    中国科学家论坛提名入围函

  • 南顺网络开启江西人工智能技术开发

    人工智能影响(1)人工智能对自然科学的影响。在需要使用数学计算机工具解决问题的学科,AI带来的帮助不言而喻。更重要的是,AI反过来有助于人类认识自身智能的形成。(2)人工智能对经济的影响。专家系统更深入各行各业,带来巨大的宏观效益。AI也促进了计算机工业网络工业的发展。但同时,也带来了劳务就业问题。由于AI在科技和工程中的应用,能够代替人类进行各种技术工作和脑力劳动,会造成社会结构的剧烈变化。(3)人工智能对社会的影响。AI也为人类文化生活提供了新的模式。现有的游戏将逐步发展为更高智能的交互式文化娱乐手段,今天,游戏中的人工智能应用已经深入到各大游戏制造商的开发中。   伴随着人工智能和智能机器人的发展,不得不讨论是人工智能本身就是超前研究,需要用未来的眼光开展现代的科研,因此很可能触及伦理底线。作为科学研究可能涉及到的敏感问题,需要针对可能产生的冲突及早预防,而不是等到问题矛盾到了不可解决的时候才去想办法化解。

  • 2018年南顺网络推出H5场景在线制作平台

    2018年南顺网络推出H5场景在线制作平台! 南顺网络制作了700多套H5模板,提供给各行业选择,快速制作属于自己的H5宣传片。 南顺H5宣传融合了各大行业,可以接入视频、音乐、语言等,是目前主流的H5制作平台。南顺网络欢迎新老客户前来体验,请登录官方体验:nengjd.com。

  • 祝贺:南顺网络与搜学360成为战略合作伙伴

    祝贺:南顺网络与搜学360成为战略合作伙伴!搜学360项目启动于2017年11月,项目预计2018年3月份结束,2018年新型的互联网教育模式从这里开始!搜学360新型的教育门户平台,打造互联网交易新模式搜学网技术二次研讨会议

  • 北京市盈科(南昌)事务所:互联网+律师事务所平台建设合作项目

    8月26日,南顺网络与新的合作伙伴北京市盈科(南昌)事务所签订互联网+律师事务所平台建设合作项目。 律师介绍 万冬琴,华东交通大学法学学士,北京市盈科(南昌)律师事务所国际投资与贸易法律事务部部门骨干律师,盈科南昌党支部副书记;南昌市律师协会法律顾问专业委员会委员;南昌市律师协会公司法专业委员会委员。擅长公司法律事务、保险合同纠纷、二手房买卖合同纠纷、企 业法律顾问、婚姻家庭纠纷及刑事辩护等。积极参与社会公益曾先后参与江西省法律援助中心指派的被判处无期徒刑以上的重大刑事案件的二审程序或死刑复核程序。参与南 昌市政府信访局多起重大信访案件律师接访活动,参与南昌市政府信 访局律师接访工作,多次为公民提供免费法律咨询活动,多次走进基 层社区、街办,开展“送法进社区活动”等活动。 万冬琴律师一贯坚持诚信、负责、效率的执业理念,并致力于不 断提升专业化、规范化、标准化、精细化的法律服务水平。持续深入 研究学习,以良好的诚信铸就品牌,以优质服务锻造未来。 项目分析 “互联网+”时代,任何互联网技术在律师事务所领域的应用都能够产生非常巨大和直接的力量。用户需求不数年出现,互联网律师事务所不能彻底满足、其实,互联网技术在律师事务所行业的应用就是借助新的技术满足用户新需求的过程。南顺将从市场的角度和客户需求出发,融合视觉美学及有效策略,为客户提供专业化、品牌化的网站界面设计、网站策划,网站建设与研发等。 南顺优势 1、专注互联网+技术解决方案:构建有生命力的平台体系 南顺网络创造出“电脑营销型网站+手机营销型网站+微信网站+APP客户端”为一体的四网合一网站建站系统。 2、案例更多经验更加丰富 超过1000多例成功为政企信息提供完整的解决方案,20个互联网行业应用,让互联网+重塑传统企业边界,我们始终坚持为每个客户定制网站。

  • 海优歌:互联网+亲子游泳平台建设合作项目

    8月14日,南顺网络与新的合作伙伴江西海歌亲子企业管理凤凰彩票官网签订互联网+亲子游泳平台建设合作项目。 公司介绍 海优歌是全省第一家也是唯一 一家亲子游泳的早教机构。我们的课程是来自全球最大的母婴启蒙机构,英国剑桥的生之光教程体系。我们的每位教练包括老板,都是获得了英国STA国际游泳协会培训及认证上岗的。课程根据小朋友的年龄段及他们的发育特点和需求分龄分课。声之光课程特色是遵从孩子的天性和意愿,在最亲密的亲子关系中培养健康亲子关系和兴趣,从而达到最好的课程效果。 项目分析 “互联网+”时代,任何互联网技术在亲子游泳培训领域的应用都能够产生非常巨大和直接的力量。用户需求不数年出现,互联网亲子游泳培训不能彻底满足、其实,互联网技术在亲子游泳培训行业的应用就是借助新的技术满足用户新需求的过程。南顺将从市场的角度和客户需求出发,融合视觉 美学及有效策略,为客户提供专业化、品牌化的网站界面设计、网站策划,网站建设与研发等。 南顺优势 1、专注互联网+技术解决方案:构建有生命力的平台体系 南顺网络创造出“电脑营销型网站+手机营销型网站+微信网站+APP客户端”为一体的四网合一网站建站系统。 2、案例更多经验更加丰富 超过1000多例成功为政企信息提供完整的解决方案,20个互联网行业应用,让互联网+重塑传统企业边界,我们始终坚持为每个客户定制网站。

  • 奥新遮阳帘:互联网+奥新遮阳帘平台建设合作项目

    7月1日,南顺网络与新的合作伙伴奥新遮阳帘经营部签订互联网+奥新遮阳帘平台建设合作项目。 公司介绍   南昌奥新窗帘遮阳技术凤凰彩票官网是一家南昌窗帘安装办公窗帘专业从事南昌安装办公窗帘窗帘安装遮阳产品制作销售的专业公司,是集研制、生产、销售窗帘产品为一体的专业南昌窗帘公司产品有百叶窗帘轨、卷帘窗帘、垂帘窗帘、铝百叶窗帘、木百叶窗帘安装(法国SOMFY电机,面料为法国梅尔梅阳光面料)等产品分为手动和电动系列.公司承接电动窗帘系统电动舞台幕及户外和室内外电动遮阳系统工程.公司总部设在广州、湖南、江西,四川,湖北等设有分公司在南昌西湖区云飞路设有展示厅。本公司专业制作销售:南昌窗帘安装电动开合帘、安装窗帘电动卷帘、普通拉珠办公卷帘窗帘,百叶帘,中高档布艺专业设计,专业制作,专业精神,上门送样,量尺等。主题专营:南昌办公窗帘 家居酒店窗帘 智能遮阳 智能遥控电动窗帘 丝印广告窗帘 户外电动遮阳 电动开窗 卷帘 百叶帘 天棚帘 开合帘 户外遮阳棚。 项目分析 “互联网+”时代,任何互联网技术在奥新遮阳帘领域的应用都能够产生非常巨大和直接的力量。用户需求不数年出现,互联网奥新遮阳帘不能彻底满足、其实,互联网技术在遮阳帘行业的应用就是借助新的技术满足用户新需求的过程。南顺将从市场的角度和客户需求出发,融合视觉美学及有效策略,为客户提供专业化、品牌化的网站界面设计、网站策划,网站建设与研发等。 南顺优势 1、专注互联网+技术解决方案:构建有生命力的平台体系 南顺网络创造出“电脑营销型网站+手机营销型网站+微信网站+APP客户端”为一体的四网合一网站建站系统。 2、案例更多经验更加丰富 超过1000多例成功为政企信息提供完整的解决方案,20个互联网行业应用,让互联网+重塑传统企业边界,我们始终坚持为每个客户定制网站。

  • 花钱买数据也不行!苹果这次对Facebook下了狠手

    刚刚,苹果撤销了Facebook的iOS开发者资格证书!早上起床就被这个新闻标题惊呆了。苹果和Facebook这两大巨头的确素来不睦,库克和扎克伯格也频频隔空批评对方,但移动巨头和社交巨头真的到了彻底撕破脸,乃至封杀Facebook的地步?没那么严重。实际上,苹果只是取消了Facebook的企业开发者资质。Facebook在iOS正常的应用分发并不会受到影响,普通用户依然可以在iPhone和iPad下载Facebook、Instagram、WhatsApp、Facebook Messenger等诸多社交应用。那到底是什么意思?Facebook没法在iOS平台发布其面向内部员工的应用了,这既包括了Facebook社交矩阵诸多新功能服务的测试版本,也包括了Facebook员工内部的服务应用,比如说Facebook员工的班车应用和午餐应用。此举对Facebook影响大么?还是挺大的。抛开员工生活服务不提,Facebook诸多新功能原本是通过员工应用进行内测的,现在被苹果封杀之后,iOS应用的内测就成为了一个大问题。当然,Android平台并不会受到影响。然而,即便Facebook鼓励员工使用Android手机,iOS也是Facebook最看重的高价值用户群。苹果为什么要对Facebook下狠手?苹果的封杀理由是Facebook滥用苹果的企业开发者计划,付费吸引普通用户下载安装本应用于员工内测的VPN应用,违规搜集用户大量隐私数据,严重违反了苹果的开发者协议。“任何开发者通过企业开发者权限向消费者分发应用,都会被取消权限。这是为了保护用户和数据。”究竟是什么事?这款引发争议的VPN描述文件应用叫“Facebook Research”。用户下载并点击信任之后,这款应用就可以获得广泛的手机接入权限,搜集用户几乎所有的数据,包括安装应用、地理位置、聊天记录、上网浏览和手机使用等隐私数据。此事是由美国科技媒体Techcrunch调查曝光的。Facebook从2016年开始在Instagram上打广告,以付费参加社交媒体研究的名义,吸引13-35岁的用户参加自己的调查项目,每月付费20美元以及额外的每个人20美元的推广拉人奖金,吸引他们下载安装和持续使用Facebook的此类隐私数据分析应用(包括iOS和Android应用)。Facebook甚至要求用户截图他们的亚马逊订单购买记录。在这些用户中,大约有5%属于未成年人。换句话说,Facebook是在付钱换取用户用户出卖自己的数据用于Facebook的商业分析。这是Facebook调查未来商业趋势的测试项目Project Atlas。显然,对Facebook来说,这些完整详尽的个人智能手机使用数据的价值远远超过了每月20美元,才会愿意冒着被苹果封杀的风险去违规推广。原本Facebook是公开推广此类项目的。但去年6月苹果封杀了Facebook一款类似搜集用户数据的应用Onavo Protect,Facebook是在2014年斥资1.2亿美元收购这个创业项目。Onavo依然在谷歌商店可以下载,累计下载量超过了1000万次。在被苹果App Store下架之后,Facebook并没有彻底死心,而是利用了企业开发者机制,绕过苹果应用商店,从员工内测渠道继续推出此类应用,付费吸引普通用户(包括了成人和儿童)下载该应用,继续收集和分析用户的手机上网行为。实际上,Facebook Research可以被视为Onavo的另一个版本。在被媒体曝光之后,苹果随即撤销了Facebook的企业开发者资质。讽刺的是,在苹果采取行动之后,Facebook才发表声明称公司已经关闭了iOS版本的Research项目,假装是自己主动取消了该应用。过去一年时间,Facebook连续被爆出多起涉及用户数据的丑闻,其中影响最大的就是2016年美国大选期间的“剑桥分析公司”丑闻。一家大数据营销公司利用Facebook数年前的管理漏洞和制度缺失,违规获得了数千万用户的个人数据,用于精准投放政治广告。由于剑桥分析公司在16年大选期间的服务客户是后来获胜的美国总统特朗普,这起事件引发了美国主流媒体和自由派的高度重视。苹果CEO库克已经多次公开批评Facebook收集和出售用户隐私数据进行获利。在批评Facebook之后,库克总是会提到苹果高度重视用户隐私的企业理念,甚至公开呼吁监管部门采取措施,加强对收集用户数据行为的管理和惩罚。而扎克伯格则回击库克根本不懂Facebook的商业模式,Facebook是免费提供服务的,而不是像苹果一样出售昂贵的产品获利。不过,尽管Facebook遭遇了一系列负面打击,但这并没有影响Facebook的业绩。今天发布的Facebook财报显示,去年第四季度Facebook营收169.14亿美元,同比增长30%;净利润68.82亿美元,同比增长61%。Facebook月活用户高达23.2亿人,同比增长9%;日活用户高达15.2亿人,同比增长9%。而且,Facebook高达93%的营收来自移动广告。这一靓丽财报推动Facebook股价盘后大涨11.5%。精准投放的社交广告是Facebook的商业模式基石,而用户大数据生成的社交图谱则是Facebook赖以盈利的资产。虽然Facebook Reseach项目被苹果封杀了,但社交巨头Facebook绝不会轻易放弃对用户数据的渴求。

  • 人工智能在中国的发展状况,中国距离AI强国还有多远?

    第四次工业革命正在来临,尤其是以人工智能为技术已经从科幻逐步走入现实。世界各国已经认识到人工智能是未来国家之间竞争的关键赛场。对于中国而言,人工智能的发展更是一个历史性的战略机遇,对于缓解未来人口老龄化压力、应对可持续发展挑战、以及促进经济结构转型升级至关重要。那么目前,人工智能在中国的发展条件如何,中国距离成为真正的人工智能强国还有多远?7月13日,《中国人工智能发展报告2018》在清华大学主楼接待厅发布。报告中称,目前中国人工智能的发展已经具备非常优越的条件,然而要成为真正的人工智能强国,中国还任重道远。中国在论文总量和高被引论文数量上都排在世界第一,但中国在人才总量,以及杰出人才占比偏低。在产业上,中国的人工智能企业数量排在全球第二,不过,中国人工智能领域的投融资占到了全球的60%,成为全球最“吸金”的国家。        报告指出,中国必须加强基础研究,优化科研环境,培养和吸引顶尖的人才,在人工智能的心基础领域实现突破,保证人工智能发展的根基稳固。同时,要大力鼓励产学研合作,让企业成为人工智能创新的主导力量。积极参与到人工智能全球治理机制的构建中,在人工智能未来的技术发展、风险防范、道理伦理规范制定等领域发挥中国独特的作用。        这份报告由清华大学中国科技政策研究中心、清华公共管理学院政府文献中心、北京赛时科技凤凰彩票官网、科睿唯安、中国信息通信研究院和北京字节跳动科技凤凰彩票官网联合发布        论文总量世界第一,杰出人才占比偏低        报告中称,在论文产出上,中国人工智能论文总量和高被引论文数量都是世界第一。中国在人工智能领域论文的全球占比从1997年4.26%增长至2017年的27.68%,遥遥领先其他国家。        高校是人工智能论文产出的绝对主力,在全球论文产出百强机构中,87家为高校。中国顶尖高校的人工智能论文产出在全球范围内都表现十分出众。        不仅如此,中国的高被引论文呈现出快速增长的趋势,并在2013年超过美国成为世界第一。        但在全球企业论文产出排行中,中国只有国家电网公司的排名进入全球20。从学科分布看,计算机科学、工程、和自动控制系统是人工智能论文分布最多的学科。国际合作对人工智能论文产出的影响十分明显,高水平论文中国通过国际合作而发表的占比高达42.64%。专利申请上中国专利数量略微领先美国和日本。中国已经成为全球人工智能专利布局最多的国家,数量略微领先于美国和日本,三国占全球总体专利公开数量的74%。        全球专利申请主要集中在语音识别、图像识别、机器人、以及机器学习等细分方向。中国人工智能专利持有数量前30名的机构中,科研院所与大学和企业的表现相当,技术发明数量分别占比52%和48%。        企业中的主要专利权人表现差异巨大,但中国国家电网近五年的人工智能相关技术发展迅速,在国内布局专利技术量远高于其他专利权人,而且在全球企业排名中位列第四。中国的专利技术领域集中在数据处理系统和数字信息传输等,其中图像处理分析的相关专利占总发明件数的16%。电力工程也已成为中国人工智能专利布局的重要领域。        虽然在论文总量和高被引用论文数量上中国排名领先,但在人才投入上,中国表现并不突出。        根据该报告,截至2017年,中国的人工智能人才拥有量达到18232人,占世界总量8.9%,仅次于美国(13.9%)。高校和科研机构是人工智能人才的主要载体,清华大学和中国科学院系统成为全球国际人工智能人才投入量最大的机构。        然而,按高H因子衡量的中国杰出人才只有977人,不及美国的五分之一,排名世界第六。企业人才投入量相对较少,高强度人才投入的企业集中在美国,中国仅有华为一家企业进入全球前20。中国人工智能人才集中在东部和中部,但个别西部城市如西安和成都也表现十分突出。国际人工智能人才集中在机器学习、数据挖据和模式识别等领域,而中国的人工智能人才研究领域比较分散。中国人工智能企业数量全球第二,但投融资规模最大报告称,中国人工智能企业数量从2012年开始迅速增长,截至2018年6月,中国人工智能企业数量已达到1011家,位列世界第二,但与美国的差距还非常明显(2028家)。        中国人工智能企业高度集中在北京、上海、和广东。在全球人工智能企业最多的20个城市中,北京以395家企业位列第一,上海、深圳和杭州也名列其中。中国人工智能企业应用技术分布主要集中在语音、视觉、和自然语言处理这三个技术,而基础硬件的占比很小。        风险投资上,从2013到2018年第一季,中国人工智能领域的投融资占到全球的60%,成为全球最“吸金”的国家。但从投融资笔数来看,美国仍是人工智能领域创投最为活跃的国家。在国内,北京的融资金额和融资笔数都遥遥领先其他地区,上海和广东的人工智能投资也很活跃。从2014年开始,国内人工智能投融资活动的早期投资的占比逐渐下降,投资活动日趋理性,但A轮融资还是占主导地位。中国人工智能市场增长迅速,计算机视觉市场规模最大。2017年中国人工智能市场规模达到237亿元,同比增长67%。计算机视觉、语音、自然语言处理的市场规模分别占34.9%、24.8%、21%,而硬件和算法的市场规模合计不足20%。预计2018年中国人工智能市场增速将达到75%。产品应用范围广泛,语音和视觉类产品最为成熟。人工智能已经在医疗健康、金融、教育、安防等多个垂直领域得到应用。全球智能音箱市场增长迅速,国内外主要互联网企业都有部署,其中谷歌和亚马逊的市场份额超过全球60%,中国的阿里巴巴和小米分列第三和第四位。2017年全球机器人市场达到232亿美元,中国市场占27%。其它如无人机、智能家居、智能电网、智能安防、智能医疗和智能金融也发展较快。除了上述两个板块外,报告人工智能的发展战略和政策环境、以及社会认知和综合影响等方面描绘中国人工智能的发展面貌,力图综合展现中国乃至全球人工智能发展现状与趋势,以提升公众认知水平、助力产业健康发展、服务国家战略决策。

  • Google上线更新:页面速度影响移动搜索排名

          网站浏览起来缓慢这无疑对用户来说体验不佳,停留的时间和来访的次数自然不用说。谷歌显然清楚这一点——从 2018 年 7 月开始,谷歌将在排名算法中使用网页的速度进行移动搜索排名。这意味着慢速网站将受到一定的“惩罚”,而更快的网站将在搜索结果中排名更加靠前。        据SE Roubdtable报道,Google几小时前刚刚在官方Twitter账号发布消息:被称为速度更新( Speed Update)的算法更新,也就是页面速度影响移动搜索排名的算法,正在全面上线中。        更确切地说,这个更新应该被称为移动速度更新,Mobile Speed Update,因为这是针对移动页面和移动搜索排名的。        做SEO的肯定都知道,页面打开速度是搜索排名因素之一,Google和百度都是如此。Google把页面速度作为排名算法因素之一早在2010年4月就公布并开始了。不过页面速度只是排名算法的很小一个因素,只影响了1%的查询排名,只有速度真的非常非常慢的页面会被影响。        不过有点令人迷惑的是,直到今天为止,从2010年就开始的页面速度影响排名指的是PC搜索和PC页面打开速度,并不是移动搜索。        过去两三个月,Google分批次把满足条件的网站转向移动优先索引,我的大部分网站都已经在 Google Search Console中看到通知,已经转为移动优先索引了,也就是Google开始索引网站的移动版,而不是PC版,作为排名的依据。        而到目前为止,移动页面的速度是不作为搜索排名因素的。Google又开始使用移动页面索引来排名,所以那些转向移动优先索引的网站的页面速度反倒不影响搜索排名了。移动搜索排名却看的是PC页面的速度。这听起来是不是有点不合逻辑呢?移动搜索和移动页面才更需要考虑页面速度啊。        所以Google今年1月就发帖说,他们在考虑这个问题,将会在7月份把页面速度作为移动搜索的排名因素。这个算法今天如期上线。  关于这次速度更新,有几个点值得注意:  1.只影响特别慢的页面  2.只影响一小部分查询词  3.满足查询意图还是最重要的,所以如果有好的、相关的内容,很慢的页面还是会有好排名  4.速度快并不是加分因素,所以速度已经不错的页面,即使速度改进得更快,也不会提高排名  5.受影响的那些很慢的页面,速度有一定改进就会使排名有很大提升  6.PC索引还是使用PC页面速度  所以,如果读者的英文网站在这一两天排名和流量,尤其是移动搜索,有比较大的降低,可能是因为移动页面速度太慢了。如果有提升,可能是排在前面的竞争对手页面太慢了,被降低排名了。  现在移动搜索是所有搜索引擎的重心,百度也是如此,或者说更是如此。上星期参加2018年厦门MadCon大会和百度搜索沙龙,百度现在力推的熊掌号也是针对移动搜索,PC搜索的事现在基本不提了。  原因也很简单,移动搜索查询量超过PC端搜索。下图是过去2年世界范围移动搜索和PC搜索份额:        大致从2016年10月移动搜索查询量全面超过PC搜索。目前移动搜索份额是52.36%。        下图是过去2年中国移动搜索和PC搜索比例:        中国移动搜索超过PC搜索查询量更早,移动搜索比例也更高。目前中国移动搜索占比为65.53%,比全球范围高得多,这也可能是百度对移动搜索更上心的原因之一。

  • 一文看尽2019年IT及大数据行业趋势权威预测

    2018已经过去,今年区块链、5G、芯片、量子计算成为大家不断提及的技术重点,明年大数据科学还会有哪些发展方向,IT行业还有哪些发展趋势?众多机构都针对未来产业发展做出预测。CCF:2019年大数据发展趋势十大预测        在12月6日举行的2018中国大数据技术大会上,CCF大数据专家委员会发布《2019年大数据发展趋势预测》报告时表示,大数据和数据从辅助到引领,从热点到支点,已经成为所有新旧技术、新旧模式的必备基础。        据预测,2019年,大数据最令人瞩目的应用领域是健康医疗、城镇化智慧城市、金融、互联网电子商务、制造业工业大数据。        取得应用和技术突破的数据类型是城市数据、视频数据、语音数据、互联网公开数据以及企业数据、人体数据、设备调控、图形图像。Gartner:2019年十大战略性技术趋势        Gartner列出了企业组织在2019年需要探究的十大战略性技术趋势:自主设备、增强分析、AI驱动的开发、数字孪生、边缘计算、沉浸式体验、区块链、智能空间、数字道德和隐私、量子计算。        Gartner fellow兼副总裁David Cearley认为,无处不在的智能设备提供各种基于大数据的贴心服务,将是科技的未来。Gartner称之为Intelligent Digital Mesh。        Intelligent:AI将深入所有已有的垂直行业,并创造出新的行业。        Digital:物理世界和数字世界将被折叠,新的「沉浸」世界将会产生。        Mesh:人、生意、设备、内容、服务将连结成一个不断扩张的大网。        Cearley认为,上述三点覆盖下的所有趋势都将带来持续的创新增量。        IDC:2019年及以后的全球信息技术(IT)行业的预测        IDC公司将数字化的经济、边缘计算、应用开发革命、人工智能、高信任度、多种云服务等产业列为全球IT市场十大热点。        IDC FutureScape报告中认为,鉴于竞争对手和产业都在向数字化转型,如果企业不能快速向数字化转型,到2022年,它们逾三分之二的目标市场会消失。        预测1:数字化的经济。到2022年,逾60%的全球GDP将都是数字化的,推动2019-2022年期间与IT相关的投资将达到约7万亿美元。        预测2:数字化原生IT。到2023年,75%的IT支出将用于第三代平台技术,因为逾90%的企业会建立“数字化原生”IT环境,在数字经济中快速增长。        预测3:边缘计算快速增长。到2022年,逾40%机构的云部署将包含边缘计算,25%的终端设备和系统将执行人工智能算法。        预测4:应用的革命。到2022年,90%的新应用将采用微服务架构,提高设计、调试、更新和利用第三方代码的能力,35%用于生产环境的应用将原生支持云计算服务。        预测5:新的开发者阶层。到2024年,新出现的不使用定制脚本的专业开发人员,将使开发者数量增加30%,加速数字化转型。        预测6:数字化创新爆发。从2018-2023年,借助新工具/平台、更多开发者、灵活的方法和大量代码重用,新开发的应用数量将达到5亿款,相当于过去40年的总和。        预测7:通过专业化实现的增长。到2022年,25%的公共云计算服务将基于非x86处理器(包括量子计算机);届时,机构在垂直“软件即服务”应用方面的支出超过水平应用。        预测8:人工智能成为新的用户界面。到2024年,采用人工智能技术的用户界面和过程自动化将取代三分之一目前基于显示屏的应用;到2022年,30%的企业将利用对话式语音技术提供客服服务。        预测9:更高的信任度。到2022年,50%的服务器对数据进行加密,逾50%的安全警报由采用人工智能的自动化过程处理,1.5亿人将有基于区块链的数字身份        预测10:机构使用多种云服务。到2022年,四大云平台将托管80%的基础设施即服务/平台即服务部署,但到2024年,9成的全球1000大机构将通过采用多款云服务,或者混合云技术和工具减轻对某一云服务的依赖。        从各机构预测看出,数据已经成为基础设施,数字化转型成为企业的必选之路。大数据已经同人工智能、云计算高度融合,数据分析及计算能力进一步提升。中国在近两年对零售业、金融业数字化改造逐步深化后,制造业、农业等传统产业将成为未来改造重点。同时数字化程度越高,数字安全问题越受关注,保障及立法迫在眉睫。        在经济形势不稳定的情况下,通过技术研发构建核心竞争力的需求越发迫切。中国在5G技术、芯片技术、量子计算等领域加大研发,掌握先进技术;在大数据、人工智能、云计算、区块链等技术上加强应用,寻求技术落地,促进企业降低成本、提质增效。        在数字经济的新一轮竞争中,中国已经走在前列,2019年数字化进程将不断深化。

  • 十种可能改变IT行业走向的编程语言__编程语言前沿

    作为开发人员,我们真的还需要学习那么多的新型编程语言吗。现在所拥有的选择已经是相当的丰富,命令语言、函数语言、面向对象型语言、动态语言、编译语言、解释型语言以及脚本语言等等。这些身处业界前沿的编程语言为软件开发工作的未来提供了独到的解析视角。我们真的还需要那么多新型编程语言吗。当前开发人员们所拥有的选择无疑已经相当丰富。命令型语言、函数型语言、面向对象型语言、动态语言、编译语言解释型语言以及脚本语言等等似乎已经完全罩得住我们可能面对的一切任务,而且今日也几乎没有哪位专业人士能够通晓上述全部语言。然而,新型语言仍然在以惊人的速度不断涌现。有些是学生或者爱好者以个人项目的形式所设计,另一些则是来自大型IT供应商的产品。连中小型企业也不甘势弱,积极针对其所在行业的需要开发出服务用语言。为什么人们如此热衷于这种重复性劳动呢。答案其实很简单,尽管目前大家手头的语言在功能性与通用性方面已经相当强大,但仍然没有哪种单独的语法规则能程度迎合任何一种实际需求。更重要的是,编程行为自身也处于不断的发展变化当中。多核CPU的崛起、云计算的升温、高流动性与分布式体系结构,这一切的一切都向开发人员提出了新的技术性挑战。要为现有语言——尤其是当下流行的语言——添加新功能、范例以及模式可以说比登天还难。有时候直接搞一套新语言往往是解决方案。那么在这里,我将带大家一同纵览十种位居业界前沿的编程语言;其中每种方案都从全新的视角诠释了软件开发工作的艺术性,并以各自不同的特色解决了某些具体问题或是弥补了当下某款主流语言的独有缺憾。它们中有些是已经颇为成熟的项目,而有些则尚处于自身发展的初级阶段。有些可能对于大家来说还相当陌生且显得晦涩但懂,但毋庸置疑的是,它们很可能在未来给开发业界带来颠覆性的突破,并彻底改变今年数年的编程工具发展趋势——在新一代语言面世前,它们就是未来的生力军。实验性编程语言: DartJavaScript在为网络页面添加基本交互功能方面表现拔群,但当网页应用程序的体积达到数千行代码时,该语言的局限性就将暴露无遗。谷歌正是基于这种缺憾而推出了Dart,而这种语言也承载了谷歌为网页编程带来全新标准的雄心壮志。38c32459-c785-4450-adf4-113ec18976db.jpg与JavaScript相似,Dart采用了与C语言相似的语法及关键字。然而Dart与JavaScript最为显著的区别在于,前者中的对象明确指向类及接口,这与C++及Java颇有异曲同工之妙。Dart还允许程序员们利用静态式有选择地声明变量。追溯设计者的思路,他们应该是希望Dart与JavaScript一样更易于学习、保有动态特色以及流畅的执行效果,这样一来开发人员就能够在编写代码方面投入较少的时间,产品维护也将更为便捷,同时细小的错误带来的影响也将被降程度。目前我们还不能用Dart解决太多实际问题。其设计理念是希望该语言能够同时运行于客户机与服务器之上(与Node.js差不多),但现在惟一能够让Dart代码在客户端上运行的办法是将其通过编译转换为JavaScript。它还不能正确作用于每一款浏览器。不过由于Dart以BSD类开源许可方式进行发布,因此任何购买了谷歌版本的厂商都可以随意将其构建于自己的产品当中。谷歌要做的只是说服业界接受这个编程领域的新生儿即可。实验性编程语言第二位: CeylonGavin King并不承认Ceylon这款他在红帽公司中创造出来的语言肩负着“Java终结者”的历史使命。在King的从业经历中,最为耀眼的一页正是他作为Hibernate——Java对象关系映射框架的创建者所赢得的赞誉。他喜欢Java,但他仍然认为Java还有很多提升空间。King对于Java的抱怨主要集中在冗长的语法结构,这种语言缺乏一级与高端功能,而且对元编程的支持也相当薄弱。而更令他感到沮丧的是,Java中对于结构化数据定义的声明性语法极为欠缺,用他的话来说这使得Java“与XML根本无法分割。”Ceylon的目标就是解决上述疑难杂症。King与他的团队并不打算完全从零做起。Ceylon虚拟机就不会出现,此类功能将通过Ceylon编译器将内容转换为Java字节代码,进而运行于JVM当中。不过Ceylon绝不会止步于一款编译器这么简单。该项目的一大雄心是打造一套全新的Ceylon SDK体系来取代Java SDK,引用King对于后者的评价——结构臃肿、笨拙,且从来没有得到“适当的、与时俱进的调整。”这是一项艰巨的任务,因为红帽公司到目前为止还没有发布过任何一款Ceylon工具。King表示自己期待着能在年内看到一款编译器出现,但不会指望短时间内会有“由Ceylon编写”的软件问世。实验性编程语言第三位: Go解释程序、虚拟机以及托管代码如今正风靡一时。我们真的需要另一款用于将目标内容编译为本地二进制文件的老式语言吗。来自谷歌工程师团队的小组——由Robert Griesemer以及贝尔实验室的传奇式人物Ken Thompson与Rob Pike共同执掌——给出的答案是肯定的。19d21be9-495d-4fce-8b60-ca434a4420ba.jpgGo是一种通用型编程语言,且适用于从应用程序开发到系统编程等各种工作需求。从这种意义上来说,它更接近于C语言或C++,而不是Java或是C#。但与后两者一样,Go中也包含着各类现代化功能,包括垃圾收集、运行时间映象以及对并行性的支持。同样重要的是,Go在设计上有意降低了编程难度。其基础语法与C语言非常相近,但却消除了多余的语法及样板文件,同时简化了对象定义等常用功能的操作。Go项目小组的目标是打造出了一款像动态脚本语言那样拥有亲切代码的语言,并且能够像编译语言那样提供强大的功能性。Go尚处于创建过程之中,而且其语言规范也仍可能发生变动。也就是说,我们目前已经可以开始尝试使用了。谷歌已经为其打造了对应的可用工具与编译器,说明文档之类也相当丰富;举例来说,Effective Go教程就是大家了解Go与其它早期语言不同之处的上佳起点。实验性编程语言第四位: F#函数型程序设计在计算机科学家以及学术界一直都相当流行,但像Lisp以及Haskell这样的纯函数型语言通常被人们认为无法作用于实际应用中的软件开发工作。对于函数型代码,大家抱怨最多的是它们很难与由C++及Java等命令型语言所写成的代码与库相整合。说起F#(发音为“F=sharp”),这款微软推出的语言在设计上可谓兼顾了功能性与实用性。由于F#在.Net公共语言运行(简称CLR)中属于一级语言,因此能够访问其它CLR语言的所有同类库及功能,包括C#及Visual Basic等。F#代码与OCaml多少有些类似,但它同时拥有不少相当有趣的特色语法。例如,F#中的数字型数据可以通过分配获得计量单位,进而为科学类计算服务。F#还为异步式I/O、CPU并行处理以及GPU负载分担等功能提供了必要的理论支持。在度过了微软研究中心中漫长的酝酿期后,F#现在终于同Visual Studio 2010一同面世了。更妙的是,微软这一次不按常理出牌,将F#编译器与代码库通过Apache开源许可呈现在我们面前;大家不仅能够使用这款语言,更可以将其引入Mac及Linux系统(通过Mono运行工具)。实验性语言第五位: OpaWeb开发工作是公认的繁杂无比。就算是最简单的一款Web应用程序也需要不计其数的代码行与多种语言交替使用:HTML与JavaScript处理客户端、Java或PHP应对服务器、SQL负责数据库等等。Opa其实并不打算单独取代上述任何一种语言。相反,它存在的目的是希望通过为Web编程设定一套全新规范的方式一次性将各类方案直接抹杀。在Opa应用程序中,客户端UI、服务器端逻辑以及数据库I/O都由同一种语言负责实施——也就是Opa本身。而要完成这一目标,Opa需要将客户端与服务器端框架进行整合。由Opa编译器来决定某个特定程序是否应该运行于客户端、服务器端或是同时运行于二者之上,其后该编译器将输出运行所必需的代码。对于客户端型程序而言,编译器会将Opa的代码内容转换为相应的JavaScript代码,包括其中的AJAX调用。当然,这样规模的整合型系统也暗藏着一些后台机关。Opa的运行环境将其Web服务器与数据库管理系统捆绑在一起,也就是说我们无法用其它独立的备选方案取代它们的位置。这当然可以算是一点缺憾,但为了保持标准的细致化与完整性,并使得数据驱动的Web应用程序能够以短短数十行代码得以表达,这一切都是值得的。Opa项目完全开源,并且目前已经支持64位Linux以及Mac OS X平台;今后随着工作的深入还将有更多端口得以开放。实验性编程语言第六位: Fantom我们是否应该在开发自己的应用程序时考虑对java及.Net的支持。如果使用Fantom来编写代码,那么一切都不必担心,连交换机平台也不在话下。这是因为Fantom在设计上兼顾到了跨平台的可移植特性。Fantom项目中不仅包括能够为JVM或者.Net CLI输出字节代码的编译器,同时也拥有一组能够容纳Java及.Net接口的抽象化API,也就是创建了一套额外的可移植层。Fanrom的可移植性还有着进一步的扩展规划。目前由Fantom到JavaScript编译器已经可以使用,而接下来我们还可以期望看到包括LLVM编译器、Parrot虚拟机以及iOS版Objective-C在内的各类延展型项目。不过千万别把可移植性当作Fantom语言惟一的存在理由。虽然它在本质上仍然是以C语言为基础,但它同时也对该原始模型进行了充分改良。Fantom语言试图在某些颇具争议的语法讨论——例如牢固与动态或者接口与类——之中获取中立身份。它不仅增加了对数据结构说明及序列化对象的简化说明,还囊括了对函数型程序设计及并行性创建工作的有力支持。Fantom是基于Academic许可3.0版本的开源项目,并且现在在Windows以及Unix类平台(包括Mac OS X)上已经可以付诸使用。实验性编程语言第七位: Zimbu大多数编程语言都从其它早期语言中借用到了某些功能或是语法。而Zimbu则把这种拿来主义精神发挥到。作为Vim文本编辑器作者Bram Moolenaar的另一款得意之作,Zimbu的目标是成为一款速度快、语法简洁、适应移植需求且便于阅读的语言,并最终使得来自任何图形用户界面的应用程序代码得以运行于目标操作系统内核当中。由于Zimbu与生俱来的杂交血统,其语法也相当独特,但同时却又功能丰富。它采用与C语言相似的表达式及运算符,但却使用自己的一套关键字、数据类型及块状结构体系。另外,它还支持内存管理、线程及通道等功能。可移植性一直是个关键问题。尽管Zimbu是一款编译型语言,但其编译器输出的是ANSI C码,这就使得文件只能由具备本地C编译器的平台来生成。遗憾的是,Zimbu项目如今尚处于起步阶段。而其编译器虽然已经能够为自身及其它程序创建一些演示范例,但并不是全部Zimbu有效代码都能够正确运行。不过预期功能目前还不完善,其中一些还只是加以草草设置,因此我相信只要假以时日,这些问题都能得到妥善解决。另外语言规范也很可能随着时间的推移而产生变化,例如在必要时添加新的关键字、类型以及语法等。所以说明文档等材料目前还没有统一的结论。不过如果大家对这种语言有兴趣的话,其初始工具已经在Apache许可基础上得以公布。实验性编程语言第八位: X10并行处理一度作为软件开发领域中的独特生态圈存在,但随着多核心CPU及分布式计算技术的日益普及,并行化也崛起成为未来发展的主流方向。遗憾的是,今日,编程语言仍然没能跟上时代的步伐。而这正是IBM研究中心苦心开发X10的原因,这是一种以提高开发人员生产效率为主旨的实用型语言,希望在现有基础上将开发效率提高“十倍”。X10利用划分式全局地址空间(简称)编程模型来解决并行类任务。代码与数据作为各自独立的单位,分别位于一个或多个“空间”当中,这就使得将单线程字节代码(单独空间)向高性能集群中单核心或多核心处理器(多个空间)的多线程处理能力转化的过程更为简便。X10代码总体来说与Java比较相近;事实上,X10运行环境可以直接作为本地可执行文件以及类文件应用于JVM当中。X10编译器能够输出C++或是Java类型的源代码。达成与Java语言之间的直接操作性是该项目的努力方向。就目前而言,这种语言虽然还处于发展变化中,但也已经算得上相当成熟。其编译器与运行环境支持一系列平台,包括Linux、Mac OS X以及Windows。包括基于Eclipse的IDE及调试工具等都已经以Eclipse公共许可为基础进行发布。实验性编程语言第九位: haXe大多数语言都可以用来编写可移植代码。C语言编译器能够作用于几乎每一种CPU架构,而Java字节代码则能够在一切具备JVM的环境中发挥功效。但haXe(读音为“hex”)能做的则比可移植性更多。它是一款跨平台语言,能够适应各种不同类型的运行环境——包括本地二进制解释程序及虚拟机。开发人员可以利用haXe编写程序,然后将结果编译为对象代码,例如时下流行的JavaScript、PHP、Flash/ActionScript或者NekoVM等等;而像C#、Java等其它输出模块目前仍处于研发阶段。在核心语言之外有haXe标准库作为补充,其指向各类目标的功能也同样齐全,而且还为目标平台的独特功能配备了专用的函数库。haXe在语法上与C语言相似,函数集合相当丰富。它的主要优势在于规避了目标平台自身固有的缺陷。举例来说,haXe具备JavaScript所欠缺的严谨归类;它在ActionScript的基础上增加了通用语句及类型推导;它还完全消除了PHP语言在语法方面的设计疏漏与杂乱无序。虽然仍处于开发阶段,但haXe在其创造者Motion Twin游戏工作室的推动下已经进入商业化运营,因此我们已经应该用严肃的眼光看待它。它支持Linux、Mac OS X以及Windows平台,并采用数款开源类许可相结合的分布模式。实验性编程语言第十位: Chapel在高性能计算领域,很少有哪家企业的风头能够盖过Cray,因此Cray公司的原始编程语言Chapel能够上榜也就毫不奇怪了。这是一款在设计上主要考虑到超级计算机及集群实际需求的语言。Chapel是Cray公司Cascade Program项目的一部分,该项目可谓野心勃勃,其部分计划内资金甚是由美国国防部研究计划局(简称DARPA)所提供。其目标主要是从底层硬件中提取抽象并行算法,进而提高现有架构的性能表现,并使得并行类程序具备更好的可移植性。Chapel的语法脱胎自许多来源。除了几款我们常见的主流语言(例如C、C++以及Java),它还从像Fortran及Matlab这样的科学类编程语言中借鉴了不少概念型内容。它的并行处理能力在一定程度上与ZPL及高性能Fortran密切相关,另一些Cray早期项目也是它的学习目标。Chapel最引人注目的特色之一是其“多分辨率编程”功能,这项功能使得开发人员能够在应用程序中引入更多抽象化代码,并在实施中添加更多细节阐述以使得定义本身更加明确。Chapel仍处于开发阶段。目前它能够运行于Cray超级计算机及各类高性能集群之上,并且可以移植到大多数Unix类系统(包括Mac OS X以及安装了Cygwin的Windows系统)当中。该语言源代码采用BSD型开源许可。

  • 前端越来越流行的的技术

    随着互联网技术不断的发展,前端的新技术也开始日新月异,旧的技术已经不能满足工作的需要,根据业务需求来将重构也是常有的事情,为了减少工作量,快速提高工作效率,这些新出现的技术也起着不可替代的作用。后端的有些架构已经稳定,作为一名前端面对这些花样百出的技术,只有不断的去学习研究,才能不落后于时代潮流。一:TypeScriptTypeScript : http://www.typescriptlang.org/官方介绍:TypeScript是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。从今天数以百万计的JavaScript开发者所熟悉的语法和语义开始。可以编译出纯净、 简洁的JavaScript代码,并且可以运行在任何浏览器上、Node.js环境中和任何支持ECMAScript 3(或更高版本)的JavaScript引擎中。设计了一套类型机制来保证编译时的强类型判断。TypeScript 是 Microsoft 推出的开源语言,使用 Apache 授权协议增加了静态类型、类、模块、接口和类型注解TypeScript 可用于开发大型的应用TypeScript 易学易于理解二:React官方介绍:React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。react官网: https://reactjs.org/--高性能的虚拟DOM--封装的事件机制--服务器端渲染--声明式的直观的编码方式。--跨浏览器兼容三:WebAssembly官方介绍:WebAssembly 是一种可以使用非 Java 编程语言编写代码并且能在浏览器上运行的技术方案。WebAssembly是一项由Mozilla、谷歌、微软及苹果联合开发的项目,致力于为各种语言定义一种二进制形式的编译目标格式,并设计一种可与当前的Web平台集成并在Web环境中执行的方案,最终实现在各类平台上以接近原生的速度调用常见的硬件功能WebAssembly 主要试图解决现有技术的一些问题:--JavaScript:性能不够理想,以及语言本身的一堆坑--Flash:私有技术(而且漏洞一堆),并且是纯二进制格式--Silverlight:私有技术,并且是纯二进制格式--各种插件(Plug-in):安全性问题,平台兼容问题优点--能显著降低加载速度,同时改进运行性能。--二进制格式,容易翻译到原生代码,本地解码速度比JS解析更快。发展趋势:wasm 还提供了一个JavaScript APIwasm: http://webassembly.org/ 四:Yarn中文网:https://yarn.bootcss.com/官网: https://yarnpkg.com/en/官方介绍:Yarn 是一个依赖管理工具。能够管理代码,并与全世界的开发者分享代码。高效、安全和可靠的,够让你使用其他开发者开发的代码,让你更容易的开发软件。是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。五:Angular 4和Angular 5Angular 在今年跨越了两个大版本:于 3月23日 发布的 Angular 4 以及于 11月1日 发布的 Angular 5。angular: https://angularjs.org/--运行应用的速度非常快。--使用MVC架构来开发Web应用程序--通过依赖性注入进行测试--最为核心的是:MVVM、模块化、自动化双向数据绑定、语义化标签、依赖注入六:Vue.jsvue: https://cn.vuejs.org/前面说过,vue之所以流行,在于它的优点众多:--轻巧、高性能、可组件化的MVVM库,--拥有非常容易上手的API;--方便构建数据驱动的Web界面的库。--构建用户界面的 渐进式框架。--采用自底向上增量开发的设计。--核心库只关注视图层,--非常容易学习,容易与其它库或已有项目整合。--Vue.js的崛起始于2015年,并在过去一年中快速发展。下图所示为这套框架可观的市场接受度:

  • 字节跳动确定接盘锤子科技,他们到底看中了罗永浩什么?

    四面楚歌的罗永浩仍然急需下一个金主,毕竟情怀和相声卖不了手机。编者按:本文来自“第一财经”,作者:吕倩、李娜;36氪经授权转载。部分锤子科技员工签约字节跳动1月22日,锤子科技部分员工与北京字节跳动科技凤凰彩票官网签订员工合同,据第一财经记者独家获悉,签订劳动合同的前锤子科技员工还收到了一张印有 ”欢迎加入字节跳动”字样的合同说明。这些员工工作地点暂时不会变化,但具体工作内容方面,目前字节跳动方面尚未与锤子员工详细对接。据接近锤子科技的人士对第一财经记者透露,确有部分锤子员工已和北京字节跳动网络技术凤凰彩票官网签署了劳动合同。据了解,锤子所有硬件业务员工和一部分软件员工都和字节跳动签了劳动合同,而该劳动合同上印有“欢迎加入字节跳动”的字样。对此,字节跳动方面对第一财经记者回应称,字节跳动收购了锤子科技部分专利使用权,探索教育领域相关业务。因为具体交易涉及保密条款,不便披露。也有锤子员工入职公司,这是正常的人才流动。此前,字节跳动针对与锤子科技之间的合作曾公开回应称,有收购锤子科技部分专利使用权的计划,用于探索教育领域相关硬件。接近锤子科技方面人士对第一财经记者表示,之前的确有听说过关于字节跳动在教育平板、早教机等硬件产品方面的信息,但真正产品级定义还没具体落地,双方在软硬件方面的合作刚刚启动。另外,据第一财经记者独家获悉,作为锤子科技编号0002号人物,肖鹏已于2018年12月底加入OPPO旗下realme,担任设计总监一职。当年锤子科技刚刚在新中关大厦12层开业成立时,第一天只有罗永浩与朱萧木两个人,几天后,肖鹏加入了锤子团队。当时,著名UI设计师网站DRIBBBLE上,肖鹏是其人气颇高的国内设计师,而对产品细节苛求完美的罗永浩在该网站上长期潜水、关注肖鹏。其后,老罗特意跑到肖鹏工作的百度公司楼下约他一起吃饭,并通过对公司设计理念、用户体验与审美追求的观点讲解,成功打动肖鹏加入。如今,编号0002的员工也已离开锤子。字节跳动为什么要接盘锤子科技张一鸣字节跳动布局教育领域之心由来已久,恰好锤子在这方面早有专利。2018年年初,今日头条推出了一款介于“得到”和“喜马拉雅”之间的一个知识付费平台——“好好学习”App,进军知识付费领域。2018年3月,今日头条与真格基金、蓝图创投共同领投晓羊教育数千万人民币A+轮。企查查消息显示,晓羊教育是一家To B的公司,主要做中小学智慧校园和教育云服务。2018年5月,今日头条推出少儿在线英语品牌gogokid,面向12岁以下学龄儿童——gogokid在腾讯视频投放了贴片广告,并独家赞助了芒果TV大型亲子节目《爸爸去哪儿6》。2018年7月,今日头条又被爆出收购在线教育公司学霸君的ToB业务。截至2018年3月,学霸君单月流水过3000万元。主营业务方面,C端用户产品续费率超过90%;B端用户目前覆盖全国200多所学校。由此可以看出,今日头条——或者字节跳动——早就开始了自己在教育领域的布局。而张一鸣的布局路线就是C端由自己做产品,B端通过投资并购布局。而根据公开数据显示,锤子科技在软件著作权方面一共有8项专利。其中包括锤子钱包软件、语音助手软件、便签软件和时钟软件等。如今按照字节跳动“收购锤子部分专利”的说法,也就是利用锤子手中的语音助手、便签软件和时钟等相关专利,来完善自己在教育领域的相关布局。除此之外,老罗手中还有锁屏的、截屏的、静音计时的、手机受到撞击后提示的、自拍的、快速拍照的专利。终于找到了买家,但老罗的头痛还没有结束此前第一财经曾报道称,罗永浩先后接触过百度、华为、阿里等方面,寻求接盘,但均未谈妥。一度传闻中国移动要收购锤子,让罗永浩给飞信团队“上上课”。但这笔交易最终流产。而从锤子的财务报表中可以看出,这家公司的亏损情况足以让潜在的买家望而却步。锤子科技 2016 年底总资产 4.2 亿,负债 6.63 亿,所有者权益 -2.43 亿,已然资不抵债。原因是 16 年度营业收入 8 亿元,亏损 4.27 亿所致。当我们在谈论锤子时,其实我们就是在讨论罗永浩。自从2012年4月28日,连续创业者罗永浩在微博宣布要“注册公司做手机”开始,这个曾倒卖过二手书、走私车,做过英语教师,创建过牛博网,开过英语培训学校,出过自传,甚至砸过西门子的冰箱的男人,就开始了一台叫作“会讲相声的理工男怎么做手机”的舞台剧。正因如此,锤子科技从一出生,就带上了罗永浩浓重的个人色彩。而如今罗永浩四处兜售锤子却四处碰壁,甚至在“聊天宝”发布会上给电子烟、电影打广告、做宣发——所以这也难怪“罗永浩疯狂续命”、“老罗求生欲真强”的戏谑声四起。不过,四面楚歌的罗永浩仍然急需下一个金主,毕竟情怀和相声卖不了手机

  • 为什么越来越少的人用jQuery

    在原来的开发中,工程师们不会太纠结于性能问题。但是现在不同了,为了提高用户体现,首要的就是解决浏览器绘制所带了的性能问题。经典的莫过重绘和回流这两个概念。**重绘:**就是页面重新进行绘制,比方说,修改一个元素的背景颜色。**回流:**一般来说,浏览器进入页面的时候就已经进行了一次回流,回流其实指的就是页面重新进行排版布局。既然我们想提高性能,那么就可以先从这两概念入手,肯定是以小的代价更新页面是提高性能好的手段。但可惜的是,jQuery并没有做到。为什么这么说,请看以下分析:当我们拿到一组新闻数据要渲染到ul标签里时,通常我们会先将新闻数据逐条进行字符串拼接,紧接着使用$符选择ul元素,并修改ul的innerHTML的值为拼接好的字符串(使用html API),此时完成了次渲染。这次页面进行了重绘(这时必然的),首先不分析的性能好或坏,用下一个说明将更加有力。比如说我们这时多了一个换一换按钮。在传统开发模式中,这时的换一换按钮肯定执行的还是上面的代码,获取元素,修改元素的innerHTML,但是现在问题出现了,就是我们有必要将所有元素重新删除,再重新添加一遍吗?答案肯定是不需要(下图所示,创建一个元素的代价有多大)。因为这时我们只需要将每一个li里的文字和a标签里的链接修改即可,那显然是没有必要像上面那样重新再添加一遍li的。因为一个DOM元素,可能包含上百条属性,这对性能开销是很大的。那么现在出现的新概念 Virtual DOM(虚拟DOM),就可以解决这个问题。其实Virtual DOM就是对真实DOM节点的描述,通过改变Virtual DOM来以小变动来改变真实DOM(Virtual DOM不一定真的比jQuery性能更好)。

  • [Vue进阶]为什么我的代码让别人看起来头皮发麻?

    前面的话首先我想说的是,这篇文章不是介绍什么高深的技术,请各位熟知。涉及的都是日常开发当中一些不符合规范的案例,借此分享给诸位。如果你是小白,或许这篇文章对你有点帮助,如果你是老司机,看完请轻点拍!有什么建议或意见请留言斧正,谢谢!有些同学在开发某个新功能时根据需求就哐哐哐(按照自己的代码风格)一顿撸。写完发现,另一个地方也有这个模块功能,可能只是标题的颜色,字体大小不对。怎么办? 于是很鸡贼的复制粘贴过去,改吧改吧,提交代码,万事大吉!自己倒是爽了,功能是按照需求如期完成了啊,没毛病。可是你却忽视了一件很重要的东西:团队。记住,你不是一个人在写代码。这篇文章有别于其他教程类的文章,不是教你如何制定代码规范,也不是告诉你这样写就是错的亦或说是正确的。本文是我这些天从优化别人代码过程中的所见和所得,凝结成文。旨在分享给大家,对号入座,然后改之。三人行,必有我师!;择其善者而从之,其不善者而改之。 由于我是做前端的,所以只说前端代码规范,其他语言同样适用!目的把一些常见的错误的不良的代码示例分享给大家,希望有的改之,无则加勉。看完之后,希望对你们有所帮助,提高自己的代码质量,每个人都能写出一手漂亮的代码。这是这篇文章最大的目的了!概述本文将以我的亲身项目经历为例,来谈谈我们日常开发当中,就代码层面来讲,我们应该注意的一些小细节。希望各位看客能吸取精华去其糟粕。主要涉及的方面有:项目结构文件命名路由Vue 组件JavaScriptHtmlCssGit 代码提交我将会从以上几个方面逐一枚举和大家分享讨论。枚举1. 项目结构没说之前,您不妨看下自己的项目结构是什么样的。目前我们的项目结构是这样的:my-project ├── .idea                  # 这个是编辑器生成的 ├── build                  # Webpack 配置文件放在这里 ├── config                 # Vue 基本配置文件放在这里 ├── node_modules           # 第三方依赖 ├── src                    # 项目源码(核心文件) │   ├── assets             # 资源文件(js, css, scss) │   ├── components         # 所有组件 │   ├── js                 # 自己写的 js,里面各种工具类方法等 │   ├── mixins             # 混合 │   ├── router             # 路由 │   ├── vuex               # 状态管理 │   ├── App.vue            # 根组件 │   └── main.js            # 入口文件 ├── static                 # 静态资源,一般放 img ├── theme                  # 主题文件,修改的 Element-UI 主题 ├── .babelrc               # babel 编译配置 ├── .editorconfig          # 代码格式 ├── .gitignore             # Git 提交忽略的文件配置 ├── .postcssrc.js          # 转换 css 的工具配置文件 ├── element-variables.css  # Element 全局定义的变量,不明白为啥放这儿 ├── index.html             # 主页模板 ├── package-lock.json      # 用来锁定依赖的版本号(NPM 自动生成) ├── package.json           # 项目基本信息 └── README.md              # 项目介绍 复制代码都是用 vue-cli 生成的,目录结构和命名规范也就没啥可说的。可能随着时间的推移,自己会在项目里加一些东西(文件或文件夹)。拿上面我们的项目为例来说几点吧:根目录下不要有 css 文件:比如 element-variables.css 文件,虽然这个文件是 Element自定义主题 自动生产的,但是可以通过配置更换生成所在目录。因为它属于 theme 文件夹下的东西,所以应该放它下面的。js 文件夹应该命名为 utils:因为它对外暴露的都是工具类方法,这样更显语义化。关于项目结构,我发现的就这么多。每个项目的目录可能会不同,这个就看你们的规范了。2. 文件的命名它包含文件的命名和文件夹的命名。依我们的项目为例,我重点说下 src/components 目录下的命名,真的是五花八门:2.1. 文件名不够语义化这个还算正常,但还是有些问题。这里是一些问题清单:这个模块的中文叫,是关于机器人学习的,叫 knowledgeBaseManagement 虽然很好的翻译了中文意思,但总觉的有点长,叫 robot 会不会好些?而且文件夹下的文件命名也不够语义化下面是整理过后的样子:robot ├── addQuestion.vue ├── editQuestion.vue ├── index.vue └── missedQuestion.vue 复制代码这个我就不想说了,看的我头皮发麻。从字面意思上来讲,我就认识一个 TreeNode2.vue。后面还加个 2 是什么鬼?2.2. 文件目录不统一这属于一类问题,即里面太乱了,不统一,问题清单:src/components/moduleName/ 下除了子模块外,尽量不要瞎放其他无关的文件夹,如上面的 src、component/common、topcallcenterList/src 下的图片可以放到 static 下如果是功能型组件(上面的 color 是一个颜色选择器组件),尽量放到一个叫 package 或者 lib 的文件夹下。因为  src/components 下的模块都是系统模块,不要混淆。elvesSetting/top 如果是某几个页面头部的公共部分尽量放到 components/common 下2.3. 文件名过长如果一个模块下就一个文件,尽量写成 index.vue 。这里文件夹和文件同名,路由是不是很长?你在其他文件中 import 的时候是不是也不方便? 而且我发现 problemManagement 和 problemRetrieve 都属于问题管理模块,完全可以合并到一个文件夹里啊。还有,文件夹已经表明是问题管理模块了,所以文件名就不要再以 problem*** 开头了。不觉得啰嗦吗? 下面是整理过后的样子:problemManagement │   ├── index.vue │   ├── retrieve.vue qualityCheckAppeal     └── index.vue 复制代码3. 路由我们系统里的路由都是一级路由。举个栗子:userManagement ├── add.vue └── update.vue 复制代码用户管理下有增改两个功能,不使用弹框去做的前提下,假如说 add 和 update 对应两个路由是 /addUser,/updateUser。我们系统地址栏是这样显示的:// 增加用户 localhost:3030/addUser // 修改用户 localhost:3030/updateUser?id=1 复制代码虽然地址栏路由短看起来会让人舒服,但是模块多的话,就不容易区分,其实应该这样做:// 增加用户 localhost:3030/user/add // 修改用户 localhost:3030/user/update?id=1 ... // 总结 localhost:3030/module/function?queryString 复制代码当然也可以使用最近流行的 RESTful API 设置规范,专门用于 Web 数据结构的设置。阮一峰老师有一篇非常不错的文章,推荐给大家,我就不再赘述辣。传送门->4. Vue 组件关于 Vue 组件开发规范可以参考官方的风格指南。下面是我们项目的一些问题清单和改正意见,我列举一下作为对照:不要在 App.vue 中直接修改第三方样式(比如:ElementUI)。请使用外部文件导入:App.vue 文件:<!-- incorrect --> ... <style>   .el-input__icon {     cursor: pointer   } </style> <!-- correct --> ... <style>   @import 'element-style-overwrite';   ... </style> 复制代码_element-style-overwrite.scss 外部样式文件:.el-input__icon {   cursor: pointer } 复制代码给每个组件起个名字是个好习惯。例如 Dialog 组件:// incorrect export default {   ... } // correct export default {   name: 'MyDialog', // 以大驼峰命名   ... } 复制代码给组件样式设置作用域 scoped如果你在某个子组件中修改了全局样式,本来只想在该组件中使用,没想到造成了全局污染。等进行代码 review 的时候是很难排查的。例如,用户管理(UserManagement.vue)组件:<style scoped> ... </style> 复制代码组件名要么单词大写开头 (PascalCase),要么横线连接(kebab-case):// incorrect components/ └── mycomponent.vue components/ └── myComponent.vue // correct components/ └── MyComponent.vue // 或者 components/ └── my-component.vue 复制代码.vue 单文件中的 <template>、<script>、<style> 标签的顺序问题有的人喜欢这样写:<style>...</style> <template>...</template> <script>...</script> 复制代码也有人喜欢这样写:<script>...</script> <style>...</style> <template>...</template> 复制代码如果你想写,那好,不阻拦,拜托你统一下行不?别这个组件这个顺序,那个组件那个顺序。累不累? 这里我强力推荐大家按照官方的写法,即下面的顺序来写:<template>...</template> <script>...</script> <style scoped>...</style> 复制代码组件中的字体图标(icon)不要用 png 图片不知道你们项目里有没有很多 icon 图标。反正我们项目不少且都是 png 图片。静态文件夹里好多小图标。本来左侧菜单也都是 png 图标的,被我看着不爽重构了一下。把所有的 png 图标换成了 fontIcon 字体。字体图标的优势:减少 http 请求和项目体积样式容易控制用户体验好如何制作 fontIcon 字体图标呢?其实很简单:1、可以先去阿里图库找自己喜欢的或者让你自己家的UI小姐姐做。2、下载 svg 格式的,如果是UI做的,记得让她转换下。3、去 icomoon 字体图标生成网站导入刚才所有的 svg 图标,设置字体名称导出即可。4、再在文件中引用,大功告成。使用两个空格(space)进行缩进这个放在全局规范会比较好一些。为什么是两个空格? 大神们都是这样做的!而且更重要的是,使用两个空格开发项目,传到 github 或者 gitlab 上排版会很好看。什么?不会设置?百度啊!你用的什么编辑器就查这个编辑器怎么设置的。一般是统一把全局规范设置放到一个叫 .editorconfig 的文件夹里,有的编辑器支持这个文件,比如:webstorm。有的则不支持,对于不支持的编辑器,可以下载安装 editorConfig 插件,如:atom、sublime、vscode 等。代码中不用的注释都删掉调试结束,把不用的 console.log(...) 及时删掉,它会影响性能data 中的属性命名和初始化问题// incorrect export default {   data () {     return {       text: 'wwwwwwww', // 这是啥?       editBoxId: null, // 很明显Id是String,这里他初始化一个 null       flag: '',    // 这个表示的啥?看意思应该是个 Boolean 类型,为啥弄个 String ?       pSize: 10,   // pSize 是啥?       cPage: 1,    // cPage 是啥?       popCsr:true, // popCsr 是啥,恐怕现在连那个开发者自己都不知道了吧       callcenterAuthority: false, // 这么长你告诉是一个 Boolean 类型的     }   } } // correct export default {   data () {     return {       text: '', // 'wwwwwwww' 没卵用删掉       editBoxId: -1,  // 它应该是个 Number 类型       flag: false,    // 它应该是个 Boolean 类型啊       pageSize: 10,   // pSize -> pageSize 多好       currentPage: 1, // 完整写法更易懂,不是吗?       isPopcsr: true,    // Boolean 类型的总是前面加个 is       isAuthority: false, // 是否授权。     }   } } 复制代码其实还有好多问题,我就不一一列举了。诸如此类的问题,希望各位看客们都能吸取精华,去其糟粕。Props 中的属性声明要明确类型// incorrect export default {   props: ['node', 'size'] } // correct export default {   props: {     node: Object, // 对象     size: [String, Number], // 两种类型都可以   } } 复制代码Vue 生命周期函数按顺序放在 methods 之前为什么说这个呢? 我们项目中有的组件就 methods 中的代码就上千行。如果生命周期函数放在 methods 之后,拉来拉去非常不方便:// incorrect export default {   ...   created () {},   methods: {     // 省略 1000 行代码     // ...   },   mounted () {},   beforeDestroy () {},   destroy () {}, } // correct export default {   ...   created () {},   mounted () {},   beforeDestroy () {},   destroy () {},   methods: {     // 省略 1000 行代码     // ...   } } 复制代码Vue 组件中的 this 赋值要统一代码中,有时候我们需要把 this 赋给一个变量,你要么统一赋值给变量 vm ,要么统一赋值给变量 self。别一个组件里,变来变去。// incorrect export default {   ...   methods: {     one () {      let vm = this     },     two () {       let self = this     }   } } // incorrect export default {   ...   methods: {     one () {      let vm = this      // 或者      let self = this     },     two () {       let vm = this       // 或者       let self = this     }   } } 复制代码Vue 组件中 Html 如果过长,请换行<!-- incorrect --> <el-input v-model="ruleForm.maskInput" size="small" class="nodeIpt" :icon="ruleForm.maskInput ? 'circle-close':''"  @click="ruleForm.maskInput = ''" @keyup.enter.native="nodesure($event,'ruleForm')"></el-input> <!-- correct --> <el-input    v-model="ruleForm.maskInput"    size="small"    class="nodeIpt"    :icon="ruleForm.maskInput ? 'circle-close':''"     @click="ruleForm.maskInput = ''"    @keyup.enter.native="nodesure($event,'ruleForm')"> </el-input> 复制代码Vue 中监听的事件记得垃圾回收举个例子,如果我们在 Vue 组件的 created 声明周期钩子中监听了一个点击事件,那么,当组件销毁(beforeDestroy)之前记得把这个事件释放,看代码:export default {   ...   created () {     document.addEventListener('click', this.handleClick)   },   beforeDestroy () {     document.removeEventListener('click', this.handleClick)   } } 复制代码Vue 组件中不要直接操作异步请求(axios)把所有的异步请求方法封装成一个独立 js 文件,或者放到 Vuex 中,千万不要耦合到 Vue 组件中。因为代码量太多,会加重组件的后期维护,各司其职不好吗?不好的范例:// User.vue export default {   ...   mounted () {     this.getUsers()   },   methods: {     getUsers () {       this.axios(url, data, (response) => {         // Do something       }).catch(err => {         console.error(err)       })     }   } } 复制代码如果项目比较小还好,我没意见,如果项目较复杂,千万别这么干。下面是推荐的做法:// server.js // 专门处理数据请求的文件,也就是我没常说的MVC中的 M 层 import axios from 'axios' export default {   /**    * 获取用户列表    */    getUsers (url, data) {       return axios.get(url, data)    } } // User.vue import api from '@/api/server.js' export default {   ...   data () {     return {       users: null     }   },   mounted () {     api.getUsers((response) => {       this.users = response.data.data     }).catch(err => {       console.log(err)     })   } } 复制代码5. JavaScript下面所有的错误代码示例都是从我们的项目中发现的,捡主要的列出来一些。希望犯同样错误的你能及时改正哦~变量命名要语义化命名// incorrect var a = document.getElementById(this.lastid) // 这里的 a var aa = true // 这是啥你们知道吗? // corrent let orderId = this.order.id let currentTime = Date.now() 复制代码多个单词要驼峰命名// incorrent vm.timedefault = timedvalue vm.currentsessionid = id // corrent vm.timeDefault = timedValue vm.currentSessionId = id 复制代码变量要加注释上面那一坨你们知道啥意思吗?如果这个开发人员离职了,那可是坑了后来人了。所以,做开发不能自己爽了,做一个帅气和代码于一身的工程师,难道不更好吗?不要重复使用 var 声明变量// incorrect var name = 'test'; var age = 12; var hobby = 'sport'; // correct var name = 'test',   age  = 12,  hobby = 'sport'; 复制代码= 或 == 之间要保留一个空格错误的范例:// 变量 var name='test' var arr=[] var obj={   id:1 } // if 判断 if(this.id==currentId){   // Do something } // for 循环 for(let i=0;i<arr.length;i++){   // Do something } 复制代码上面三种情况是最常见的,其他雷同。下面是正确的范例:// 变量 var name = 'test' var arr = [] var obj = {   id: 1 } // if 判断 if(this.id == currentId) {   // Do something } // for 循环 for(let i = 0; i < arr.length; i++) {   // Do something } 复制代码右括号 ) 遇到 左大括号 { 时要空一格下面是错误的范例:// if if(a === b){   // Do something } // for for(let i = 0; i < arr.length; i++){...} // 函数 var T = function(params){   ... } 复制代码常见的几种情况,其他情况不再列举。下面是正确的范例:// if if (a === b) {   // Do something } // for for (let i = 0; i < arr.length; i++) {...} // 函数 var T = function(params) {   ... } 复制代码非空判断问题在我们项目里,有人这样写:// 假如 Vue 组件中有一个叫 userId 的 data 属性 if (userId != '' || userId != 0 || userId != false || userId != null || userId != undefined) {   // ... } 复制代码当遇到上面几种情况的时候,下面代码实现的效果是一样的:if (!userId) {   // ... } 复制代码对象声明问题不要用下面的方式之一去声明一个对象:// incorrect var arr = new Array() // 数组 var arr = '' // 虽然 js 是弱类型,也不能这样声明 var obj = new object() // 对象 var obj = '' 复制代码下面是推荐做法,也是大众做法:// 声明数组 let arr = [] // 声明对象 let obj = {}  // or let obj = null 复制代码异常处理问题我们在处理异步请求的时候,一定要对 response 中的数据进行异常处理,不然控制台回报 response.data is not undefined,我们项目我看了下,有些地方没做处理,结果在做测试的时候,浏览器控制台一顿报错。那叫一个难看啊!// incorrect this.axios(url, data, (response) => {   let result = response.data.data }) // correct this.axios(url, data, (response) => {   if (response.data && response.data.code === 1) {     let result = response.data.data   } }).catch(err => {   console.error(err) }) 复制代码如果这个取值过长且多次用到,请赋给一个变量export default {   ...   methods: {     handleClick (evt) {       // incorrect       evt.target.parentNode.innerHTML = 'test'       evt.target.style.width = '100px'       evt.target.style.height = '200px'              // correct       let target = evt.target       target.parentNode.innerHTML = 'test'       target.style.width = '100px'       target.style.height = '200px'     }   } } 复制代码6. HTML正确的使用标签项目中我见有人写个按钮居然用 span 标签,或者一个 div 。下面是错误的范例:// 用 div 当按钮 <div class="btn">搜索</div> // 在 span 里 嵌套 el-input 组件 // 这样做的同学,肯定不知道 el-input 编译后的代码是啥样的! <span>   <el-input></el-input> </span> // 用 label 当标题 // label 标签是配合表单使用的 <label>标题</label> // 加粗字体没有用原生标签 <span class="bold">我是加粗字体</span> 复制代码下面是改正后的范例:// 用 H5 的 button <button class="btn">搜索</button> // 如果要包含 el-input 组件请使用块级元素,并加上合适的 class <div class="el-input__wrapper">   <el-input></el-input> </div> // h1-h6 才是标题的正确打开方式 <h2>标题</h2> // 加粗字体请使用原生标签 // 然后使用 class 控制字体样式 <strong class="bold">我是加粗字体</strong> 复制代码所有的按钮,超链接,鼠标的 :hover 状态都应该是手形。a, button {   cursor: pointer } 复制代码id 和 class 或者其他的属性,命名要语义化不要命个名只有你自己知道。这样会带来后期维护困难。<!-- incorrect --> <div class="dfdf">   <el-form class="loginForm">...</el-form> </div> <!-- correct --> <div class="login-form__wrapper">   <el-form class="loginForm">...</el-form> </div> 复制代码把代码缩进改成 2 个空格Html 中的属性之间保留一个空格距离<!-- incorrect --> <el-input v-model="form.loginUser"  size="small"   placeholder="请输入用户名"></el-input> <!-- 不觉的上面的代码很丑吗,我知道你或许不会这样做 --> <!-- 但还真有人这样做 --> <!-- 下面是改进后的代码 --> <el-input v-model="form.loginUser" size="small" placeholder="请输入用户名"></el-input> 复制代码每个代码快尽量加上注释代码量少尚且不说,如果一个 .vue 文件很长的话,找起来就很痛苦了。你还别说,我们项目里就是这样没注释。<!-- 正确的示范 --> <template>   <div class="user-managerment__wrapper">     <!-- Header -->     <div class="header">...</div>          <!-- User table -->     <div class="user-table__wrapper">       <el-table>...</el-table>     </div>          <!-- Add user dialog -->     <div class="add-user__dialog">       <el-dialog title="新增用户">...</el-dialog>     </div>   </div> </template> 复制代码7. CSS{ 和选择器保持一个空格距离.selector {   ... } 复制代码给每个样式模块加上注释有助于区分// Global style html, body, a, div {   margin: 0 } // Login style .login button {   ... } // User manager style .user-manager__wrapper {   ... } 复制代码每个独立样式间保留一行距离见上面的示例选择器不要嵌套太多层级嵌套太多层级会影响性能,尽量保证在三层以下:// incorrect .user-management .user-box .user-form .el-form-item .remark {   color: #42b983 } // correct .user-management .user-form .remark {   color: #42b983 } 复制代码8. Git 代码提交提交前先 pull 代码写代码前记得先 pull 下别人的代码,这是个好习惯。别等到自己写完 push 后才发现代码有冲突。# pull git pull # modified git add someFiles git commit -m "..." git push 复制代码写好提交注释大家可以看我 沸点。同事写的注释。希望有问题的同学可以及时改正哦。另外,关于 Git 如何正确的写好注释,这里有几篇文章讲的很好,大家可以看看:我的Git commit规范如何撰写 Git 提交信息下面举个例子,比如我这次在用户管理模块中修改了两个 bug。如何以清单的方式提交呢? 看代码:# add file git add src/components/userManager/index.vue # commit git commit -m 'fix: 用户管理模块bug修改。 修改内容: - 修改了列表分页的bug - 修改了当用户点击编辑按钮弹框无法显示的bug ' # push code git push 复制代码你千万别用下面的方式之一去提交你的代码说明:# 说一些毫无意义的内容 git commit -m "fix: ok!" # or 不加 fix、feat、refactor、doc、style等前缀 # 为什么要加这些前缀呢?问得好! # 是方便日后检索,当我们以这些前缀去搜索修改日志的时候 # 是很容易的哦,微笑。 git commit -m "修改用户模块bug"

  • 创新工场第4期5亿美元基金背后:不超1个月超额完成

    创新工场董事长兼CEO李开复创新工场管理资产总额新浪科技讯4 月 25 日下午消息,创新工场对外宣布完成第四期美元风险投资基金的超额募集,总规模为 5 亿美元。此轮募资完成过后,截止 2018 年 4 月,创新工场共管理 6 支基金,管理的资产规模达 110 亿元人民币。创新工场董事长兼CEO李开复透露,创新工场人民币三期已启动募集,目标金额 25 亿元,年限8+2。根据李开复介绍,第四期美元基金不超过 1 个月完成,并超额募集,原有投资人继续加注,国际知名养老基金、母基金、主权基金、国际先进制造公司。对于第四期美元基金的LP,李开复没有透露太多,仅指出包括西班牙银行、欧洲知名金融集团、国际汽车巨头,这也是他们在中国首个VC基金战略投资。创新工场关注具有本土化色彩、盈利模式偏成熟的项目,投资领域新增人工智能、大数据以及消费升级。根据介绍,创新工场早年是投资和孵化模式,更高比例在天使和种子轮次。而近年来,创新工场投资阶段策略调整,强调“去孵化”,定位VC+AI,专注于早中期(A-B轮)发展阶段项目。对于高潜力领域也参与C轮以后的中后期投资也开始锁定赛道,加大投资。李开复指出,创新工场已经不再是孵化器,现在一年只孵化一个人工智能项目。李开复看好中国公司创新,他指出,随着竞争日趋激烈,成就了中国企业的创新。目前,全球发展趋势从Copy To China到Copy From China,从借鉴美国模式,到成功反超美国模式,再到中国本土创新,当前中国模式正走向世界,与此同时,中国企业出海的也越来越多。在李开复看来,中国式创新还在循环裂变,移动支付、OMO(线上线下融合)、多波“人口红利”、人工智能崛起等因素,驱动中国消费加速增长,从储存经济变成消费的经济,中国也成为最佳创业平台。近年来,创新工场发力AI领域的投资。李开复认为,仅仅靠钱来做VC远远不够。目前,创新工场已经建立AI工程院。对于人工智能领域,李开复指出,人工智能进入爆发期,中国将成为最大的受益者。从投资的角度来看,李开复将人工智能的发展分成四波浪潮:互联网智能化、商业人工智能、实体世界智能化、自动化人工智能。他认为,在与美国的竞争中,中国的人工智能在无人驾驶等多个领域,在未来五到十年内有机会赶超美国。作为一个专注于技术投资的投资机构,李开复指出,创新工场对标的是美国投资机构Benchmark,这是一家专注于科技的VC ,50%合伙人具有技术或理工背景;投资技术型公司,投资过包括Uber、Twitter、Snapchat、Instagram、eBay等知名公司,回报率超过红杉、KPCB等老牌基金。创新工场由李开复创立于 2009 年,总部设于北京,在上海、深圳、硅谷设有办公室。成立 9 年以来,创新工场投资的总项目数量累积超过 300 个,投中了 6 个独角兽公司,投资公司包含VIPKID、美图、知乎、Face++旷世科技、摩拜、第四范式、米未传媒等。

  • 如何让你的营销触达知乎的高价值人群?

    注:知乎是一个汇集了一众知识精英的平台,“奔驰上天”、“奥迪烤肉”这些令成功的案例都证明了知乎如何以知识扩展内容营销的想象力。品牌在知乎上进行推广,将能波及更广、更高质量的受众。为什么品牌非要做知乎不可?从“广而告知”到“广而认知”,品牌应该如何玩好知识营销?这个问题是我一直都在思考的,从上次朋友圈刷屏的所谓新世相首次微信公开课开始,就有人提出,这种现象在知乎、豆瓣肯定是不可能产生的,原因大概是因为王高飞曾经说过的一句“豆瓣用户是一群毫无价值的群体”。这句话表达的意思其实是说豆瓣用户难以产生商业价值,而不是真正意义的无价值,为此,豆瓣用户当初还自我调侃“毫无价值豆瓣用户”。先以这个话题开篇,并不是教大家放弃同为高价值用户群体的知乎营销,而是想用这个例子来证明,知乎、豆瓣这类用户并不是一群毫无价值的用户,如若不然,他们怎么能做到面对质疑集体发声,这种有思想、有认知、有判断、明是非的用户,其实是品牌主最渴望拥有的高价值用户。对比近期盛行的快手、抖音等土味儿营销,品牌主不惜走下云端纷纷噬土,但是到目前为止,我还没有听说过一个品牌主在这上面真正收获了成功。相反,“肯德基的冰块比马桶水还脏”这一曾被广泛传播却在知乎被重新拆析,而后扩散至全网上演反转的画面我至今记忆犹新。一、从“广而告知”到“广而认知”的营销进阶而之所以会有这样的表现,其实是与广告营销的业态进阶有关,营销的终极目标是:触动消费者,以人为本是一切核心。早年广告的诞生是有契机的,工业各行各业制造业的快速兴起,消费的极力扩张,大跨度的跳跃让消费者进入一种迷茫购物的状态,他们急需被告知市面上在销售的品牌,“感冒就用999”、“欧莱雅你值得拥有”,这时候的广告形式是“广而告知”型。而随着更迭,越来越多的品牌开始冲入消费市场,他们模仿着已取得成功的产品,一个洗发水能有上千上万个品牌,“广而告知”型洗脑广告铺天盖地,每天都在冲刷着消费者的眼球。这一次不是消费者变了,他们只想找到适合自己的那款洗发水,只是各式虚假广告的参杂让他们无法分辨真假,在众多选择前,他们又一次回到了小白。当回归到小白的消费者开始去检索“哪些洗发水是洗完可以留香的?”“无广告楼 | 哪些感冒药吃完可以不犯困?”就标志着广告业态迎来了新的形式“广而认知”,用户需要更有价值的科普与知识安利型营销,而不是单纯的口号型营销。一个史上第一难喝白花蛇草水带给品牌的尝鲜价值是当日卖断货,卡车连运补货;到马应龙的痔疮膏可以去黑眼圈一下让产品脱销且帮助这个老品牌实现年轻化进阶。以用户诉求为出发的知识营销必定是未来的方向,“广而认知”才是未来的趋势。在电影营销中,已经基本实现了这个命题,三五线县城可能消费者还会被卡司阵容影响,但在一线主流城市,一部电影的生死决议已经完全被口碑掌控。二、知识信任是构建“广而认知”营销的基础逻辑“广而认知”营销其实并不是一个新命题,从“五毛党”诞生时候就证明了这种营销模式的存在,另一侧的代名词是意见领袖(KOL)。为什么有些知识可以安利成功,但有些安利却被打为水军,这取决于受众与言论发表者之间是否存在信任关系。网络世界本身就是粗暴的,如果我信任你,你的一切我都认可;但如果我不信任,那么不管你说什么,我都认为你是五毛党。层层梳理之后,逻辑就很清晰了,“广而认知”营销的基础实现逻辑源于知识信任。基于知识问答与分享存在的知乎就成为了知识营销的最佳平台,因为这里有历经多年沉淀下的知友建立起的知识信任生态。1.汇聚各行各业专家人群最初的知乎是一个绝对的高端精英社区,因为知乎早期团队基本都是互联网圈的,而采用的又是推荐实名制,所以知乎初期基本就是一个互联网交流社区。到后来,由于知乎经常能出现一些精品的TMT分析文章,导致很多内容都被各大科技媒体转载。13 年知乎开放注册,受原始基因影响,大量各行各业“专家”人群开始涌入,他们乐于在知乎分享自己的知识与见解,也欣赏这个平台带给他们的新知识。2.纯粹的知识分享构建信任体系受第一点影响,知乎用户的共同特点就是求知欲都很强,而他们又基本都有一技之长。他们来知乎就两个目的:阅读答案,输出答案。越是纯粹的目的越容易构建信任体系,当信任建立后,每一位用户的发言都会形成很高的公信力。知乎用户对回答一个问题会很认真,他会引经据典,图文并茂,这样的回答完全不亚于一篇优质的解读文章。这使得知乎的回答经常被摘出放在朋友圈与微博二次流传。起于知乎而不局限于知乎,依托知识信任背书扩散至全平台只有知乎才能做到。专家人群与知识信任并存的知乎使得安利与被安利同时存在,构成一个完善的生态系统,输出高价值内容得益于知乎沉淀为舆论爆破点再向外扩散,形成自来水。“奔驰上天”、“奥迪烤肉”这些令营销人艳羡的案例都证明了知乎如何以知识扩展内容营销的想象力。品牌在知乎上的营销,始于知乎不止于知乎。触达知乎用户,认真你就赢了。

  • 【还原】4 年,魅族沉沦记

    作者:郝影  李小白在一场发生魅族营销体系的“内讧”席卷社交网络的喧哗之侧,魅族 15 周年纪念之作——“魅族 15” 如期发布了,而魅族的创始人黄章依旧隐居幕后。他始终和这个热闹的世界远远地保持着距离。 2014 年,他第一次“复出”,喊出了“将以最开放的心去包容,去接纳这个世界”、“去听听用户的声音”这样的口号。但到了2017 年他再度复出的时候,他喊出的只是“我将重新打造我的梦想机。”“我的梦想机”,跟市场上的流行趋势甚至“煤油”(魅族粉丝的代称)的主张,都没有关系,只关乎于黄章个人的喜好。偏执,自负。社交媒体上对“魅族15”纷至沓来的评论,预示了黄章时隔数年后的回归之作的结局。黄章本人也心知肚明。发布会前一个月,他在魅族论坛发帖给自己找了个台阶,称由于时间所限,“魅族 15” 只是小试牛刀,8 月份的 16 系列才是他全力打造的产品。一款产品未经问世,就被他的始作俑者贴上了“试水”的标签。你很难说这是黄章的诚实,还是他的偏执,抑或是他的言不由衷。对“魅族15”这款试验品亦有贡献的,是黄章的知己——处于魅族营销体系内讧漩涡中心的杨柘,黄章在魅族最信任的人,魅族的现任首席营销官(CMO)。两条布满回字纹的天线带,就出自杨柘的设计。不识黄章真面目“听说黄章出山,有期待吗?”“不期待。从 2014 年开始几乎每年都要说出山一次。但 MX3 以后的手机好像和他都没什么关系。”陈永明以前在魅族做运营, 2017 年初,他离开了曾深爱的魅族。彼时,黄章刚刚宣布再度复出,“打造梦想机”。那是陈永明毕业后的第一份工作。和许多从全国各地奔赴珠海的年轻人一样,他之所以没选择北上广深等知名度更高的城市,也是出于热爱。高中时候他第一次听说魅族 M9,囿于地处小城,辗转托上海的朋友购买,从上市到拿到手机等了三个多月。上学的时候,他就一直泡在 J.Wong(黄章在魅族社区的ID) 神出鬼没的社区讨论魅族的软件和硬件,顺便嗅探着魅族新产品的蛛丝马迹。在论坛上,他和魅族的员工多有互动,加上专业对口,借着实习机会果断奔赴珠海港湾大道南,那栋标记着 MEIZU 字样的大楼。“我想,每一个魅族粉丝,都有去魅族工作的梦想吧。”陈永明说的 2014 年,是黄章第一次出山的时间。当年 2 月初,黄章复出首日,在公司内部讲话,要求经理级以上的员工全部出席。其实大多数魅族员工是在那场内部会议上,才第一次见到了黄章真身。这其中包括入职没多久的叶原,“比印象中健谈,没有外界说的那么霸气,但能看得出来他当时的确下了很大的决心。”魅族官方给这次的会谈录制了视频,也让外界时隔多年重识黄章。“听说黄章回来时,大家还是很开心的,觉得他出来营销会更好做一点,” 据叶原回忆,黄章这次复出最后因为后面几天连续加班熬夜,以生病住院而告终。不过黄章 2014 年复出的时候宣布了一项重大举措——期权激励计划,高管之外的员工也有机会获得期权。这对魅族这样一个家族企业来说,已经是破天荒的事了。PingWest品玩采访到的多名魅族前员工,大多在此时获得了魅族的期权,2017 年底离开魅族的刘炜就是其中之一。不过刘炜对PingWest品玩透露,因为证监会对拟上市公司股东数量的硬性规定限制,加上魅族上市前景的不明朗,魅族与员工的期权激励协议几经变动,最后股权变成了“收益权”,且由黄氏家族代持,另外还附加一条“解释权归魅族所有”,令许多在职和离职员工心生不满。而黄氏家族在魅族内部的影响力,股权层面只是一小部分。“黄家人实际上无处不在。”魅族 PRO5 就是一款在当时可谓尽善尽美的产品.图片来自 Androidpit。盛夏光年孔久第一次听说魅族,远早于一般煤油口中的口中津津乐道的“魅族 M9”时期,甚至早于资深煤油奉若神器的“魅族M8”。他最早知道的魅族产品型号是 X3,一台魅族的音乐播放器。那时,他大学毕业刚去广东。音乐与异乡人的组合,足以令人脑补一段冗长的青春奋斗故事,这也是最早一批“煤油”与魅族的彼此依存关系的缩影。但和“爱它,就要进去上班的”陈永明不同,魅族并非孔久的第一个东家。进魅族之前,孔久就是一个 科技博客作者,并在这段职业生涯里留下了多篇观点犀利、角度独到的大作。2013 年,魅族注意到了孔久,邀请他加入魅族。见证了魅族由小而美,到年出货上千万,再到内部的分裂与动荡。孔久于 2017 年底离职。在职期间,从社交平台到品牌策划,甚至发布会筹备,孔久都有涉猎。谈及近几年魅族最厉害的产品,孔久认为是 2015 年 9 月推出的魅族 PRO5。它用的是性能强悍的三星 Exynos 7420 处理器,独立 DAC、金属一体化机身、USB Type-C 接口、支持快速充电的大电池、大屏幕、大内存……除了显示效果略有瑕疵,魅族 PRO5 就是一款在当时可谓尽善尽美的产品。同时,PRO5 被推出的 2015 年,也是孔久眼中魅族的“高光时刻”。这一年,魅族的产品销量增长 350%,跨入 2000 万台关口,跻身国产手机十强。从魅族造手机算起,这还是第一回。也是在 2015 年,国产手机们兴起了一股“亏损赚市场”的风潮。几乎所有在这一年销量暴涨的手机品牌都在亏钱,魅族也不例外。不过,魅族是他们中亏得最少的。“几千万,对于手机行业来说,不算亏,平均一台才亏两三块,” 孔久对PingWest品玩说。也是在这一年,魅族确立了“魅蓝——入门、MX——中端、PRO——高端”的手机产线布局,并在后续逐步放弃 MX 系列,通过 PRO 系列来实现品牌的升级。以现在“消费升级”的眼光来看,这样的产品线规划可谓超前。魅族的一切在 2015 年看起来都那么美好。一个新崛起的国产手机巨擘隐然浮现。黄章当时也是意气风发,爆出小米创始人雷军涉嫌“借鉴”魅族产品的旧事 。“当年雷军隔三差五就来我办公室喝可乐,作为小米的老师目标前三是必须的,不然我都不好意思出门。”PRO6 是魅族工业设计的巅峰之作。大转折PRO5 发布后仅 8 个月,2016 年 4 月,魅族 PRO6 登场。PRO6 和随后的小改款 “PRO6s ”,总共卖出了 80 万台,超越 PRO5 成为最近几年销量最佳的魅族旗舰。事实上,PRO6 远非 PRO5 那样的“全能旗舰”,槽点太多,几乎每个方面都比 PRO5 有所退步。单是那颗联发科处理器,从一开始就让以旗舰之姿出现的 PRO6 风评有损。即便如此,PRO6 系列也能打破销量纪录,是魅族已经达到不用产品也能说话的地步了?其实现在看来,这更像是晕轮效应的结果。在 2015 年的基础上,魅族想要乘胜追击。它对外公开宣称的目标是出货量控制在 2500 万台,而魅族内部的目标是 3000 万台。但魅族内部的运营在这时候出现了大问题:“操盘失误,销售渠道也没分开,导致品牌下跌,”孔久对PingWest品玩说。这样的状态在后来没有出现好转,反而愈演愈烈,发展到后来,就成了众人都爱看的“魅族魅蓝分家” 欢喜剧。黄章的远大目标很快给团队带来了压力。没有到年中,大家就意识到完不成 3000 万销量的年度目标。为了达成老板的指示,从下半年开始,魅族疯狂发布新机,给魅族埋下了隐患。那一年,人员规模不过 3、4 千的魅族,硬生生靠着 ODM 加自主设计研发,发布了 14 款机型。其中多数被冠以“魅蓝”品牌,用联发科中低端 P10 处理器撑满全场。“太多雷同的产品。营销根本没办法做。”那阵密集但雷同的发布会最终耗尽了叶原的全部激情,2013 年年中加入魅族做营销和文案的她,选择了离开。她对PingWest品玩说:“我无法说服自己。”2016 年在魅族参与筹办过五场发布会、现已不在这个行业的冯安楠至今仍记忆犹新。“内部都希望高通能快点把魅族给告了,这样我们的营销不用再为采用联发科的套娃机洗地,” 冯安楠对PingWest品玩说。严重依赖联发科处理器的机海战术加上与高通的恶劣关系,让魅族在 2016 年进退失据。其实早在 2015 年高通被国家改革与发展委员会处以罚款之后,魅族总裁白永祥就有意和高通和解,只可惜高通的出价让魅族认为是黑箱,和解失败。坊间流传着这么一句话:黄章宁愿失去电信市场也绝不向高通妥协。与高通的恩怨,最终让这家珠海企业付出了代价。原本意气风发的 2016 年,魅族能打的牌只有联发科和三星施舍的少量 Exynos 处理器。这对魅族总裁白永祥和时任魅族营销副总裁的李楠来说,无异于无米之炊。联发科处理器不是不好,省电、发热小,但性能捉襟见肘的它,确实撑不起魅族和煤油的梦想。三星 Exynos 处理器成了煤油在魅族旗舰选择上最后的倔强。三星 Exynos 在微博上宣布将推出新 Exynos 旗舰处理器时,一众煤油在其微博下狂欢:魅族有救了。这也成了当年一道别致的风景。只是,选择必须外挂基带才能实现全网通的三星 Exynos 处理器背后的设计之难,只有魅族自己的工程师才知道。癫狂而难捱的 2016 年终于过去了,当年 12 月 30 日,魅族与高通联合发布声明,双方和解。然而黄章也在这一年错过了和他的“死对头”雷军缩短差距的最后机会。2016 年,深耕渠道和品质的 OPPO和vivo 销量翻倍,同时逼近 1 亿台销量大关,而小米在中国遭遇滑铁卢,全年出货仅 4150 万台。这一年,魅族勉强卖了 2000 万台手机,纵然有有史以来最好的魅族手机 PRO 6s 和 PRO 6 Plus 撑门面,它的绝大部分却销量来自于魅蓝,而这一点都不意外。珠海市魅族科技凤凰彩票官网董事会名单,图片来自天眼查。黄家人惹得祸叶原对PingWest品玩透露:即便只有联发科的 P10 和三星施舍的少量 Exynos 芯片,魅族在 2016 年,其实还是有能力把销量做到 3、4 千万台的,“只不过当时黄家人刚从郭万喜手中接管了供应链,出了乱子。”频发的充电器起火事件就是一个例证,经常见诸论坛和社交媒体。叶原说,“出事的原因很简单,黄家人不懂供应链,更换了充电器供应商,导致了安全问题。”“2016 年,魅族产品的品质出现了明显的滑坡,跟黄家人掌管供应链不无关系。”她补充,“此前黄家人更多渗透在公司的行政后勤和采购部门。”“几年来,总部一直在装修,这一部分应该一直是他们自家人在负责。而装修污染太严重。”陈永明就直接与黄家人共事过:“我中间所在的一个小组,正好有一个黄章的亲戚,不干活,影响工作氛围,毒瘤一般的存在。至于其他中高层的黄家人,我就不太清楚了,想来也好不到哪里去。”其实稍微研究一下魅族的组织架构,就能发现不少黄家人的身影。据天眼查公开的信息,魅族科技 12 名董事中,有四名黄姓,除董事长黄秀章即黄章本人,以及黄和仁的亲属身份无法确认外,总经理黄柏涛是黄章的表弟,在公司内部任采购总监;董事黄质潘是黄章的亲弟弟。在魅族 2017 年底最新的架构调整中,黄志潘还担任高级副总裁,负责关键的供应链中心。而在魅族科技的关联公司魅族通讯中,董事会中除了黄质潘、黄柏涛和黄章本人外,黄章的亲姐姐黄小琴也赫然在列,她同时在魅族担任商务部副总裁。查看魅族通讯法人变更记录,你还能发现一个叫黄柏青的人,他也是黄章表弟,在魅族担任后勤副总裁。除此之外,魅族全国各大区的代理商中,也都有黄氏家族的身影。黄家人无处不在。失败之作 PRO 7病急乱投医没人知道在经历了 2017 年剧烈的动荡后,魅族董事长黄章、总裁白永祥和营销副总裁李楠之间经历了怎样深刻的复盘。深居简出一副世外高人模样的黄章不说,白永祥不说,李楠也不说,无论是近期沸沸扬扬的打人闹剧,还是裁员风波,总监们和杨柘把它弄成了微博上的公案,数十万人围观,但这三个人都缄默不语、置身事外。被发配到魅蓝时,李楠唯一的动作是抽调了得力干将去了魅蓝,那是一帮跟他一起打拼、不知疲倦地贴身营销、追热点的兄弟。不过刘炜告诉 PingWest 品玩:在微博上公开炮轰杨柘耽误了魅族而被迫离职,并不断地发出公开信制造话题的魅族原文创部总监张佳,是魅族和魅蓝分家时,李楠唯一拒绝带走的总监。“这(指微博上的口水战)就是一出狗血的闹剧。于魅族于当事双方没有一丁点的好处。”节奏慢下来的魅蓝,反倒成了魅族的救命稻草。“李楠有一颗不死的产品心。”叶原对李楠钦佩有加。李楠也用短暂的“全权”主政魅蓝的机会,证明了他的产品能力和领导能力:高通骁龙 636 处理器、5.99 英寸 18:9 全面屏、全系 6GB 内存的魅蓝 E3 是魅族一年多以来最有竞争力的产品。而从李楠手中接过营销和销售大权的职业经理人、魅族CMO杨柘,为了消化 PRO 7 库存,强制经销商按 1:1 的比例提货魅蓝 E3 和魅族 PRO 7。一个有意思的细节是,在PingWest品玩爆出魅族 2018 年裁员计划的第二天,杨柘在北京召开了一次小型的媒体沟通会,专门对外澄清:魅族 PRO 7 的失败并不是他导致的。实际情况也确实如此。叶原说,“双屏手机的概念最早出现在 2016 年魅族的产品规划路线图中。当时主导研发的是老白(指白永祥),而产品规划负责人则是老白从 vivo 挖过来的。”只不过初始规划中,背面的第二块屏幕是圆形的。这款产品原定于 2016 年底上市,无奈联发科 X30 芯片一再延期,正式上市时,已是全面屏的天下。原本只能算作标新立异的双屏,最后只能用鸡肋和格格不入来形容。可惜的是,这款热销的魅蓝手机始终处在缺货中。魅族供应链之羸弱,可见一斑。与此同时,在黄章授意下,拿着千万年薪的杨柘正在用“玄之又玄”的佛经理念改造魅族的品牌:从 PRO5 的“GO PRO”到魅族 15 的“雕刻时光”,魅族的形象来了一个180 度大转弯。但煤油和消费者们不会为佛系买单。魅族这样一个一直在折腾,尽管有时又荒腔走板不着调,但整体还算年轻和会玩的品牌,突然被强行注入了不伦不类的佛系基因,其分裂程度可想而知。更有意思的是:被杨柘高高地挂在魅族总部外墙和前台大厅上的“惟精惟一”slogan,其实杨柘在 TCL供职的时候就用过,干脆拿到魅族再用一回。而被“流放”至魅蓝的李楠,最终也没能守住自己的一亩三分地,魅蓝品牌拆分不久,主导权被黄章强势收回。刚变过天的魅族又一次大变天,任谁都能察觉到魅族未来命运的不确定性。原本跟着李楠一同转去魅蓝的众多得力手下也纷纷离职,这其中就包括魅族近年来工业设计的巅峰之作——PRO 6 的工业设计负责人。这一次,原本在历次权力斗争中置身事外的魅族软件系统——Flyme 也受到了波及。刘炜在魅族工作了三年,见证了魅族的高光时刻,也见证了它的癫狂,终于在 2017 年底离职。然而他也仅仅是这段时间以来从魅族离职的总监之一。PingWest 品玩从接近魅族的消息人士处获悉,近期已有多名关键岗位的人员离开,Flyme 视觉设计总监陈希已跳槽,去向未定,PRO6 工业设计负责人也离开了,而魅族杭州分公司(魅族商城)负责人高级总监跳槽去了一家正在崛起的电商巨头。“魅族是一个身在福中不知福的公司。现在互联网公司很多总监级管理层出自魅族,可见魅族流失了多少人才,” 刘炜对 PingWest 品玩说。没人猜得清黄章在谋划什么,毕竟李楠也曾是他一手延揽的,他还为魅族拉来了阿里巴巴的 5.9 亿美元巨额投资。也正是在阿里巴巴的投资之后,李楠和王坚、张宇、纪纲三位阿里巴巴的代表,一同进入了魅族董事会。白永祥更是黄章共事十多年的老搭档,陪他一起创立了魅族。2014 年,他险些和前魅族副总裁、主管 Flyme 的马麟一同投奔乐视。黄章的及时回归留住了白永祥,黄章随后宣布了股权激励计划。谁又数得清这一轮的动荡中,又会有多少曾经深爱过的魅族员工、用户、粉丝弃之而去。痛心疾首,怒其不争,魅族内部几乎每个人都能看出魅族到底问题出在哪里,但就是无可奈何的地步。因为魅族姓黄。无论黄章曾躲在多远的江湖之外,他依然紧扯着一根线绳,随时操控。而魅族,成也黄章,败也黄章。魅族 249 字的官方简介中,“梦想”二字反复出现了五次,“热爱”出现了六次。时至今日,包括陈永明、刘炜、叶原在内的多位前魅族员工仍旧以不同的形式收藏着魅族的一些经典产品,他们仍有梦想,只不过魅族已经很难承担那份热爱了。(出于保护信源的目的,本文中刘炜、陈永明、叶原和冯安楠等人皆为化名;黄章、白永祥、李楠、杨柘和张佳等人都是真名

  • 日活1700万,12年的网易有道才估11亿美元?

    北京时间 4 月 17 日下午,网易有道以发布会的形式,正式宣布其完成了自 2006 年成立以来的首次战略投资,投后估值为11. 2 亿美元,由慕华投资领投,君联资本参投。这样一次投资,让有道从网易集团布局教育的两条“大腿”之一(另一为网易教育事业部),直接“晋升”为中国教育行业的又一支独角兽。有道融资披露之后,芥末堆迅速连线了多位投资人,询问观点,大家一致认为:这是比较理性的估值。12 年有道:从技术到教育经历过从 0 到1,再到 100 的创业者经常说,大公司都是“熬”出来的。而成为独角兽的路,网易有道花了 12 年。2006 年,有道成立在一个门户争相进军搜索的时间点。那时的Google还未退出中国,搜索引擎的竞争格局也尚未确定。因此,在丁磊将刚毕业的周枫从美国加州大学伯克利分校“挖”回来时,心心念念的还是搜索。在一次采访中,有道CEO周枫也向芥末堆坦言,用机器搜索的方式建立词条,做出当时第一个词条规模达千万级别的网络词典,对那时的有道来说也是一个“无心插柳”的过程。而在那之后,有道词典成为了网易有道所有后续发展的根基。同搜索一样,词典及其背后所衍生的机器翻译,也是一个对技术能力要求极高的互联网领域。因而不论是搜索引擎还是词典,技术都被当做了有道的核心竞争力。时至今日,网易有道在中英、中日、中韩等机器翻译领域,都占据着颇为靠前的位置。但对网易有道及其母公司网易来说,技术所带来的价值可能更多被体现在了产品端。在进入移动互联网时代之后,有道开始成为一家非常会“做产品”的公司。除词典以外,云笔记、翻译官、口语大师、语文达人等诸多具备教育属性的工具类产品,成为了人们手机中的常备App。在一些互联网分析人士看来,如果仅就移动端App的表现来看,有道团队撑起了网易在手机上的“半边天”。根据此次公布的数据,截至 2017 年 12 月底,网易有道的工具型App已经形成了日均活跃用户超 1700 万的产品矩阵,总用户规模超过 8 亿,其中词典用户超过 7 亿。以免费的工具型产品切入,有道获得了数亿级别的“教育流量池”。显然,这也是其将主要业务方向转向在线教育的信心所在。“从用户规模来说,我们非常有信心的说有道已经是国内用户量最大的在线教育的品牌。”周枫说。从工具到课程,教育的IP逻辑因此,在 2014 年宣布“正式进军在线教育”,推出有道学堂(后更名为有道精品课),也就并不令人意外了。在那时,在拥有大量流量的基础上的教育平台生意,被包括巨头BAT在内的大量公司看好。但最终有道所选择的,却并非要做以规模取胜的“教育淘宝”,而是以名师IP为主要卖点的“严选”模式。 2016 年末所发布的 “同道计划”,即将这一思路展现的非常明显:投入 5 亿孵化 20 个教育工作室,在每一个细分领域扶植一个爆款IP。根据此次发布会所公布的“成绩单”,同道计划在过去一年半内,相继孵化出有道考神四六级、有道考研、有道高中牛师团、有道逻辑英语等课程IP ,并培养出了一批名师IP。据周枫介绍, 2017 年精品课用户付费收入规模较 2016 年增长530%,学生数量达到 300 万+,单课程同时在线学习人数接近 5 万人,课单价平均 800 元。现在,投入教育行业四年的周枫,以“TEACH”来概括网易有道现在的商业模式。“T”为学习工具型APP带来的用户基数,也是网易有道一切业务的基础;“E”代表与优秀的老师的共赢。据周枫介绍,近 40 位合作教师中, 2017 年收入百万的老师已经有 23 位;“A”即人工智能。目前,有道翻译的优势技术集中在翻译和学习场景下。作为在线翻译界的领军者,有道的NMT翻译等AI技术正在逐步应用于在线教育业务。除翻译外,网易有道上线了一系列面向教育AI一系列的技术,包括手写答题判分技术、英语口语评分和计算代数系统。在本次发布会上,周枫又宣布手写OCR、英文作文批改与判分等技术也即将上线;“C”即高品质内容。有道自 2008 年起陆续引进了国内外的正版字典,在精品课平台上,有道也打造了面向5- 9 年级中小学生的中外教结合项目viva青少年英语,以及大语文系列课程等系列精品内容;“H”为智能硬件,自去年年底发布了首款智能硬件产品翻译蛋后,有道在发布会上宣布推出了两款即将推出的全新智能硬件, 有道翻译蛋 2 代和有道词典笔;显然,在早早完成用户、流量的原始积累之后,过去几年的网易有道在尽快补充其所没有的短板。不管是招募名师、打造内容还是智能硬件的引入,都是在已有的基础上补充、完善其业务闭环。新“独角兽”,有道会是未来教育投资的数据标杆?本轮网易有道是首轮整体融资,是网易继网易云音乐、网易味央之后第三个独立融资的品牌,也是资本市场首次为已经 12 岁的网易有道“定价”。“这一轮估值确实相对保守,融资的主要目的是看重投资方带来的各方面战略协同、行业和资本市场经验。”周枫说。每个创始人都会觉得自己公司估值便宜了,每个投资人都会觉得创业公司估值太贵了。关于估值,泡沫和感性,疯狂度和合理性之间的矛盾在创投市场从来都是个有趣的话题,在教育行业亦然。如果以时间为维度来观察,教育公司的估值逻辑的确正在回归理性。“相当合理的估值。”一长期关注教育领域的投资人评价道,“如果是跟谁学估值2. 5 亿美元的那一年,有道这个数据估计要估值上百亿美金。”根据公开资料,在 2015 年 3 月完成A轮 5000 万美金融资的时间点,跟谁学拥有数百万学生用户,最高日营收达 209 万。在模式创新窗口已过的 2018 年,相比于流量规模,实际的营收能力成为更加关键的数据。“出场”即成为独角兽的网易有道,凭借的也更多是其流量基础之下的课程变现能力。而续报、口碑与转介绍等传统线下教培逻辑,在曾经以“颠覆”为口号的在线教育行业中依然有效。更为直接的结果则可能是,作为一家“老牌”的“新独角兽”,网易有道将在未来很长一段时间内,成为教育行业衡量独角兽的数据标杆。

  • 狼人杀、直播答题后 社交平台拉新的标配是小游戏?

    新浪科技 谭宵寒2017 年下半年,QQ厘米游戏做了一场关于小游戏的测试——给《有喵气大冒险》只投放一个种子用户,通过这唯一的入口邀请其他用户参与。测试的结果是,一天内,游戏日活达到 4 万,触达了近 10 万人。测试进行。QQ厘米游戏再放种子出去,如果留存率较好,会追加种子。两天后,这款游戏的日活飙升到 200 万。同样的测试结果也在另一款小游戏《冰面炫舞》上得出,同样投放了 1 个种子用户, 1 天后日活达到了 20 万。这些结果都证实了小游戏实现社交裂变的可能性。今年 1 月初,手机QQ中悄然开始内测从厘米游戏升级而来的游戏平台“玩一玩”;在此之前的 12 月 28 日,微信小程序突然开放小游戏,在新版本的启动页重点推荐了小游戏“跳一跳”。随后欢聚时代旗下的开心斗在今年 1 月全新上线;被外界熟知只有一款产品的快手也在同期上线了快手小游戏;直播平台斗鱼、陌陌也分别在今年2、 3 月增加了小游戏功能。另外,据知情人士透露,今日头条此前也一直关注着快手小游戏,在考虑跟进;QQ内测了几个月的“玩一玩”也将在近期有新版本上线。狼人杀、线上抓娃娃到直播答题,在一年间陆续成为直播平台拉新提活的手段,而在微信小游戏迎来爆发的时期,社交小游戏又是否会成为直播平台甚至社交平台的标配?模式验证“身边的人都在玩‘王者荣耀’、‘荒野行动’的时候,我竟然爱上了同桌游戏里的俄罗斯方块。”一位知乎用户在三个月前说道。同桌游戏,这也是国内最早的小游戏PK平台。产品形态在 2016 年中旬大体确定,主要模式应用中涵盖斗兽棋争霸、暴走消砖块、同桌五子棋、疯狂竞速等多款H5 游戏,用户无需下载游戏,在同桌游戏一款App内快速加载后即可实现匹配好友或邀请好友在线PK,从某种意义上,这是一款移动端、对战版、更重社交的4399。打开同桌游戏App,产品凤凰彩票官网为“PK”页面,有权限的用户可在这一页面发送在达人榜上的游戏排名或其他想发布的弹幕,其他用户可点击发送弹幕用户的头像添加好友、打招呼以及在后续进行游戏PK。点击“PK”按钮,可随机/筛选匹配用户连麦或PK,选择小游戏,其中筛选用户可设置性别和年龄;底部通栏最左侧的“游戏”环节即与“PK”相反,先确定要玩的游戏,再匹配玩家;最右侧的“约玩”环节与PK类似,但不同之处是基于地理位置或好友关系链进行邀请PK。从现在的产品形态来看,这首先是一款小游戏产品,游戏社交是其基础,底层构建之上的是应用希望借地理位置、随机或筛选匹配搭建社交关系链,实现异性社交。“休闲小游戏可能是除了荷尔蒙社交之外,能做成陌生人社交的机会。”有信高级总监蒋斌向新浪科技分析说。微博旗下的有信原本是以免费电话为切入点的语音社交App,今年年初也在原有产品上新增了小游戏功能,且将其放在了App首屏。有信产品里的小游戏是从去年 10 月份开始着手准备的。当时视频社交的市场正在推广一对一视频模式,包括花椒、YY、陌陌等直播平台都上线了类似功能,有信也是如此,但在产品运营的过程中发现,用户们仍处于尬聊阶段,难以形成有效的社交关系。他们开始尝试在社交中加入更多的游戏环节,从轻度游戏真心话大冒险逐渐发展到桌游。“我们意识到前期我们太执着于上来就社交,所以我们选择将游戏前置、社交后置,第一步先强调把游戏做得好玩一些,而游戏社交的数据也确实比面聊表现更好。”这是被行业的先行者同桌游戏验证过的模式。从最新的 2 月份的数据来看,极光大数据显示,同桌游戏 2 月DAU均值达到了226. 2 万。“用户对游戏娱乐的需求其实一直都在,尤其进入移动互联网时代,用户的碎片化时间多了,需要有东西去填补这些碎片时间。传统的游戏要重新下载App,而且太重、太费时间,无法随时停下来。轻游戏刚好能满足这样的用户需求,是存在很大想象空间的。”一位业内人士向新浪科技分析说,“同时,它也可以通过社交裂变传播去低成本获取用户,比传统的应用中心分发会更高效,获客成本也会更低一点。”红利释放但更多人关注到H5 小游戏是在 2017 年底微信小程序正式开放小游戏,半个月后,张小龙在微信公开课上宣布,“跳一跳”的DAU已经超过1. 7 亿。更让行业兴奋的是,小游戏累计用户达3. 1 亿,37%来源于游戏活跃用户,而另外的41%来源于游戏流失用户、22%来源于非游戏用户。“小游戏的模式是被创业公司验证过了,被微信小游戏释放了。”蒋斌说道。社交平台在这一时间段也在接连上线小游戏App或增加小游戏功能。QQ在今年 1 月开始内测“玩一玩”,QQ空间里,与相册、说说等按钮并列的也加入了“小游戏”一栏,最顶部推荐的即是双人PK游戏。“通过游戏进行社交是当前的一大趋势,QQ希望通过游戏帮助用户认识陌生人,这对QQ的用户关系,也提供了补充和延续。”该业内人士表示。1 月初,欢聚时代在iOS上将之前的一款日历产品全新改版为小游戏平台开心斗。“安卓版的是从之前在快乐大本营上推广的欢乐狼人杀直接改版来的,桌游发展遇到一些问题,热度下降了。”一位接近欢聚时代的人士告诉新浪科技说。这在某种程度上也反映了欢聚时代在社交产品上的尝试。常被外界认为只有一款产品的快手稍晚几天也上线了快手小游戏App。“快手面临上市,上市公司基本都有多个业务线,对快手而言增加一款产品能提高它的估值。且当时快手作为短视频行业的第一名,第二名和它的差距很远。”另一位业内人士向新浪科技分析说。另一类社交平台则选择在原有的产品价值上做附属,即增加小游戏功能。斗鱼在 2 月上线了“PK小游戏”功能,陌陌在一个月也上线了“一起玩游戏”功能,位置在凤凰彩票官网导航栏处,和狼人圈、点点等在同一分区。“唐岩是想把陌陌做成迪士尼游乐园,无论是摩天轮还是过山车就是其中的一个设施。”该业内人士说道。社交平台集体的涌入,特别是小程序中小游戏的爆发也意味着创业公司的产品受到一定的冲击,一个现象是,同桌游戏的iOS已经有 5 个月未再更新了。一位知乎用户认为,微信小游戏要干掉益智类独立游戏平台了,比如同桌游戏,小游戏会是小电商之后的小程序主战场。同样涉入轻应用领域的还有华为、小米、vivo、OPPO等 9 大厂商联合推出的快应用,有分析认为,对于H5 游戏开发者而言,这或许会让其成为继微信和厘米游戏之外第三大H5 游戏流量入口。华为相关负责人向新浪科技表示,轻游戏可以满足用户对于休闲、益智等方面的部分需求,但是快应用不仅仅能实现轻游戏,快应用是一个新的应用形态,涉及产品会越来越多,包括大型复杂游戏。蒋斌也表示,微信小程序支持小游戏、快应用等平台的出现对创业公司而言不是被挤压生存空间而是机会。第一,微信小游戏更像是一个品类丰富的游戏平台,对游戏模式和用户人群并不专注;第二,小游戏更多是基于原有熟人关系上的玩法,并不影响独立应用在认识新朋友上的探索。创业公司们在运营小游戏独立App的同时,也可以将自研游戏移植到微信上,一方面是能获得一定的分成收入,但更重要的是可能获得品牌曝光价值。构建壁垒竞争依旧存在。与其他行业的竞争相比,小游戏行业的竞争差异在于,第一,不存在明显的技术壁垒,由于其轻量级和简单化,一家平台做出的产品易被其他家复制;第二,从用户体验的角度上并不需要太大的用户量,原因在于用户人均参与匹配数会达到几十次,即便平台的量不大,也能实现10s左右的成功匹配。但一些独立产品也具有一定的优势。比如同桌游戏早期的先发优势;比如快手小游戏的导量优势。一位业内人士向新浪科技分析说,虽然在快手内没有小游戏的入口,但快手小游戏增长很快。“主播带货能力强,有千万级粉丝的主播发个短视频,就会有几万的量导进来。”蒋斌向新浪科技分析说,对创业公司而言,首要考验的是游戏策划能力。首先是要做出市面上独特、可玩性高的游戏,让游戏吸引到流量,但在休闲小游戏可被快速复制的市场,需要争取短期内形成传播能力,导入外部流量。此前有信开发的一款“晃脸”小游戏在市面上做了一轮传播,每天能导入万级水平的用户量,但稍晚两周再做,就很难达到这个效果。而对于被定位为社交产品的应用来说,核心能力依旧是社交能力。“现在各个独立的平台社交关系还都没有建立,可以认为都还处在一条水平线上,一旦有了黏性形成社交网络,差异就明显了。”蒋斌说道。各个平台都将社交功能贯穿在产品体系中,比如各家都有的连麦功能、邀请好友功能,YY上线的交友广场等。“现在小游戏行业的发展还比较早期,不是加入简单社交功能就是把社交做成了,如果大家定位是游戏社交,这个领域最终还是会回归到包含防骚扰、男女平衡、用户质量这些社交氛围核心要素的搭建上。”未来战场从线上狼人杀、线上抓娃娃、直播答题,过去一年社交行业的风口总是被快速点燃,但也在数月间被遗忘,小游戏市场则显得更为平静,几家开发了独立App或增加了功能的社交平台也未作太多宣传。“前三者的相似之处是,第一有着比较强的直接变现能力,也就比较容易受到资本市场的青睐。比如直播答题向B端收广告费是可以实现盈利的,狼人杀卖道具也是比较健康的商业模式;第二,具有用户自发传播的能力,比如将链接分享给好友能获得一定的游戏币或复活卡。狼人杀相对特殊,有当时综艺节目的助推。”蒋斌说道。但社交小游戏平台并未展现出这样的能力。虽然市场需求广阔,但在现阶段依旧是线性增长,愿意花大价钱去砸量的创业公司也很少,在商业化层面也没有狼人杀等产品更直接。从既有的商业模式来看,同桌游戏主要是通过会员付费,一个月 12 元,可获得每日 12 次筛选匹配、每日 3 条免费弹幕,个性形象等。相比狼人杀产品可售卖道具,小游戏很难实现例如五子棋游戏中“先下一子”这类会伤害用户体验的道具功能。一家运营方的内部人士向新浪科技分析说,无需下载和安装、无缝融入社交场景、与平台形成互补都是社交小游戏的优点,但缺点是无法满足重度玩家需求、留存度较低、游戏内付费变现难度较大,ARPU值较低。另外小游戏产品也同样面临着游戏共通的生命周期的挑战。“狼人杀是有机会做成社交的,但问题是场景太过单一了,哪天热度衰减用户不喜欢玩狼人杀了,社交体系就会崩塌。这个问题小游戏同样存在,例如五子棋这种小游戏比狼人杀的普世性更强,但用户也不可能永远玩下去。”蒋斌认为,“小游戏App首先要不断迭代有趣好玩的产品,伴随一些竞争元素去提升用户的中期留存,之后通过一些中度休闲游戏的搭建,去构建行为关系链,让用户持续在应用内玩下去,才可能做成游戏社交。”

  • 腾讯狙击抖音**步:复活微视,争夺网红

    3 月 25 日,王博文度过了他 25 岁的生日。在抖音的一段短视频中,王博文难得地穿着便服,戴着寿星皇冠,在“祝你生日快乐”的嘈杂人声中有点应付地拍着巴掌,中间还夹杂了一个隐秘的白眼。这段视频在抖音上如今已获得13. 6 万的点赞,在王博文另一个身份“大连老湿王博文”的庇护下,这个东北男孩戴上假发、涂上红唇,在镜头前用方言模仿着各类东北女性角色。他流传最广的一个视频,是今年春节发布的《原来北方家庭都是这样过年的》,仅在微博上,这条视频就有 4865 万次的点阅量。“大连老湿王博文”拍摄的《北方家庭是这样过年的》在今年春节期间引起了不少关注。“全网分发”是王博文这类网红的基本配备,不过相比传统的微博微信、长视频网站,从今年开始,短视频愈发成为王博文重视的平台。一个鲜明的对比是,王博文用了 2 年时间才将微博粉丝积累到 191 万,而在今年 1 月入驻抖音后,他已经拥有了 423 万粉丝。3 个月积累 400 万粉丝,这在任何一个社交平台里都算是不错的表现,这既归因于王博文自身的内容创作能力,也与抖音、快手等短视频平台从 2017 年开始崛起有关。以今年 2 月的数据为例,据第三方统计机构 QuestMobile 数据显示, 2 月快手日活跃用户平均在 1 亿左右,抖音也达到了6545. 7 万的峰值。面对快手与抖音的火爆,腾讯也在近期“复活”旗下的短视频产品“微视”。 4 月 2 日,腾讯宣布微视重新上线4. 0 版本,推出视频跟拍、歌词字幕等功能,同时与QQ音乐曲库打通。这也是自 2017 年 4 月腾讯宣布关闭当时的“微视”应用后,首次对该产品启动更新。虽然入场较晚,但对于拥有“微信+QQ”合并用户量超过十亿的腾讯,没人愿意错过微视潜在的流量红利。王博文也不例外,在微视重新推出一周后,他就注册了“大连老湿王博文”的账号。尽管目前王博文在微视的粉丝只有 19 个,但他并不担心,因为在王博文等大多网红的背后,无数只“推手”正与抖音、微视这样的平台方建立起千丝万缕的联系。内容创作者只需专注于生产内容,其他诸如运营曝光、商务接洽等工作,均由“推手”负责。直观来说,这些推手承担了类似网红经纪人的工作,他们还有一个更专业的名字——MCN 。作为舶来品的 MCN (Multi-Channel Network)模式,最初被认为是一种多频道网络的产品形态,但在国内,MCN 更像是内容创作者的经纪公司。王博文就在 2017 年 6 月与一家名为贝壳视频的 MCN 签约,根据贝壳视频创始人兼CEO 刘飞透露,像王博文这样的红人在与MCN 平台签约后,不论是粉丝流量还是广告客户,都会立刻得到指数级的增长。在 3 月的微博自媒体视频红人榜单中,头部网红几乎都不是“一个人在战斗”。在刘飞看来,如今短视频领域的商业生态已初步形成:抖音、微视承担的是基础工具与平台角色;红人负责生产更专业的内容; MCN 则成为两者的媒介,一端批量化培育各类红人,一端为平台输送个性化内容以吸引更多用户。“短视频平台与 MCN 的机构化合作是必然趋势。”刘飞对钛媒体说到。可以说,MCN 与平台的关系可谓是相互成就。由于市面上活跃的网红已大多分属于各家 MCN——比如“办公室小野”背后的洋葱视频、“Bigger 研究所”背后的 Papitube、“日食记”背后的罐头场……因此,相比一个个签约网红,短视频平台直接与 MCN 合作相当于一次性网罗大批红人,这对于眼下竞争胶着的短视频战场,无异于是奇袭对手的关键招数。被争抢的 MCN随着巨头与流量进场,各大平台已意识到 MCN 角色的重要性,曾经辛苦耕耘的 MCN 正成为被争抢的对象。从 2013 年成立以制作搞笑节目、影视穿帮视频为主的“何仙姑夫工作室”,到如今成为孵化 30 余个 IP 的 MCN 平台,刘飞经历了短视频行业从沉寂到兴起的阶段。在见到钛媒体记者时,刘飞有些抱歉地表示没办法接受采访太久,“刚去见了新浪和网易新闻,等下还要和企鹅号谈合作。”不只是刘飞,几乎所有头部 MCN 平台,都在今年春节前后收到了微视的入驻邀请,在一张流传甚广的“腾讯短视频项目说明书”中,还谈到了腾讯将投入 30 亿现金补贴以吸引优质达人,并以点赞数、播放量对短视频进行分档,补贴金额在 140 元- 1500 元不等。尽管这张来路不明的截图并未得到腾讯官方证实,但在钛媒体接触的短视频从业者中,多位人士对微视的补贴行为给予肯定回复,甚至“补贴还会更高”。外界流传高达 30 亿元的微视补贴政策不过,大多 MCN 在意的并不是每条视频千元左右的补贴——如今头部网红的单条视频植入早已近百万级,对于 MCN 与旗下红人来说,如何获得流量倾斜与曝光机会,是他们与平台合作的最终目的。“抖音是没有补贴的。”一位主打时尚美妆的 MCN 负责人告诉钛媒体。“但我们和抖音合作后,在沟通、流量上均有便利,比如抖音发布新功能时会邀请我们优先测试,也会定期告诉我们这段时间哪个KOL 很红、什么内容比较火爆、哪些方向的活动值得尝试等。”这也是抖音相较于微视,更能让网红快速实现冷启动的诀窍。在去中心化的短视频平台内,系统会根据用户观看视频的点赞、转发、停留时长等参数推荐内容,但在硬币的另一面,用户的行为轨迹也被系统记录下来,平台就可以有的放矢地根据用户喜好让 MCN 组织内容并推荐,最终网红得到粉丝,平台获取流量。“‘人格化’是短视频平台突出的内容需求,就是要求你不仅要有某一种专业技能,还要有趣、真实、接地气,这样才能让用户有感知,形成自传播。”上述美妆 MCN 负责人谈到,他还表示,在抖音上形成更加成熟的运营经验后,最近也正与微视洽谈进一步的入驻计划,以在新的平台流量红利到来之前占据先发优势。进击的微视相比抖音在 2017 年的一路高歌猛进,微视的“重生”颇有些卧薪尝胆的意思。早在 2013 年 9 月,腾讯就曾上线过“微视”,并通过腾讯微博和QQ的引流,一度到达 App Store下载量免费榜前五,日活跃用户达 4500 万人,但随后由于产品迭代滞后、体验较差,加之快手、美拍等玩家入局,微视逐渐沉寂。根据搜狐科技报道, 2015 年 3 月份,腾讯开始削减微视投入,随后微视被并入腾讯视频,微视产品部总经理邢宏宇离职加入 58 同城,多个工作组也遭到解散;直到 2017 年 8 月,腾讯重组微视项目组。今年 3 月两会期间,马化腾更是特意点出短视频,并称会探讨其与社交网络的结合点,一个月后,微视发布“重生”后的首次版本更新。今年 3 月两会期间,马化腾表示将探讨短视频与社交结合的应用。“微视现在是腾讯战略级别的产品之一,集团也为微视单独拨了一部分预算。”一位腾讯内部人士告诉钛媒体。据钛媒体了解,腾讯将微视从此前的 OMG 事业群移至 SNG 事业群,由原 QQ 空间团队负责产品运营,未来将在流量上与 SNG 旗下的 QQ、QQ 空间等产品相继打通,帮助微视实现初期的用户冷启动。而在内容版权上,微视所在的 SNG 又与腾讯 TME 事业群下的 QQ 音乐、酷狗音乐形成合作,这也让抖音平台的音乐版权归属问题有可能成为微视攻击的“软肋”。由于抖音上诸多短视频玩法均需要背景音乐陪衬,比如经典段子“确认过眼神,我遇上对的人”插曲就来自签约华纳的林俊杰《醉赤壁》,而一旦拥有华纳、环球、索尼三大数字音乐版权的腾讯对抖音发起版权追责,势必会对抖音的运营造成一定影响。由于腾讯在内容领域的优势资源主要集中在 OMG 事业群,因此微视也与 OMG 事业群分管的企鹅号、腾讯视频、天天快报等相互串联,后者承担了部分邀约头部账号、人气网红、专业创作者的 BD 工作。一款产品在集团内部同时获得跨平台的资源支持,这在提倡内部竞争的腾讯并不常见,面对势头凶猛的抖音,微视也计划与流量更加充沛的微信产生合作。“未来微信公众号、企鹅号、天天快报内的部分视频内容都有计划由微视来呈现,未来等微视产品更加成熟,不排除会进驻微信一级入口的可能。”上述腾讯人士表示。微信公众号后台近期的改版更是印证了这一信号。 4 月 12 日晚,微信公众号后台将支持在多条图文推送中单独插入图片、视频、音频或图文内容,这将会大大增加视频内容的曝光度,无疑为短视频等内容创作者带来了利好。抖音的护城河面对披袍擐甲的微视,抖音自然也有它的护城河。回溯抖音的兴起,新颖的产品设置与运营玩法已被验证为成功之举。拿用户实际使用体验来说,在“刷一刷”+“快速展开的视频内容”+“基于兴趣的算法推荐”的产品体系中,动辄刷上两小时是常有的事,也正因如此,微视的产品链路也基本参照了抖音的操作逻辑。“从外部环境来看,腾讯没有做开放式社交的基因,它擅长的是封闭式、点对点的即时通讯熟人社交产品,对弱关系链的社交模型缺乏认知和运营经验。”一位文娱领域投资人告诉钛媒体。如果说产品逻辑可以被效仿,抖音对玩法与内容的沉淀,则是其他对手难以快速超越的壁垒。据钛媒体了解,从 2016 年产品发布至今,抖音内部已有超过 200 位运营编辑,这类角色的职能就是发现、设置、引导平台内的各种玩法,甚至在通过系统算法了解用户喜好后,有针对性地输出更多类似内容迎合用户,同时去预测下一个“引爆点”,让平台在内容层面始终保持活跃度。“海草舞、地铁撩、海底捞”抖音带火的玩法已经数不胜数。也就是说,微视虽然可以通过补贴或者其他产品导流在短期内积累人气,但抖音已经在一年多积累了大量短视频内容与用户画像,汇集而成的内容图谱可以有效地预测流行趋势,从而指导平台方的运营策略。对于 MCN 与红人来说,短视频平台的商业化成熟程度是能否留住他们的另一个重要标准。眼下大部分的网红依然将广告植入当作主要的商务合作方式,但内容植入的底线是什么,平台是否要抽成等商业化问题,都需要平台建立完善的规则去解决。诸如微博的微头条、微任务;美拍的“M 计划”,都是用来规范内容创作者的变现方式,甚至帮助他们拓宽了商业化渠道。这也是抖音暂时**其他短视频平台的优势之处。除了在平台内与淘宝打通尝试“即看即买”业务外,在 4 月初,抖音在上海举行了 2018 年度营销峰会,首次公布了扶持品牌主官方账号、合作品牌贴纸、鼓励用户间互动等诸多营销策略。3 月底,抖音短视频内出现了淘宝跳转链接。另据钛媒体了解,除了与 MCN 这样的机构化合作外,抖音也在尝试自行签约网红,这样不仅更能实现对优质内容的掌控,还能在旗下网红的商业化过程获得一手反馈,也能获得一定比例的抽成。不论是红人还是 MCN 机构,争夺内容创作者的意义事实上就是在争取流量,不过值得注意的是,传统流量为王的观念在短视频平台并不完全适用。特别是在 4 月 11 日,微信、QQ暂停抖音、快手、微视等短视频APP外链直接播放功能候,单靠导流来实现突围的可能性就更加渺茫,之后考验各路玩家的,依旧是对产品的打磨、精细化的运营以及商业化规则的完善。微视与抖音之争,事实上才刚刚开始。(本文首发钛媒体,作者/苏建勋)

  • 小猪佩奇到底是怎么火起来的?世界最大的nawl

    今年社交平台上最火的带货女王是谁?范冰冰?杨幂?Angelababy?不,是猪猪女孩小猪佩奇。如果你经常用抖音、快手、B 站、知乎、微博……或者类似的任何一个内容或社交平台,那你很大概率能答出这道题:掌声送给社会人。随着口号喊响,社会人小猪佩奇似乎一夜之间就在短视频平台和社交网络上爆火了,还顺手救活了一堆卖盗版儿童塑料玩具的淘宝店。淘宝上随便搜搜小猪佩奇的纹身贴、手表、滑梯玩具、毛绒公仔,动不动就月销量过万了。淘宝上的小猪佩奇玩具手表可是,这只已经诞生 14 年的粉色卡通猪,怎么突然就在中国火了呢?动画先台后网播出,儿童基础扎实提起小猪佩奇,你可能**想到的是短视频平台里“社会人”“猪猪女孩”的人设,以及搞笑的鬼畜视频和方言配音。但在拥有这些人设标签之前,《小猪佩奇》就已经是一部优秀的儿童戏剧动画片了。豆瓣上,《小猪佩奇》系列动画片的评分都超过了 9 分,在国内同样受关注的《喜羊羊与灰太狼》《熊出没》等动画片评分却都在 7 分以下。《小猪佩奇》进入中国大陆的时间是 2015 年 9 月,早上七点在央视少儿频道播出,收视率很快就在早间档播出的少儿动画节目里排到了**,是当时**的学前儿童教育节目之一。同年 10 月,在电视台已经收获了高人气的《小猪佩奇》,又在爱奇艺、优酷、土豆三家网络平台上线。小观众们从在电视上被动收看,变成了在视频平台上主动搜索观看,《小猪佩奇》一年的播放量超过了 100 亿人次。这么受欢迎的《小猪佩奇》,进入中国时已经是一部十几年前的老动画片了。它最早在 2004 年 5 月 31 日在英国 Channel Five 播出,到目前为止已经播出 5 季,第 6 季计划在今年 7 月开播。这是一档针对学龄前儿童推出的喜剧动画片,每集只有 5 分钟,围绕佩奇和她家人朋友的生活故事展开,剧情活泼、幽默又温柔。小猪佩奇生活的社会里没有什么反派坏蛋人物,每集故事的结局也总是皆大欢喜。故事都不复杂,小朋友在观看时可以被逗得哈哈大笑,同时学到一些知识;陪伴观看的父母也不会觉得无聊,还能从中受到一些教育孩子的启发。和灰太狼红太狼那种简单粗暴的父母不同,小猪佩奇拥有一个近乎完美的家庭。佩奇的父母善于温柔引导而不是暴力责打孩子,他们善于聆听孩子的意见,也愿意采取循循善诱的方式表达。佩奇每次犯了错误,总是可以**时间承认,父母也愿意平等和谐地和孩子交流。最近有家长在豆瓣上控诉孩子看了《小猪佩奇》后学猪叫,还在家里到处跳来跳去。其实,家长们还可以从小猪佩奇玩泥巴的故事里看到另一面:佩奇和弟弟乔治愿意征求父母的意见,因为他们提出的合理要求很少被拒绝。佩奇想要玩泥巴,就先去征求了妈妈的意见。妈妈没有阻止她玩泥巴,只是告诉她:如果你要在坭坑里跳,必须先穿上靴子。佩奇也继承了妈妈的温柔,在玩泥巴游戏里,佩奇同样温柔提醒了想跳入泥坑的弟弟乔治:等一下乔治,我得先检查一下这里安全不安全。佩奇的爸爸有责任心又幽默,他会手风琴、架子鼓、画画、跳水和打篮球。他工作很忙不能经常陪伴孩子,但也会精心准备生日惊喜,给孩子们变魔术,陪他们学自行车。在佩奇家,父母总是身体力行地教育孩子,他们经常读书看报,也带动孩子们阅读;他们鼓励孩子和家长一起做扫除、烹饪等家务,假期会带孩子去参加运动或野餐。动物的形象打破了种族、阶级和背景问题,动画片里的动物社会更像是一个乌托邦:虽然家长们从事着不同的职业,大家却是平等地生活在一起。无论工作是公司白领还是建筑工人,爸爸们下班后都会一起踢足球,妈妈们会一起喝茶聊天。简单幽默的剧情,平等美好的家庭和社会关系,马卡龙的配色,毕加索的画风,《小猪佩奇》凭借自身的品质,一早就已经在儿童眼里拿到了高分。社交和短视频平台引爆成年观众对小猪佩奇的爱,比孩子们慢了不止半拍。去年 9 月,《小猪佩奇》第五季上线了。从微博和百度搜索指数来看,不少成年人是在去年的十一假期被小孩子们安利了,开始主动搜索和观看《小猪佩奇》。微博上的营销号和大 V 们也没有放过小猪佩奇。不知道是版权方有意营销还是佩奇的感染力太强,去年下半年,微博上关于小猪佩奇的讨论几乎没断过。去年 7 月,大 V“休闲璐”发明“猪猪女孩”话题,算是微博上和小猪佩奇有关话题内容的开始;到 10 月第五季播出期间,营销号们又不断以猪叫和跳泥坑等剧情炒热度。到今年上半年,“小猪佩奇是富二代”“小猪佩奇和国际**联名款”等话题也被疯狂转发。接踵而至的是视频平台的火爆,去年 11 月,B 站鬼畜区关于《小猪佩奇》的视频集中爆发,多个网友制作视频播放量超过百万。专业制作方言网络视频的“果子哥哥工作室”在 B 站投稿的《重庆版小猪佩奇来了》如今已经有超过 300 万的播放量,之后,网友们又做了广东话、四川话、东北话、广东话、新疆话、上海话、山东话、潮州话、长沙话、福州话、海南话、河南话、河北话等等多个版本。去年年底,一则将小猪佩奇画在背上的短视频引发了小猪佩奇在快手、抖音等短视频平台的火爆。紧接着,有网友发现意大利著名球星吉拉迪诺的左臂也有小猪佩奇纹身。随着“小猪佩奇身上纹,掌声送给社会人”口号喊响,小猪佩奇也成了成年人圈子里的明星。吉拉迪诺之后就抖音视频引发的佩奇带货风暴了。如今,抖音上 # 小猪佩奇 # 话题挑战下的视频已经超过 3 万个,每条视频里,都带有不止一个小猪佩奇相关的周边产品。淘宝上的抖音同款小猪佩奇玩具简单来说,小猪佩奇在国内火起来的过程可以总结成这样:动画先电视台后网络平台播出,打好儿童基础;之后在社交平台炒作话题吸引成年人注意;最后靠着儿童向家庭安利和短视频平台话题炒作双管齐下,完成最终的引爆;火起来之后迅速进行合作授权变现。这当然不全是自觉自发形成的传播,版权方有意的营销行为起了很大作用。这样一波操作下来,还能说猪姐不社会?IP 的营销和授权变现小猪佩奇大火的背后,动漫授权公司 Entertainment One Group(eOne)功不可没。这是一家拥有丰富经验的授权公司,《爱乐之城》《圆梦巨人》《天空之眼》《神奇队长》等影视音乐作品都是经由他们向全世界发行的。小猪佩奇最初的发行商是 ContenderEntertainment Group,2007 年,这家公司被 eOne 以 9700 万美元收购了。2015 年,eOne 又以 1400 万英镑收购了《小猪佩奇》制作方 Astley Baker Davies(ABD)70% 的股权。eOne 与 ABD 在此之前就共同拥有《小猪佩奇》的 IP 版权,收购之后,eOne 对这一 IP 的特许经营权提高到了 85%。随后的 2016 年,《小猪佩奇》就在全球范围内通过了 500 多个授权协议,在多个国家进行了巡演,还在英国和意大利设立了小猪佩奇主题乐园。一年时间,《小猪佩奇》就为 eOne 带来了 11 亿美元的收入。作为英国公司的 eOne 也没放过中国市场,他们在香港设立了办公室,在上海开设了公关公司,还和金比尔、企鹅、亿智、华旺等多家公司在中国合作进行版权代理和衍生品研发生产。合作商之一的金比尔总裁就曾在接受采访时提到,金比尔和 eOne 合作对《小猪佩奇》进行线上线下的推广,线上依托微信、微博、美拍等不同平台宣传推广;线下则把《小猪佩奇》的动漫人偶带到商场和粉丝见面。2016 年 10 月,eOne 就和微信联合推出了《小猪佩奇》的官方微信表情。到 2017 年,eOne 还针对中国市场的特殊情况拓展了中端价位的衍生品,让正版衍生品在超市货架销售。《小猪佩奇》终于在短视频平台大火之后,eOne 做的则是迅速签约**合作。不久之前,旺旺在他们的微信公众号晒出了旺旺和小猪佩奇合作的零食礼包,里面不仅有旺旺的零食,还有抖音上大热的小猪佩奇手表和背包。

  • 超越谷歌!起底亚马逊站上全球科技公司老二的背后

    “从短期看,股市是投票机器,但从长远看,股市是称重机。”                                            ——————本杰明·格雷厄姆美国东部时间 3 月 20 日,亚马逊股价上涨 2.69%,报收 1586.51 美元,市值达到市值 7680.409 亿美元。而谷歌母公司 Alphabet 收跌 0.39%,总市值降至 7626.2 亿美元。亚马逊市值超越 Alphabet,成为全美市值“老二”。巨人之战从未间断,路透社近期刚刚曝出,谷歌正在与塔吉特(Target)、沃尔玛、家得宝(Home Depot)、好市多(Costco)和 Ulta 等零售商联手,试图组建一个新的大型零售品牌群,并且重磅打出搜索广告项目——Shopping Actions,外界评论称这是谷歌联合众多零售平台,目标直指亚马逊的“合纵连衡”之战术。然而就在“好戏将要”上演之际,不巧的是,Facebook 数据泄露染指政治选举一事持续发酵,让 2016 年竞选期间就身陷“Googlelobby(谷歌政体)”之说的谷歌也受到影响,其母公司 Alphabet有所跌落。投资者也许见风使舵,对已经越来越贴近其生活各个领域的亚马逊更加青睐。一跌一涨之间,这一回合,亚马逊略胜一筹。“从短期看,股市是投票机器,但从长远看,股市是称重机。”过去 12 个月,亚马逊股价上涨 85%,仅仅在 2018 年年初就实现了 35% 的涨幅。尽快此次亚马逊市值首超谷歌存在一定的偶然因素,可能是短期投票的结果,但是仔细衡量亚马逊近年来在各领域发展表现出的潜力不难发现,这次排名跃进也是必然。布局:总是快人一步图片来自投资界2014 年,贝索斯曾在《致股东们的一封信》中提及了亚马逊的三大支柱业务:亚马逊市场(Amazon Marketplace),亚马逊云服务(AWS),以及亚马逊会员服务(Amazon Prime),并且表示亚马逊仍在努力寻找第四大支柱业务。2017 年 4 月,《致股东们的一封信》中贝索斯表示,人工智能和机器学习将是公司新一阶段发力的重点。这将有助于亚马逊保持当前地位,维持对竞争对手的优势。语音、虚拟助手,以及自然语言处理将是重点。这或许就是“第四条支柱业务”?今年年初,雷锋网(公众号:雷锋网)曾发表过一篇《连线》杂志的万字长文解读亚马逊用 AI “重塑金身”的过程。似乎在互联网变革的每个阶段,亚马逊总是“快半拍”,例如 2014 年亚马逊的 Alexa 正式发布,两年后,诸多巨头开始布局智能音箱时,亚马逊的市场占有率达到了 90% 左右。二十年,亚马逊从最初的在线图书销售商开始,将触角不断伸向新市场,如零售、仓储、物流、云计算、电子出版、AI等等,俨然已经成为了一个拥有全产业链条的巨人。“亚马逊市场”,是一个远比想象中更庞大的市场。不仅包括亚马逊几乎已经垄断的电子书产业,也包括对音乐、视频、影视和娱乐等数据内容的深度渗透;不仅囊括 kindle 阅读器、kindle fire、fire TV、智能手机 fire phone(尽管最这是一次昂贵的代价)、智能音箱 Echo 等硬件,并且这些硬件与自家技术、内容、服务高度关联。在 AI 领域,尽管谷歌、微软早已有所动作,但在产品落地上亚马逊却先人一步。而亚马逊“人工智能即服务”的思路,让人工智能作为基本工具提供给云计算和开发者社区。一个典型的场景就发生在今年一月份在西雅图开张大吉的第一家无人便利店 Amazon Go,当一位消费者进入 Amazon Go 时,需要对他手机上的 Amazon Go 应用进行扫描,然后这位消费者就会变成为系统内的 3D 目标。Amazon Go 店内的摄像头也会盯准货架,确保与商品之间的互动,顾客 Just Walk Out(拿了就走)之后,直接用“Amazon Go”的 APP 支付即可。可见所谓的亚马逊市场早已超越了单纯的电商和零售业务,而更多的是消费级 AI、云计算方面的潜力市场。爆点:AWS及若干隐形增长贝佐斯曾表示理想商业模式的四个特点:顾客喜欢、可以成长到非常大的规模、拥有强大的资本回报、经久不衰的生命力。在这一模式中,亚马逊最核心的一个战略优势在于对 AWS 数据云服务的远见性投资。亚马逊财报显示,2017 年第三季度,亚马逊AWS云服务净销售额 45.84 亿美元,同比增加 42%,在云业务市场遥遥领先微软和谷歌,成为了亚马逊业务增长的核心。AWS 已然是当前亚马逊生态系统中核心价值的产品形态。不仅如此,亚马逊对于新市场的敏锐也让这家公司的隐形爆点颇为值得期待。例如据 eMarketer 的一份新报告显示,亚马逊 2017 年的广告收入将首次突破 20 亿美元,在数字广告方面,已经实力初现。研究公司 Cowen 分析师在数月前的研报中就预测,亚马逊股价将会继续上涨,分析师认为,他们相信亚马逊将以云计算为重要驱动力,在尚未成为其核心业务的领域内重要市场夺取份额。不断创新的“技术流”,让亚马逊在汲取传统巨头积累下的经验基础上不断迭代,实现了企业发展的“飞轮效应”。尽管在亚马逊资本回报率或是盈利能力上,亚马逊似乎还没有展现出像 Alphabet 一样,但彭博指出,亚马逊市值超越谷歌显示,投资者对亚马逊充满信心。很明显,投资人当前考虑的并不是该公司的利润,而是其在创新市场和技术上的乐观前景。在一些投资人眼中,亚马逊正在成为一个集合了各种业务的重要颠覆者。华尔街日报在形容亚马逊时,甚至用上了一个相当大胆的词汇——“最终的帝国”。声誉:全美企业声誉排行三连冠在民调机构 Harris Poll 发布的 2018 年度企业声誉排名中,亚马逊则连续三年高居榜首,这份年度民调是为了调查美国民众对全美 100 家最知名企业的感受,此次参与调查的美国民众达到 2.58 万人。调查显示,“Americans prefer brands that offer respite from chaos and that embody hearth-and-home values. ”即美国民众更喜欢那些能够在嘈杂中提供舒适服务的品牌以及具备家园价值观的企业,这样的口碑无疑也为此次亚马逊股价上涨打好了“群众基础”。2017 年,调研机构 CIRP 的调研结果显示,亚马逊的会员用户预计已达 8500 万人,同期增长 35%,亚马逊的电商平台单月浏览者超过 1.96 亿人, 路透社也通过一项内部文件获悉,亚马逊流媒体视频用户已达 2600 万,截止 2017 年亚马逊的视频业务已经吸引了 500 万新增会员。市场的全面布局不仅覆盖消费者日常生活所需,同时数字娱乐版图的扩大使得消费者接受并享受的亚马逊提供的内容及增值服务,数据显示,在美国,2017 年消费者每花费 1 美元,就有 42 美分流向了亚马逊,对消费市场的深入,也势必吸引了投资者的目光。锦上添花的是,LinkedIn 近期公布的 2018 年美国最佳工作公司榜单中,亚马逊也高居榜首。加上去年收编的全食超市 8.7 万员工,亚马逊已成为仅次于沃尔玛的全美第二大“财富 500 强”雇主。据外媒报道,在亚马逊每周工作超过 20 小时的员工有资格享受与亚马逊正式员工相同的福利待遇,包括医疗保险、退休储蓄和带薪休假。员工的认同感对于亚马逊品牌影响力的扩大也起到了助推作用。     品牌声誉不仅来自消费者和员工,还来自亚马逊的合作伙伴。基于贝佐斯对亚马逊“共生性生态系统”的布局,第三方不仅能够获得平台、仓储的支撑,还能够同步享受到亚马逊推陈出新的物流服务带来的利好。强势的“共赢能力”也为亚马逊获得了更多的合作伙伴。热度:网红贝佐斯和他的“狗”除了以上三点硬货,或许亚马逊的股价也一定程度的蹭了贝佐斯在今年 MARS 大会上“遛狗”的热度。值得一提的是,波士顿动力曾于 2013 年 12 月被谷歌收购,随后又在 2016 年被售出。如今波士顿动力的产品 SpotMini 成为了贝佐斯在 MARS 大会上的新宠,大会隔夜,亚马逊的市值超越谷歌当上老二。这个饶有趣味的线索是纯属巧合呢?还是投资者们从 MARS 大会上挖掘出了亚马逊在未来的一些新商机?不得而知。随着各家公司技术的争相革新,趋于成熟。如何实标准化、通用化、应用化或许会成为接下来重要的战场之一。亚马逊的“二哥”能当多久?是会被暂居其后的谷歌、微软快速追赶?还是会奔着苹果迎头挑战?拭目以待。

  • 红而不火的快手,如何缔造它的社交帝国梦

    每年春节,中国人就会变戏法般的乾坤大挪移,杯中有酒,万事不理,连全民狂欢的吃鸡日活都暴降了11%,宇宙中心五道口的快手大厦却灯火通明,上千人的评审团队全员无休,在每逢佳节胖三斤的日子,快手拼命托起了小城市人情社交的视频生态。在四五线城市以及被遗忘的乡村,团圆饭、全家嗨歌甚至老少爷们看社戏这些原本封闭的线下场景都被快手社交化了,甚至微信也只能作为传播载体,被管道化了。今年春节期间,移动互联网消耗了84.9TB的流量,背后就是视频社交的风生水起。想当年,微信干掉了短信和电话拜年,支付宝全民集五福,曾经的巨头游戏,如今快手也翩然入场。视频社交为什么红而不火一直以来,直播和短视频都在行为艺术者和对嘴歌唱家的定位中徘徊不前,群雄并起,却迟迟不能江山一统,竞争反而越来越残酷,平台需要填充新的更符合公众认知又不被指摘的变现形式,视频社交是其中之一。然而想要一波流带走比赛仍有三个门槛。1、自匹配的容错率。在看脸时代,视频社交的门槛很高,较之以往隔着屏幕的文字+表情符交流,陌生人面对面沟通卸掉了昵称和照骗的伪装,显然需要更强的心理耐受力。号称“和全球年轻人聊天”的TiKi上线前调查了公众对实时视频社交的接受度,85- 90 年的为21%,90- 95 年为47%, 95 后高达78%,但数据有时也会骗人,即便在职场、交友等目的性更强的场景中,实时视频的压力也无时不在,当你被系统匹配的异性挂掉时,心理阴影面积可想而知。视频社交考验的不再是你的P图能力,也不是键盘表达,而是你的综合交际水准,这并不是强化美颜功能,数据精准匹配以及加入礼物等辅助工具就能完全解决的。2、细分场景的快速催熟。视频社交到底应该依赖海量用户还是细分场景一直存在争议,因为视频显然还不是多数中国用户熟悉并能接受的社交方式,TiKi的 60 秒切换本质上就是试错机制,通过更多匹配加强成功率。换句话说,平台希望用户始终停留在交友阶段,而不是通过添加好友建立稳定的熟人关系,因为TiKi很清楚,在这个场景中,既比不过微信的视频通话,主打“一见就炮”则拼不过陌陌。所以越来越多的视频社交奉行“浅尝辄止”的原则,内心深处排斥建立稳定的社交关系,希望始终保持在派对状态,这就导致现在的视频社交不能通过用户增量沉淀下来做好运营,也不能在目的性很强的细分场景维持热度,始终处于亢奋而不持久的状态。3、流量下的商业基因。直播和短视频应该承载怎样的商业模式有过很多尝试,快手是围绕魅力型反传统偶像来做商业开发,并且其效果正被流量放大,但内容审核门槛不断提高,与主流文化的冲突使其商业价值存在变数;一对一交流或者群聊不管是随机匹配还是专业工具化,粘性超强,只是太过秘密,不能围观,也不存在分享机制,有反商业化倾向。快手哪来的社交基因?2013 年,当程一笑的GIF快手转向短视频时,市场和技术都不成熟,用户留存率爆跌,窝在北京立水桥的二居室里一筹莫展,直到程一笑与宿华号称“长征会师”的见面。那时的快手确立了两个战略,一是坚定不移的算法推荐,二是坚持从工具到社交。移动互联网的流量文化放大了普通人的喜怒哀乐,快手从短视频引发的情绪逆反中沉淀出冷静客观的产品哲学,至少在那时,宿华已经敏锐观察到普通人社交的核心诉求,即原本无人关注的个体通过分享的群体认同获得力量,直播和短视频历史性的拉低了这个门槛,用宿华的话说,“照片太安静了,大家都喜欢热闹,快手帮大家解决孤独感”。1、从趣缘关系到群体认同。互联网最大的价值就在于开发并匹配了趣缘关系,使得有相同价值观和趣味爱好的人找到了交流空间,形成了有身份认同的趣缘文化,PC时代话语权握在少数头部精英手中,有小众化倾向,移动互联网推动了内容的即时性和碎片化,直播和短视频拉低了用户门槛,让普罗大众从看客变成主角,也第一次把亚文化推向前台。豆瓣、知乎大V的另一个身份往往是现实中的成功者,这曾经是亚文化的短板,而快手通过快速塑造商业网红突破了这个心理定势,把自卑变成了自我认同,罕见的排斥性导致的群体共情自成体系,这是社交的天然基础。2、反达人时代,快手如何撬动封闭社交。在四种最基础的人际关系中,快手在趣缘之外还独占地缘、血缘二种,中国四五线城市和乡村基本是一个人情社会,这在春节表现得最为明显, 280 列写着“拍个视频发红包”的返乡列车带着快手用户完成了千里迁徙,把五道口和后厂村的Kevin、vivien们变回狗剩和翠花,成功串连起中国的两个世界。快手敢于跻身腾讯和阿里才能上台面的红包大战,就在于平台已经拥有联系一定地域、一定人群的有效沟通方式。宿华说“快手从不给任何用户贴标签”,但基于LBS的“同城”是例外,这对于其他Hero app毫无价值,哪怕是滴滴和美团,但足以让快手用户突破空间限制建立起稳定关系。3、小圈子自传播正取代流量推荐的作用。这是平台社交属性形成的典型特征。直播和短视频最初都是靠扶持流量网红做大,但平台对红人的控制能力有限,加之内容审核瓶颈,抖音也从“音乐短视频”向“记录美好生活”的定位切换,在可预见的未来,网红的同质化会越来越严重。在这种情况下,快手在远离大城市的地区建立起一个个封闭的传播中继,就能够把每个区域的用户串连起来,比如今年春节就有不少快手用户发布家人K歌、尬舞的视频,浓厚的乡土气息浓得以在同城标签下得到飞速传播。这种封闭社交正成为快手视频的重要传播方式之一,也是快手植根农村和小城市的独特优势,之前快手自称最大客群在北上广深很容易让人忽略这一点。视频社交帝国的疆域和边界在宿华的梦想中,快手通过串连每一个人,记录下这个世界的影像,有人问他准备用多长时间完成夙愿,他给出的期限是十年,南齐的开国皇帝萧道成也曾有一个梦想,“使我治天下十年,当使黄金与泥土同价”,大多数人低估了宿华和他的社交帝国之梦,甚至包括快手的投资方在内。快手的目标并不是小镇青年的自嗨工具。流量门槛(主要是资费)的降低使得视频社交的崛起成为必然。按照春节三大运营商的数据,视频在移动流量份额中已处于支配地位。但在快手社交帝国的进化路径中(无论快手是否有此野心),谁是模板,谁又是敌人?目前主要的视频社交生态分为几类:1、交友型。此类APP最多,是陌生人社交的最新亚种,陌陌也是做了直播才突破用户增长瓶颈,再比如瞄着美国 00 后视频Monkey做起来TiKi、碰碰等等,貌似很火爆,但需求、场景和粘性多少是强行创造出来的。TiKi上就经常有不聊天的网红脸美女,动不动就发一些阅后即焚的羞羞小视频,或许是维持日活的一种方式。不管是一对一暧昧还是多人群聊,其实谈不上是瞄准了什么刚需,如果是目的性更强的交流,有的是专业的工具软件,核心的动力应该还是尝鲜。所以从趣缘、业缘、地缘和阶层认同等多个角度来看,这种交友并不具备强关系链基因,有流量和用户规模加持的快手倒是替代性更强,纯粹的视频社交中只有职场或精英社交等细分领域才有机会。2、嘴炮型。本质上就是PC时代群组或聊天室模式的升级,但场景上更封闭,在完全陌生的情况下互动体验并不好,表现在谈话质量不高,而且特别刻意,喜欢讲段子的人可以满足虚荣心,或是玩玩真心话大冒险之类的,定位比较尴尬;如果是熟人,沟通确实没有了障碍,但除非闲得蛋疼,为什么非要玩视频?至于占有用户群体上更是弱势,这点不如快手。3、工具型。源动力是业缘社交,至少也是熟人社交,但有个基本逻辑必须搞清楚,熟人是否需要微信之外的社交工具?对于巨头来说答案是肯定的,支付宝为什么要做圈子这样的社交尝试,就是因为在四五线城市缺乏用户触点,拖累了金融场景的延展。快手的不同在于有群体认同,有粘性,有沉浸感,单就下沉到四五线城市来说,快手甚至有能力将微信管道化, 3 年前快手的月均用户流量就超过微信了,尽管微信有超过 10 亿的月活用户,快手至少有机会成为视频社交的载体。至于微博,产品形态是粉丝与大V的单向结构,没有内部社交的基因,主要价值已经异化为通过热搜显示某个群体的社会声量,因此与视频社交不具备对应的竞争。马化腾曾说,“快手专注于服务普通人日常生活的记录和分享,拉近了人与人之间的距离,是中国移动互联网一款非常贴近用户,有温度,有生命力的产品。”这是腾讯押宝快手的主要原因,然而快手的自我进化也许已经超出了腾讯期望的限度。微视在被宣告死亡之后偷偷保持更新,一年后再度复活,恐怕也与此有关。可以说,快手做视频社交的策略就是寻找微博、微信以及其他产品的交叉地带,以熟人、地域、趣缘三个纽带互为关联,静待水到渠成之时,一旦流量资费瓶颈获得突破,就可能成长为足以威胁微信、微博,横跨三四五线城市的社交帝国。

  • 微信小游戏浪潮下的开发者们

    3 月底,腾讯互娱在上海召开了一次面向合作伙伴的闭门会议。会上,微信游戏负责人向合作伙伴们公布了一个牵动无数开发者的消息:已有两款微信小程序实现了月流水千万。在此之前,跳一跳 2800 万的HAU(小时活跃人数数量)与 500 万一天的广告费已让开发者们认识到了小游戏的潜力,如今,这一消息无疑让意欲进军微信小游戏的开发者更加兴奋。但腾讯随后公布了一个让部分开发者感觉沮丧的政策:腾讯和小游戏开发者的收入分成比例高于苹果与IOS开发者收取的比例,其中,腾讯渠道技术服务费为小游戏道具内购总流水收入的 40%,包含第三方支付渠道费用,单日广告收入流水10 万元以内(含)的部分,开发者可获其中 50%,单日广告收入流水超过 10 万元的部分,开发者可获其中 30%。尽管如此,第一批微信小游戏开发者还是入局了。 4 月 11 日晚间,有开发者发现原本待审核状态下的微信小游戏居然可以发布了。截止 4 月 6 日,新发布的微信小游戏达到 29 款之多。根据游戏引擎Cocos的统计,新发布的小游戏开发者中,以个人开发者居多,企业开发者开发的小游戏只有寥寥几款。很快,开发者与玩家们发现,小游戏入口隐藏极深,玩家需要按照微信 -> 发现 -> 游戏 -> 最新小游戏-> 好友热玩来查看这些新增的小游戏。小游戏缺乏入口,推广难与此前腾讯公布的高额抽成比例,成为了小游戏行业新的痛点。小游戏能否成为新的风口?开发者们又是如何看待“去中心化”的微信小游戏市场?娱乐资本论旗下的剁椒娱投(ID:ylwanjia)采访了数位意欲进军微信小游戏领域的开发者与游戏业内人士,听他们讲了讲自己的看法。程序员小王:腾讯太贪了,个人开发者占不到任何便宜得知腾讯提出的分成比例后,小王决定放弃投身微信小游戏的念头,转而持观望态度。对小王来说,微信小游戏最吸引他的,是没有技术壁垒。开发者只需要用Cocos Creator 一键导出。这无疑节省了大部分程序员的学习成本。但仅以个人单打独斗,小王觉得微信小游戏又没有那么美好。至少对他来讲是这样。一方面,小游戏难以得到曝光。从目前上线的小游戏情况来看,玩家发现这些游戏并不容易。仅仅依靠朋友分享,小王没有自信。“一个人单打独斗,没有任何推广手段,我觉得很难获得不错的用户体量。”小王以第一批上线的小游戏举例,“四五天过去了,也没有任何一款新上线的小游戏引爆朋友圈。”另一方面,小王认为,微信小游戏提交审核过程繁琐,分成比例却高的吓人。根据腾讯此前公布的信息。无论企业还是个人开发者,在提交小游戏审核时,需要准备相应的资质文件。对于企业来说,需要同步提交《广电总局版号批文》 、《文化部备案信息》、《计算机软件著作权登记证书》、《游戏自审自查报告》。对于个人开发者来说,需要提交《计算机软件著作权登记证书》、《游戏自审自查报告》。这两项文件,对于小王来说既耗时,又费力。个人提交的小游戏产品无法开通支付功能、仅能以广告模式变现,也就是说,个人开发者必须接受腾讯高额的广告收入分成。这对小王来说是无法接受的。“腾讯太贪了,这样的规则下个人开发者占不到任何便宜。最后能赚到钱的仍然是大厂。”独立游戏开发者老七:微信小游戏是风口,我们被逼无奈,不得不做老七是一名独立游戏开发者。团队有 4 人,此前有三款产品发布在苹果商店。看到抽成比例与新上线的微信小游戏之前,老七是持乐观态度的。在此之前,团队的几款IOS游戏全部依靠自然增长用户带来的广告与内购收入维持运转。由于团队缺乏买量的资金,推广上都是通过好友朋友圈转发分享,帮忙扩散的方式打开初始用户群。尽管没有一款游戏上过苹果榜单推荐,也没有一款游戏排到付费榜、免费榜比较靠前的名次,但依靠广告与内购所得的收入,足以支撑团队的运营。对老七来说,小游戏通过朋友圈来分享的方式运作起来得轻车熟路。更重要的是,微信小游戏的引流相较苹果游戏来说,更加便捷。想把微信好友引流到IOS游戏中,需要从分享链接中跳转浏览器,再跳转AppStore。在微信生态下,小游戏减少了繁琐的操作,一切只需要一个二维码即可。高额抽成,隐藏的小游戏入口,这些问题让老七头痛,但他没有选择,只能入局微信小游戏的战场。在他的认知中,IOS独立开发者的生存空间愈发紧缩。大厂们牢牢占据着各种资源,能够生存下的小团队们,要么依靠游戏质量取胜,要么依靠买量,对于他的团队来说,天然利于导量的微信平台,是团队扭转颓势,逆天改命的最好机会。风口就在那里,重重阻碍也在那里。即使知道可能会摔得很惨,老七和他的团队也没得选。错过了太多风口,这一次,充满想象空间的微信小游戏他们不可能放过。摩邑诚魏罗楠:小游戏在传统信息流渠道买量不现实在加入摩邑诚做移动游戏广告营销方案之前,魏罗楠曾在咸鱼游戏做过多年发行工作。在微信小游戏未来发展与“去中心化”的宣传口径上,他有着自己独到的理解。对于业内关注的微信小游戏能否通过买量打开局面,魏罗楠是持怀疑态度的。关于微信小游戏的发展前景,魏罗楠以国外的ketchapp公司举例作了说明。这是一家专门做玩法轻度、画风简约、可重复玩、碎片时间游戏的公司。ketchapp研发的小游戏们往往流量巨大、具备高DAU,变现渠道则主要依赖于广告。每次上新品时,ketchapp就用老产品统一推新产品,这种方法屡试不爽,基本每次新品都能到榜单前列。这种小游戏的特点是门槛低,流量巨大。依托于微信庞大的用户数,国内也很有可能诞生这样的公司。2048 是ketchapp公司的代表作品魏罗楠认为,微信利用流量聚拢轻度游戏,待用户养成习惯后,微信便是轻度游戏的代名词了,在某种意义上来讲,这与腾讯一直宣扬的“去中心化”背道而驰,实际是更中心化了。当然,这也不是坏事,更聚拢的平台能够给予更多小游戏机会,此前很多社交性强的小游戏很快就死掉了,依托微信以后这种情况会好很多。纵观近年来国内情况,小游戏处境惨淡。前几年投资环境尚可时暂且不谈,最近几年,无论大厂还是小团队,都在做重度网游,吸金能力成为衡量游戏质量的唯一标准。在这样的环境下,能脱颖而出的小游戏少之又少。在重度氪金网游的影响下,H5 一直没得到好的发展。重度游戏和微端能承担买量的成本,相比之下,小游戏的处境着实尴尬。另一方面,小游戏和重度游戏推法不同,目前来看,小游戏还是以渠道为主、以自传播为主。在主流信息流买量并不现实。梦加网络CEO张威:微信小游戏不会是小团队的大机会据张威透露,梦加网络的一款足球对战游戏将于近期登陆微信。这款游戏在Facebook的Intantgame上,已经有接近 800 万用户。即便如此,张威仍然对这款游戏登陆微信端感到焦虑。张威认为,H5(微信小游戏)不会是是小团队的大机会。原因有三:1. PC页游时代,互联网流量相对分散,因此37、游族等厂商依靠买量发展很快。过渡到APP H5 时代,流量集中在几个大APP手上,或者极端说只在腾讯手上。所以小游戏在本质上就是腾讯考察什么产品变现能力更强的单一游戏规则。2. 竞争压力很大。已经有太多大公司在等待这个流量机会,小游戏的竞争不会比手游小。所以基本上小游戏对外的流量口一开,游戏品质立刻会拉高数倍,不再是当前试水性质的小游戏。因此,留给小团队的机会周期很短。3. 强变现的游戏在H5 上不好做,对比PC页游玩家可以开着页面挂机玩,H5 不太好做长在线时间的游戏。因此,以往强变现的游戏模式很难行得通。基于这些原因,梦加网络的入局,更多的是摸索腾讯的规则。第一批开发者已经入场,更多的人还在观望按照常理,以微信庞大的用户基数,一两款小游戏引爆朋友圈与社交网络并非难事,即使小游戏质量不佳,有新的小游戏上线也能够得到用户的关注。奇怪的是,包括游戏媒体在内的大部分人不但没有分享心仪的小游戏,甚至都没有注意到有新的小游戏上线了。“这批小游戏的质量太低了。”某位参与过腾讯极光计划的独立团队CEO对娱乐资本论旗下的剁椒娱投(ID:ylwanjia)说。“后面入局的大厂才是真正的获利者,现在更多的是小打小闹。”独立游戏开发者、小团队、大厂,微信小游戏尚未成熟,却早已成为各方眼中重要的战场。开发者们追逐着小游戏的风口,思索着后续的推广、产品质量、发行与买量。尽管阻碍重重,但大部分人相信兵来将挡,水来土掩。他们有着相同的信条:风口之下,各凭本事。微信小游戏战场上,一场八仙过海的好戏即将开始。

  • “看着你,想着他”的悲剧:你真的引诱到用户的注意力了吗?

    注:当下外界的信息越来越丰富,人们的注意力也越来越被分散。而对品牌来说注意力资源就是用户资源,有用户注意力流动的地方,就是有钱流动的区域。那么你的品牌真的吸引到用户的注意力了吗?你的收藏夹里,有多少曾经打算一阅却最终忽略掉的信息?你的购物车里,有多少过去关注一时却又被淡忘掉的商品?你的日程表里,有多少原本想要实现却没有机会做的事情?注意力,在经济的繁荣里逐渐成为了一种稀缺资源。在中国,平均每天新增市场主体 4 万家,现有市场主体更不计其数。无论是坐拥线下,还是凭借网络;无论是立足传统,还是站在风口,都必然面临着抢夺注意力的残酷竞争。从某些角度来看,注意力资源就是用户资源。有用户注意力流动的地方,就是有钱流动的区域。不少人每天忙碌于拉新、留存、促活这些围绕注意力的工作,为数据指标想尽办法。然而,就像很多人不能站在用户的角度去考虑问题一样,多数人也没有去思考到底注意力是什么。这将是为你开启新一轮业绩增长的钥匙。一、了解注意力的真相1.有限的空间每个人都相信自己有无穷的潜力,只是不够努力。的确,从宏观来看,每个人可以用于学习、用于奋斗的注意力是非常庞大的。现阶段,在科学家的计算中,人一生中可以处理的信息是 1850 亿bit,总量非常可观。然而,这却是按照极限的算法来计算的,没有人可以每时每刻都充分使用自己的注意力,也就是说没有人可以做到科学家所设定的上限。人每秒最多可以处理126 bit的信息。我们能够理解他人说的话,需要每秒处理40 bit的信息,如果极限运作的话,我们可以同时理解 3 个人所说的话。然而实际中,你是否有尝试过在现场同一时间理解三个不同的人所说的话?人的本能会逃避这样的极限运作,而在用户的本能里,也不会把注意力放在每一个接触的产品上。2.逃避的本能(1).空间有限正是因为注意力存在着上限,所以人们不得不去减少注意力的投入。你可以去尝试,去一个人多嘈杂的地方,静静的坐在一边,听着旁边无数人在说话,看自己能够同时理解几个人表述出的全部含义。你会发现,无关乎于你的状态,注意力的天花板就是那么低,上限非常容易被触及。用户的注意力上限也是如此,同一段时间内,其可以关注的产品总量是有限的。无论是手机里没怎么用过的APP,或是收藏夹里很少关注到的商品,都是在注意力的空间中被剔除的失败者,更不要提那些未曾进入手机、进入收藏夹的产品。(2).节省资源注意力是一种宝贵的资源,所以人的本能会将它用在更有价值的地方。你不去关注路人的话语,却在乎朋友的闲聊;你不去注意其他城市的天气,却会了解自己城市的气象。正是因为这些关注点,会对你的生活产生更多的影响,所以更为重要,引发更多注意力投入。就像广告人常说的广告视觉三要素(广告3B原则),只要广告中含有美女、婴儿、野兽,就会获得更多的关注。这是因为这三个要素都关乎人类最基础的需求:生存、繁衍。这是最原始的本能需求,自然让人们将更多的注意力资源投入其中。所以就有了急支糖浆这难以理解,却又能引起人们注意的广告:猎豹追着美女跑,想要急支糖浆。通过野兽和美女刺激人的本能需求,让人们潜意识的将更多注意力资源投入广告。(3).逃避压力注意力的高强度应用会给人带来很大的负荷。很多人在面对繁重的工作时会手忙脚乱,有的人面对几件突如其来的事情会手足无措。这就像是你给电脑同时布置了太多的指令,出现了宕机的情况,而人恰恰也会“宕机”。这种高压力的感受会让人感到不适,所以大多数人在闲暇时间,都会选择一些较为轻松的活动,来让自己的注意力保持在低强度运作的状态。比如看电视、看书、发呆、聊天等熟悉的事情,不需要处理太多的信息。即便错过了一些信息,也没有什么太大的影响,可以让注意力的运作保持在一个低强度的舒适状态。3.节省的方式注意力既有限又宝贵,人们自然不会把注意力用在很多没有意义的地方。在日常的生活、工作中,人们会在很多事上用潜意识代替主观意识去运作,从而减少对注意力的占用。打个比方,就像一个刚刚学会开车的新手,在初次开车时会非常紧张,全神贯注进行开车,无法抽神和身边的人说话;但对于一个开车时间比较长的司机,却可以一边开车,一边抽烟,一边打电话。这就是人为了降低开车时的注意力负荷,而将这件工作交由潜意识来运作。在心理学上,潜意识会对信息进行三种处理,分别是删减、扭曲、归纳。(1).删减现在放松一下,重新审视一下你的视角。刚刚在你的视网膜上所呈现的,不只有手机、电脑的屏幕,还有手机、电脑旁边的事物。无论是你的同事、桌上的多肉植物、乃至墙壁天花板,都与你现在阅读的文字一同出现在你的眼中。但是,你在读文章的同时是否有仔细观察过他们?这些信息与文章同时存在,只不过你的潜意识对信息进行了删减,所以没有过多占用注意力。人的视觉、听觉、嗅觉、味觉、触觉在同一时间内可以接触到大量的信息,但注意力却无法同时关注如此多的信息量。就像我们开篇曾说的,在嘈杂的环境中,你无法同时去理解所有人说的话。在你的注意力真正投射到某一事物上之前,你的潜意识会根据曾经的经验、事物的价值、生理需求等因素进行筛选,将对你更有价值或你主观想要了解的信息提供给你的主观意识,从而投入注意力。用户也是如此,每天将要面对大量的广告,无论软硬,无论使用什么形式展现,无论线上还是实体,用户所能接触到的推广信息远远超过了用户注意力的理解上限。所以用户会通过潜意识先一步进行筛选,删减掉其中大部分无价值信息,将注意力放在其想要关注或是真正有价值的信息上。

  • 常见六大Web安全攻防解析

    一、XSSXSS (Cross-Site Scripting),跨站脚本攻击,因为缩写和 CSS重叠,所以只能叫 XSS。跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。跨站脚本攻击有可能造成以下影响:利用虚假输入表单骗取用户个人信息。利用脚本窃取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求。显示伪造的文章或图片。XSS 的原理是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。XSS 的攻击方式千变万化,但还是可以大致细分为几种类型。1.非持久型 XSS(反射型 XSS )非持久型 XSS 漏洞,一般是通过给别人发送带有恶意脚本代码参数的 URL,当 URL 地址被打开时,特有的恶意代码参数被 HTML 解析、执行。非持久型 XSS 漏洞攻击有以下几点特征:即时性,不经过服务器存储,直接通过 HTTP 的 GET 和 POST 请求就能完成一次攻击,拿到用户隐私数据。攻击者需要诱骗点击,必须要通过用户点击链接才能发起反馈率低,所以较难发现和响应修复盗取用户敏感保密信息为了防止出现非持久型 XSS 漏洞,需要确保这么几件事情:Web 页面渲染的所有内容或者渲染的数据都必须来自于服务端。尽量不要从 URL,document.referrer,document.forms 等这种 DOM API 中获取数据直接渲染。尽量不要使用 eval, new Function(),document.write(),document.writeln(),window.setInterval(),window.setTimeout(),innerHTML,document.createElement() 等可执行字符串的方法。如果做不到以上几点,也必须对涉及 DOM 渲染的方法传入的字符串参数做 escape 转义。前端渲染的时候对任何的字段都需要做 escape 转义编码。2.持久型 XSS(存储型 XSS)持久型 XSS 漏洞,一般存在于 Form 表单提交等交互功能,如文章留言,提交文本信息等,黑客利用的 XSS 漏洞,将内容经正常功能提交进入数据库持久保存,当前端页面获得后端从数据库中读出的注入代码时,恰好将其渲染执行。举个例子,对于评论功能来说,就得防范持久型 XSS 攻击,因为我可以在评论中输入以下内容主要注入页面方式和非持久型 XSS 漏洞类似,只不过持久型的不是来源于 URL,referer,forms 等,而是来源于后端从数据库中读出来的数据 。持久型 XSS 攻击不需要诱骗点击,黑客只需要在提交表单的地方完成注入即可,但是这种 XSS 攻击的成本相对还是很高。攻击成功需要同时满足以下几个条件:POST 请求提交表单后端没做转义直接入库。后端从数据库中取出数据没做转义直接输出给前端。前端拿到后端数据没做转义直接渲染成 DOM。持久型 XSS 有以下几个特点:持久性,植入在数据库中盗取用户敏感私密信息危害面广3.如何防御对于 XSS 攻击来说,通常有两种方式可以用来防御。1) CSPCSP 本质上就是建立白名单,明确告诉浏览器哪些外部资源可以加载和执行。我们只需要配置规则,如何拦截是由浏览器自己实现的。我们可以通过这种方式来尽量减少 XSS 攻击。通常可以通过两种方式来开启 CSP:设置 HTTP Header 中的 Content-Security-Policy设置 meta 标签的方式这里以设置 HTTP Header 来举例:只允许加载本站资源Content-Security-Policy: default-src 'self'只允许加载 HTTPS 协议图片Content-Security-Policy: img-src https://*允许加载任何来源框架Content-Security-Policy: child-src 'none'对于这种方式来说,只要配置了正确的规则,那么即使网站存在漏洞,攻击者也不能执行它的攻击代码,并且 CSP 的兼容性也不错。2) 转义字符用户的输入永远不可信任的,最普遍的做法就是转义输入输出的内容,对于引号、尖括号、斜杠进行转义但是对于显示富文本来说,显然不能通过上面的办法来转义所有字符,因为这样会把需要的格式也过滤掉。对于这种情况,通常采用白名单过滤的办法,当然也可以通过黑名单过滤,但是考虑到需要过滤的标签和标签属性实在太多,更加推荐使用白名单的方式。3) HttpOnly Cookie。这是预防XSS攻击窃取用户cookie最有效的防御手段。Web应用程序在设置cookie时,将其属性设为HttpOnly,就可以避免该网页的cookie被客户端恶意JavaScript窃取,保护用户cookie信息。二、CSRFCSRF(Cross Site Request Forgery),即跨站请求伪造,是一种常见的Web攻击,它利用用户已登录的身份,在用户毫不知情的情况下,以用户的名义完成非法操作。1.CSRF攻击的原理下面先介绍一下CSRF攻击的原理:完成 CSRF 攻击必须要有三个条件:用户已经登录了站点 A,并在本地记录了 cookie在用户没有登出站点 A 的情况下(也就是 cookie 生效的情况下),访问了恶意攻击者提供的引诱危险站点 B (B 站点要求访问站点A)。站点 A 没有做任何 CSRF 防御我们来看一个例子: 当我们登入转账页面后,突然眼前一亮惊现"XXX隐私照片,不看后悔一辈子"的链接,耐不住内心躁动,立马点击了该危险的网站(页面代码如下图所示),但当这页面一加载,便会执行submitForm这个方法来提交转账请求,从而将10块转给黑客。2.如何防御防范 CSRF 攻击可以遵循以下几种规则:Get 请求不对数据进行修改不让第三方网站访问到用户 Cookie阻止第三方网站请求接口请求时附带验证信息,比如验证码或者 Token1) SameSite可以对 Cookie 设置 SameSite 属性。该属性表示 Cookie 不随着跨域请求发送,可以很大程度减少 CSRF 的攻击,但是该属性目前并不是所有浏览器都兼容。2) Referer CheckHTTP Referer是header的一部分,当浏览器向web服务器发送请求时,一般会带上Referer信息告诉服务器是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。可以通过检查请求的来源来防御CSRF攻击。正常请求的referer具有一定规律,如在提交表单的referer必定是在该页面发起的请求。所以通过检查http包头referer的值是不是这个页面,来判断是不是CSRF攻击。但在某些情况下如从https跳转到http,浏览器处于安全考虑,不会发送referer,服务器就无法进行check了。若与该网站同域的其他网站有XSS漏洞,那么攻击者可以在其他网站注入恶意脚本,受害者进入了此类同域的网址,也会遭受攻击。出于以上原因,无法完全依赖Referer Check作为防御CSRF的主要手段。但是可以通过Referer Check来监控CSRF攻击的发生。3)  Anti CSRF Token目前比较完善的解决方案是加入Anti-CSRF-Token。即发送请求时在HTTP 请求中以参数的形式加入一个随机产生的token,并在服务器建立一个拦截器来验证这个token。服务器读取浏览器当前域cookie中这个token值,会进行校验该请求当中的token和cookie当中的token值是否都存在且相等,才认为这是合法的请求。否则认为这次请求是违法的,拒绝该次服务。这种方法相比Referer检查要安全很多,token可以在用户登陆后产生并放于session或cookie中,然后在每次请求时服务器把token从session或cookie中拿出,与本次请求中的token 进行比对。由于token的存在,攻击者无法再构造出一个完整的URL实施CSRF攻击。但在处理多个页面共存问题时,当某个页面消耗掉token后,其他页面的表单保存的还是被消耗掉的那个token,其他页面的表单提交时会出现token错误。4) 验证码应用程序和用户进行交互过程中,特别是账户交易这种核心步骤,强制用户输入验证码,才能完成最终请求。在通常情况下,验证码够很好地遏制CSRF攻击。但增加验证码降低了用户的体验,网站不能给所有的操作都加上验证码。所以只能将验证码作为一种辅助手段,在关键业务点设置验证码。三、点击劫持点击劫持是一种视觉欺骗的攻击手段。攻击者将需要攻击的网站通过 iframe 嵌套的方式嵌入自己的网页中,并将 iframe 设置为透明,在页面中透出一个按钮诱导用户点击。1. 特点隐蔽性较高,骗取用户操作"UI-覆盖攻击"利用iframe或者其它标签的属性2. 点击劫持的原理用户在登陆 A 网站的系统后,被攻击者诱惑打开第三方网站,而第三方网站通过 iframe 引入了 A 网站的页面内容,用户在第三方网站中点击某个按钮(被装饰的按钮),实际上是点击了 A 网站的按钮。 接下来我们举个例子:我在优酷发布了很多视频,想让更多的人关注它,就可以通过点击劫持来实现[object Object][object Object]3. 如何防御1)X-FRAME-OPTIONSX-FRAME-OPTIONS是一个 HTTP 响应头,在现代浏览器有一个很好的支持。这个 HTTP 响应头 就是为了防御用 iframe 嵌套的点击劫持攻击。该响应头有三个值可选,分别是DENY,表示页面不允许通过 iframe 的方式展示SAMEORIGIN,表示页面可以在相同域名下通过 iframe 的方式展示ALLOW-FROM,表示页面可以在指定来源的 iframe 中展示2)JavaScript 防御对于某些远古浏览器来说,并不能支持上面的这种方式,那我们只有通过 JS 的方式来防御点击劫持了。四、URL跳转漏洞定义:借助未验证的URL跳转,将应用程序引导到不安全的第三方区域,从而导致的安全问题。1.URL跳转漏洞原理黑客利用URL跳转漏洞来诱导安全意识低的用户点击,导致用户信息泄露或者资金的流失。其原理是黑客构建恶意链接(链接需要进行伪装,尽可能迷惑),发在QQ群或者是浏览量多的贴吧/论坛中。 安全意识低的用户点击后,经过服务器或者浏览器解析后,跳到恶意的网站中。恶意链接需要进行伪装,经常的做法是熟悉的链接后面加上一个恶意的网址,这样才迷惑用户。Header头跳转Javascript跳转META标签跳转这里我们举个Header头跳转实现方式:<?php $url=$_GET['jumpto']; header("Location: $url"); ?>http://www.***.org/login.php?jumpto=http://www.***.com这里用户会认为www.****.org都是可信的,但是点击上述链接将导致用户最终访问www.****.com这个恶意网址。3.如何防御1)referer的限制如果确定传递URL参数进入的来源,我们可以通过该方式实现安全限制,保证该URL的有效性,避免恶意用户自己生成跳转链接2)加入有效性验证Token我们保证所有生成的链接都是来自于我们可信域的,通过在生成的链接里加入用户不可控的Token对生成的链接进行校验,可以避免用户生成自己的恶意链接从而被利用,但是如果功能本身要求比较开放,可能导致有一定的限制。五、SQL注入SQL注入是一种常见的Web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击。1.SQL注入的原理我们先举一个钥匙的例子来说明其原理:这是我们经常见到的登录页面,但如果有一个恶意攻击者输入的用户名是 admin' --,密码随意输入,就可以直接登入系统了。why! ----这就是SQL注入我们之前预想的SQL 语句是:SELECT * FROM user WHERE username='admin' AND psw='password'但是恶意攻击者用奇怪用户名将你的 SQL 语句变成了如下形式:SELECT * FROM user WHERE username='admin' --' AND psw='xxxx'在 SQL 中,' --是闭合和注释的意思,-- 是注释后面的内容的意思,所以查询语句就变成了:SELECT * FROM user WHERE username='admin' 复制代码所谓的密码,本质上就是SQL注入的一种利用方式。一次SQL注入的过程包括以下几个过程:获取用户请求参数拼接到代码当中SQL语句按照我们构造参数的语义执行成功SQL注入的必备条件: 1.可以控制输入的数据 2.服务器要执行的代码拼接了控制的数据。我们会发现SQL注入流程中与正常请求服务器类似,只是黑客控制了数据,构造了SQL查询,而正常的请求不会SQL查询这一步,SQL注入的本质:数据和代码未分离,即数据当做了代码来执行。2.危害获取数据库信息管理员后台用户名和密码获取其他数据库敏感信息:用户名、密码、手机号码、身份证、银行卡信息……整个数据库:脱裤获取服务器权限植入Webshell,获取服务器后门读取服务器敏感文件3.如何防御严格限制Web应用的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而限度的减少注入攻击对数据库的危害后端代码检查输入的数据是否符合预期,严格限制变量的类型,例如使用正则表达式进行一些匹配处理。对进入数据库的特殊字符(',",\,<,>,&,*,; 等)进行转义处理,或编码转换。基本上所有的后端语言都有对字符串进行转义处理的方法,比如 lodash 的 lodash._escapehtmlchar 库。所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中,即不要直接拼接 SQL 语句。例如 Node.js 中的 mysqljs 库的 query 方法中的 ? 占位参数。六、OS命令注入攻击OS命令注入和SQL注入差不多,只不过SQL注入是针对数据库的,而OS命令注入是针对操作系统的。OS命令注入攻击指通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell函数的地方就有存在被攻击的风险。倘若调用Shell时存在疏漏,就可以执行插入的非法命令。命令注入攻击可以向Shell发送命令,让Windows或Linux操作系统的命令行启动程序。也就是说,通过命令注入攻击可执行操作系统上安装着的各种程序。1.原理黑客构造命令提交给web应用程序,web应用程序提取黑客构造的命令,拼接到被执行的命令中,因黑客注入的命令打破了原有命令结构,导致web应用执行了额外的命令,web应用程序将执行的结果输出到响应页面中。2.如何防御后端对前端提交内容进行规则限制(比如正则表达式)。在调用系统命令前对所有传入参数进行命令行参数转义过滤。

  • 如何一步一步走向架构师

            成为优秀的架构师是大部分初中级工程师的阶段性目标。优秀的架构师往往具备七种核心能力:编程能力、调试能力、编译部署能力、性能优化能力、业务架构能力、在线运维能力、项目管理能力和规划能力。        这几种能力之间的关系大概如下图。编程能力、调试能力和编译部署能力属于最基础的能力。不能精通掌握这三种能力,很难在性能优化能力和业务架构能力方面有所成就。具备了一定的性能优化能力和业务架构能力之后,才能在线运维能力和项目管理能力方面表现优越。团队管理能力是最高能力,它对项目管理能力的依赖度更大。基本知识1.学会分析源码 程序员每天都和代码打交道。经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多数,会读代码又真正读懂一些大项目的源码的,少之又少。这种怪状,真要追究起来,怪不得程序员这个群体本身 --它是两个原因造成的:我们所有的教育和培训都在强调怎么写代码,并没有教大家如何读代码大多数工作场景都是一个萝卜一个坑,我们只需要了解一个系统的局部便能开展工作,读不相干的代码,似乎没用读源码三问:“为什么要有这样的架构”,“他是什么样子的”,“他是怎么工作的”。 那么阿里程序员是如何去读代码的呢?2.分布式架构特点及设计理念首先需要说明的是,分布式系统是一个复杂且宽泛的研究领域,学习一两门在线课程,看一两本书可能都是不能完全覆盖其所有内容的。介于这篇文章是引导初学者入门,所以我个人觉得为初学者介绍一下当前分布式系统领域的全貌,也许比直接推荐论文和课程更有帮助。当初学者对这个领域建立起一个大的 Picture之后,可以根据自己的兴趣,有选择性的深入不同领域进行进一步的学习。3.为什么微服务会这么火?要学习微服务,首先,我们要了解为什么使用微服务。代码难以理解?构建和部署耗时长,难以定位问题,开发效率低?单体只能按整体横向扩展,无法分模块垂直扩展?一个bug有可能引起整个应用的崩溃?受技术栈限制,团队成员使用同一框架和语言?那么如何解决单体的不足呢,通过迁移到微服务架构来解决,我们看一下什么是微服务。微服务架构:将单体应用拆分为多个高内聚低耦合的小型服务,每个小服务运行在独立进程,由不同的团队开发和维护,服务间采用轻量级通信机制,独立自动部署,可以采用不同的语言及存储。单体架构整个团队维护开发一个大工程及一个单库,到了微服务架构,用户请求经过API Gateway被路由到下游服务,服务之间以轻量级通信协议进行通信,服务通过注册中心发现彼此,每个服务都有专门的开发维护团队,每个服务对应独立的数据库,服务独立开发,独立部署和上线。接下来我们总结下微服务的优点:易于开发与维护微服务相对小,易于理解启动时间短,开发效率高独立部署一个微服务的修改不需要协调其它服务伸缩性强每个服务都可以在横向和纵向上扩展每个服务都可按硬件资源的需求进行独立扩容与组织结构相匹配微服务架构可以更好将架构和组织相匹配每个团队独立负责某些服务,获得更高的生产力技术异构性使用最适合该服务的技术降低尝试新技术的成本下面就送上学习架构图吧4.程序员到底要不要学习JVM总有人问这个东西好像用不上,于是要不要学这样的问题。然后又总有人担心一直搬砖成天做些重复没提升的东西。如果你这辈子只甘心做一个平庸的Java码农,那么你完全没有必要去学习JVM相关的知识,学习JVM对于一个Java程序员的好处大概可以概括为下几点:1.你能够明白为什么Java最早期被称为解释型语言,而后来为什么又被大家叫做解释与编译并存的语言(了解JVM中解释器以及即时编译器就可以回答这个问题);2.你能够理解动态编译与静态编译的区别,以及动态编译相对于静态编译到底有什么好处(JVM JIT);3.你能够利用一些工具,jmap, jvisualvm, jstat, jconsole等工具可以辅助你观察Java应用在运行时堆的布局情况,由此你可以通过调整JVM相关参数提高Java应用的性能;4.可以清楚知道Java程序是如何执行的;5.可以明白为什么Java等高级语言具有可移植性强的特性。其实这个问题相当于“为什么C/C++程序员需要学体系结构与编译原理?”话不多说,附上学习体系图5.被我们忽略掉的工程化专题IT产业行业细分化已经不是一天两天的事了。集成技术这件事并不可耻可笑,反而是另一种可贵的能力。并不是像一些人形容的那样,好像批发几个CPU,拿到华强北就能把自己的电脑改装成超级计算机了。那么,为什么我们常常会忽略掉工程化这件事的价值呢?主要的原因,或许是因为工程化这件事本身就离我们太远。一个产业工程化的普遍性越高,说明这个产业发展的越成熟:产业链细分、分工细化、全球化的研发和生产这些高效的工作方式开始出现。而产业成熟也往往代表着寡头化情况显著。在IT产业中,寡头化出现代表着创业公司减少--没人再去用声势浩大的发布会讲故事、没人再去宣传自己拿了多少融资。这一代中国人自小的教育不比欧美的STEAM,而是重学术、轻手艺。我们往往会为工科和产能过剩画上等号。强大的资本和技术门槛为这些产业蒙上了一层神秘的面纱,让普通人很难真正了解到其中技术和工艺的复杂程度,也就更难明白其中的价值。可正是因为中国的工程化能力,才让我们有机会走到AI时代的第一梯队,而不仅仅是靠学术研究能力。另外一个原因,或许在于我们天生“叛逆心”。超级计算机、手机芯片等等技术门槛较高的产业,其背后往往是大企业和国资科研机构。当评判的对象是他们时,我们似乎更愿意相信狗血的商业故事和阴谋论:比如科研经费都被教授们吃吃喝喝啦;搞超级计算机就是放卫星其实美日根本不care啦;XX企业的技术都是从创业公司买来的除了会赚用户的钱啥技术都没有……产生这种“叛逆心”的原因太深刻,我们能做到的,只有在这种“惯性思维”出现时先按住自己奔向键盘的手,转表达欲为好奇心,完成自己了解的义务,再去行使自己批判的权利。附上思维脑图6.没有高并发经验,想进大公司该怎么办?假如没有靠谱的公司,接触不到高并发的业务场景怎么办?你永远解决的是小问题,工作10年技术也未必提升多少。很多程序员也经常找我说,没有经验就没有靠谱的公司收,没有靠谱的公司也就没有经验,我看了无数的书,自己做了无数的实验拼命想找个靠谱公司去深入,但是感觉好难,简直是个死循环读者群的朋友大家都比较关注高并发,原因很简单,想去BAT这样的大公司,你必须要有高并发的经验。今天普及下高并发的知识,希望大家对高并发有一个正确的认识。7.学习千遍,不如项目实战成功一次我们在学习过程中最容易犯的一个错误就是:看的多,动手的少。特别是对一些项目的整体开发,我们接触的机会就更少了。一次完整的开发,是最好的学习。它能让你对整个开发流程有完整的认识,对知识也会有极大的巩固。更重要的是,你将学会将理论知识用到实际开发中的方法。所以无论项目大小,一定要动手去进行开发学习。项目实战相信很多程序员都多少会有的,可是我们这个还要学习什么呢?那就要看你想不想成为一个架构师了,为什么98%的程序员工作10年,一辈子还只是一个开发者。程序员们都要想一想这个问题,我是不是需要提升了。我认为,学习项目实战最重要的还是学习项目管理,作为程序员,都应该学点项目管理。凡事皆为“项目”项目的两类属性(复杂的逻辑,庞大的信息量)人脑擅长的是思考,而不是记忆成为一个“独当一面”的人独当一面是一个很性感的词。是否拥有它,对应的职场价值,有着天壤之别的。所有老板都喜欢“独当一面”的员工,因为这是最省心力、最好算账的模式:给你一块资源,给你一个 title,给你一个目标,然后你给我打出一片天地来。当你能独立对一摊子事情负责,并把它们一一搞定,你会拥有大幅度的职场溢价--相应的,其收入回报,也远非“技术螺丝”可比了。如果你很进取,你会逐渐地:主导一个小组,一个部门,一个家庭,甚至还是城市……而这所有的一切起点,正是独立完整地做好一个项目:你没有谁可以依靠,你要对其中大大小小的事务负责,你要对最后的结果。换句话说,“项目管理”是“独当一面”的元能力。在这个过程中,你的意识越发清晰,你的方法论越发成熟,你的信心更加沛,项目越做越大。直到某天,你真的有了掌控一方的封疆大吏。这就是我们学习“项目实战”的终极意义。或许作为程序员的你想提升自己,却找不到突破口,公司没人带。又或许你已经工作6年了,却还是很迷茫,很多知识都还是不懂,也没有达到自己期望的一个职位,薪资。到这里,你可能认为文章已经完了,学完这些就可以去BAT大公司做一个架构师,年薪50W+吗?不,你错了,这些都知识最基本的知识,想要成为一个架构师必须是一个累积的过程,也是这么多程序员终其一生也只是一个开发,到年龄就会被公司辞退。这些也是架构师必须要了解到的知识。编程能力对工程师而言,编程是最基础的能力,必备技能。其本质是一个翻译能力,将业务需求翻译成机器能懂的语言。提升编程能力的书籍有很多。精通面向对象和设计模式是高效编程的基础。初级工程师应该多写代码、多看代码。找高手做Code Review,也是提升编程水平的捷径。编译部署能力编译并在线上部署运行程序是系统上线的最后一个环节。随着SOA架构的普及以及业务复杂度的增加,大部分系统只是一个完整业务的一个环节,因此,本地编译和运行并不能完全模拟系统在线运行。为了快速验证所编写程序的正确性,编译并在线上部署就成了必要环节。所以编译部署能力是一个必备技能。让盘根错节的众多子系统运行起来是个不小的挑战。得益于SOA架构的普及以及大量编译、部署工具的发展,编译部署的门槛已经大大降低。基于应用层进行开发的公司,已经很少有“编译工程师”的角色了。但是对于初级工程师而言,编译部署仍然不是一个轻松的事情。性能优化能力衡量一个系统成功的一个重要指标是使用量。随着使用量的增加和业务复杂度的增加,大部分系统最终都会碰到性能问题。性能优化能力是一个综合能力。因为:影响系统性能的因素众多,包括:数据结构、操作系统、虚拟机、CPU、存储、网络等。为了对系统性能进行调优,架构师需要掌握所有相关的技术。精通性能优化意味着深刻理解可用性、可靠性、一致性、可维护性、可扩展性等的本质。性能优化与业务强耦合,最终所采取的手段是往往折衷的结果。所以,性能优化要深谙妥协的艺术。可以说,性能优化能力是工程师们成长过程中各种技能开始融会贯通的一个标志。这方面可以参考之前的博客文章“常见性能优化策略的总结”。市场上还有很多与性能优化相关的书籍,大家可以参考。多多阅读开源框架中关于性能优化方面的文档和代码也不失为好的提升手段。动手解决线上性能问题也是提升性能优化能力的关键。如果有机会,跟着高手学习,分析性能优化解决方案案例(我们技术博客之前也发表了很多这方面的文章),也是快速提升性能优化能力的手段。调试能力程序代码是系统的静态形式,调试的目的是通过查看程序的运行时状态来验证和优化系统。本质上讲,工程师们通过不断调试可以持续强化其通过静态代码去预测运行状态的能力。所以调试能力也是工程师编程能力提升的关键手段。很早之前有个传说:“调试能力有多强,编程能力就有多强。”不过现在很多编辑器的功能很强大,调试能力的门槛已经大大降低。调试能力是项目能否按时、高质量提交的关键。即使一个稍具复杂度的项目,大部分工程师也无法一次性准确无误的完成。大项目都是通过不断地调试进行优化和纠错的。所以调试能力是不可或缺的能力。多写程序,解决Bug,多请教高手是提升调试能力的重要手段。在线运维能力如果说性能优化能力体现的是架构师的静态思考能力,在线运维能力考验的就是动态反应能力。残酷的现实是,无论程序多么完美,Bug永远存在。与此同时,职位越高、责任越大,很多架构师需要负责非常重要的在线系统。对于线上故障,如果不能提前预防以及快速解决,损失可能不堪设想,所以在线运维能力是优秀架构师的必备技能。为了对线上故障进行快速处理,标准化的监控、上报、升级,以及基本应对机制当然很重要。通过所观察到的现象,快速定位、缓解以及解决相关症状也相当关键。这要求架构师对故障系统的业务、技术具备通盘解读能力。解决线上故障的架构师就好比一个在参加比赛F1的车手。赛车手必须要了解自身、赛车、对手、同伴、天气、场地等所有因素,快速决策,不断调整。架构师必须要了解所有技术细节、业务细节、处理规范、同伴等众多因素,快速决断,迅速调整。在线运维本质上是一个强化学习的过程。很多能力都可以通过看书、查资料来完成,但在线运维能力往往需要大量的实践来提升。业务架构能力工程师抱怨产品经理的故事屡见不鲜,抱怨最多的主要原因来自于需求的频繁变更。需求变更主要有两个来源:第一个原因是市场改变或战略调整,第二个原因是伪需求。对于第一个原因,无论是工程师还是产品经理,都只能无奈的接受。优秀的架构师应该具备减少第二种原因所导致的需求变更的概率。伪需求的产生有两个原因:第一个原因是需求传递变形。从信息论的角度来讲,任何沟通都是一个编码和解码的过程。典型的需求从需求方到产品经理,最终到开发工程师,最少需要经历三次编码和解码过程。而信息的每一次传递都存在一些损失并带来一些噪音,这导致有些时候开发出来的产品完全对不上需求。此外,需求方和产品经理在需求可行性、系统可靠性,开发成本控制方面的把控比较弱,也会导致需求变形。第二个原因就是需求方完全没有想好自己的需求。优秀的架构师应该具备辨别真伪需求的能力。应该花时间去了解客户的真实业务场景,具备较强的业务抽象能力,洞悉客户的真实需求。系统的真正实施方是工程师,在明确客户真实需求后,高明的架构师应该具备准确判断项目对可行性、可靠性、可用性等方面的要求,并能具备成本意识。最后,由于需求与在线系统的紧耦合关系,掌握在线系统的各种细节也是成功的业务架构的关键。随着级别的提升,工程师所面对的需求会越来越抽象。承接抽象需求,提供抽象架构是架构师走向卓越的必经之途。市场上有一些关于如何成为架构师的书,大家可以参考。但是架构能力的提升,实践可能是更重要的方式。业务架构师应该关注客户的痛点而不是PRD文档,应该深入关注真实业务。掌握现存系统的大量技术和业务细节也是业务架构师的必备知识。项目管理能力作为工业时代的产物,分工合作融入在互联网项目基因里面。架构师也需要负责几个重大项目才能给自己正名。以架构师角色去管理项目,业务架构能力当然是必备技能。此外,人员管理和成本控制意识也非常重要。项目管理还意味着要有一个大心脏。重大项目涉及技术攻关、人员变动、需求更改等众多可变因素。面临各种变化,还要在确保目标顺利达成,需要较强的抗压能力。人员管理需要注意的方面包括:知人善用,优化关系,简化沟通,坚持真理。知人善用意味着架构师需要了解每个参与者的硬技能和软素质。同时,关注团队成员在项目过程中的表现,按能分配。优化关系意味着管理团队的情绪,毕竟项目的核心是团队,有士气的团队才能高效达成目标。简化沟通意味着快速决策,该妥协的时候妥协,权责分明。坚持真理意味着顶住压力,在原则性问题上绝不退步。成本控制意味着对项目进行精细化管理,需要遵循如下几个原则:以终为始、确定里程碑。为了达成目标,所有的计划必须以终为始来制定。将大项目分解成几个小阶段,控制每个阶段的里程碑可以大大降低项目失败的风险。把控关键路径和关键项目。按照关键路径管理理论(CPM)的要求,架构师需要确定每个子项目的关键路径,确定其最早和最晚启动时间。同时,架构师需要关注那些可能会导致项目整体延期的关键节点,并集中力量攻破。掌控团队成员的张弛度。大项目持续时间会比较长,也包含不同工种。项目实施是一个不断变化的动态过程,在这个过程中不是整个周期都很紧张,不是所有的工种都一样忙。优秀的架构师必须要具备精细阅读整体项目以及快速反应和实时调整的能力。这不仅仅可以大大降低项目成本,还可以提高产出质量和团队满意度。总体来说,“前紧后松”是项目管理的一个重要原则。项目管理方面的书籍很多。但是,提高业务架构能力同样重要。积极参与大项目并观察别人管理项目的方式也是非常重要的提升手段。团队管理能力不想做CTO的工程师不是一个好的架构师。走向技术管理应该是工程师的一个主流职业规划。团队管理的一个核心能力就是规划能力,这包括项目规划和人员规划。良好的规划需要遵循如下原则:规划是利益的博弈。良好的规划上面对得起老板,中间对得起自己,下面对得起团队。在三者利益者寻找平衡点,实现多方共赢考验着管理者的智慧和精细拿捏的能力。任何规划都比没有规划好。没有规划的团队就是没头的苍蝇,不符合所有人的利益。规划不是本本主义。市场在变,团队在变,规划也不应该一成不变。客户至上的是项目规划的出发点。就人员规划而言,规划需要考量团队成员的能力、绩效、成长等多方面的因素。

  • 从4个方面优化你的Vue项目

    运行时优化1、使用v-if代替v-show两者的区别是:v-if不渲染DOM,v-show会预渲染DOM除以下情况使用v-show,其他情况尽量使用v-if有预渲染需求需要频繁切换显示状态2、v-for必须加上key,并避免同时使用v-if一般我们在两种常见的情况下会倾向于这样做:为了过滤一个列表中的项目 比如 v-for="user in users" v-if="user.isActive"。在这种情形下,请将 users替换为一个计算属性 (比如activeUsers),让其返回过滤后的列表为了避免渲染本应该被隐藏的列表 比如 v-for="user in users" v-if="shouldShowUsers"。这种情形下,请将 v-if 移动至容器元素上 (比如 ul, ol)3、事件及时销毁Vue组件销毁时,会自动清理它与其它实例的连接,解绑它的全部指令及事件监听器,但是仅限于组件本身的事件。也就是说,在js内使用addEventListener等方式是不会自动销毁的,我们需要在组件销毁时手动移除这些事件的监听,以免造成内存泄露,如:created() {   addEventListener('touchmove', this.touchmove, false) }, beforeDestroy() {   removeEventListener('touchmove', this.touchmove, false) } 复制代码4、首屏优化图片裁剪、使用webp图片需要裁剪,一般使用二倍图即可尽量使用webp图片如果使用了vue-lazyload插件,可以使用以下方法一键替换webp(替换使用v-lazy指令的图片)Vue.use(VueLazyload, {   error: require('./assets/img/defaultpic_small.png'),   filter: {     webp (listener: any, options: any) {       if (!options.supportWebp) return       // listener.src += '.webp'     }   } });

  • 如何改进你的网站导航?学习这7个必要的实践!

    一、什么是网站导航?网站导航(或称,内部链接体系结构)是连接你的网页的链接。网站导航的主要目的是帮助用户在你的网站上轻松找到东西。搜索引擎使用你的网站导航来发现和索引新的页面。链接帮助搜索引擎理解目标页面的内容和上下文,以及页面之间的关系。“用户至上”。这是网站导航的基本目标,你必须永远记住。首先满足用户。使导航容易。然后,优化搜索引擎而不损害用户体验。这篇文章的其余部分将会对网站导航的最佳实践保持更广泛的关注,列出各种可能导致网站访问者和搜索引擎问题的内部链接情况。这个话题对于在大型网站上工作的人来说尤其重要。二、网站导航和内容层次结构当在一本书中搜索特定的页面时,你可以简单地阅读目录或索引。当你在杂货店里逛的时候,货架上的货架上一般都贴着的分类标签。两者都提供了一种有效的方式来浏览大量内容。内容层次结构的存在是为了简化查找内容的过程。当大量的内容存在时,它可以被分解成几个大类。在这些宽泛的类别中,你可以创建更细化的分类,这构建了不同层次的层次,用户可以轻松导航。利用内容层次结构以一种对用户和搜索引擎有意义的方式组织网站页面。1. 内容层次结构和网站导航的重要性内容的分类和次类划分帮助页面在一般的标题和特定的长尾术语中提高排名。2. 由内容层次结构引起的问题内容分类和构建层次结构创建内容竖井,就像紧密相关主题的集群。百度将以不同的速度抓取不同的页面,从不同的站点索引质量链接。一些内容竖井比其他的更受欢迎。这些页面可能会比其他页面获得更多的外部链接和流量,因此,在有机搜索中获得更重要的位置。当内容太过竖向并且不能获得链接和流量时,它可能也不能执行 —— 即使你的其他内容竖井执行得非常好。内容层次结构可以隔离可能位于站点内部太深的某些流行页面集群。这就是水平链接发挥作用的地方。尽管链接相关性在排名上有所帮助,但内容竖向之间缺乏交叉链接可能会对你的整体排名不利。总是有方法可以创建水平链接类别的关系。所有页面都属于同一网站的事实已经表明,这些页面并非完全无关。操作项:内容类别之间的链接对内容进行分类,以形成对用户有意义的类别层次结构,并正确地链接这些页面,在层次结构中上下移动。这些是大多数链接。在不同类别的页面之间创建交叉链接,但仍然有相似之处。三、产品与内容营销页面之间的链接销售超过一种产品或服务的公司将会对页面进行分类,创建内容竖井,并相互链接。然而,许多 SEO 团队和内容团队也创建了一些具有吸引力和可分享性的资产。通常情况下,这是以博客的形式出现的,文章中包含了指向特定产品和服务的链接。博客文章可以很有用,因为它们可以引导更多的流量到产品页面。然而,许多网站无法将产品页面链接到博客页面。使用这种水平链接可以帮助用户了解你的产品或服务,并提高你的 SEO 性能。操作项:产品和内容页之间的链接四、网站导航使用 JavaScript 效果有时,链接和 web 页面是用 JavaScript 编写的。这是一个问题,因为搜索引擎很难找到在 JavaScript 中创建的内部链接。尽管近年来百度在阅读 JavaScript 方面有所改进,但 SEO 专家得出的结论是,结果是不一致的。其他搜索引擎在阅读 JavaScript 时仍然没有能力。这意味着当搜索引擎抓取你的内容时,你的内部链接可能会完全丢失。对于使用 JavaScript 是否实用,SEO 专家存在分歧。一方面,一些  SEO 专家完全避免使用 JavaScript。另一方面,web 设计人员和可用性专家声称 JavaScript 对用户体验至关重要。我相信有一个这之间有一个平衡的地方,JavaScript 可以被使用,同时避免任何 SEO 问题。1. 显示和隐藏页面内容的链接JavaScript 可以用来在页面上显示和隐藏某些内容,而不需要更改页面。当发生这种情况时,所有的内容都预先加载到页面中。在这种情况下,搜索引擎仍然能够抓取所有的内容,即使其中一些内容是隐藏的。只有当隐藏的内容量很小的时候才会成功。当整个页面更改时,它可能会出现问题,但是 URL 保持不变。问题出现的原因是,当你在一个 URL 中隐藏太多内容时,它会稀释页面内容的焦点。一个完全不同的主题应该有自己的页面。操作项:显示和隐藏内容的链接在 2016 年的 seoClarity 做的演示中,更深入地介绍了如何在网站上具体实现这一点。它特别提到了 AngularJS,一个流行的 JavaScript 框架,以及它的 SEO 问题和解决方案。然而,这里的经验也适用于几乎任何 JavaScript 框架。五、在 URL 中使用跟踪参数可用性专家和转换优化专家以不同的方式跟踪用户行为。有时,这涉及在站点内的 URL 中使用跟踪参数。这将导致重复的内容问题,因为链接到具有完全相同内容的不同 URL。这可以通过多种方式解决。操作项:跟踪 URL 中的参数六、第一个链接优先一个包含两个或多个链接指向同一个 URL 的 web 页面被认为会导致搜索引擎爬行的问题,只有第一个链接被考虑,而重复链接被忽略。1. 从第一个链接优先级产生的 SEO 问题在主要内容之前,Top-bar 导航和左侧侧边栏常常首先出现在源代码中。此外,这些菜单中的导航元素通常都有短的锚文本。他们倾向于少关注关键词,多关注设计。页面的主要内容之间的链接倾向于更多地关注关键词,包含支持关键词的周围内容。它们的长度也更灵活,有更长的、更具体的锚文本。这段较长的文本增加了页面可能排列的关键词的种类。然而,由于第一个链接优先级问题,这些链接常常被搜索引擎忽略。操作项:第一个链接优先级问题考虑代码的顺序。在侧边栏和顶部栏导航之前对主要内容进行优先排序。CSS 可以用来控制浮动方向,从左到右或右到左,以使侧边栏的导航负载在主内容之后。顶部的条形导航可以用绝对定位来控制。七、处理大型网站导航对于大型网站(那些拥有成千上万页的网站)来说,网站导航是一个巨大的挑战。分类菜单中的自然站点导航通常链接到站点的所有页面,而 XML 站点地图可以帮助索引所有页面。但是,内容竖井之间缺乏交叉链接会创建页面之间的距离。在大型站点上,很难识别产品页面和相应产品营销页面之间的所有可能链接。一些大型网站可能没有从其他页面获得他们需要的链接。此外,其他问题如第一个链接优先级和 JavaScript 问题可能难以在数百万页中发现。以下是应对这些挑战的 3 个方法:1. 委托给不同的部门大公司拥有比例大的网站,拥有多个不同部门的员工。许多部门可能对应负责网站的不同部分。确保每个参与维护不同网站的人都遵守相同的 SEO 原则和实践。然后,在整个网站的优化导航中分配劳动力。2. 使用工具或创建工具自动化总是使手动过程更具可伸缩性。除非你有自己的专用工具,否则可能没有一个工具可以识别和修复上面提到的所有问题。像 Xenu,Screaming Frog,DeepCrawl,或者 Botify 这样的爬行工具可以分析你现有的链接,确定问题,并提供网站架构的描述。如果你希望可视化站点体系结构,像 DynoMapper 和 PowerMapper 这样的工具可以帮助实现这一点。链接研究工具,如 Moz 的 Open Site Explorer、Ahrefs、Majestic、Sistrix、LRT 和 CognitiveSEO 可以分析哪些页面从外部获得最多的链接,然后从这些页面中添加交叉链接,从而获得更重要的站点页面。我们使用的专有工具自动处理页面的爬行过程,并确定哪些页面链接到另一个页面。3. 使用分阶段的方法大型网站并不总是有大的团队来分配优化页面的工作。如果缺少资源,你可以创建自己的工具来简化这个过程。如果这些工具没有提供你所需的帮助,那么可以考虑采用分阶段的方法。这需要在一段时间内进行优化调度。这是一个循序渐进的过程,可能需要更长的时间,但是依靠像有机搜索流量这样的指标将会帮助你决定首先优化什么。八、7 个关键点总结用户第一:你的网站导航应该首先满足用户。然后,优化你的导航 SEO 性能。永远不要损害用户体验。内容竖井之间的交叉连接:页面之间的内容相关性对排名很重要,这在一个很好的分类、层次结构的网站架构中很自然地出现。但是,当缺少内容竖井之间的交叉链接时,这可能会有一些限制,因为有些页面太深或太远,无法从其他来源获得大量的链接权重。博客对产品,产品到博客:创造高质量的内容对你的目标读者是有用的和相关的。如果这些博客文章有助于产品购买决策,那么链接到特定产品页面的博客文章。跟踪参数:避免使用!在链接上使用 onClick 事件处理程序进行跟踪。有一个自引用的规范标记总是安全的。JavaScript 链接:避免使用 JavaScript 编写内容和链接。如果没有办法,考虑其他办法让它发挥作用。第一个链接优先级:理想情况下,主要内容优先。接下来,是侧边栏,然后是顶部栏。最后,处理页脚。需要进一步的测试来确定这是否仍然是一个有效的关注点,但是坚持这种方法并没有坏处。大型网站:成千上万的页面很难做到以上所有。委派给一个团队,使用工具自动完成任务,或者一次处理一个问题。避免在 URL 中使用跟踪参数。相反,通过在链接上使用 JavaScript 跟踪 onclick 事件处理程序来跟踪它们,这些链接将传递相同的跟踪参数。如果使用百度统计,这可以通过事件跟踪完成。总是使用自引用的规范标记是一种很好的做法,可以避免许多重复的内容问题。这个 href 值指向一个新的 URL,该 URL 只预加载与这个新 URL 相关的内容。onclick 函数将阻止新的 URL 加载,但是将允许目标 URL 的内容加载。使用 pushState 函数更新 URL,即使该页面没有加载。只与 URL 直接相关的预加载内容。对于所有的锚标记,应该有一个 href 值和一个 onclick 设置。对于大量内容,包括单页视差滚动网站,并非所有内容都应该预先加载。使用 CSS 来控制光标和从箭头到指针的变化。对于少量内容,删除锚标记并使用 JavaScript onclick 事件处理程序替换。产品页面也应该链接到相关的内容营销页面。这可能包括博客文章、FAQ 和产品手册。

  • 关于企业建站

    企业网站是企业在Internet上展示形象的门户,是企业开展电子交易的基地,是企业网上的"家",设计制作一个优秀的网站是建网站的企业成功迈向互联网的重要步骤。网络可以带给企业不分地域、不分国别的大量客户,带给您无限的商机。为了获得本行业的领先地位,面对不断涌现的种种机会,企业建立一个具有自己特色的,精美完善的,集多种功能于一体的企业网站,尤其重要。那么,对于一个企业来说,为什么要建网站?下面是巴中网站建设总结的企业建站的优势。一、发展业务做为一个企业,Internet应做为您扩展业务的一种工具,而不仅仅是一个做广告的媒体。一个网站可以看作是您企业的一位不知疲倦的业务代表,它能随时随地的帮您接答每一个"业务电话",且从不请假。一个网站又是一个24小时营业的商店,让您的顾客在任何时候都能买到东西,这样,您的顾客会感激您为他们提供了方便。二、争取新客户首先,想一想自己所从事的行业。然后问自己:在一亿人中,有一个人正需要找到您所能提供的服务,可是,他能正好找到贵公司的机率有多大呢?如果您没有自己的网站的话,这种机率可能近似于零。三、服务现有的客户一个网站实际上可以提高您对客户服务的效率。它可以回答大多数客户经常向您提出的问题,您可以让您的客户上您的网站去了解他们所关心的问题,这样您就可以滕出时间来去做更需要您做的事情,比如企业管理,同时缩短客户的对公司的考察期,不就是给您的公司更多的利润吗!四、增加利润一个网上商店自然会给您带来利润,您的成本销售比将大大地降低。也就是销售成本的降低。降低开销和成本自然意味着利润的增多。即使您不是一个生产销售型企业,也可以通过网上的广告效应为您带来业务,从而增加利润。五、降低成本用网站来降低成本是一种有效的竞争手段。预算一下每月登一个单页的广告需花费5000元,另外每月做一次半版的报纸广告,花费大约2400元,这样每月的广告支出将是7400元。有了自己的网站后,您就可以减少单页传单和报纸广告的版面,并使更多的人看到您企业的广告,同时,精确的了解反馈的情况,最快地做出反映。这样,成本减少了,而更多未来的新的商机增多了。如果企业有一个精美、完善的网站,可以使客户增加信任感,同时可以在段时间内了解企业情况、产品信息、资质认证等信息,减少业务员的拜访次数,减少企业拓展业务的成本。六、延长营业时间如果有人帮您把您的营业时间延长66%,您自然会想到您的业务会增加,但也需要付相应的水电费和员工费等。但是,有了自己的网站,您的业务将24小时营业,而不增加任何成本。您可以同时服务成百上千个客户而不需要增加店员。七、发展国际化业务您的企业形象及从事的业务,将被世界上每一个拥有电脑和对您的业务感兴趣的人所看到。即便是小公司,也可轻易与大公司竞争,在Internet上人人平等。八、开拓本地市场通过网络搜索引擎可以找到更多未来的新客户,给他们发E-mail,寄介绍性资料,一个新客户也可以通过搜索相关类别、关键词、甚至电话号码来找到您。九、增强市场推广在当今互联网时代,一个企业没有自己的网站就像一个人没有住址,一个商店没有门面。网络时代的迅速到来..加速了企业销售、交流的网络化。所以一个企业拥有一个自己的网站等于是在网络上的一个据点。客户可以通过网络了解您的企业、您的产品、关系到您公司的赢利。十、网站是您的忠实接待员建设一个精美的网站是公司整体实力的体现,同时可以给顾客留下美好的印象,增强公司软实力的提升。企业网站建设已经是大势所趋了,那么怎么能在茫茫商海中抓住属于我们的商机------招揽顾客,提升企业形象!

  • 为什么你爱用的 App,都用卡片式设计?

    一、什么是卡片卡片是含有图片和文字在内的小矩形模块,它是用户了解更多细节信息的「入口」。要平衡界面的美学和可用性,卡片基本是一个默认选择。因为卡片用起来非常方便,还可以展示包含不同元素的内容。1. 完美的拟物在用户界面加入卡片设计可谓完美的拟物,因为它们看起来就像日常生活中真实存在的卡片。其实早在手机设备出现之前,卡片就已经存在了,比如名片、棒球卡、扑克卡等等。当今,卡片可谓是目前使用较广泛的一种交互模型。因此,对用户而言,其更能凭直觉认识到,这些卡片就代表真实生活中的某物。此外,就小故事推广而言,卡片也是非常棒的选择,棒球卡就是一个典例。你所需要了解的某运动员基本信息都显示在小卡片的正反面。2. 内容架构卡片将内容划分成多个有意义的部分,这样还节省了一定的屏幕空间。类似于「字词句段篇」的组成形式,卡片也是由最小信息单元组成,并汇总形成连贯的整体内容。像 Facebook 这类大企业,其采用卡片驱动型的界面用于台式桌面、手机网页及 app 客户端时,卡片布局就被认作设计环节中的核心了。Facebook 充分利用了盒子风格的设计(即卡片——译者注),将信息归类,哪怕是在怎么也滑动不到底端的页面上。3. 视觉享受基于卡片的设计通常主要依靠视觉设计,而使用大量图片就是卡片设计的一大亮点。研究发现已证实,图片可以提升网页或 app 的整体设计,因为图片可以快速有效地吸引用户的注意力。所以,加入图片也使得基于卡片的设计更加引人入胜。比如 Dribble,一个面向设计师等创意类作品的人群,提供作品在线服务,供网友查看的交流类网站。要展示这类内容,基于卡片的设计是再合适不过的选择了。二、如何设计卡片在同一页面布局中,卡片宽度应保持不变,但高度可以相应调整。卡片最大高度限于该平台可用空间的高度,但也可以临时延伸。例如,在显示评论框的时候。从设计角度来看,卡片各角最好是圆角,并且最好稍有一点阴影。圆角使卡片看起来更像一个内容块,阴影则可以反映出深度。这些元素在没有分散用户注意力的前提下,能给设计带来一些视觉亮点。另外,还能给人一种卡片像是要从页面中跳出来的感觉。除此之外,还可以加入动画和动效。三、卡片的优势设计恰当的话,卡片可以提升 app 的用户体验感。因为其功能性以及外形的原因,它们成了用户界面的一个增值元素,对用户来说,也更能凭直觉交互。1. 易于理解的形式之前 AppSo(微信号 appsolution)灵感早读栏目分享 过「内容至上原则」。卡片是一个可以装入任何内容的设计盒子。将不同内容置于卡片之中,可以方便用户理解。这样一来,用户可以轻松了解其最关注的内容。这也使用户可以通过各种方式来交互。2. 响应式设计以及移动界面设计关于卡片,最重要的是它们基本上极度容易被掌控。不管在台式桌面还是手机客户端,加入卡片设计的效果都非常好,因为内容可以通过更易理解的卡片呈现给用户。就响应式设计而言,它是不错的选择,因为以内容盒子呈现的卡片可以方便地扩展或收缩。最后,加入卡片,在跨平台设备上设计出统一的美感也就不会步步维艰了。这也是为什么通过卡片可以在不同设备上轻松设计出相同的用户体验感。

  • 高速数据缓存

    首先查询缓存是否存在,如果存在直接返回缓存内容。不存在的话,取数据库读取内容后存入缓存中,下次就会直接从缓存中读取内容。如果项目只是存储在 Redis 中,减轻 MySQL 压力。建议不要设置缓存时间,由手动控制更新缓存。查询时建立缓存,应该同时在创建数据和修改数据时也建立缓存。避免高并发下缓存没命中,导致流量瞬间进入 MySQL 查询。建议使用 ThinkPHP5 的模型事件 after_write 控制缓存的创建和更新实际项目中更多的是使用哈希或者列表来实现。

  • JS HTTP 请求库哪家强?Axios,Request,Superagent,Fetch 还是 Supertest .

    Web 开发中客户端与服务器间的交互非常重要,它有利于客户端应用高度动态化。用户通过单击按钮的交互方式向服务器发送请求,服务器检索数据并返回,页面无需重新加载,直接使用返回的数据重新渲染其部分/整体内容,或者对数据进行操作。这其中的技术原理是 AJAX,通过 XMLHttpRequest 实例实现。 为了提升 AJAX 及 XMLHttpRequest 的使用体验,社区开发了一些无需处理 AJAX 和 XMLHttpRequest 就直接发出 HTTP 请求的库。本文将带你研究 5 个流行的 HTTP 库,了解它们是如何实现的。 希望能帮你省下一些时间。提示:通过与 Bit 共享同步公共组件可以避免代码重复。 把相同的功能的代码变成共享组件,就可以随处使用它了,构建快,赶紧试试看。Axios基于 Promise 的 HTTP 客户端,可用于浏览器和 Node.jsAxios 是一个基于 Promise 的 HTTP 库,可用在 Node.js 和浏览器上发起 HTTP 请求,支持所有现代浏览器,包括 IE8+!优点同时支持 Node.js 和浏览器支持 Promise API可以配置或取消请求可以设置响应超时支持防止跨站点请求伪造(XSRF)攻击可以拦截未执行的请求或响应支持显示上传进度广泛用于 React 和 Vue 项目缺点用起来比较麻烦Superagent改良版 Ajax——与 Node.js HTTP 客户端搭配使用Superagent 是一个基于 Promise 的轻量级渐进式 AJAX API,非常适合发送 HTTP 请求以及接收服务器响应。 与 Axios 相同,它既适用于 Node,也适用于所有现代浏览器。用 Superagent 发起 HTTP 请求就像在 request 对象上调用方法一样简单: 优点它有一个插件生态,通过构建插件可以实现较多功能可配置HTTP 请求发送接口友好可以为请求链式添加方法适用于浏览器和 Node支持显示上传和下载进度支持分块传输编码支持旧风格的回调繁荣的插件生态,支持众多常见功能缺点其 API 不符合任何标准Request

  • JavaScript复制内容到剪贴板的两种常用方法

    查了一下万能的Google,现在常见的方法主要是以下两种:第三方库:clipboard.js原生方法:document.execCommand()分别来看看这两种方法是如何使用的。clipboard.js这是clipboard的官网:https://clipboardjs.com/,看起来就是这么的简单。引用直接引用:<script src="dist/clipboard.min.js"></script>包: npm install clipboard --save ,然后 import Clipboard from 'clipboard';使用从输入框复制现在页面上有一个 <input> 标签,我们需要复制其中的内容,我们可以这样做:?12<input id="demoInput" value="hello world"><button class="btn" data-clipboard-target="#demoInput">点我复制</button>?12import Clipboard from 'clipboard';const btnCopy = new Clipboard('btn');注意到,在 <button> 标签中添加了一个 data-clipboard-target 属性,它的值是需要复制的 <input> 的 id,顾名思义是从整个标签中复制内容。直接复制有的时候,我们并不希望从 <input> 中复制内容,仅仅是直接从变量中取值。如果在 Vue 中我们可以这样做:<button class="btn" :data-clipboard-text="copyValue">点我复制</button>?123import Clipboard from 'clipboard';const btnCopy = new Clipboard('btn');this.copyValue = 'hello world';事件有的时候我们需要在复制后做一些事情,这时候就需要回调函数的支持。在处理函数中加入以下代码:?12345678910111213// 复制成功后执行的回调函数clipboard.on('success', function(e) { console.info('Action:', e.action); // 动作名称,比如:Action: copy console.info('Text:', e.text); // 内容,比如:Text:hello word console.info('Trigger:', e.trigger); // 触发元素:比如:<button class="btn" :data-clipboard-text="copyValue">点我复制</button> e.clearSelection(); // 清除选中内容}); // 复制失败后执行的回调函数clipboard.on('error', function(e) { console.error('Action:', e.action); console.error('Trigger:', e.trigger);});小结文档中还提到,如果在单页面中使用 clipboard ,为了使得生命周期管理更加的优雅,在使用完之后记得 btn.destroy() 销毁一下。clipboard 使用起来是不是很简单。但是,就为了一个 copy 功能就使用额外的第三方库是不是不够优雅,这时候该怎么办?那就用原生方法实现呗。document.execCommand()方法先看看这个方法在 MDN 上是怎么定义的:which allows one to run commands to manipulate the contents of the editable region.意思就是可以允许运行命令来操作可编辑区域的内容,注意,是可编辑区域。定义bool = document.execCommand(aCommandName, aShowDefaultUI, aValueArgument)方法返回一个 Boolean 值,表示操作是否成功。aCommandName :表示命令名称,比如: copy, cut 等(更多命令见命令);aShowDefaultUI:是否展示用户界面,一般情况下都是 false;aValueArgument:有些命令需要额外的参数,一般用不到;兼容性这个方法在之前的兼容性其实是不太好的,但是好在现在已经基本兼容所有主流浏览器了,在移动端也可以使用。使用从输入框复制现在页面上有一个 <input> 标签,我们想要复制其中的内容,我们可以这样做:?12<input id="demoInput" value="hello world"><button id="btn">点我复制</button>js代码?123456789const btn = document.querySelector('#btn');btn.addEventListener('click', () => {    const input = document.querySelector('#demoInput');    input.select();    if (document.execCommand('copy')) {        document.execCommand('copy');        console.log('复制成功');    }})其它地方复制有的时候页面上并没有 <input> 标签,我们可能需要从一个 <div> 中复制内容,或者直接复制变量。还记得在 execCommand() 方法的定义中提到,它只能操作可编辑区域,也就是意味着除了 <input>、<textarea> 这样的输入域以外,是无法使用这个方法的。这时候我们需要曲线救国。<button id="btn">点我复制</button>js代码?123456789101112const btn = document.querySelector('#btn');btn.addEventListener('click',() => {    const input = document.createElement('input');    document.body.appendChild(input);    input.setAttribute('value', '听说你想复制我');    input.select();    if (document.execCommand('copy')) {        document.execCommand('copy');        console.log('复制成功');    } document.body.removeChild(input);})算是曲线救国成功了吧。在使用这个方法时,遇到了几个坑。遇到的坑在Chrome下调试的时候,这个方法时完美运行的。然后到了移动端调试的时候,坑就出来了。对,没错,就是你,ios。。。1、点击复制时屏幕下方会出现白屏抖动,仔细看是拉起键盘又瞬间收起知道了抖动是由于什么产生的就比较好解决了。既然是拉起键盘,那就是聚焦到了输入域,那只要让输入域不可输入就好了,在代码中添加 input.setAttribute('readonly', 'readonly'); 使这个 <input> 是只读的,就不会拉起键盘了。2、无法复制这个问题是由于 input.select() 在ios下并没有选中全部内容,我们需要使用另一个方法来选中内容,这个方法就是 input.setSelectionRange(0, input.value.length);。完整代码如下:?12345678910111213const btn = document.querySelector('#btn');btn.addEventListener('click',() => {    const input = document.createElement('input'); input.setAttribute('readonly', 'readonly'); input.setAttribute('value', 'hello world'); document.body.appendChild(input);    input.setSelectionRange(0, 9999);    if (document.execCommand('copy')) {        document.execCommand('copy');        console.log('复制成功');    } document.body.removeChild(input);})总结以上就是关于JavaScript如何实现复制内容到剪贴板,附上几个链接:execCommand MDNexecCommand兼容性clipboard.js

  • 微信小程序实现日历功能

    <view class="calendar"> <view class="selectDate"> <view class="goleft iconfont icon-jianzuo" bindtap="prevMonth"></view> <view class="date-wrap">  {{year}}年{{month}}月 </view> <view class="goright iconfont icon-jianzuo" bindtap="nextMonth"></view> </view> <view class="week"> <view wx:for="{{weekArr}}" wx:for-index="index" wx:for-item="item" wx:key="key" style="width:{{param}}px;height:{{param-17}}px;line-height:{{param-17}}px">{{item}}</view> </view> <view class="date" style='width: {{ param * 7 }}px;'> <block wx:for="{{dateArr}}" wx:for-index="index" wx:for-item="item" wx:key="key">  <view style="{{index ==0?'margin-left:'+ param *firstDay +'px;':''}}width:{{param}}px;height:{{param-10}}px;line-height:{{param-10}}px;" class="{{index+1==day?'today':''}} {{index+1==day&&isClock?'clockOn':''}}"><view class="day">{{item}}</view></view> </block> </view></view><!--end calendar-->?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113data: { year:'', month:'', day:'', weekArr: ['日', '一', '二', '三', '四', '五','六'], dateArr:[], firstDay:'', lastDay:'', param:null, clockNum:3, },getDate: function () { //获取当月日期 var mydate = new Date(); var year = mydate.getFullYear(); var month = mydate.getMonth(); var months = month + 1; this.data.year = year; this.data.month = months; this.data.day = mydate.getDate(); var fist = new Date(year, month, 1); this.data.firstDay = fist.getDay(); var last = new Date(year, months, 0);  this.data.lastDay = last.getDate();  this.setData({  year: this.data.year,  month: this.data.month,  day: this.data.day,  firstDay: this.data.firstDay,  lastDay: this.data.lastDay }) console.log("今天:" + this.data.day); }, setDate: function () { for (var i = 1; i < this.data.lastDay + 1; i++) {  this.data.dateArr.push(i); } this.setData({  dateArr: this.data.dateArr,  firstDay: this.data.firstDay }) }, prevMonth:function(){ //上一月 var months=""; var years=""; if(this.data.month ==1){  years=this.data.year-1  this.data.month=12;  months=this.data.month; }else{  years=this.data.year;  months = this.data.month - 1; }   var first = new Date(years, months-1, 1); this.data.firstDay = first.getDay(); var last = new Date(years, months, 0); this.data.lastDay = last.getDate();   this.setData({  month: months,  year:years,  firstDay: this.data.firstDay,  lastDay: this.data.lastDay })  this.data.dateArr = []; for (var i = 1; i < this.data.lastDay + 1; i++) {  this.data.dateArr.push(i); } this.setData({  dateArr: this.data.dateArr }) }, nextMonth:function(){ //下一月 var months=""; var years=""; if(this.data.month== 12){  this.data.month=0;  months = this.data.month;  years = this.data.year+1; }else{  months = this.data.month+1;  years = this.data.year; } var months = this.data.month + 1; var first = new Date(years, months-1,1); this.data.firstDay= first.getDay(); var last = new Date(years,months,0); this.data.lastDay= last.getDate(); this.setData({  month: months,  year:years,  firstDay:this.data.firstDay,  lastDay:this.data.lastDay })  this.data.dateArr = []; for (var i = 1; i < this.data.lastDay + 1; i++) {  this.data.dateArr.push(i); } this.setData({  dateArr: this.data.dateArr }) },onLoad: function (options) { this.getDate(); this.setDate(); var res = wx.getSystemInfoSync(); this.setData({  param:res.windowHeight/12, }) },

  • 微信小程序实现点击图片旋转180度并且弹出下拉列表

    index.wxml?123456789101112<view class="phone_one" bindtap="clickPerson"> <view class="phone_personal">{{firstPerson}}</view> <image src="../../image/v6.png" class="personal_image {{selectArea ? 'rotateRight' :''}}"></image> //三目法判断图片要不要旋转180。 </view>  <view class="person_box"> <view class="phone_select" hidden="{{selectPerson}}">  <view bindtap="mySelect">测试1</view>  <view bindtap="mySelect">测试2</view>  <view bindtap="mySelect">测试3</view> </view></view>index.js?123456789101112131415161718192021222324252627282930Page({ data:{ selectPerson:true, firstPerson:'个人', selectArea:false, }, //点击选择类型 clickPerson:function(){ var selectPerson = this.data.selectPerson; if(selectPerson == true){  this.setData({  selectArea:true,  selectPerson:false, }) }else{  this.setData({  selectArea:false,  selectPerson:true, }) } } , //点击切换 mySelect:function(e){ this.setData({  firstPerson:e.target.dataset.me,  selectPerson:true,  selectArea:false, }) },}}index.wxss?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748.phone_personal{ width: 100%; color:rgb(34, 154, 181); height:100rpx; line-height:100rpx; text-align: center;}.phone_one{ display: flex; //用flex布局更方便。 position: relative; justify-content: space-between; background-color:rgb(239, 239, 239); width:90%; height:100rpx; margin:0 auto; border-radius: 10rpx; border-bottom:2rpx solid rgb(255, 255, 255);}.person_box{ position: relative;}.phone_select{ margin-top:0; z-index: 100; position: absolute; //小程序中z-index和absolute需要同时存在,元素才能脱离文档。}.select_one{ text-align: center; background-color:rgb(239, 239, 239); width:676rpx; //脱离文档后元素width不能再用百分比。 height:100rpx; line-height:100rpx; margin:0 5%; border-bottom:2rpx solid rgb(255, 255, 255);}.personal_image{ z-index: 100; position: absolute; right:2.5%; width: 34rpx; height: 20rpx; margin:40rpx 20rpx 40rpx 0; transition: All 0.4s ease;  -webkit-transition: All 0.4s ease;}.rotateRight{ transform: rotate(180deg); //180°旋转图片。}

  • redis的五种对象类型及其底层实现

    Redis对象类型简介Redis是一种key/value型数据库,其中,每个key和value都是使用对象表示的。比如,我们执行以下代码:redis>SET message "hello redis"其中的key是message,是一个包含了字符串"message"的对象。而value是一个包含了"hello redis"的对象。Redis共有五种对象的类型,分别是:类型常量 对象的名称REDIS_STRING 字符串对象REDIS_LIST 列表对象REDIS_HASH 哈希对象REDIS_SET 集合对象REDIS_ZSET 有序集合对象Redis中的一个对象的结构体表示如下:/* * Redis 对象 */typedef struct redisObject {     // 类型    unsigned type:4;             // 不使用(对齐位)    unsigned notused:2;     // 编码方式    unsigned encoding:4;     // LRU 时间(相对于 server.lruclock)    unsigned lru:22;     // 引用计数    int refcount;     // 指向对象的值    void *ptr; } robj;type表示了该对象的对象类型,即上面五个中的一个。但为了提高存储效率与程序执行效率,每种对象的底层数据结构实现都可能不止一种。encoding就表示了对象底层所使用的编码。下面先介绍每种底层数据结构的实现,再介绍每种对象类型都用了什么底层结构并分析他们之间的关系。Redis对象底层数据结构底层数据结构共有八种,如下表所示:编码常量 编码所对应的底层数据结构REDIS_ENCODING_INT long 类型的整数REDIS_ENCODING_EMBSTR embstr 编码的简单动态字符串REDIS_ENCODING_RAW 简单动态字符串REDIS_ENCODING_HT 字典REDIS_ENCODING_LINKEDLIST 双端链表REDIS_ENCODING_ZIPLIST 压缩列表REDIS_ENCODING_INTSET 整数集合REDIS_ENCODING_SKIPLIST 跳跃表和字典字符串对象字符串对象的编码可以是int、raw或者embstr。如果一个字符串的内容可以转换为long,那么该字符串就会被转换成为long类型,对象的ptr就会指向该long,并且对象类型也用int类型表示。普通的字符串有两种,embstr和raw。embstr应该是Redis 3.0新增的数据结构,在2.8中是没有的。如果字符串对象的长度小于39字节,就用embstr对象。否则用传统的raw对象。可以从下面这段代码看出:#define REDIS_ENCODING_EMBSTR_SIZE_LIMIT 39robj *createStringObject(char *ptr, size_t len) {    if (len <= REDIS_ENCODING_EMBSTR_SIZE_LIMIT)        return createEmbeddedStringObject(ptr,len);    else        return createRawStringObject(ptr,len);}embstr的好处有如下几点:embstr的创建只需分配一次内存,而raw为两次(一次为sds分配对象,另一次为objet分配对象,embstr省去了第一次)。相对地,释放内存的次数也由两次变为一次。embstr的objet和sds放在一起,更好地利用缓存带来的优势。需要注意的是,redis并未提供任何修改embstr的方式,即embstr是只读的形式。对embstr的修改实际上是先转换为raw再进行修改。raw和embstr的区别可以用下面两幅图所示:列表对象列表对象的编码可以是ziplist或者linkedlist。ziplist是一种压缩链表,它的好处是更能节省内存空间,因为它所存储的内容都是在连续的内存区域当中的。当列表对象元素不大,每个元素也不大的时候,就采用ziplist存储。但当数据量过大时就ziplist就不是那么好用了。因为为了保证他存储内容在内存中的连续性,插入的复杂度是O(N),即每次插入都会重新进行realloc。如下图所示,对象结构中ptr所指向的就是一个ziplist。整个ziplist只需要malloc一次,它们在内存中是一块连续的区域。linkedlist是一种双向链表。它的结构比较简单,节点中存放pre和next两个指针,还有节点相关的信息。当每增加一个node的时候,就需要重新malloc一块内存。哈希对象哈希对象的底层实现可以是ziplist或者hashtable。ziplist中的哈希对象是按照key1,value1,key2,value2这样的顺序存放来存储的。当对象数目不多且内容不大时,这种方式效率是很高的。hashtable的是由dict这个结构来实现的typedef struct dict {    dictType *type;    void *privdata;    dictht ht[2];    long rehashidx; /* rehashing not in progress if rehashidx == -1 */    int iterators; /* number of iterators currently running */} dict;dict是一个字典,其中的指针dicht ht[2] 指向了两个哈希表typedef struct dictht {    dictEntry **table;    unsigned long size;    unsigned long sizemask;    unsigned long used;} dictht;dicht[0] 是用于真正存放数据,dicht[1]一般在哈希表元素过多进行rehash的时候用于中转数据。dictht中的table用语真正存放元素了,每个key/value对用一个dictEntry表示,放在dictEntry数组中。集合对象集合对象的编码可以是intset或者hashtable。intset是一个整数集合,里面存的为某种同一类型的整数,支持如下三种长度的整数:#define INTSET_ENC_INT16 (sizeof(int16_t))#define INTSET_ENC_INT32 (sizeof(int32_t))#define INTSET_ENC_INT64 (sizeof(int64_t))intset是一个有序集合,查找元素的复杂度为O(logN),但插入时不一定为O(logN),因为有可能涉及到升级操作。比如当集合里全是int16_t型的整数,这时要插入一个int32_t,那么为了维持集合中数据类型的一致,那么所有的数据都会被转换成int32_t类型,涉及到内存的重新分配,这时插入的复杂度就为O(N)了。是intset不支持降级操作。有序集合对象有序集合的编码可能两种,一种是ziplist,另一种是skiplist与dict的结合。ziplist作为集合和作为哈希对象是一样的,member和score顺序存放。按照score从小到大顺序排列。它的结构不再复述。skiplist是一种跳跃表,它实现了有序集合中的快速查找,在大多数情况下它的速度都可以和平衡树差不多。但它的实现比较简单,可以作为平衡树的替代品。它的结构比较特殊。下面分别是跳跃表skiplist和它内部的节点skiplistNode的结构体:/* * 跳跃表 */typedef struct zskiplist {    // 头节点,尾节点    struct zskiplistNode *header, *tail;    // 节点数量    unsigned long length;    // 目前表内节点的最大层数    int level;} zskiplist;/* ZSETs use a specialized version of Skiplists *//* * 跳跃表节点 */typedef struct zskiplistNode {    // member 对象    robj *obj;    // 分值    double score;    // 后退指针    struct zskiplistNode *backward;    // 层    struct zskiplistLevel {        // 前进指针        struct zskiplistNode *forward;        // 这个层跨越的节点数量        unsigned int span;    } level[];} zskiplistNode;head和tail分别指向头节点和尾节点,然后每个skiplistNode里面的结构又是分层的(即level数组)用图表示,大概是下面这个样子:每一列都代表一个节点,保存了member和score,按score从小到大排序。每个节点有不同的层数,这个层数是在生成节点的时候随机生成的数值。每一层都是一个指向后面某个节点的指针。这种结构使得跳跃表可以跨越很多节点来快速访问。前面说到了,有序集合ZSET是有跳跃表和hashtable共同形成的。typedef struct zset {    // 字典    dict *dict;    // 跳跃表    zskiplist *zsl;} zset;为什么要用这种结构呢。试想如果单一用hashtable,那可以快速查找、添加和删除元素,但没法保持集合的有序性。如果单一用skiplist,有序性可以得到保障,但查找的速度太慢O(log)。

  • HTTP简介

    HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。http请求-响应模型.jpg主要特点1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。3.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。4.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。5、支持B/S及C/S模式。HTTP之URLHTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。以下面这个URL为例,介绍下普通URL的各部分组成:http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name从上面的URL可以看出,一个完整的URL包括以下几部分:1.协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在"HTTP"后面的“//”为分隔符2.域名部分:该URL的域名部分为“www.aspxfans.com”。一个URL中,也可以使用IP地址作为域名使用3.端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口4.虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”5.文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名6.锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分7.参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。(原文:http://blog.csdn.net/ergouge/article/details/8185219 )URI和URL的区别URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的URI一般由三部组成:①访问资源的命名机制②存放资源的主机名③资源自身的名称,由路径表示,着重强调于资源。URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL一般由三部组成:①协议(或称为服务方式)②存有该资源的主机IP地址(有时也包括端口号)③主机资源的具体地址。如目录和文件名等URN,uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:[email protected]。URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。这是因为 URI 还包括一个子类,即统一资源名称 (URN),它命名资源但不指定如何定位资源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。在Java的URI中,一个URI实例可以代表绝对的,也可以是相对的,只要它符合URI的语法规则。而URL类则不仅符合语义,还包含了定位该资源的信息,因此它不能是相对的。在Java类库中,URI类不包含任何访问资源的方法,它唯一的作用就是解析。相反的是,URL类可以打开一个到达资源的流。HTTP之请求消息Request客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。Http请求消息结构.png请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。Get请求例子,使用Charles抓取的request:GET /562f25980001b1b106000338.jpg HTTP/1.1Host    img.mukewang.comUser-Agent    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36Accept    image/webp,image/*,*/*;q=0.8Referer    http://www.imooc.com/Accept-Encoding    gzip, deflate, sdchAccept-Language    zh-CN,zh;q=0.8第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本.GET说明请求类型为GET,[/562f25980001b1b106000338.jpg]为要访问的资源,该行的最后一部分说明使用的是HTTP1.1版本。第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息从第二行起为请求头部,HOST将指出请求的目的地.User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,并且在每个请求中自动发送等等第三部分:空行,请求头部后面的空行是必须的即使第四部分的请求数据为空,也必须有空行。第四部分:请求数据也叫主体,可以添加任意的其他数据。这个例子的请求数据为空。POST请求例子,使用Charles抓取的request:POST / HTTP1.1Host:www.wrox.comUser-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)Content-Type:application/x-www-form-urlencodedContent-Length:40Connection: Keep-Alivename=Professional%20Ajax&publisher=Wiley第一部分:请求行,第一行明了是post请求,以及http1.1版本。第二部分:请求头部,第二行至第六行。第三部分:空行,第七行的空行。第四部分:请求数据,第八行。HTTP之响应消息Response一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。 http响应消息格式.jpg例子HTTP/1.1 200 OKDate: Fri, 22 May 2009 06:07:21 GMTContent-Type: text/html; charset=UTF-8<html>      <head></head>      <body>            <!--body goes here-->      </body></html>第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)第二部分:消息报头,用来说明客户端要使用的一些附加信息第二行和第三行为消息报头,Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8第三部分:空行,消息报头后面的空行是必须的第四部分:响应正文,服务器返回给客户端的文本信息。空行后面的html部分为响应正文。HTTP之状态码状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:1xx:指示信息--表示请求已接收,继续处理2xx:成功--表示请求已被成功接收、理解、接受3xx:重定向--要完成请求必须进行更进一步的操作4xx:客户端错误--请求有语法错误或请求无法实现5xx:服务器端错误--服务器未能实现合法的请求常见状态码:200 OK                        //客户端请求成功400 Bad Request               //客户端请求有语法错误,不能被服务器所理解401 Unauthorized              //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden                 //服务器收到请求,但是拒绝提供服务404 Not Found                 //请求资源不存在,eg:输入了错误的URL500 Internal Server Error     //服务器发生不可预期的错误503 Server Unavailable        //服务器当前不能处理客户端的请求,一段时间后可能恢复正常更多状态码http://www.runoob.com/http/http-status-codes.htmlHTTP请求方法根据HTTP标准,HTTP请求可以使用多种请求方法。HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。GET     请求指定的页面信息,并返回实体主体。HEAD     类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头POST     向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。PUT     从客户端向服务器传送的数据取代指定的文档的内容。DELETE      请求服务器删除指定的页面。CONNECT     HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。OPTIONS     允许客户端查看服务器的性能。TRACE     回显服务器收到的请求,主要用于测试或诊断。HTTP工作原理HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。以下是 HTTP 请求/响应的步骤:1、客户端连接到Web服务器一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.oakcms.cn。2、发送HTTP请求通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。3、服务器接受请求并返回HTTP响应Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。4、释放连接TCP连接若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;5、客户端浏览器解析HTML内容客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;5、释放 TCP连接;6、浏览器将该 html 文本并显示内容;   GET和POST请求的区别GET请求GET /books/?sex=man&name=Professional HTTP/1.1Host: www.wrox.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)Gecko/20050225 Firefox/1.0.1Connection: Keep-Alive注意最后一行是空行POST请求POST / HTTP/1.1Host: www.wrox.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)Gecko/20050225 Firefox/1.0.1Content-Type: application/x-www-form-urlencodedContent-Length: 40Connection: Keep-Alivename=Professional%20Ajax&publisher=Wiley1、GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,多个参数用&连接;例 如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。POST提交:把提交的数据放置在是HTTP包的包体中。上文示例中红色字体标明的就是实际的传输数据因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变2、传输数据的大小:首先声明:HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。而在实际开发中存在的限制主要有:GET:特定浏览器和服务器对URL长度有限制,例如 IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系 统的支持。因此对于GET提交时,传输数据就会受到URL长度的 限制。POST:由于不是通过URL传值,理论上数据不受 限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。3、安全性POST的安全性要比GET的安全性高。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存;(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击4、Http get,post,soap协议都是在http上运行的(1)get:请求参数是作为一个key/value对的序列(查询字符串)附加到URL上的查询字符串的长度受到web浏览器和web服务器的限制(如IE最多支持2048个字符),不适合传输大型数据集同时,它很不安全(2)post:请求参数是在http标题的一个不同部分(名为entity body)传输的,这一部分用来传输表单信息,因此必须将Content-type设置为:application/x-www-form- urlencoded。post设计用来支持web窗体上的用户字段,其参数也是作为key/value对传输。但是:它不支持复杂数据类型,因为post没有定义传输数据结构的语义和规则。(3)soap:是http post的一个专用版本,遵循一种特殊的xml消息格式Content-type设置为: text/xml 任何数据都可以xml化。Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。 我们最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.我们看看GET和POST的区别GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

  • redis的基本操作与进阶

    在Redis中,命令大小写不敏感。一、适合全体类型的常用命令启动redis服务和redis-cli命令界面继续后续实验:$ sudo service redis-server start$ redis-cli(1)EXISTS and DELEXISTS key 判断一个key是否存在;存在返回 1;否则返回0; DEL key 删除某个key,或是一系列key;DEL key1 key2 key3 key4。成功返回1,失败返回0(key值不存在)。> set mykey hello> exists mykey> del mykey> exists mykey操作截图: (2)TYPE and KEYSTYPE key:返回某个key元素的数据类型 ( none:不存在,string:字符,list,set,zset,hash),key不存在返回空。 KEYS key—pattern :返回匹配的key列表 (KEYS foo*:查找foo开头的keys)> set mykey x> type mykey>keys my*> del mykey>keys my*> type mykey操作截图: (3)RANDOMKEY and CLEARRANDOMKEY : 随机获得一个已经存在的key,如果当前数据库为空,则返回空字符串> randomkey操作截图: CLEAR :清除界面。> clear(4)RENAME and RENAMENXRENAME oldname newname:改key的名字,新键如果存在将被覆盖 RENAMENX oldname newname:更改key的名字,如果名字存在则更改失败笔者randomkey结果为mylist,将此key值更名为newlist。> randomkey> rename mylist newlist> exists mylist> exists newlist操作截图: (5) DBSIZEDBSIZE :返回当前数据库的key的总数> dbsize操作截图: 二、Redis 时间相关命令(1)限定key生存时间这同样是一个无视数据类型的命令,对于临时存储很有用处。避免进行大量的DEL操作。EXPIRE:设置某个key的过期时间(秒),(EXPIRE bruce 1000:设置bruce这个key1000秒后系统自动删除)注意:如果在还没有过期的时候,对值进行了改变,那么那个值会被清除。> set key some-value> expire key 10> get key       (马上执行此命令)> get key       (10s后执行此命令)操作截图: 结果显示,执行EXPIRE命令后,马上GET,显示key存在。10秒后再GET时,key 已经被自动删除。(2)查询key剩余生存时间限时操作可以再SET命令中实现,并且可用TTL命令查询key剩余生存时间。 TTL:查找某个key还有多长时间过期,返回时间秒> set key 100 ex 30> ttl key> ttl key操作截图: (3)清除keyFLUSHDB:清空当前数据库中的所有键FLUSHALL:清空所有数据库中的所有键>flushdb>flushall三、Redis设置相关命令Redis有其配置文件,可以通过client-command窗口查看或者更改相关配置。相关命令介绍如下:(1)CONFIG GET and CONFIG SETCONFIG GET:用来读取运行Redis服务器的配置参数。 CONFIG SET:用于更改运行Redis服务器的配置参数。 AUTH : 认证密码 下面针对Redis密码的示例:> config get requirepass (查看密码)> config set requirepass test123 (设置密码为test123 )> config get requirepass  (报错,没有认证)> auth test123> config get requirepass操作截图: 由结果可知,刚开始时Reids并未设置密码,密码查询结果为空。然后设置密码为test123,再次查询报错。经过auth命令认证后,可正常查询。可以经过修改Redis的配置文件redis.conf修改密码。CONFIG GET命令是以list的key-value对显示的,如查询数据类型的最大条目:> config get *max-*-entries*操作截图: (2)重置报告CONFIG RESETSTAT:重置数据统计报告,通常返回值为'OK"。> CONFIG RESETSTAT操作截图: 四、查询信息INFO [section] :查询Redis相关信息。 INFO命令可以查询Redis几乎所有的信息,其命令选项有如下:server: Redis server的常规信息clients: Client的连接选项memory: 存储占用相关信息persistence: RDB and AOF 相关信息stats: 常规统计replication: Master/slave请求信息cpu: CPU 占用信息统计cluster: Redis 集群信息keyspace: 数据库信息统计all: 返回所有信息default: 返回常规设置信息若命令参数为空,info命令返回所有信息。> info keyspace> info server操作截图:   Redis的高级应用实验简介前面学习了Redis的基础知识和基本命令,接下来继续讲解Redis的高级应用,包括:安全性设置,主从复制,事务处理, 持久化机制, 虚拟内存的使用。一、安全性设置在客户端连接是需要指定的密码(由于redis速度相当的快,一秒钟可以150K次的密码尝试,所以需要设置一个密码强度很大的密码)。设置密码的方式有两种:(1) 使用config set 命令的requirepass 参数,具体格式为config set requirepass “password”。 (2) 配置redis.conf 中设置requirepass属性,后面为密码。输入认证的方式也有两种:(1) 登录时可以 redis-cli -a password(2)登录后使用 auth password(1)设置密码第一种密码设置方式在上一个实验中已经提到,(在CONFIG SET命令讲解的实例),此处我们来看看第二种方式设置密码。首先需要进入Redis的安装目录,然后修改配置文件redis.conf。根据grep命令的结果,使用vi编辑器修改“# requirepass foobared” 为“requirepass test123”,然后保存退出。$ grep -n requirepass /etc/redis/redis.conf$ sudo vim /etc/redis/redis.conf编辑redis.conf的结果: (2)重启redis-server 与redis-cli重启redis server。$ sudo service redis-server restart进入到redis-cli交互界面进行验证$ redis-cli> info> auth test123> info> exit操作截图: 结果表明第一次info命令失败,在auth认证之后info命令正常返回。最后退出redis-cli。另外一种密码认证方式:$ redis-cli -a test123> info操作截图: 二、主从复制由于环境的原因,在此处笔者大致讲解主从复制的工作流程,不做实验。Redis的主从复制配置和使用都比较简单,通过主从复制可以允许多个slave server拥有和master server相同的数据库副本。从服务器只能读,不能写。Redis主从复制特点:1、master可以拥有多个slave。2、多个slave可以连接同一个master外,还可以连接到其他的slave。(当master宕机后,相连的slave转变为master)3、主从复制不会阻塞master,再同步数据时,master可以继续处理client请求。4、提高了系统的可伸缩性。Redis主从复制的过程:1、Slave与master建立连接,发送sync同步命令。2、 Master会启动一个后台进程,将数据库快照保存到文件中,同时Master主进程会开始收集新的写命令并缓存。3、 后台完成保存后,就将此文件发送给Slave。4、 Slave将此文件保存到磁盘上。三、事务处理Redis的事务处理比较简单。只能保证client发起的事务中的命令可以连续的执行,而且不会插入其他的client命令,当一个client在连接中发出multi命令时,这个连接就进入一个事务的上下文,该连接后续的命令不会执行,而是存放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令。如果其中执行出现错误,执行正确的不会回滚,不同于关系型数据库的事务。> multi> set name a> set name b> exec> get name操作截图: 四、持久化机制Redis是一个支持持久化的内存数据库,Redis需要经常将内存中的数据同步到磁盘来保证持久化。Redis支持两种持久化方式:1、snapshotting(快照),将数据存放到文件里,默认方式。是将内存中的数据已快照的方式写入到二进制文件中,默认文件dump.rdb,可以通过配置设置自动做快照持久化的方式。可配置Redis在n秒内如果超过m个key被修改就自动保存快照。save 900 1 #900秒内如果超过1个key被修改,则发起快照保存save 300 10 #300秒内如果超过10个key被修改,则快照保存2、 Append-only file(缩写为aof),将读写操作存放到文件中。由于快照方式在一定间隔时间做一次,所以如果Redis意外down掉的话,就会丢失最后一次快照后的所有修改。aof比快照方式有更好的持久化性,是由于使用aof时,redis会将每一个收到的写命令都通过write函数写入到文件中当redis启动时会通过重新执行文件中保存的写命令来在内存中重新建立整个数据库的内容。由于os会在内核中缓存write做的修改,所以可能不是立即写到磁盘上,这样aof方式的持久化也还是有可能会丢失一部分数据。可以通过配置文件告诉redis我们想要通过fsync函数强制os写入到磁盘的时机。配置文件中的可配置参数:appendonly   yes     //启用aof持久化方式#appendfsync  always //收到写命令就立即写入磁盘,最慢,但是保证了数据的完整持久化appendfsync   everysec  //每秒中写入磁盘一次,在性能和持久化方面做了很好的折中#appendfsync  no     //完全依赖os,性能最好,持久化没有保证在redis-cli的命令中,SAVE命令是将数据写入磁盘中。> help save>save操作截图: 五、虚拟内存的使用虚拟内存管理在2.6及之上版本取消了,在安装实验中,选择的是2.8.9版本的redis ,所有实验中的配置文件中没有虚拟内存管理功能的配置选项。此处仅为讲解Redis的虚拟内存是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出内存空间用于其他的访问数据,尤其对于redis这样的内存数据库,内存总是不够用的。除了分隔到多个redis server外,提高数据库的容量的方法就是使用虚拟内存,把那些不常访问的数据交换到磁盘上。通过配置vm相关的redis.config配置:vm-enable  yes                   #开启vm功能vm-swap-file    /tmp/redis.swap  #交换出来的value保存的文件路径vm-max-memory    10000000        #redis使用的最大内存上线 vm-page-size   32       #每个页面的大小32字节vm-pages     123217729    #最多使用多小个页面vm-max-threads     4        #用于执行value对象换入的工作线程数量

  • JavaScript 正则表达式与字符串查找方法

    如何取得一个给定的字符串substr在另一个字符串str中出现的次数?字符串匹配,第一想到的就是正则表达式,但我们最常使用的字面量来创建的正则表达式方式却无法传入变量,这时应该使用另一种创建正则表达式的方式:构造函数,如下var reg = new RegExp(substr, "g");可以传入变量了,再介绍个字符串基本包装类型的方法:match()其中第一个参数表示要匹配的字符串模式,因此可以传入变量,不需要加/ /,第二个参数是可选的标志字符串。语法为str.match(regExp),参数为一个正则表达式,若传的不是正则则会隐式转换,返回值为一个包含匹配结果的数组,如果没有匹配项,则返回null。另外,字符串的match方法与正则的exec()类似,返回匹配的详细信息;字符串的search方法与正则的test()类似,只是用来查看是否匹配。回到最初的问题,完整的程序如下:var str1 = "abctestctesqk1test23";var str2 = "test";  function countSubstr(str, substr) {  var reg = new RegExp(substr, "g");  return str.match(reg) ? str.match(reg).length : 0;//若match返回不为null,则结果为true,输出match返回的数组(["test","test"])的长度}console.log(countSubstr(str1, str2));//输出2另外,对于变量的问题,不使用构造函数也可以解决,即使用eval():var reg = "/" + substr + "/g";reg = eval(reg);//不推荐!但还是有个问题,如果子字符串中含有正则表达式中所谓的元字符(即+*?^等),则无法正常匹配。但都知道不推荐使用eval()方法,所以还是推荐使用构造函数方法。因为此时正则表达式是在字符串里的,\是字符串中的转义符,也是正则表达式中的转义符。那么只加一个\的话,只能说明在字符串中转义,而js需要进一步把普通字符串中的\变成正则表达式中的\,像是更深一则转化的意思,称为双重转义,这样\\以后的意思是正则表达式中的转义符(\)。所以对于那些元字符如果不进行双重转义,则无法真正查找要找的那个字符。这个问题尚未解决,不过一般字符串查找也很少有这些特殊字符吧,可以先一用。

  • 新手做网页设计?这9款经典网页布局设计了解下

    现在,越来越多的人想要建立自己的网站,通过自助建站系统就可以自己进行网页制作了。这无疑是一件好事,但是,很多设计师,尤其是新手设计师或者压根儿就不是设计师的小白,都在网页设计上走过不少弯路。网页制作最重要的就是网页布局,先布局,后细节,只有在选择了合适的网站布局以后,才可以顺利的进行接下来的工作。你要问网站布局有哪些?今天,Mockplus为你精选了 9 款不同的经典网站布局设计案例,希望给你灵感。1.Diker Bau网站网站布局思路:精选图片展示品牌标识Diker是一家位于德国柏林的建筑规划集团。设计师突出了以精选图来概述品牌标识的主要特征和属性。精选图被用作整个网站结构和架构的基础。由于此布局中缺少其他元素,精选图会引起用户对产品的完全关注。如果你想设计一个可以快速销售产品的网站,那么就可以使用这种布局。精选图可以与访客建立情感联系,一张大而得体的照片或插图会产生强烈的共鸣并创造出令人难忘的第一印象。当你只需展示一种产品或服务,并将用户的全部注意力集中在其上时,此布局非常有用。访问网站:https://www.behance.net/gallery/22105949/Diker-Bau...2. Chekhov网站布局思路:分屏布局该网站使用了分屏布局,这种布局可以同时展示两个同等重要的内容信息。此外,设计师将两种信息相互对立,创造出完美的对比,以吸引更多访客的目光。分屏布局,再加上呼应的动画,该网站创建出更加精致的体验。如果你的网站需要提供两种截然不同的用户旅程变体,那么使用拆分屏幕的布局吧。但是要避免在拆分部分添加太多内容。如果内容过长过多,分屏设计不能很好地扩展,会影响体验。因此,如果你需要在拆分部分提供大量文本或视觉信息,则不适合这种布局。访问网站:https://chekhov.withgoogle.com/alive#home3. Timothee Roussilhe网站布局思路:视差滚动布局该网站是设计师Timothee Roussilhe的一个简单而富有创意的简历网站。他增加了视差效果,为访客提供更愉快和令人印象深刻的体验。向下滚动时,会有很多个盒子移入和移出。令人惊奇的是,所有的盒子都增加了视差效果,你会觉得你正在看一场电影。摹客设计系统上线了!三大福利送不停!领取福利如果你想设计一个看起来很酷,富有创意和令人印象深刻的网站,那就添加一个视差效果。但是不要把它搞得一团糟,保持布局简单并使用更干净的配色方案。访问网站:http://timroussilhe.com/4. Happiness Abscissa网站布局思路:侧边栏导航该网站使用了一个固定的侧边栏导航来显示整个布局。导航无疑是任何网站的关键部分,主菜单是大多数用户在导航时首先要查找的内容。除了顶部水平导航外,你还可以通过将菜单选项放在固定的侧边栏中来布局。侧边栏应该选择页面左侧或右侧的垂直列。对于此布局,侧边栏保持静止并始终保持可见,而其余页面随着用户向下滚动页面而更改。还要确保这种导航具有可访问性。此布局适用于导航选项数量相对有限的网站。当用户进入页面时,所有选项最好都在视线范围内。侧边栏还可以包含菜单以外的内容,例如社交媒体链接,联系信息或你希望访问者轻松查找的任何内容。

  • 搭建memcached服务器

    Memcached简介  在介绍Memcached之前,让我们首先通过一个示例了解什么是服务端缓存。  相信大家都玩过一些网络联机游戏吧。在我那个年代(03年左右),这些游戏常常添加了对战功能,并提供了天梯来显示具有最优秀战绩的玩家以及当前玩家在天梯系统中的排名。这是游戏开发商所常常采用的一种聚拢玩家人气的手段。而希望在游戏中证明自己的玩家则会由此激发斗志,进而花费更多时间来在天梯中取得更好的成绩。  就天梯系统来说,其最主要的功能就是为玩家提供天梯排名的信息,而并不允许玩家对该系统中所记录的数据作任何修改。这样设定的结果就是,整个天梯系统的读操作居多,而写操作很少。反过来,由于一个游戏中的玩家可能有上千万甚至上亿人,而且在线人数常常达到上万人,因此对天梯的访问也会是非常频繁的。这样的话,即使每秒钟只有10个人访问天梯中的排名,对这上亿个玩家的天梯排名进行读取及排序也是一件非常消耗性能的事情。  一个自然而然的想法就是:在对天梯排名进行一次计算后,我们在服务端将该天梯排名缓存起来,并在其它玩家访问的时候直接返回该缓存中所记录的结果。而在一定时间段之后,如一个小时,我们再对缓存中的数据进行更新。这样我们就不再需要每个小时执行成千上万次的天梯排名计算了。  而这就是服务端缓存所提供的最重要功能。其既可以提高单个请求的响应速度,又可以降低服务层及数据库层的压力。除此之外,多个服务实例都可以读取该服务端缓存所缓存的信息,因此我们也不再需要担心这些数据在各个服务实例中都保存了一份进而需要彼此同步的问题,也即是提高了扩展性。  而Memcached就是一个使用了BSD许可的服务端缓存实现。但是与其它服务端缓存实现不同的是,其主要由两部分组成:独立运行的Memcached服务实例,以及用于访问这些服务实例的客户端。因此相较于普通服务端缓存实现中各个缓存都运行在服务实例之上的情况,Memcached服务实例则是在服务实例之外独立运行的:  从上图中可以看出,由于Memcached缓存实例是独立于各个应用服务器实例运行的,因此应用服务实例可以访问任意的缓存实例。而传统的缓存则与特定的应用实例绑定,因此每个应用实例将只能访问特定的缓存。这种绑定一方面会导致整个应用所能够访问的缓存容量变得很小,另一方面也可能导致不同的缓存实例中存在着冗余的数据,从而降低了缓存系统的整体效率。  在运行时,Memcached服务实例只需要消耗非常少的CPU资源,却需要使用大量的内存。因此在决定如何组织您的服务端缓存结构之前,您首先需要搞清当前服务中各个服务实例的负载情况。如果一个服务器的CPU使用率非常高,却存在着非常多的空余内存,那么我们就完全可以在其上运行一个Memcached实例。而如果当前服务中的所有服务实例都没有过多的空余内存,那么我们就需要使用一系列独立的服务实例来搭建服务端缓存。一个大型服务常常拥有上百个Memcached实例。而在这上百个Memcached实例中所存储的数据则不尽相同。由于这种数据的异构性,我们需要在访问由Memcached所记录的信息之前决定在该服务端缓存系统中到底由哪个Memcached实例记录了我们所想要访问的数据:  如上图所示,用户需要通过一个Memcached客户端来完成对缓存服务所记录信息的访问。该客户端知道服务端缓存系统中所包含的所有Memcached服务实例。在需要访问具有特定键值的数据时,该客户端内部会根据所需要读取的数据的键值,如“foo”,以及当前Memcached缓存服务的配置来计算相应的哈希值,以决定到底是哪个Memcached实例记录了用户所需要访问的信息。在决定记录了所需要信息的Memcached实例之后,Memcached客户端将从配置中读取该Memcached服务实例所在地址,并向该Memcached实例发送数据访问请求,以从该Memcached实例中读取具有键值“foo”的信息。在各个论坛的讨论中,这被称为是Memcached的两阶段哈希(Two-stage hash)。  而对数据的记录也使用了类似的流程:假设用户希望通过服务端缓存记录数据“bar”,并为其指定键值“foo”。那么Memcached客户端将首先对用户所赋予的键值“foo”及当前服务端缓存所记录的可用服务实例个数执行哈希计算,并根据哈希计算结果来决定存储该数据的Memcached服务实例。接下来,客户端就会向该实例发送请求,以在其中记录具有键值“foo”的数据“bar”。  这样做的好处则在于,每个Memcached服务实例都是独立的,而彼此之间并没有任何交互。在这种情况下,我们可以省略很多复杂的功能逻辑,如各个节点之间的数据同步以及结点之间消息的广播等等。这种轻量级的架构可以简化很多操作。如在一个节点失效的时候,我们仅仅需要使用一个新的Memcached节点替代老节点即可。而在对缓存进行扩容的时候,我们也只需要添加额外的服务并修改客户端配置。  这些记录在服务端缓存中的数据是全局可见的。也就是说,一旦在Memcached服务端缓存中成功添加了一条新的记录,那么其它使用该缓存服务的应用实例将同样可以访问该记录:  在Memcached中,每条记录都由四部分组成:记录的键,有效期,一系列可选的标记以及表示记录内容的数据。由于记录内容的数据中并不包含任何数据结构,因此我们在Memcached中所记录的数据需要是经过序列化之后的表示。 内存管理  在使用缓存时,我们不得不考虑的一个问题就是如何对这些缓存数据的生存期进行管理。这其中包括如何使一个记录在缓存中的数据过期,如何在缓存空间不够时执行数据的替换等。因此在本节中,我们将对Memcached的内存管理机制进行介绍。  首先我们来看一看Memcached的内存管理模型。通常情况下,一个内存管理算法所最需要考虑的问题就是内存的碎片化(Fragmentation):在长时间地分配及回收之后,被系统所使用的内存将趋向于散落在不连续的空间中。这使得系统很难找到连续内存空间,一方面增大了内存分配失败的概率,另一方面也使得内存分配工作变得更为复杂,降低了运行效率。  为了解决这个问题,Memcached使用了一种叫Slab的结构。在该分配算法中,内存将按照1MB的大小划分为页,而该页内存则会继续被分割为一系列具有相同大小的内存块:  因此Memcached并不是直接根据需要记录的数据的大小来直接分配相应大小的内存。在一条新的记录到来时,Memcached会首先检查该记录的大小,并根据记录的大小选择记录所需要存储到的Slab类型。接下来,Memcached就会检查其内部所包含的该类型Slab。如果这些Slab中有空余的块,那么Memcached就会使用该块记录该条信息。如果已经没有Slab拥有空闲的具有合适大小的块,那么Memcached就会创建一个新的页,并将该页按照目标Slab的类型进行划分。  一个需要考虑的特殊情况就是对记录的更新。在对一个记录进行更新的时候,记录的大小可能会发生变化。在这种情况下,其所对应的Slab类型也可能会发生变化。因此在更新时,记录在内存中的位置可能会发生变化。只不过从用户的角度来说,这并不可见。  Memcached使用这种方式来分配内存的好处则在于,其可以降低由于记录的多次读写而导致的碎片化。反过来,由于Memcached是根据记录的大小选择需要插入到的块类型,因此为每个记录所分配的块的大小常常大于该记录所实际需要的内存大小,进而造成了内存的浪费。当然,您可以通过Memcached的配置文件来指定各个块的大小,从而尽可能地减少内存的浪费。  但是需要注意的是,由于默认情况下Memcached中每页的大小为1MB,因此其单个块最大为1MB。除此之外,Memcached还限制每个数据所对应的键的长度不能超过250个字节。  一般来说,Slab中各个块的大小以及块大小的递增倍数可能会对记录所载位置的选择及内存利用率有很大的影响。例如在当前的实现下,各个Slab中块的大小默认情况下是按照1.25倍的方式来递增的。也就是说,在一个Memcached实例中,某种类型Slab所提供的块的大小是80K,而提供稍大一点空间的Slab类型所提供的块的大小就将是100K。如果现在我们需要插入一条81K的记录,那么Memcached就会选择具有100K块大小的Slab,并尝试找到一个具有空闲块的Slab以存入该记录。  同时您也需要注意到,我们使用的是100K块大小的Slab来记录具有81K大小的数据,因此记录该数据所导致的内存浪费是19K,即19%的浪费。而在需要存储的各条记录的大小平均分布的情况下,这种内存浪费的幅度也在9%左右。该幅度实际上取决于我们刚刚提到的各个Slab中块大小的递增倍数。在Memcached的初始实现中,各个Slab块的递增倍数在默认情况下是2,而不是现在的1.25,从而导致了平均25%左右的内存浪费。而在今后的各个版本中,该递增倍数可能还会发生变化,以优化Memcached的实际性能。  如果您一旦知道了您所需要缓存的数据的特征,如通常情况下数据的大小以及各个数据的差异幅度,那么您就可以根据这些数据的特征来设置上面所提到的各个参数。如果数据在通常情况下都比较小,那么我们就需要将最小块的大小调整得小一些。如果数据的大小变动不是很大,那么我们可以将块大小的递增倍数设置得小一些,从而使得各个块的大小尽量地贴近需要存储的数据,以提高内存的利用率。  还有一个值得注意的事情就是,由于Memcached在计算到底哪个服务实例记录了具有特定键的数据时并不会考虑用来组成缓存系统中各个服务器的差异性。如果每个服务器上只安装了一个Memcached实例,那么各个Memcached实例所拥有的可用内存将存在着数倍的差异。但是由于各个实例被选中的概率基本相同,因此具有较大内存的Memcached实例将无法被充分利用。我们可以通过在具有较大内存的服务器上部署多个Memcached实例来解决这个问题:  例如上图所展示的缓存系统是由两个服务器组成。这两个服务器中的内存大小并不相同。第一个服务器的内存大小为32G,而第二个服务器的内存大小仅仅有8G。为了能够充分利用这两个服务器的内存,我们在具有32G内存的服务器上部署了4个Memcached实例,而在只有8G内存的服务器上部署了1个Memcached实例。在这种情况下,32G内存服务器上的4个Memcached实例将总共得到4倍于8G服务器所得到的负载,从而充分地利用了32G内存服务器上的内存。  当然,由于缓存系统拥有有限的资源,因此其会在某一时刻被服务所产生的数据填满。如果此时缓存系统再次接收到一个缓存数据的请求,那么它就会根据LRU(Least recently used)算法以及数据的过期时间来决定需要从缓存系统中移除的数据。而Memcached所使用的过期算法比较特殊,又被称为延迟过期(Lazy expiration):当用户从Memcached实例中读取数据的时候,其将首先通过配置中所设置的过期时间来决定该数据是否过期。如果是,那么在下一次写入数据却没有足够空间的时候,Memcached会选择该过期数据所在的内存块作为新数据的目标地址。如果在写入时没有相应的记录被标记为过期,那么LRU算法才被执行,从而找到最久没有被使用的需要被替换的数据。  这里的LRU是在Slab范围内的,而不是全局的。假设Memcached缓存系统中的最常用的数据都存储在100K的块中,而该系统中还存在着另外一种类型的Slab,其块大小是300K,但是存在于其中的数据并不常用。当需要插入一条99K的数据而Memcached已经没有足够的内存再次分配一个Slab实例的时候,其并不会释放具有300K块大小的Slab,而是在100K块大小的各个Slab中找到需要释放的块,并将新数据添加到该块中。 高可用性  在企业级应用中,我们常常强调一个系统需要拥有高可用性和高可靠性。而对于一个组成而言,其需要能够稳定地运行,并在出现异常的时候尽量使得异常的影响限制在某个特定的范围内,而不会导致整个系统不能正常工作。而且在出现异常之后,该组成需要能较为容易地恢复到正常的工作状态。  那么Memcached需要什么样的高可用性呢?在讲解这个问题之前,我们先来看看在一个大型服务中Memcached所组成的服务端缓存是什么样的:  从上图中可以看到,在一个大型服务中,由Memcached所组成的服务端缓存实际上是由非常多的Memcached实例组成的。在前面我们已经介绍过,Memcached实例实际上是完全独立的,不存在Memcached实例之间的相互交互。因此在其中一个发生了故障的时候,其它的各个Memcached服务实例并不会受到影响。如果一个拥有了16个Memcached实例的服务端缓存系统中的一个Memcached实例发生了故障,那么整个系统将还有93.75%的缓存容量可以继续工作。虽然缓存容量的减少会略微增加其后的各个服务实例的压力,但是一个应用所经历的负载波动常常比这个大得多,因此该服务应该还是能够正常工作的。  而这也恰恰表明了Memcached所具有的独立性的正确性。由于Memcached本身致力于创建一个高效而且简单,却具有较强扩展性的缓存组件,因此其并没有强调数据的安全性。一旦其中的一个Memcached实例发生了故障,那么我们还可以从数据库及服务端再次计算得到该数据,并将其记录在其它可用的Memcached实例上。  我想您读到这里一定会想:“不,还有一个问题,那就是由于Memcached实例的个数变化会导致哈希计算的结果发生变化,从而导致所有对数据的请求会导向到不正确的Memcached实例,使得由Memcached实例集群所提供的缓存服务全部失效,从而导致数据库的压力骤增。”  是的,这也是我曾经有所顾虑的地方。而且这不仅仅在服务端缓存失效的时候存在。只要服务端缓存中Memcached实例的数量发生了变化,那么该问题就会发生。  Memcached所使用的解决方法就是Consistent Hashing。在该算法的帮助下,Memcached实例数量的变化将只可能导致其中的一小部分键的哈希值发生改变。那该算法到底是怎么运行的呢?  首先请考虑一个圆,在该圆上分布了多个点,以表示整数0到1023。这些整数平均分布在整个圆上:  而在上图中,我们则突出地显示了6个蓝点。这六个蓝点基本上将该圆进行了六等分。而它们所对应的就是在当前Memcached缓存系统中所包含的三个Memcached实例m1,m2以及m3。好,接下来我们则对当前需要存储的数据执行哈希计算,并找到该哈希结果900在该圆上所对应的点:  可以看到,该点在顺时针距离上离表示0的那个蓝点最近,因此这个具有哈希值900的数据将记录在Memcached实例m1中。  如果其中的一个Memcached实例失效了,那么需要由该实例所记录的数据将暂时失效,而其它实例所记录的数据仍然还在:  从上图中可以看到,在Memcached实例m1失效的情况下,值为900的数据将失效,而其它的值为112和750的数据将仍然记录在Memcached实例m2及m3上。也就是说,一个节点的失效现在将只会导致一部分数据不再在缓存系统中存在,而并没有导致其它实例上所记录的数据的目标实例发生变化。  但是我们还不得不考虑另一个问题,那就是在一个服务的服务端缓存仅仅由一个或几个Memcached实例组成的情况。在这种情况下,其中一个Memcached实例失效是较为致命的,因为数据库以及服务器实例将接收到大量的需要进行复杂计算的请求,并将最终导致服务器实例和数据库过载。因此在设计服务端缓存时,我们常常采取超出需求容量的方法来定义这些缓存。例如在服务实际需要5个Memcached结点时我们设计一个包含6个节点的服务端缓存系统,以增加整个系统的容错能力。

  • 平时自己项目中用到的 CSS

    outline 移除当选中input元素的时候会出现状态线div {    outline: none; //一般情况下移除它    // outline: 5px dotted red; 也可以设置样式 }contenteditable 设置element是否可编辑<p contenteditable="true">可编辑</p>webkit-playsinline手机video 都可以在页面中播放,而不是全屏播放了。<video src="test.mp4" webkit-playsinline="true"></videouser-select 禁止用户选中文本div {    user-select: none; }css实现不换行、自动换行、强制换行//不换行 white-space:nowrap; //自动换行 word-wrap: break-word; word-break: normal; //强制换行 word-break:break-all;calc() function, 计算属性值div {    width: calc(100% - 100px); }CSS3 filter Property 图片过滤img {    filter: grayscale(100%); //灰度    filter: blur(5px); //模糊    filter:brightness(200%); //高亮    filter:saturate(8); //饱和    filter:sepia(100%); //怀旧    ...}使用css创建三角形div {    border-bottom: 10px solid white;    border-right: 10px solid transparent;    border-left: 10px solid transparent;    height: 0px;     width: 0px; }clip属性,截取你想要显示的图片img {    position: absolute;    clip: rect(0px,60px,200px,0px); }

  • redis分布式搭建

    Redis集群架构图 上图蓝色为redis集群的节点。节点之间通过ping命令来测试连接是否正常,节点之间没有主区分,连接到任何一个节点进行操作时,都可能会转发到其他节点。1、Redis的容错机制节点之间会定时的互相发送ping命令,测试节点的健康状态,当节点接受到ping命令后,会返回一个pong字符串。投票机制:如果一个节点A给节点B发送ping没有得到pong返回,会通知其他节点再次给B发送ping,如果集群中有超过一半的节点收不B节点的pong。那么就认为B节点挂了。一般会为每个节点提供一个备份节点,如果挂掉会切换到备份节点。2、Redis集群存储原理Redis对于每个存放的key会进行hash操作,生成一个[0-16384]的hash值(先进行crc 算法再对16384取余)。集群的情况下,就是把[0-16384]的区间进行拆分,放到不同的redis中。 3、Redis的持久化Snapshotting:定时的将Redis内存中的数据保存到硬盘中AOF:将所有的command操作保存到aof中,AOP的同步频率很高,数据即使丢失,粒度也很小,但会在性能上造成影响。 二、Redis集群准备工作Redis安装源码下载下载地址https://pan.baidu.com/s/1bCcLv4  密码i5k6解压源码   tar -zxvf redis-3.0.0.tar.gz  进入解压后的目录进行编译cd /usr/local/redis-3.0.0make安装到指定目录,如 /usr/local/rediscd /usr/local/redis-3.0.0make PREFIX=/usr/local/redis installnredis.confredis.conf是redis的配置文件,redis.conf在redis源码目录。注意修改port作为redis进程的端口,port默认6379。 拷贝配置文件到安装目录下进入源码目录,里面有一份配置文件 redis.conf,然后将其拷贝到安装路径下cd /usr/local/redismkdir confcp /usr/local/redis-3.0.0/redis.conf  /usr/local/redis/bin运行:bin/redis-server  将出现下图画面:  Redis默认是前台运行的,可以修改redis.conf的daemonize yes ,将其变成后台运行。 集群环境搭建redis集群管理工具redis-trib.rb依赖ruby环境,首先需要安装ruby环境安装rubyyum install rubyyum install rubygems安装ruby和redis的接口程序拷贝redis-3.0.0.gem至/usr/local下执行:gem install /usr/local/redis-3.0.0.gem 三、创建Redis集群在一台服务器上,可以用不同端口号来表示不同redis服务器。Redis集群最少需要三台服务器,而每台服务器有需要备用服务器,所以最少需要6台服务器。端口规划如下:主服务器:192.168.100.66 :7001  :7002  :7003从服务器:192.168.100.66 :7004  :7005  :7006在/usr/local 创建文件夹用来存放服务器程序mkdir 7001 7002 7003 7004 7005 7006如果想让redis支持集群需要修改redis.config配置文件的cluster-enabled yes本例中我们以端口来区别不同的redis服务,所以还需要修改redis.config的port为对应端口修改完配置文件,将redis安装目录的bin复制到上面每个目录中。分别进入7001/bin/ 7002/bin .....启动服务./redis-server ./redis.conf查看redis进程:ps -aux|grep redis 如下图则说明启动成功 创建集群:将之前解压的文件夹的redis-3.0.0/src/redis-trib.rb复制到redis-cluster目录运行./redis-trib.rb create --replicas 1 192.168.100.66:7001 192.168.100.66:7002 192.168.100.66:7003 192.168.100.66:7004 192.168.100.66:7005  192.168.100.66:7006 如果执行时报如下错误:[ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0解决方法是删除生成的配置文件nodes.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,比如:appendonly.aof、dump.rdb如果成功最终输入如下: 查询集群信息:说明:./redis-cli -c -h 192.168.101.3 -p 7001 ,其中-c表示以集群方式连接redis,-h指定ip地址,-p指定端口号cluster nodes 查询集群结点信息cluster info 查询集群状态信息 hash槽重新分配第一步:连接上集群./redis-trib.rb reshard 192.168.101.3:7001(连接集群中任意一个可用结点都行) 第二步:输入要分配的槽数量 输入 500表示要分配500个槽 第三步:输入接收槽的结点id  这里准备给7007分配槽,通过cluster nodes查看7007结点id为15b809eadae88955e36bcdbb8144f61bbbaf38fb输入:15b809eadae88955e36bcdbb8144f61bbbaf38fb 第四步:输入源结点id 这里输入all第五步:输入yes开始移动槽到目标结点id 添加从节点 集群创建成功后可以向集群中添加节点,下面是添加一个slave从节点。添加7008从结点,将7008作为7007的从结点。 ./redis-trib.rb add-node --slave --master-id 主节点id 添加节点的ip和端口 集群中已存在节点ip和端口  执行如下命令:./redis-trib.rb add-node --slave --master-id cad9f7413ec6842c971dbcc2c48b4ca959eb5db4  192.168.101.3:7008 192.168.101.3:7001cad9f7413ec6842c971dbcc2c48b4ca959eb5db4  是7007结点的id,可通过cluster nodes查看。 注意:如果原来该结点在集群中的配置信息已经生成cluster-config-file指定的配置文件中(如果cluster-config-file没有指定则默认为nodes.conf),这时可能会报错:[ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0解决方法是删除生成的配置文件nodes.conf,删除后再执行./redis-trib.rb add-node指令查看集群中的结点,刚添加的7008为7007的从节点: 1.1. 删除结点:./redis-trib.rb del-node 127.0.0.1:7005 4b45eb75c8b428fbd77ab979b85080146a9bc017删除已经占有hash槽的结点会失败,报错如下:[ERR] Node 127.0.0.1:7005 is not empty! Reshard data away and try again.需要将该结点占用的hash槽分配出去(参考hash槽重新分配章节)。测试:Maven:<dependencies>    <dependency>        <groupId>redis.clients</groupId>        <artifactId>jedis</artifactId>        <version>2.7.0</version>    </dependency>    <!-- https://mvnrepository.com/artifact/junit/junit -->    <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>4.12</version>        <scope>test</scope>    </dependency>    <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-test</artifactId>        <version>4.3.10.RELEASE</version>        <scope>test</scope>    </dependency></dependencies>  普通测试:@Testpublic void redisClusterTest1(){    JedisPoolConfig config=new JedisPoolConfig();    config.setMaxTotal(30);    config.setMaxIdle(2);    Set<HostAndPort> jedisNode=new HashSet<HostAndPort>();    jedisNode.add(new HostAndPort("192.168.100.66",7001));    jedisNode.add(new HostAndPort("192.168.100.66",7002));    jedisNode.add(new HostAndPort("192.168.100.66",7003));    jedisNode.add(new HostAndPort("192.168.100.66",7004));    jedisNode.add(new HostAndPort("192.168.100.66",7005));    jedisNode.add(new HostAndPort("192.168.100.66",7006));    JedisCluster jc=new JedisCluster(jedisNode,config);    jc.set("name","老王");    String value=jc.get("name");    System.out.println(value);}Spring测试:配置文件:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">    <!-- 连接池配置 -->    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">        <!-- 最大连接数 -->        <property name="maxTotal" value="30" />        <!-- 最大空闲连接数 -->        <property name="maxIdle" value="10" />        <!-- 每次释放连接的最大数目 -->        <property name="numTestsPerEvictionRun" value="1024" />        <!-- 释放连接的扫描间隔(毫秒) -->        <property name="timeBetweenEvictionRunsMillis" value="30000" />        <!-- 连接最小空闲时间 -->        <property name="minEvictableIdleTimeMillis" value="1800000" />        <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->        <property name="softMinEvictableIdleTimeMillis" value="10000" />        <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->        <property name="maxWaitMillis" value="1500" />        <!-- 在获取连接的时候检查有效性, 默认false -->        <property name="testOnBorrow" value="true" />        <!-- 在空闲时检查有效性, 默认false -->        <property name="testWhileIdle" value="true" />        <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->        <property name="blockWhenExhausted" value="false" />    </bean>    <!-- redis集群 -->    <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">        <constructor-arg index="0">            <set>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg index="0" value="192.168.100.66"></constructor-arg>                    <constructor-arg index="1" value="7001"></constructor-arg>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg index="0" value="192.168.100.66"></constructor-arg>                    <constructor-arg index="1" value="7002"></constructor-arg>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg index="0" value="192.168.100.66"></constructor-arg>                    <constructor-arg index="1" value="7003"></constructor-arg>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg index="0" value="192.168.100.66"></constructor-arg>                    <constructor-arg index="1" value="7004"></constructor-arg>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg index="0" value="192.168.100.66"></constructor-arg>                    <constructor-arg index="1" value="7005"></constructor-arg>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg index="0" value="192.168.100.66"></constructor-arg>                    <constructor-arg index="1" value="7006"></constructor-arg>                </bean>            </set>        </constructor-arg>        <constructor-arg index="1" ref="jedisPoolConfig"></constructor-arg>    </bean></beans> 测试类:@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration({"classpath:spring-config.xml"})public class RedisClusterTest {    @Autowired    private JedisCluster jedisCluster;    @Test    public void redisClusterTest2(){        jedisCluster.set("username","小明啦啦");        String name=jedisCluster.get("username");        System.out.println(name);    }}

  • 微信小程序中遇到的iOS兼容性问题小结

    随着小程序的热度不减,更多的电商大佬来时使用小程序,在微信小程序开发中,经常会遇到一些兼容性的问题,下面这篇文章就记录下在微信小程序中遇到的一些兼容性问题,iOS兼容性1.iOS中input的placeholder属性字体不居中对placeholder设置line-height及font-size对input设置高度2.iOS中滚动卡顿设置-webkit-overflow-scrolling:touch;  2. 微信小程序中解决iOS中new Date() 时间格式不兼容在实现倒计时,根据后台返回的时间格式转换时,后台返回了时间格式为”2018-11-12 11:12:11”,然后利用new Date() 转换时,ios中无法展示,安卓中显示正常let time = '2018-12-10 11:11:11';let temporaryTime1 = new Date(time);this.setData({ timeRemain1: temporaryTime1,})/* 利用正则表达式替换时间中的”-”为”/”即可 */let time = '2018-12-10 11:11:11';let temporaryTime = new Date(time.replace(/-/g,'/'));let temporaryTime1 = new Date(time);this.setData({ timeRemain: temporaryTime, timeRemain1: temporaryTime1, })在wxss里加入以下代码:4. 微信小程序scroll-view隐藏滚动条方法::-webkit-scrollbar{width: 0;height: 0;color: transparent;}总结暂时遇到的兼容性就是这么多,会持续更新以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

  • 搜索引擎的蜘蛛是如何爬的,如何吸引蜘蛛来抓取页面

    搜索引擎的蜘蛛是如何爬的,如何吸引蜘蛛来抓取页面搜索引擎的工作过程大体可以分成三个阶段:       (1)爬行和抓取:搜索引擎蜘蛛通过跟踪链接发现和访问页面,读取页面HTML代码,存到数据库。  (2)预处理:索引程序对抓取来的页面数据进行文字提取、中文分词、索引、倒排索引等处理,以备排名程序调用。  (3)排名:用户输入查询词(关键词)后,排名程序调用索引数据,计算相关性,然后按一定格式生成搜索结果页面。爬行和抓取是搜索引擎工作的第一步,完成数据收集的任务。搜索引擎用来抓取页面的程序被称为蜘蛛(spider)一个合格的SEOer,要想让自己的更多页面被收录,就要想法设法吸引蜘蛛来抓取。蜘蛛抓取页面有几方面因素:       (1)网站和页面的权重,质量高、时间长的网站一般被认为权重比较高,爬行深度也会比较高,被收录的页面也会更多。  (2)页面的更新频率,蜘蛛每次爬行都会把页面数据储存起来,如果第二次,第三次的抓取和第一次的一样,说明没有更新,久而久之,蜘蛛也就没有必             要经常抓取你的页面啦。如果内容经常更新,蜘蛛就会频繁访问页面,来抓取新的页面。  (3)导入链接,不管是内部链接还是外部链接,要想被蜘蛛抓取,就必须有导入链接进入页面,否则蜘蛛就不会知道页面的存在。  (4)与凤凰彩票官网的点击距离,一般网站上权重最高的是凤凰彩票官网,大部分外部链接都会指向凤凰彩票官网,那么蜘蛛访问最频繁的页面就是凤凰彩票官网,离凤凰彩票官网点击距离越近,页             面权重越高,被爬行的机会越大。如何吸引蜘蛛来抓取我们的页面?  坚持有频率的更新网站内容,最好是高质量的原创内容。  主动向搜索引擎提供我们的新页面,让蜘蛛更快的发现,如百度的链接提交、抓取诊断等。  搭建外部链接,可以和相关的网站做友情链接交换,可以去别的平台发布高质量的文章指向自己的页面,内容要相关。  制作网站地图,每个网站都应该有一个sitemap,网站所有的页面都在sitemap中,方便蜘蛛抓取。

  • 成长中的SEO,应该避免这12个过时的优化策略

    SEO在过去几年里经历了广泛的变化及进化,并且每天都在进行着。虽然大多数传统的营销策略(在很大程度上)仍然适用于今天的数字营销,SEO的变化已经大大改变了营销环境。如果不是全部的话,这些变化中大部分都帮助改进了互联网,尤其是改进了搜索。然而,一些人仍然坚持“老方法”,试图使用过时的SEO实践来提高他们品牌的有机搜索可见性和性能。几年前有些策略奏效了,但现在已经不像以前那么有效了。然而,许多新人营销人员/小企业主仍在使用这些“僵尸”SEO技术(这些策略本应消亡,但并非出于某些天大的原因)。它们不仅是无效的,而且下面12个过时的SEO实践中的许多都对你的品牌、网站和其他数字财产的健康有潜在的危险。1. 滥用关键词网站管理员和“营销人员”有很多方式继续误解关键词在一般SEO活动中的作用,以及如何在日常策略中使用它们。让我们更细致地看看特定类型的关键词滥用和管理不当,包括不相关的使用、特定关键词密度的编写以及关键词填充。1)无关的关键词定位/混淆搜索引擎优化新手常常试图将他们的内容和信息限制在关键词研究的范围内(除此之外,别无他法)。这些“营销人员”将对内容及其元数据进行塑造,以表示与之不相匹配的关键词,也表示用户搜索所针对的大量关键词的适当意图。这使得品牌在有机会与读者交流真实信息之前,很可能就失去了读者的注意力。如果营销的关键词与页面上的内容不一致,这种脱节会阻碍内容的成功,即使内容质量很好。不要试图误导用户,不要为了增加可见性而将用户引向由大容量关键词错误表示的内容。百度知道这是什么样子,它可以真正定义为一个过时的SEO实践(以及“黑帽”SEO技术,在许多情况下)。2)关键词密度就像许多以关键词为中心的营销策略一样,为特定的“关键词密度”而写作只是没有达到目的。百度不再依赖于关键词密度(或特定关键词使用与整个页面内容的比率)来确定网页是否是回答搜索查询的有效来源。它比简单地爬取关键词要好得多;像百度这样的搜索引擎使用大量的信号来确定搜索结果。虽然关键词对于它们所代表的主题和思想仍然很重要,但它们并不是高价值搜索查询排名的“生命线”。内容的质量和消息传递的方式才是这方面的“生命线”。3)关键词优化这可能是搜索引擎优化书籍中古老的把戏了。SEO是关于关键词的,这个约定俗成的说法,对吗?所以,用关键词加载我们的网页——尤其是我们在整个网站上积极定位的那些高价值关键词——将有助于我们在搜索中获得更高的排名,从而超越竞争对手? 搜索引擎很早就知道什么是关键词填充,什么是不自然的文本组合。他们注意到这些是试图操纵搜索结果,并将内容降级。是的,可能仍然有一些有价值的内容使用了简单的关键词填充,可能是有意或是无意为之,因为它对用户的实际价值而言,所以没有降级。说回到过去,站长想游戏系统会尽可能把每个关键词的变化高价值的关键词在网站页脚,或者更粗略地说,使这些关键词相同的颜色作为网站的背景,有效地把它们隐藏,而特定针对搜索引擎爬虫进行填充。一些网站管理员也用链接尝试过。(需要提醒的是,不要这样做。)请记住,你是为人类而不是为搜索引擎写作。2. 为机器人写作重要的是要明白,不自然的写作终归是不自然的。搜索引擎也知道这一点。他们的信念是:为网络写作意味着,我们应该在每次提到一个主题时,都用它的正确名称重复它,在这个词的同义词和近义词版本中工作,以便“涵盖所有的基础”。当爬行时,搜索引擎爬虫会看到关键词重复出现,而且出现在几个不同的版本中,从而使页面在使用的关键词变化方面排名靠前(一遍又一遍……一遍又一遍地反复使用这一SEO“技巧”)。当下,这一方式行不通了。搜索引擎是足够先进的,能够理解重复出现的关键词、它们的变化,以及通常不好的内容所带来的不利体验。为人类而写,而不是搜索引擎爬虫或任何其他机器人。   

  • 百度搜索网页标题规范:让标题回归标题本身

    对搜索用户来说,标题是一个网页最直观的认知渠道和展现方式,也是吸引用户点击搜索结果进入落地页的关键因素。 为了保障搜索用户对所需资源的有效获取,保证搜索结果的公平性,现百度搜索对外发布《百度搜索网页标题规范》,希望在满足用户需求的同时,为站长带来更多流量,实现共赢。1、标题的定义对网页内容的 准确且简明扼要 的描述。具体举例:图1-1 符合规范的标题示例网页源代码中的体现:图1-2 符合规范的标题源码示例2、标题的作用标题对于搜索用户来说,能够帮助用户快速洞察网页的内容以及该网页与搜索需求的相关性。它通常是用来决定用户点击哪个结果的主要信息。所以,使用高质量的网页标题对网站来说至关重要。3、 百度搜索网页标题规范3. 1 标题的原则• 网站应确保该站点下的每个页面都有指定的标题(如上文中“图1-2 符合规范的标题源码示例”所示),且同一站点的不同网页应分别使用不同的标题;• 页面标题应准确概括页面内容,避免使用模糊和不相关的描述;• 页面标题应简明扼要,避免使用冗长的标题,避免关键词堆砌;• 页面标题的符号使用正确,建议参考百度建议的标题符号用法(详细内容请参见本文“3.3. 2 标题的符号”部分)

  • 黑帽seo技术:利用软件给同行刷SEO负面点击有用吗?

    随着最近百度细雨算法的更新,很多站点都被降权或者被K,之前有个朋友问岑辉宇,利用软件给同行刷恶意点击,能否有用?相信很多做SEO优化的站长都有过这样想法:当自己网站关键词排名做不上的时候,是不是可以通过一些不正当的方法,把竞争对手排名拉下来?或者利用负面SEO方法让搜索引擎误判从而惩罚网站。注意,这里岑辉宇说的负面SEO与网络SEO负面信息是完全不一样。 首先刷点击本身就是一种作弊行为,搜索引擎也严厉在打击这块点击,比如百度惊雷算法,小编不建议大家这么做。但是随着排名越来越难做,不排除有站长利用这点给竞争对手刷点击或者做其他负面SEO,从而导致排名下降或K站。那么让我们了解下负面SEO有哪些常见方法?常见负面SEO做法 1,黑帽SEO:如挂木马,挂黑链,隐藏页面,用JS跳转到BC,灰色网站等,做Cloaking, 修改Robots,加noindex等等,需要专业黑帽SEO技术人员。 2,攻击网站:DDOS攻击,让网站打不开。这个需要很大成本,一次攻击是没用,需要三天两天经常打不开,这种要求对方舍得下成本。 3,重复内容:大量重复内容或者镜像网站。 4,垃圾链接:给竞争对手制造大量垃圾链接和不自然的链接,如灰色词。百度绿萝算法就是打击此链接。 5,404错误:制作大量404错误,链接到不存在的页面,需要基数大。 6,垃圾转向:大量垃圾域名或者被惩罚的域名转向到目标网站。 7,刷点击:也可以说是用户体验攻击,跟SEO快排不一样。可从百度统计工具,看网站点击率,跳出率,展现量等。 以上七点都是常见负面SEO做法,都是会影响搜索引擎对网站的判断,网站排名也会受到相应变化。为什么给竞争对手刷点击,为什么排名反而越来越好呢? 首先要明白,为什么刷点击的站点排名会波动?搜索引擎识别一个网站很简单,举个最简单的例子就懂了,假设A站在凤凰彩票官网,此时的点击是100个,然后百度给你调整到了第二页或者第三页,你的点击还有80个或者50个,此时,搜索引擎就判断你作弊,因为真实的点击是不可能这样的,然后第三天,或者第四天,排名就直接100后。正常的点击应该是什么样呢?凤凰彩票官网的时候一天点击假设100个,百度给你波动,第二页 或者第三页,那么点击这个时候可能只有5个或者10个了,然后未来一周到两周的时间,如果还是这个,也许不需要一周。那么搜索引擎就自然给你重新放到凤凰彩票官网的位置。 第二,底子好的站,就容易稳定。为什么我网站长沙SEO不刷,排名也能稳定前三?先不考虑自然点击。拼点击同行不知道刷了多少,那是因为网站即使在前面了,岑辉宇也经常更新原创,外链底子也厚,综合因素评分非常好。市面上很多网站刷点击,搜索引擎认为你就是靠点击提权,最后排名下降。底子好的站,你就算刷点击,搜索引擎也认为是恶意点击,会过滤掉。除非搞一些底子不好的就可以。 第三,那为什么有些网站也没更新内容,为什么也不掉排名?因为假如一个网站已经稳定一年多了,百度会已经认死这个网站了。要知道全中国这么多刷点击的,每天会多出起码几千万甚至上亿的点击出来,相当于多了这么多用户,事实上 百度的用户哪有这么多,不干点击干啥,你们自己算算一个站每天100个点击,100w个 就是一天一亿的流量,这一亿流量并不是用户,而是凭空刷出来的,这么大的流量百度服务器要多承受多少数据请求,只有底子同步综合运用,效果才好,单纯刷意义不大。 最后,小编强调一点,随着搜索引擎的人工智能化以及AI技术的运用,百度不断加强识别机制,经常点的ip和软件的ip还是md5都是可以被记录的。虽然刷点击效果越来越差,但是还是有很多站长乐此不疲,出发点不同所要的结果也不一样,不把自己网站做好,整天想着通过一些不正当的方法害别人,有什么意义呢?做SEO,且行且珍惜。

  • 网站跳出率太高怎么办?SEO优化人员必知的解决方案

    为什么用户进来迫切想要离开你的网站?因为你网站的内容并不是用户所需要的,很多企业做优化做不好的原因就是这里,不懂得用户想看什么样的内容,通常都的主观认为,什么“我感觉”、“我觉得”等词汇经常出现在他们口中,我觉得用户应该比较关系某某内容,我感觉用户应该喜欢网站的页面。如果要了解用户,就需要利用用户的搜索数据来进行分析,而不是主观去猜测,主观猜测只会让网站跳出率越来越高,一般用户搜索关键词的数据是可以通过一系列工具查询,例如百度指数,百度风云榜、下拉框、相关搜索等,在这里就不一一说明了。解决方法:多向一些专业的优化人员请教,不要固步自封井底之蛙,考虑问题围绕用户,从“我是做什么的”转变为“用户需要什么?我就做什么!”然后根据用户的需求做有价值的内容,很多网站内容都是大量转载的,或者就是整个页面就一张大图片,能传递给用户的信息少之又少;又或者网站是建站公司做的,建站公司随便乱添加内容,丝毫不考虑用户的搜索需求,甚至企业管理员都没人来管理网站,那这样的网站跳出率不高才怪。a.首先先学会通过数据去分析用户常常搜索哪些关键词,整理并记录下来。b.略微动脑思考一下,用户搜索这些关键词的目的是什么?想要寻找什么样的参考内容?c.哪些用户是精准客户?哪些客户是泛客户?精准客户搜索什么样的关键词?d.在了解用户的需求后,将用户喜欢的内容布局在什么样的地方合适?只要考虑好以上四点,在根据用户在页面的一个点击数据进行微调,就能解决用户因为找不到有价值的参考内容而选择跳出网站。

  • SEO一箭双雕: 认清虚假高权重网站的套路!

    怎样识别虚假高权重网站?  当你面对一个高权重网站,作为SEO专家而言,你一定会去站长工具查看一下相关SEO数据指标,具体包括:  1、网站权重  这里我们谈到的权重,目前重点指的是百度权重,但这个百度权重和谷歌真实的PR还是有一定区别,虽然谷歌PR已经停止更新,但它是官方认可的权重。  而百度权重,并非是百度官方的定义,而是各大站长工具,基于关键词搜索量与排名的一个预估权重,它只具有一定的参考价值。  2、外链结构  当你在站长工具查看确实是高权重站点,这个时候我们需要查看一下目标网站的外部链接情况,一个SEO标准化的网站,常规来讲权重在5-6,甚至更高的站点一定包含大量,多元化的外部链接。  而且他的友情链接一定大部分来自高权重网站,如果你利用外链工具几乎查询不到它的外链信息,甚至主域的数量并不多,那么它很有可能处于作弊边缘,你需要进一步的分析。  3、关键词搜索量  如果你从事SEO行业一定的时间,并且有着一定的经验,你会很清楚高权重站点,一般来讲都是以大量长尾关键词排名为主,当然行业大站有社会影响力的可能会存在大量品牌词的搜索量,但对于中小站点,并不会有过高的搜索量。  如果你发现一个高权重站点,它的关键词排名第一的指数,包含很多搜索量较高的词,那么你可能需要注意,这些词是否具有真实的搜索量,判断的方法很简单:  你只要到百度官方的百度指数去检索这些关键词,在搜索指数趋势这一栏,你可以选择查看:24h,7天,30天,90天,半年,全部的指数波动趋势。  如果这部分关键词,只是集中在某个时间节点出现高频率,而在90天,半年,全部并没有相关一定的指数波动,那么它很可能是利用真实用户刷出来的。  那么,利用虚假高权重网站,做关键词排名,与SEO培训的套路流程是什么?  1、创建一定数量的原创文章,包含无竞争度的关键词,并且尽量在搜索结果排名第一。  2、在一定时期内,利用真实用户搜索这些目标关键词,提升该关键词的搜索量,并给予一定目标站点的点击。  当然值得注意的是期间为了配合高权重站点内容,需要在目录中生成大量内页,做目标词锚文本,用于推动核心关键词的排名,具体来讲就是凤凰彩票官网标题的关键词。  3、当刷的关键词有一定搜索量后,你会发现你的网站权重会大幅度提高,到达一定数值的时候,比如,权重5以上,会去主动交换真实高权重的友情链接。  4、注意重点来啦:由于垃圾内容原创页面,几乎没有排名,而只有主页是具有真实高权重链接推荐的,所以操盘手会配置真实需要排名的关键词在主页,用于提高排名,当然也可以合理的引导到高质量栏目页,用于排名,获取客户流量。  然而,到这里你以为就结束了?那你就错了,接下来还可以这么干:  5、寻找一位行业大咖,用于讲述这个案例的操作流程,然后开始SEO培训班,可谓是一箭双雕。  总结:套路无处不在,SEO是一项系统工程,它涉及诸多细节,只有扎实的基本,通过大量的实战案例,才能让自己有一副火眼金睛。  

  • 浅析URL定向推广对SEO的影响有多大

    我想URL重定向对于SEO人和站长朋友来说,再熟悉不过了,常用的301和不常用的302一起,成为了站长朋友们解决网站重大问题的重要工具之一。  那么,URL定向是个什么鬼呢?和URL重定向仅仅相差一个字的URL定向的诞生对于站长朋友和SEO人来说,是否是一个灾难性的存在呢?  末日  前几天,就有人在搜外讨论,说百度SEM正在内测一款名为“URL定向”的推广工具,简单来说,其要展现的效果就是:可以直接购买相关的目标链接,在正常的、自然搜索结果上面进行展现。 和以往相比,SEM至少还是要写创意,购买关键词的,而今这种所谓的“URL定向”的推广方式根本不需要竞价专员烧脑的去写各种创意,只消查看一下排在自然搜索首位的网址是哪个,复制过来粘贴上,展现出去,好了,剩下的就等着访客上门吧!  SEM  这一消息对于SEO人来说,无疑是轰顶的五雷,如果一旦确认属实的话,那对于SEO是一个算的上是一个末日或者是灾难!  其实早前,还是搜外网,就传出过所谓的“科哥伦布计划”,声称百度搜索的展现会在自然结果中适当的穿插竞价、甚至第一页不再显示SEO结果等等的消息,但到了现在丝毫没有看到百度有这方面的大动作。  百度哥伦布计划  不知道是受到了前几天事件的影响,还是所谓“科哥伦布计划”计划本身就只是个谣传。而今搜外再次传出百度正在内测的“URL定向”的推广,更是引起了站长圈子的轰动,甚至有站长朋友在QQ群里直接宣称负责其公司的竞价推广客服也在向其征求是否需要购买这样的一个推广方式的意见。  之前我一直没有将这个所谓的“URL定向”放在心上,也没有去详细的参研这个所谓的新型推广方式的定义,只是偶尔的打开QQ群,看一看站长朋友们声讨百度的声音,之后就关闭了干自己的事情去了。  网络营销与推广  但这两天朋友圈里,不少的站长朋友们纷纷发声,不少的自媒体朋友也议论纷纷,也正好赶上今晚不知道写点什么,于是正好参研一下这个新型的推广方式,其实个人的理解,这种推广方式基本属于“我有钱,我就是大爷”的状况了,因为你只要看到自然搜索结果中有竞争对手的网址,看着不爽果断拿下来,这完全就相当于直接截流了有木有,相当于掉钱眼里了有木有!  钻钱眼里了  这么变态的推广方式也不知道是谁想出来的,但对于SEO人来说说绝对是一个灾难,你辛辛苦苦优化了三个月的网站,好不容易到了凤凰彩票官网,人家分分钟竞价买下你的域名,然后你就变成了千年老二!  对于做网络的人来说,或许都能认得出竞价推广和自然排名的不同,但对于普通的用户来说,想要识别二者恐怕就比较困难了,本身就不怎么明显的对比,再加上排在第一上,普通用户怎么会知道排在最上面的其实是个李鬼呢?李逵在竞价推广的压制下痛哭流涕,只因自己没有那么多的纹银可以打通关卡,只能眼睁睁的看着顾客被李鬼夺走,想要在自己的网站上写个声明什么的都不行,人家的网址和你一模一样的有木有!  李逵和李鬼  从个人的角度来说,我想百度方面应该不会、或者说暂时不会将这样的一款变态的推广方式暴露出来,纵容有这样的心思!原因如下:  1、百度推广受到质疑的风波尚未平息,如此大动作只会更加揭开用户的伤口,从此真的就各自路人了  2、如此变态的推广实为冒天下之大不韪,除非百度可以将推广排名和自然排名在展现方式上做一个超级明显的区分,让所有不是色盲的用户都能看懂哪个是竞价、哪个是自然排名!  3、如此做法势必会引起广大站长和SEO人的联合抵制,如此导致的恶果可不是那么好平息的,毕竟有很大一部分站长和SEO人也是自媒体人,比如说我!  网站如何做百度SEO  其实对于百度推广要出这样的一个变态推广方式,我一直持怀疑态度、甚至可以说是抵制的态度,因为我不相信我热爱的百度会做出这样的一个失败的决策,但毕竟三人成虎,更何况网络中也有文章力证此消息属实,看的多了心态就开始有所转变了。  心态如何改变  说实话我宁可相信这只是百度做的一个简单的内测,内测之后就尘归尘了、或者说是一个谣言,真的不希望这样的结果变成现实,同时也希望诸位媒体朋友们保持一个清醒的头脑,用一个辩证的眼光看问题,最好不要以谣传谣、妄加评判,毕竟事情还没有发生,到底是否是真的,自然有时间可以证明!

  • 最新百度PM告诉你SEO这六个方面的优化原则(干货)

     大家对百度搜索引擎都有过很多研究,各种角度各个方面的挖掘都已经很细致深入了。那么从PM的角度来看,SEO优化有哪些建议呢,今天海瑶SEO小编重点讲讲这六个方面的优化:关键词优化、URL命名优化、代码优化、网页优化、结构优化、图片优化。  1. 关键词优化  1)关键词选择策略:两高一低: 高搜索量, 与页面内容高相关, SEO竞争低。选择搜索量高的词也就是流量大的词,与页面的相关性高才能有好的用户体验,也才能更好的吸引蜘蛛爬行,而竞争低的词则有利于排名展现。  2)关键词优化指标: 遵循词频、密度、位置、表现形式 4 个指标。具体来看词频、密度,关键字密度=关键字页面词频/页面所有词的词频和 ,密度处于6%~8%为最佳。位置: 关键字所处的位置也会决定其重要程度,自上而下,自左及右重要程度依次下降。表现形式: 关键字表现形式要注意字号、颜色、加粗、下划线、斜体等。  2.URL命名优化  优化原则 :  1) 同一网页只对应一个URL,多种形式的URL会分散网页的权重。  2) URL要简洁美观,最好包括关键词,让客户能从中判断出网站内容。  3) 动态URL变量参数尽量少,为防止用户输错地址而启用的备用域名,用 301 跳转到主域名。  3.代码优化  1) 除去空白区域,一般而言,空白区域(空格,制表符,换行符等)都可以安全删除,但要避免修改pre,textarea,及受css属性中white-space影响的标签。  2) 使用短格式的颜色表示,我们常常在用颜色的时候喜欢用 16 进制和全颜色名称,认为这样比较精确,但我们要尽可能根据实际情况使用短格式的颜色表示如:#ff0000,其实就是red。  3) 用短格式的字符表示。和最短颜色表示一样,一些名称可以用最短字符来表示,我们可以用较短的数字来代替某些冗长的字母。  4) 除去css中的空白区域。相比html来,css对于空白区域没有那么敏感,所以除去空白区域可以极大地减少css文件和style样式表的区域大小。  5) 除去css注释,如同除去markup代码中的注释一样,由于css的注释对普通的最终用户来说并没有什么使用价值,应该除去。不过,如果考虑到较低级的浏览器,则css中style标签中的屏蔽注释信息不可以去除。使用短格式表示颜色,同上,不再重复。  6) 对css的规则进行合并,如: p{font-size:36pt; font-family:aral; line-height:48pt; font-weight:bold;} 可以这样写:p{font:bold 36pt/48pt arial;}  7) 完全不必在各个链接上写target=“_blank”,只要在head中写一句即可。  4.网页优化  1)title是搜索引擎判断“网页-query”权值的最重要指标。每个网页都应该有一个独一无二的标题,切忌所有页面都使用默认标题。同时标题中要包含网页中最重要的内容。  2)Meta description是网页内容的精炼概括,搜索引擎会把description当做摘要的首要目标之一。切忌所有网页都用相同的description.同时描述介绍要合理,且要与网站内容相关,不可堆砌关键词。  3) 不使用frame和iframe框架结构,通过iframe显示的内容可能会被搜索引擎忽略。  4) Ajax等搜索引擎不能识别的技术,只用在需要用户交互的地方,把不希望搜索引擎“看”到的导航及正文内容放到 Ajax中。  5)使用文字而不是flash、图片、Javascript等来显示重要的内容或链接,如果必须使用Flash制作网页,建议同时制作一个供搜索引擎收录的文字版,并在凤凰彩票官网使用文本链接指向文字版。  6)为每个页面都加上导航栏,让用户可以方便的返回频道、网站。  7) 不希望搜索引擎跟踪的链接,可以增加nofollow. 或在robots.txt(使用指南)中进行统一屏蔽。  5. 网站结构优化  1)网站结构要简洁明了,不可太复杂。要有明晰的导航和层次结构,可以是凤凰彩票官网-频道-文章页的树型结构(如下图样例),也可以是扁平结构。 树型网站结构示例  2)网站上重要的网页,应该能从网站比较浅层的位置访问到。  3)确保每个页面至少可以通过一个文本链接达到。为每个页面都加个导航栏,让用户可以方便的返回上一级页面和凤凰彩票官网。  6. 图片优化  1)很多人习惯用数字来命名图片,以方便记忆和整理。但从SEO的角度最好使用和关键词相关的文字来命名图片。这样有助于搜索引擎判断一个图片的内容。  2)为每一张图片加alt标签。图片alt标签决定了图片的排名位置,是搜索引擎判断图片内容的重要依据。而且,alt标签的文本内容在图片无法读取时得以显现。所以建议为每一张图片加上alt标签,标签的写法上要包含关键词同时自然的描述图片内容。  3)图片前后的文本内容也是搜索引擎考量网页内容的一部分,所以图片前后的文本优化也是SEO的一部分。  4)最后图片尽量本地化,这样能保证不会因为链接而分走权重,忌使用网络上的图片。

  • 百度中文分词技术如何在SEO中灵活运用?

    SEO优化过程中写文章应该注意:一篇文章一般在500-800个字,一个长尾词一般在8个字,最好在文章的第一段里出现,出现次数3-6次,超过6次会被搜索引擎K掉,这是今天的干货。百度是如何来分词的呢?分词技术现今非常成熟了。第一:字符串匹配的分词方法(1)正向最大匹配法就是把一个词从左至右来分词。举个例子:”不知道你在说什么”这句话采用正向最大匹配法是如何分的呢?“不知道,你,在,说什么”。(2)反向最大匹配法“不知道你在说什么”反向最大匹配法来分上面这段是如何分的。“不,知道,你在,说,什么”,这个就分的比较多了,反向最大匹配法就是从右至左。(3)就是最短路径分词法。就是说一段话里面要求切出的词数是最少的。“不知道你在说什么”最短路径分词法就是指,把上面那句话分成的词要是最少的。“不知道,你在,说什么”,这就是最短路径分词法,分出来就只有3个词了。(4)双向最大匹配法。而有一种特殊的情况,就是关健词前后组合内容被认为粘性相差不大,而搜索结果中也同时包含这两组词的话,百度会进行正反向同时进行分词匹配。第二:词义分词法就是一种机器语音判断的分词方法。很简单,进行句法、语义分析,利用句法信息和语义信息来处理歧义现象来分词,这种分词方法,现在还不成熟,处在测试阶段第三:统计分词法根据词组的统计,就会发现两个相邻的字出现的频率最多,那么这个词就很重要。就可以作为用户提供字符串中的分隔符,这样来分词。比如,“我的,你的,许多的,这里,这一,那里”等等,这些词出现的比较多,就从这些词里面分开来。如果一天写10篇文章,一年就可以写3650篇文章,给你的网站写3650个关键词并合理布局到你网站中,可以使用关键词挖掘工具提词,根据用户需求进行关键词的筛选,吸引流量指日可待。分词还有一种好处,那就是提升内页的排名。SEO是心理学,去猜想用户使用什么词搜索,从而进行非常有意思的工作。

  • 移动网站SEO优化策略和优化过程注意的细节问题

    很多站长都在纠结移动网站SEO如何做,怎么样才能把移动端网站关键词优化到凤凰彩票官网。其实,站长们无需过多担心,其实PC端网站跟移动站点还是有很多互通。下面,我们重点说说移动站点SEO优化策略,以及移动端站点优化过程中主要哪些细节问题。  1、移动站点和PC端站点做好移动适配  对于移动站点优化而言,其实只是在百度移动端做优化,这就需要PC端和移动端做好适配。曾经百度移动工程师说过,百度移动端会优先针对移动端站点进行排序,故而,单独做移动站点相比PC端站点更具有优势。  站长们就需要做好移动端适配,把用户在移动端访问网站的时候,自主跳转到移动版站点。现在,百度站长站长平台已经开通移动端和PC端之间的适配。站长们只需要按照百度站长提供的方法进行一一对应就可以。  2、PC端和移动端之间TDK属性差别  PC端网站展现出来的内容要远远多余移动站展示内容。因此,移动端就需要做出精准和简洁。移动端SEO优化,就需要参考百度移动搜索规范来进行,而不是照搬PC端。移动端和PC端TDK主要变现在字符上面。百度移动搜索结果页面中展现出的Title,若超过24个会被截断,建议最好不要超过17个中文汉字。  3、网站链接结构  对于移动站点来说,更加看重网站良好的链接结构。良好的链接结构,不仅仅包括网站导航和用户体验,更重要就是要给用户查看内容的便捷性。还有就是让蜘蛛更容易进行抓取和爬行。在链接层次结构上面,建议链接层次不要超过2层结构。  而且,网站建设在网站链接URL使用简短的静态链接方式,有利于搜索引擎更有效的抓取和判断网页。  4、多利用站长平台工具诊断网站问题  目前,包括国内的百度、360、搜狗,以及国外的谷歌都免费提供站长平台。涉及到网站问题,站长平台都会诊断出网站问题所在。因此,我们就需要合理和充分利用站长工具进行网站诊断,这样来保证网站良好的优化效果。比如:移动适配,可直接提交适配关系,加快搜索引擎的识别和判断能力。  5、URL链接301跳转  百度已经严格说明,PC端301不适用于移动端,包括robots等这些屏蔽蜘蛛措施。因此,我们在移动端就需要做好URL链接301跳转和利用robots文件封禁spider抓取等。  百度移动搜索适配不仅仅是做好URL链接的031跳转,同时也需要对其内容结构上的调整与布局,因为PC端内容布局和移动端内容布局上有所差异。

  • 怎么提炼与优化关键词,让您的SEO效果翻倍

    在进行搜索营销时,如何提高与优化网站的关键词将对营销起到重要的作用。那么,关键词究竟有多重要呢?小编举例来说,我们在百度里查找相关信息的时候,通常会在百度中输入一些关键的词语,搜索引擎会根据这些关键词在数据库中进行搜寻,如果找到与这些关键词内容相符的网页,就会采用一种特殊的算法----根据网页中关键词的匹配程度、出现的位置与频次、链接质量等,计算出各网页的相关度及排名等级,然后根据关联度高低,按照顺序将这些网页链接呈现给用户。由此可见,懂得提炼与优化关键词的技巧,能够有效地提升网页在搜索引擎中的排名。接下来小编来介绍几种行之有效的提炼与优化关键词的方法:1、选好网站关键词我们在进行SEO时,首先要为网站选好关键词,增强营销的精准性。关键词的数量不宜太多,一般主要选取3个为益,以“网络营销”为例,如果我们要从事的业务主要是“网络营销”,那么,在选取关键词时,除了“网络营销”这个关坚持,还可以选择“网上营销”、“互联网营销”作为关键词,这样,用户只要在搜索引擎中输入这些关键词,搜索引擎在数据库中查找结束时,会由于我们的关键词设置与用户需求比较匹配,会加大将我们的网页信息提供给用户的概率。2、要在URL中出现关键词URL译为统一资源定位器,也被称为网页地址,是因特网上标准的资源地址。通常来说,在确定好一个网站的定位后,域名就可以使用这个行业关键词的双拼或者英文单词,这一般是比较理想的状态。我们仍以百度为例,它的域名中,“baidu”就是百度的全拼,不仅便于上网用户记忆,也便于搜索引擎收录,有利于提高在搜索引擎中的关联度排名。3、在网页的内文中植入关键词网页的内文就是网页要呈现给用户的具体内容,它可以是产品信息,也可以是博客文章。在这里,有一个经典的法则是“内容为王链为皇”,也就是说,如果网站没有优质内容,那么网站本身就已经失败,更无从谈优化网站,因为所有的优化推广只是将用户吸引到网站的页面上来,至于用户的体验如何,还是要看网站内文的质量。4、在网页摘要中植入关键词搜索引擎展示给用户的搜索结果时,首先会显示网页的标题,这再次说明了小编前面所强调的在网页标题中植入关键词的重要性,其次,在网页标题下回显示50···70字的网页摘要,也可以是某篇文章的摘要。一般情况下,用户看完标题后会习惯性的去看网站的摘要,假如在网站摘要里植入关键词,而且内容设计得也吸引人,那网站的点击率就会提升,进而提升网站在搜索引擎中的排名。5、巧妙运用现有关键词,必要时自创关键词所谓现有关键词,就是那些在搜索引擎中被普遍使用的关键词。需要注意的是,关键词并非越热越好,因为热刺意味着使用者太多、竞争力大,所以根据实际情况选择一些比较弱的词来做,这样所面临的竞争力就会小。另外,尽量避免选择那些覆盖面过大的关键词,因为那会增加优化难度,小编推荐使用“百度指数”,来查询关键词的冷热度。

  • 网站优化进入前3名的关键词如何稳住排名

    经过一段时间的努力,我们已经成功的将网站关键词的排名优化到了前20位,这是SEO优化过程中极其重要的一步,标志着我们的优化方法已经得到了搜索引擎的认可,这个时候的网站会面临两种结果,如果网站内容足够吸引人、关键词竞争性不是很强的情况下会直接进入到前三位,还有一种情况是网站徘徊在10-13位停滞不前,这次我们首先来分析第一种情况,后面的情况比较特殊我们放到后面做单独的分析。如果网站在进入20位几天之后直接进入前三位,那么说明网站已经得到了搜索引擎和用户的基本肯定,如果网站第一次进入前三位会有一个不稳定期,这个不稳定是因为关键词搜索的70%流量都几种在前三位,一个新的网站一旦进入这个排名便会有大量的用户点击进来,这样的点击会加速搜索引擎对于网站价值的判断,如果用户点击进入网站后没有再返回到搜索引擎寻求其他搜索结果说明我们的网站价值很高,帮助用户找到了搜索关键词需求的信息,如果用户在进入网站后又返回搜索引擎说明网站没有提供关于该关键词有价值的信息,这是一个非常危险的信号。  网站进入前三位后外链等都可以暂时停止一下,务必把重点放在内容的建设方面,哪怕是将文章的发布数量降低一倍都无所谓,关键是文章要有可读性,要能提供用户的需求,这一步将是SEO需要跨越的至关一步,如果失败会导致前面的努力都付之东流。  如果说之前的SEO优化工作都是技术性的操作,那么从现在开始我们就要转变为一名文章编辑,要想发布的文章是有价值的就需要提前分析关键词背后的需求。因此我们在编辑文章的时候就要将围绕这些信息展开,这样当用户通过搜索引擎进入网站的时候看到这些信息点就会停留并且阅读。认为SEO绝非单纯的技术这样简单,这也是说为什么某些行业的SEOER去做其他行业的SEO很多时候非常吃力的原因,重要的原因是不了解这个行业,这是非常重要的一点。  所以说开始SEO优化之前我们一定要分析隐藏在关键词背后的需求,只要了解了这些需求才能懂得用户在搜索这些关键词的时候想要得到什么?满足的这些的需求自然会让网站变得有价值,这个价值会让网站长期的立于不败之地。

  • 单页面网站如何做seo关键词优化

    对于绝大部分SEOer来说,优化多页面的网站比优化单页面网站简单,因为单页面网站内容比较固定和简单,站内锚文本更是无从谈起,这些无疑增加了优化的难度。  其实单页面网站经常用于产品的广告宣传,虽然对于绝大部分企业来说,为了增加网站的美观性和功能性,或者为了便于做搜索引擎营销推广,会使用多页面网站。但是对于一些中小型企业,为了省钱或者说觉得网站没有多少存在的必要性,亦或者说是为了便于用户浏览,会选择使用单页面网站。  不可否认,单页面网站在SEM推广中,是不建议使用的,页面过于简单单一,造成用户体验不好,而且跳出率100%,不利于进行分析优化。同样的,在SEO优化中,单页面网站优化也存在着很多弊端。  首先,单页面获取流量难度大。一个网站的流量组成是由大量的内容页面贡献而来,而单页面网站无法布局太多的长尾关键词,所以势必会浪费大量的流量。  其次,无法进行站内优化操作。做SEO优化的都知道,内容和外链在网站优化的重要性,素来都有“内容为王,外链为皇”之说。所以对单页面来说,已经缺少了内容为王这一项。  再次是关键词布局难度大。单页面网站想要布局大量关键词,容易被搜索引擎判定为关键词堆砌,从而造成网站优化过度。  最后是跳出率问题。单页面网站的跳出率是100%,随着搜索引擎算法的调整,用户行为参与进算法所占的比重越来越大,跳出率高的网站从侧面反映出用户对网站内容的不认可,那么在排名算法上,单页面网站是无法获取这部分的加权的。 那么单页面网站真的一无是处吗?答案肯定是否定的,相反的,单页面网站的SEO优化,可能比多页面网站更占有优势,为什么呢?  1、单页面网站有利于增加权重  单页面网站只有一个页面,所以我们所有的内容以及建立的链接都是基于这个页面而产生的,所有的反向链接都指向同一页面、同一域名,这就赋予了网站很高的权重。  2、有利于网站的相关性  单页面网站的所有内容都放在同一页面下,页面内容很充实,关键词的相关性也随之提高。对于搜索引擎来说,页面内容与关键词是否具有相关性是极其重要的,所以单页面网站优化是十分有必要的。  3、有利于搜索引擎爬行  单页面网站的结构比较简单,在一定程度上为搜索引擎的爬取工作减轻了负担,有了搜索引擎的抓取就可以为进一步的优化工作打下基础。  了解了单页面的利与弊,那么如何对单页面网站进行优化呢?  1、定义区域性内容  针对单页面网站,我们可以先将页面划分为几个特定的区域,将每一个区域作为一个单独的页面来优化。为每一个区域选择关键词、定义内容、设置各种标签等。当然要切记每个区域的关键词都应具有相关性。  2、使用DIV分割区域  将每一个区域用DIV分割开来,这样能够使得网页的结构更加清晰。  3、设置锚链接  搜索引擎都非常喜欢锚链接,与锚文本不同,锚链接能够将用户带入同一页面的特定区域。在单页面网站优化中,在每个区域设置特定的锚链接,正确为用户导航,方便用户在同一页面内找寻目标信息。  4、为每一个区域设置H1 标签  通常情况下,一个页面最多设置一个H1 标签,但是单页面网站因为其独特性,跟一般的网站不同。在单页面网站的每个区域设置一个H1 标签有利于突出页面结构,有助于搜索引擎明白网站架构。但是切记每个区域设置一个H1 标签即可,不可频繁使用。  5、避免全是图片展示  很多企业使用单页面网站,希望展示给用户一种酷炫或者简单的效果,所以网站里面添加很多图片,但是这却造成了网站文字内容太少,不利于搜索引擎对网站的抓取和索引。  6、高质量的网站内容  作为单页面网站,将用户关注的需求点尽可能的完整的展示出来,是十分有必要的,所以这就需要高质量的网站内容,通过不同的区域展示相关的内容介绍,提高用户体验。  无论是哪类型的网站,SEO优化都是必不可少的,只是不同类型的网站有不同的优化方式,选择了对的优化方式,网站优化也是手到擒来。

  • 简析网站每天进行原创内容更新却还遭到降权的几点原因

    网站SEO优化理论中,内容为王已经得到了站长们的共识,可是,最近一位朋友在群里抱怨说,自己的网站天天坚持原创内容更新,昨天天排名第二,今天一下降到十五名了,这就是国内的搜索引擎,顺我者生,逆我者亡……这位站长朋友发自内心的,甚至有几分失态的话语,固然是对搜索引擎的无奈,同时,他在话语中这样说,每天坚持原创更新就等于排名第一,这样的理论占到住脚吗?  谈到原创内容,包括两个方面,一种是写给搜素引擎的原创内容,只要网站每天有内容更新,而且这个内容在搜索引擎认为是唯一的,那就会判断是原创内容,另一种则是给用户看的原创内容,这样的内容可以通过网站用户的停留时间做出判断,因为一个用户在一个网站停留的时间越长,跳出率越少,证明这个网站的内容对用户是有用的。  显然,做好原创内容,也需要好好修炼一番。简单的找一些文章,随便改一下,或者找一些专业性的文章,根本就不是给“普通大众”看的文章,也算是原创,这样的更新很简单。复杂的呢,则需要用心去写,然后文章中要加入相关关键词,要有可读性,最少保证文章顺畅。再高一层呢?文章则需要带入情感,而且做好站内链接,文章不仅发布到网站上,在外站发布也能拿的出手……  登陆这位站长的网站,查看他每日更新的文章,原创属于简单那一类,就是找一些专业性的文章,每天进行更新,也许这样文章只有需要的人才能够看明白,反正我是看不懂,随便找了几个文章的标题,百度一下,几乎没有收录,显然,这位站长如此的原创,值得赞扬的就是强大的执行力,每天都更新,每天都在坚持。  因为你做的不够好,一旦你的竞争对手开始发力,找到你的缺点,开始攻击“软肋”,比如在原创这一块,做复杂的哪一种,每篇文章加入关键词,而且文章具有可读性……接着又有更强的竞争对手出现,每天文章都做了链接,而且还发到的站外……那么,你的天天更新原创文章就像让网站排名靠前,以前是竞争对手太少,所以可以,而现在,一旦竞争对手多了,显然这种网站优化方式已经落伍了!  更让人纠结的是,“内容为王,外链为皇”的理论固然依旧有效,但是,针对的是草根站长而言,因为对于草根站长的网站来说,网站一般是一个人打理,站长负责的事情相当繁琐,又分身无术的前提下,如何保证网站排名,做好内容和外链是基本功。如今互联网已经发生翻天覆地的变化,很多有实力的传统企业也开启了网站运营推广,和草根站长单打独斗比较,他们更喜欢团队作战。  于是,网站优化已经成复杂化趋势发展,比如网站建设、推广需要文案、网站建设需要美工、需要运营推广人员、需要分工,三个臭皮匠顶一个诸葛亮,就算个人能力再强,在团队面前,还是处于弱势地位。唯一的优势就是起步较早,但是,如果不做大做强,很容易就会被竞争对手碾压,这只是时间早晚的事情。  如今,网站运营已经不是一个人就能搞定的事情,一招鲜吃天下的时代已经过去,哪些利用“黑帽SEO”的时代随着搜索引擎算法的不断成熟,已经越来越没有市场了,而唯一坚持可行的,就是用一套标准的网站推广方式、科学的数据研究、并且是团队作战,当然,这需要充足的成本保障。如此,优化的网站才能稳扎稳打一步一步超越对手,逐渐排名靠前,也不会担心网站会被降权,排名瞬间下去。

  • 网站权重怎么优化?简析在短期间内将网站权重优化到2的方法

    俗话说,万事开头难。对于一个网站运营新手来说,开拓网站优化之旅,用对了方法,那么可能一直顺利走下去。如果用错了方法,也无关紧要,毕竟刚刚上手,怎么也得有试错的时间是吧!不管怎么说,网站从权重1到权重2是一个开始,其意义不仅仅是数字的变化,更是对网站优化过程一个开端。也许网站权重到4是怎么上去的不会过于关心,而对于第一次升级,则印象深刻。 网站优化方式很多,比如站内优化、内容建设、外链建设、友情链接等等。对于新手来说,好像感觉哪个方法都不错,哪个方法都想试一试,如果你抱着这样的想法优化网站,样样尝试,样样稀松,结果,有可能把网站玩坏了了!  网站优化到权重2,不需要各种优化方式的组合,只要选对一样就可以了。今天就和大家分享一个方法,那就是交换链接。网站交换链接,也称为友情链接、互惠链接、互换链接等,是具有一定资源互补优势的网站之间的简单合作形式,即分别在自己的网站上放置对方网站的LOGO或网站名称,并设置对方网站的超级链接,使得用户可以从合作网站中发现自己的网站,达到互相推广的目的。  网站交换链接的方式有很多,寻找的渠道也是多种多样,以企业网站为例,可以利用线下资源,也可以和同行之间交换链接,如果这些用完了,还可以利用互联网一些资源,比如如今广告成灾的QQ群,里有大量的行业群、友链交换群、站长群,在这里精准又高效的达到你的目的。  当然,一个网站的友情链接不是无限的越多越好,而且在做友情链接的时候,也不是啥好友都链接,这样不仅不利于网站优化,反而会“害了”网站。所以做友情链接要注意这几点:交换同行业效果最为佳;网站的PR和权重一定比我们稍微好或者跟我们差不多,不能交换比我们差或者被百度降权或者K站的,会拖累我们网站;交换友链的网站的百度快照日期越新越好;对方网站的收录和反连越多越好;一天不要交换太多,几个即可;就算对方PR和权重最高,如果对方的友链有几百个也不建议换,因为分给我们网站的流量会很少……  网站交换链接在网站初期优化不仅能够很快让网站权重升级,也是网站从线下到线上的一个过渡过程,比如说,寻找同行或者客户的网站做友情链接,这些都是以前积累的经验,而通过QQ群或者其他网络渠道做的链接,则是对新事物的探索。  一方面利用资源,另一方面又开拓新的资源,就好比朋友圈做微商,前期利用朋友圈做微商,后期想把微商做大,就得跳出朋友圈的界限。那么,网站做友情连接的过程,先和熟悉的人,熟悉的行业进行交流、研究,认真的听取他们的意见,然后根据自己的领悟,去探索新的网络资源,这样才能不断让网站优化工作变得熟练起来。  网站权重优化到2的时候,对互联网的营销手段有了一个大概了解,这才算是最重要的,也为网站继续“升级”,为以后复杂多种方式组合优化打下坚实的基础。毕竟,一个网站想要快速发展,懂得越多,做的越快,才能迅速见到效果!

  • 网页标题是一成不变的吗 如果修改了会影响到网站排名吗

     谈到网站优化,有的网站在优化一定程度的时候,通常有一种无力感,就是再怎么努力,也很难超越竞争对手,这个时候,是咬紧牙关继续紧跟,还是推倒了重新再来。有时候放弃是一种不得已的选择,而对于网站优化来说,因为互联网变化快,调整网站营销推广策略,并非不是一件好事。谈到网站的优化,很少人会对网页标题动心思,一方面,在网站建设阶段,基本上就把网页标题做好了,而且网页标题就像给自己制定的战略目标,改动标题则是一种失败的表现,另一方面,修改网页标题,在SEO优化过程中,是不是会让搜索引擎感到“不舒服”,甚至会判断网站存在“作弊”行为,从而导致网站被降权的可能呢?正是因为这些考虑,让站长在网页标题上的改动特别慎重,甚至是不到万不得已坚决不修改网页标题。  大家知道,在浏览一个网页时,通过浏览器顶端的蓝色显示条出现的信息就是“网页标题”。网页标题是对一个网页的高度概括,一般来说,网站凤凰彩票官网的标题就是网站的正式名称。很多网站的凤凰彩票官网标题较长,除了网站名称(公司名称)之外,还有网站相关业务之类的关键词,这主要是为了在搜索引擎检索结果中获得排名优势而考虑的,也属于正常的搜索引擎优化方法。  我们通常再搜索引擎看到对网站的描述主要有这三个个部分:网站标题、网站关键词、网站描述。在搜索引擎上如果网站被收录,通常也会显示这三方面的内容。网页标题代表的网站的名称,而其他关键词和网站描述都是围绕标题进行扩展的,一般情况下,一个不知名的网站在网页标题描述上,除了品牌名字之外,还要加上一大堆关键词,因为,你的品牌知名度很小,只有通过目标关键词获得用户关注,关键词的热度大于企业品牌的时候,网页标题上加上一大堆关键词,显然是不可或缺的。  关键词并不是想象中那么好,而且因为对竞争对手估计不足,一些热词几乎根本就做不上去,这个时候,就要想着用其他的词获得流量了,修改网页标题虽然犯了兵家的大忌,可是,在网站优化发展到瓶颈阶段的时候,这又是一个可行的方式之一。  以企业网站为例,在线下,可能以某种产品为主打,而到了互联网,这个主打产品销售疲软,反而另一个产品获得不菲的关注度,同时,企业生产的产品也是有周期性的,那么,在网站标题的描述上,就可能存在变动。  基于以上两个原因,为了网站发展,为了有利于网站优化,网页标题的修改是一件不可避免的事情,那么,修改后的网页标题怎样才能不会受到波动呢?  如果网站是新站的话,建议不要修改标题,先保持一段时间,新站建议不要刻意拉排名。  如果网站运营有一定的时间,超过2年以上,修改一次标题并不会造成什么影响,但是也不要频繁改来改去。  如果你确实修改改标题,请找个不要跟原标题差距太多的。网站修改标题,前提是对原有网站的优化,而不是网站要“改头换面”。  如果你碰到了最不幸的情况,就是修改标题导致排名下降,那请你不要灰心,只要搜索引擎重新收录,考核一段时间,还是会恢复过来了。seo心态是很重要的。  有一些站长朋友,还是对网站修改标题感到忐忑,那么,不妨在做标题修改的时候,做一些补救措施,比如说,在网站修改标题后,加大网站内容更新力度,加大网站外链发布频率,如果修改标题的跨度比较大的话,那么现有的关键词和要改的主关键词刷相关性,那么搜索引擎就会判断你修改的幅度不是特别大,会大大的缩短识别网站的时间。  显然,网站优化要善于灵活运用,不要过于固守,而当通过一些改动,或许会在网站运营困难的时候起到峰回路转的效果,当然,也不能过于盲动,因为很多站长在修改网页标题的时候,都会有一些担心,那么,把想到的一一罗列出来,找好对策,然后再去执行,这样的网站运营策略应该不会犯太大的错误!

  • SEO如何布局长尾关键词 SEO长尾关键词布局思路简析

    长尾关键词布局非常重要,因为涉及到网站后期优化效果。布局长尾词的第一点是挖掘和筛选长尾词,然后根据长尾词的竞争度以及相关性布局在网站的栏目页和内页。内页的长尾词围绕栏目页的竞争度大一点的短词来布局,不同栏目的长尾词不能互相交叉以及重叠。  问:SEO如何布局长尾关键词?  请问如何给网站做长尾关键词布局?关键词可以挖掘出很多,但不知道怎么把这些关键词使用上。1什么是长尾关键词?  2006年的时候,营销管理业界有一个新的理论,叫长尾理论。长尾理论不同于二八定律。长尾理论一出现,就首先得到了SEO业内的高度认同。直接借用了长尾这个名词来定义领域里面比较泛化而大量的关键词,统称为长尾关键词。  2长尾理论是互联网时代的独有现象  马云之前有个理论,说我的产品规模要翻几倍,增加一些服务器就好了。沃尔玛要再建多少多少店面。因为内容和产品的数字化后,信息存储方便。搜索引擎的出现,让长尾理论得以体现出来。所以,对网站来说也是内容越多越好。内容多,就意味着总会有一些内容适合这类需求的用户。  3长尾关键词等于做内容  没有内容页面来承载关键词,那关键词就无法部署,这是要解决关键词落地的问题。关键词是无法脱离内容来谈的。所以,做长尾关键词,本质上就是等于要做内容。如果网站没有几个做内容的策略方法,是很难把长尾关键词策略部署到站内去的。  4布局长尾关键词常见方法  做聚合,是做长尾关键词策略的常用方法。但聚合的页面质量不好的话,也会影响长尾策略效果的发挥。长尾关键词因为关键词量大的原因,所以只能考虑那种能够产生大量内容的方法来布局长尾关键词。  5长尾关键词的布局是SEO工作的核心  把长尾关键词布局得当,可以说是SEO工作的最重要的核心一点之一了。这个问题要解决并不简单。因为解决的好,就等于网站能够长期生产出高质量的内容。所以,这个问题如何解决的更好,是值得SEO人员好好思考的问题。  我的观点  不做长尾策略,网站的SEO效果终归有限。所以,如何部署长尾关键词策略,就是每个网站要发展起来过程中必须要解决的问题。

  • 如何辨别非自然链接 三种识别非自然性外链的方法解答

     方法一:单一的描文本化  当我们在建立网站外链的时候发现有些外链的锚文本非常单一,泽敏seo博客过调查和分析后得出这就是非自然外链,其实这种做法不管是对搜索引擎还是用户都没有帮助的,所以这也是属于优化过度的一种做法。而且,像站外的外链自然性按百度的理解应该是用户帮你发的才对,这时候的锚文本链接,我们是不能控制的,所以需要进行及时的处理,如果你的外链锚文本却是这种单一的,这很容易就能说明你是人为发的,这是有违自然性的。应该采取相应的措施进行处理,这样才能促进网站链接质量的提高。  方法二:相关性不强的链接  我们都知道判断一个网站的质量标准是网站与内容、链接之间的相关性,同时,这对于网站的建设也是有很大影响的。因此,如果我们在网站链接中发现有些链接的相关程度非常的低,那么这个链接就是非自然链接,对于网站的发展是不利的。也是我们需要删除掉的链接。所以我们在添加链接的时候一定要注重网站与链接之间的相关性,这样才能提高网站链接的整体质量。  方法三:链接的大起大落  我们知道发布外链需要合理、平衡,所以对于外链发布要求也是非常高的,如果我们今天你的外链是一百个,明天是一百一十个,那你的外链增长率就是百分之十。你的外链增长的趋势是平稳的,也是合理的。假如你今天一百个,明天你心情一激动就发了两百个,后天休息一下,一个没发。像这种起伏很大的情况,搜索引擎会认为不正常,这样的话,搜索引擎就会认为这样的链接就是不正常的,是非自然链接,所以,我们就应该要在发布外链的时候需要合理的进行发布,这样才能促进网站链接健康发展。  以上三种方法就是我总结出来的关于识别非自然性链接的方法,希望大家能够提高链接识别能力,提高网站链接质量,让网站链接优化之路更加宽阔。

  • 目前网站怎么优化才好?浅析当下网站优化的新思维新方法

     1、不要老做传统企业站,营销型网站更受搜索引擎喜欢。  传统的网站模式都一样,缺乏新意,已经引起人们的视觉疲劳。采用合适的图文形式,形象展示产品特色和优势的营销型网站,更能吸引大家的眼球。  2、网站内页细节要升级,要慢慢编制内部链接网。  新闻列表页里尽量读取一部分内容简介出来,以前的企业站大部分都是直接展示出新闻标题列表;公司简介和联系我们等页面,侧边栏最好设置点新闻推荐等栏目,避免内部链接过少;产品详情页尽量侧边栏展示一部分产品推荐,增加产品的丰富度;新闻详情页下面,最好设 置相关阅读等,增加文章连贯性。总而言之,内部内容要编制成网。  3、网站关键词并非不是越少越好做。  很多人有误区,关键词设置的越少,网站分配给这个关键词的权重越高,这个词越容易上来,有一定道理,但是实际操作中这 种现象不明显。关键词的设置要遵循的原则是,关键词要有相关性,尽量多设置,十几个都可以的。然后文章信息量尽量大,尽量高质量,体现出这些关键词的密度 来,关键词都会此起彼伏的上来,先后带动,互相影响,更好的达到优化效果。  4、外链的作用小了,但是反链很有用。  外链现在是辅助作用,优质的外链平台越来越少,做好内链显得更重要。尽量多的做一些优质友情链接,对网站很有好处。  5、优质内链和流量起到核心作用。  内链要咋做,首先内容要优质,尽量伪原创和原创,就算粘贴复制也尽量插入点图片,修改一下。一天四五条是正确的做法,做的好的站一天少不了四条新闻,你再原创没有数量也是白搭的。流量不用说了,正规的引流一下必不可少。

  • 网站死链怎么处理?SEO基础知识之死链的产生及其处理技巧解答

    在网站日常SEO优化运营过程中,运营者难免会遇到各种问题,其中,死链就是其中之一。死链的产生,对于网站在搜索引擎中的收录是不友好的,特别是当网站存在大量死链的情况下,会让整个网站体验特别不好。下面,江苏苏州SEO吴美福就要分享关于死链的产生及其处理技巧,以让大家的网站优化更加高效。  什么是死链  首先我们先来理解什么是死链。这个概念其实很好理解。每个网站都是有绝对URL路径,当一个链接打不开、报错时,我们称之为死链。当该链接打不开时,返回状态码为404的页面。大家可以想想,当用户点击一个链接,最终的结果是打不开,那么用户关闭网页、跳出率肯定会增加,从而间接影响到搜索引擎对网站的收录、排名以及整站质量。  死链产生的因素  所以,网站优化运营中,要定期地对死链进行排查。那么,死链产生的因素有哪些呢?主要有:1、服务器报错;2、页面删除;3、网站转移,网址出错;4、文章内容发生路径转移;5、人为的输错了网址等等,这些都可能产生死链。笔者尤为要强调的是,如果网站用的是一些第三方模板制作的模板型网站,往往很容易产生死链。所以,在SEO建站优化之初,就要考虑好,用模板建站,还是个性定制网站。建议不要贪图便宜而选择模板,否则后续进行网站优化特别麻烦。因为很多模板公司,根本不提供源代码,也不提供代码修改。大家要切记。  死链的处理技巧  死链的处理技巧有很多,这里笔者就列出几大比较容易掌握、简单易执行的方法。  1、制作404页面,将死链跳转至错误页面,让搜索引擎蜘蛛知晓这是一个死链。至于404页面如果制作,大家可以看看我的博客内容,里面之前有做专门介绍。  2、将死链提交给(百度、360等)站长平台,大家可以搜索,并注册一个账号,用死链检查工具检查出来,然后放在txt文件里面,提交至站长平台。  3、还有一种比较笨的方法,就是就是逐个把死链的地址改过来,当然这个效率会比较低,尤其是当有成千上万个死链的时候,你想想,这要改到何年马月?所以,还是运用前面两种方法靠谱。  4、保证服务器运行流畅、稳定,不要随便改动网站目录。  看完上面关于死链的产生及其处理技巧,相信SEO朋友们有个初步印象了,如果还有什么不了解的话,欢迎加我的联系方式进行交流哦。

欢乐城彩票 大象彩票 春秋彩票充值 春秋彩票官网 多盈彩票 大象彩票 优乐彩充值 欢乐城彩票 1博彩票充值 彩九彩票官网