您当前位置: 南顺网络>> 官方资讯
  • 南顺网络团队建议与企业文化建设

    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制作平台。南顺网络欢迎新老客户前来体验,请登录官方体验:www.ns868.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个互联网行业应用,让互联网+重塑传统企业边界,我们始终坚持为每个客户定制网站。

  • 为什么越来越少的人用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).删减现在放松一下,重新审视一下你的视角。刚刚在你的视网膜上所呈现的,不只有手机、电脑的屏幕,还有手机、电脑旁边的事物。无论是你的同事、桌上的多肉植物、乃至墙壁天花板,都与你现在阅读的文字一同出现在你的眼中。但是,你在读文章的同时是否有仔细观察过他们?这些信息与文章同时存在,只不过你的潜意识对信息进行了删减,所以没有过多占用注意力。人的视觉、听觉、嗅觉、味觉、触觉在同一时间内可以接触到大量的信息,但注意力却无法同时关注如此多的信息量。就像我们开篇曾说的,在嘈杂的环境中,你无法同时去理解所有人说的话。在你的注意力真正投射到某一事物上之前,你的潜意识会根据曾经的经验、事物的价值、生理需求等因素进行筛选,将对你更有价值或你主观想要了解的信息提供给你的主观意识,从而投入注意力。用户也是如此,每天将要面对大量的广告,无论软硬,无论使用什么形式展现,无论线上还是实体,用户所能接触到的推广信息远远超过了用户注意力的理解上限。所以用户会通过潜意识先一步进行筛选,删减掉其中大部分无价值信息,将注意力放在其想要关注或是真正有价值的信息上。

  • 青腾汇私访|区块链有泡沫,破了会再起来

    没什么比新技术,更能让互联网行业从业者产生集体焦虑了,“VR”、“AR”早已淡出,区块链开始逐渐成为互联网行业聚会或饭局的话题中心。腾讯开放平台副总经理王兰做了一个大致统计,在近日青腾汇会员的一次饭局上,共计提及区块链 60 多次。区块链代表了什么,是不是会颠覆互联网行业过往的商业模式,催生下一代互联网?它在全球有怎样的发展,有没有具体的应用?区块链的价值在哪儿,有哪些与区块链相关的创业机遇可以把握?  3 月 13 日,青腾大学校友圈“青腾汇”组织了区块链应用研讨会,由腾讯开放平台高级总监胡皓主持,NEO理事会秘书长陶荣祺,优权天成创始人、前哈佛区块链研究员车克达,Metaps执行董事、大中华区CEO郑希,德丰杰龙脉基金合伙人王岳华等人在研讨会上做了分享。优权天成车克达:哈佛大学区块链实验室的六大应用探索优权天成, 2015 年在美国硅谷成立, 2016 年搬到了深圳,该公司主要是把区块链的技术应用在供应链上。其创始人车克达毕业于哈佛大学信息工程专业,是哈佛大学区块链实验室的唯一一位中国研究员。在研讨会上,车克达分享了哈佛大学区块链实验室在 2015 年围绕区块链的可共同操控管理、全球化、安全、不可被篡改、透明、不可被更改的特点展开了 6 个方向的应用探索。第一个是可变应用的承诺,具体来说,就是像购买保险一样,用现在的钱为未来会发生的事情做担保,如果未来发生了什么事,实现兑换。第二个是无缝隙支付,属于交易范畴。现有的传统银行系统,在处理一些小额支付的时候,去中心化的负担非常重,区块链的模式,可以承担去中心化的模式,承载更多的小额交易。第三个就是信誉和用户参与。当大家有一个公共账户,或者是不可篡改的账本的时候,可以构建一个全新的信用系统,这个信用系统是所有的人都可以参与进去的,不会发生个人的信用被盗用或者是被篡改的问题。第四个是追踪和转移所有权,比特币是第一个基于区块链的应用,很好地诠释了所有权的概念,车克达认为,比特币的实质不是币,而是一个账本(系统),人们可以基于这个系统做一些事,比如可以延伸到数据的所有权,或者是映射到线下。第五个是积分系统,或者是用户忠诚度系统。区块链是打通各个积分提供方的平台或工具,这些平台或工具用区块链整合在一起后,就会出现积分的互换和积分的市场,优权天成为海南航空的航空里程,以及在机上的娱乐提供了一套方案,甚至是对集团内部的积分进行了一个整合。第六个是身份。区块链技术会把以后的身份证系统与线上平台的登录统一起来,现在用户可以通过微信登陆互联网应用,如果这些信息被区块链的账户体系采用的话,会激发更大的应用场景。车克达也表示,这六个方向是 2015 年他们在实验室进行的探索,现在区块链发展的方向已经更多元和更具体了,并且在实验室进行研究探索和实际应用到产业中是不一样的。Metaps郑希:游戏、金融领域会最先实现区块链技术的广泛应用郑希现任Metaps常务执行董事、大中华区CEO。Metaps成立于 2007 年,其核心商业模式是提供基于数据的建议,告诉用户如何增加应用内购买以及下载其他应用。郑希在分享中介绍了区块链在日本、韩国、瑞典等国家的应用及发展趋势。据他介绍,最快应用到区块链的,还是在游戏、金融领域。在日本,政府层面还没有明确的相关政策发布,但日本最大的三家银行,在组建自己的区块链开发团队,他们银行鼓励虚拟货币,当然这个虚拟货币和我们说的去中心化虚拟货币不一样。郑希认为,传统银行接受这种概念,对于整个金融业是一个非常大的进步。在企业层面,日本最近有个非常火的公司,年初的股价还是 500 日元, 3 月 13 日已经是 3000 日元,翻了六倍,这个公司把自己整体的系统换成了区块链系统,用户有什么问题的话,他们会有专业的人进行解答,用户如果是对这个专业的答案满意,会给出自己的评价和付费。在韩国,游戏虚拟道具的交易金额是巨大的,而且游戏是虚拟的东西,和区块链的匹配度非常高。韩国游戏道具的交易平台,本身就是一个足够大的市场,有足够的利润,会吸引很多用户。一般情况下,游戏这种中心化的平台会导致很多内部交易,价格不透明,无法判断道具的真假以及交易时间的延迟,韩国有的游戏公司就准备用区块链技术来进行改进。瑞典应该是全球,尤其是政府的层面,对区块链推进最积极、最主动的国家。前几天,瑞典政府宣布,今后瑞典的房地产交易跟进,全部通过区块链系统完成,从国家层面来导入区块链管理,在全球还是第一次。通过导入区块链技术,使原来要花几个星期或几个月的记录,在几个小时内就可以完成,可以大幅度提升效率。现在这一系统还在开发当中,可能很快会在瑞典的国会提交法案,法案一旦通过,会对整个链圈有很大的推动作用。德丰杰龙脉基金王岳华:区块链投资主要看市场、团队和产品王岳华市德丰杰龙脉基金创始人之一,曾三次创业,后加入德丰杰龙脉基金,从工程师转型为投资人。德丰杰龙脉基金是德丰杰在中国境内唯一的下属基金,于 2006 年 3 月正式成立,先后投资了精进电动,方恩医药、易宝支付、聚力传媒等业内龙头。而美国德丰杰基金是 1985 年成立的全球著名大型风险投资公司,旗下共管理着超过 60 亿美元的资本。在近 30 年的历史中,德丰杰共投资超过 600 创业公司,投资了百度、分众传媒、空中网、特斯拉、Twitter等全球知名高科技公司,其中在百度获得 50 倍的回报。王岳华表示:“我们(德丰杰龙脉基金)对区块链方向的投资看了好几年了,这个领域分成了区块链项目的投资和数字货币方面的投资。我们做的是价值投资,投资区块链项目时会考虑以下三个方面:首先,会看项目整体的市场走向,是公有链市场,还是私有链市场;其次是看团队,包括创始人、团队的核心优势、商业模式等都会考虑,第三会看产品模型,产品是怎样的,用户在哪里等。简言之,我们做区块链投资主要看市场、团队和产品。”在王岳华看来,在应用链的领域,游戏是最容易落地的,他透露,德丰杰基金、龙脉基金短期会更看好自带流量的应用链市场,在公有链方面,会侧重基础架构和底层研究的项目。NEO陶荣祺:区块链当前存在泡沫,但不是一件坏事陶荣祺是NEO理事会秘书长,有多年银行、银联、第三方支付及数字货币行业的从业经验,既是NEO联合创始人,还是上海国际金融研究中心特约研究员 、巴比特专栏作家以及腾讯旗下腾云智库成员。根据CoinMarketcap的数据,NEO是全球排名前十的数字货币。目前,NEO已与微软达成合作,与Bancor、Agrello、Coindash等国际知名的区块链项目建立了合作关系。陶荣祺从证券视角解读区块链的市场情况。陶荣祺认为:“从供需来看的话,区块链当前存在泡沫,但不是一件坏事。目前市场对区块链的需求比较小,供给越来越多,但这不是一个坏事,供给大于需求不一定就是坏事,因为价格在不断地降低,是从演化的角度来说,坏的东西会淘汰出去,留下来的都是好的东西,这是一个好事情,可以让一部分沉下心来做创新的公司取得突破。如果把区块链代币看成是一个证券的话,它的确是有泡沫,破了以后还会再起来,就像历史上新的融资形式一样,在一开始的时候,都会显得非常混乱,市场非常的有投资,非常的有泡沫,这种新的行业形式,都可以给我们社会带来好的价值投资渠道。”通过技术改善传统行业痛点是区块链应用的机会点三到五年是研讨会上各位大咖给出的区块链实现技术成熟的时间窗口。车克达认为,从技术的层面看可能是要三到五年,区块链才能实现大范围应用,“因为区块链是构建多方信任的技术,涉及经济利益的分配,同时技术本身也并没有非常成熟。”用以太坊为例,它在区块链行业里面,有三个不可兼得的东西:安全性、可扩展性和去中心化,这三者是不可兼得的,对企业客户来说最重要的就是稳定性和安全性。“现在的区块链技术,其实并不能很好的支撑这一点,所以现在还是属于探索期,需要三到五年的时间来进行成熟。”郑希也认为:“就应用而言,现在应用得最好的案例是比特币和以太坊,真正应用到实际的行业,还是需要一定的时间的。”在他看来,通过区块链技术对传统行业的痛点进行改善是区块链应用的机会所在,“经过两三年痛点的区块链改进以后,我相信会出现更多以区块链为技术独立出现的模型,但是现在来说的话,世界上有没有更多的能够用区块链的技术来完成的情况,至少从我们企业商业化的角度来说,现在还没有看到。我们都说区块链要颠覆互联网,能不能颠覆谁也不知道,但是作为足够有颠覆潜力的行业,它现在还处在一个前期的阶段。”在研讨会最后,各位大咖都表示,区块链还处于发展初期,从业者需要静下心来打磨产品,王岳华表示:“我们做投资主要是看产品出来解决什么问题,解决什么痛点。” 陶荣祺认为,需要让结果交给市场去验证。综合来看,区块链是来了,但一切才刚开始。

  • 彭蕾卸任蚂蚁金服董事长,这位阿里总政委,是如何帮马云提高战斗力的?

    4 月 9 日,阿里巴巴董事局主席马云今天向员工发出了一封内部信,宣布彭蕾将卸任蚂蚁金服董事长,蚂蚁金服CEO井贤栋将兼任董事长一职。对于上述调整,马云表评价:“这是蚂蚁历史上最重要的领导团队更替,不仅仅是为了传承,更重要的是蜕变。长江后浪推前浪,前浪方可闲庭信步,这是人材队伍上最大的成功。”马云在内部信中公布了彭蕾未来的工作安排,她将通过Lazada响应执行和探索国家“一带一路”的倡议,同时还会继续延续之前在女性和儿童权益保护方面的工作,唤醒这个世界更大的善意。“八年前,蚂蚁还叫支付宝;八年后的今天,蚂蚁带着已经成为中国新四大发明之一的支付宝,以及其他各种深入人心的服务,承载着全球消费者的期盼。”马云如是评价彭蕾和井贤栋带领的蚂蚁团队。在阿里担任过的职位,除了有蚂蚁金服董事长、蚂蚁金服CEO、支付宝CEO、阿里巴巴集团首席人才、市场部和服务部副总裁、阿里巴巴资深副总裁,彭蕾还是担当总政委的角色,统一阿里的价值观。她认为,阿里员工高度认可的价值观,不自觉的推动阿里的业务发展,尤其是当阿里处于发展瓶颈、困境的时候,统一一致的价值观挽救了曾经饱受争议的支付宝,蝶变成 750 多亿美元估值的蚂蚁金服,而心力、脑力、体力是阿里价值观的锻造素材。很多人都说,阿里的员工都被“洗脑”了,只知道干活,不太会计较个人得失。而曾经作为阿里行政人事及文化建设负责人的彭蕾对此深有感触。作为执掌过业务部门(蚂蚁金服)和职能部门(集团CPO)商界女强人,彭蕾将价值观浸润到蚂蚁金服的土壤中,猎云网综合其公开演讲分享及投资界文章报道,展现阿里价值观对业务的推动以及塑造法则。以下为彭蕾自述内容:阿里独有:价值观考核占50%的KPI阿里的价值观是“让天下没有难做的生意”,阿里的所有业务都是基于这点展开。价值观和企业文化看起来是很虚的东西,但其实它们是人们能看得到、摸得着的外显东西,它通过人的一言一行表现出来。通常一家公司到底怎么样,只要看厕所和前台两个地方,这两个最常用、最不起眼的地方最能体现公司文化,比如阿里的价值是服务中小企业,所以它的每个厕所、蹲坑的前面都有广告位。要让战略图景落地,必须要靠企业文化和价值观,之前作为首席人才官,我的职责是琢磨出一条条具体的东西,将它落地,让价值观能看得到、摸得着。比如马云提到阿里的精神之一是团队合作,我就要想团队合作在工作当中如何具体体现,而不是空落的套话,为此我们制定的条款必须具备指导性:有意见开会说,开完会埋头干,免得当面没意见,背后牢骚多。与一些企业不同,阿里对文化、价值观非常重视,很早之前就定下来将价值观考核作为KPI,并且专门成立组织部,组织部的职能就是了解员工,整天看团队、送温暖、聊家常。比如问员工买房没?有娃没?工作啥困难?客户啥情况?只要员工出现问题,组织部马上就能知道问题到底是什么。价值观考核占到整个测评权重的50%,形成了业务主管看业绩、政委考核价值观的KPI评分机制,只有两项评分都完美,员工才能奖金股权双丰收。另外我们也相信员工是能动的,对工作有着主动性,在阿里巴巴 10 周年的时候,我们也提出“打造员工幸福指数”这个概念。我们想知道,所有在阿里巴巴工作的人,他的幸福是由什么元素组成的。我们希望能找到一种触碰人心灵的方式,促进员工个人以及带动团队、组织成长,从而带动业务的成长,进而给更多的人创造价值。支付宝、余额宝……业务自然延展2010 年的时候,支付宝面临生存危机,央行第二代支付系统“超级网银”上线,国家队入场,电信运营商、金融机构会对我们形成冲击。再加上当时支付宝体验不佳,用户经常在客服电话里抱怨、批评、唾骂,不令人满意的用户体验让支付宝陷入内忧外困。之前说过,在企业逆境时,一致的价值观会自动修正企业前进路径。在接手支付宝之后,价值观的修正功能就会慢慢显现,阿里的使命是服务用户, 2010 年下旬的时候,在与监管、银行机构共同协调时,我们想除了网购以外,还有没有能够为用户提供其他的服务,看看金融机构有哪些没有做过的、做不了、不想做的地方。后来我们发现公共事业缴费,这种活最脏也最累,没有一家金融机构愿意做。开始打通各城市的公共事业缴费,每座城市、每个管理部门,一家一家去谈,为用户提供水电气和通讯、网络的网上缴费,支付宝得到越来越多的用户认可。同时我也经常上网看评论,如果发现产品体验不好,会立即让技术人员做优化调整,希望能够让我们的用户使用时非常的爽快。其实企业之间的差异在于细小的体验,如果体验本身做得好,客户价值事半功倍,有时候,一个非常好的事,由于你的细节粗糙,客户使用过程就很狗血,很不爽。余额宝的诞生则是阿里基因里的“利他性”,从 2003 年成立,一直有用户抱怨,钱放在支付宝里没有利息,我也觉的这是一件不同公平的事。阿里一直认为“客户利益第一位,只要对客户有利,就不是问题”,只要对用户有利,就可以去做。出于这样的想法,我们与天弘基金合作,推出余额宝,将钱投向货币基金,把投资门槛降到 1 分钱。后来众所周知,我们的想法就得到市场认可,截至今年三月底,余额宝用户总数就突破 3 亿,资产规模破万亿元。从支付宝到余额宝,按照解决用户问题的观点出发,支付宝的业务场景自然的延伸。正所谓“一生二、二生三、三生万相”,从淘宝开始,自然需要去面对网上的支付难题,支付宝应运而生,之后还遇到网上中小商家的融资难题,进而又会衍生出保险、理财等等一系列投资需求,因此就会有支付宝,最后逐渐演变成蚂蚁金服。阿里价值观秘诀:心力、脑力、体力当企业遇到挑战或是困难时,价值观就会第一时间会出现刺激反应。价值观的构建是必要的,我认为需要从心力、脑力、体力三方面去统一企业的价值观。早在 2001 年,互联网寒冬的时候,阿里业务大量关停,我们就在讨论价值观,讨论“客户第一”、“直言有讳”到底是什么意思。其实职位越高,价值观越重要,现在阿里所有的合伙人,作为集团里时间最宝贵的人,每年雷打不动的都要聚 3 到 4 次,每次 2 到 3 天的时间,去商讨合伙人制度:合伙人存在的价值是什么?他要做些什么事情?甚至怎么评估作为合伙人该承担的责任和创造的价值?包括整个集团的未来、愿景和使命。1、心力是最重要的,是企业想成为一个什么组织,创业者必须始终带着方向和目标感,然后一点点吭哧吭哧做起来。但现实中创业者会遇到很多繁琐的问题,投资人利益诉求、新老团队融合……当被这些繁琐的小事包围时,企业可能会失去目标,这时就要回过头看看,想一想,你究竟是为什么去创业。蚂蚁金服的服务方向是服务银行懒得招呼的小微客户,为了降低用户交易成本、提高便捷性,蚂蚁金服“去IOE”化,组建技术团队自己搞,如果成本很高,小微用户的体验就会很不好。“去IOE”化实现后,蚂蚁金服大笔支付成本降到 2 分钱,用户能够免费跨行和跨地域支付。在交易费用上自己省钱,但是作为金融机构,我们投入巨大的资源保护信息安全,蚂蚁金服平均每天要抵御 1000 次的DDOS拒绝服务攻击、 2000 万次的Web入侵和 2 亿次的暴力破解。蚂蚁金服在技术上的一加一减,我们付出了巨大的努力,而这一些的选择,就是为要这用户体验去做。2、其次就是脑力,今天的创业环境确实很难,互联网已经渗透到生活的方方面面,想去发现一个尚未被人所知的领域不太容易了。因此要对困难、变化要有足够的敏锐,要能够善于解决问题。 2013 年,余额宝爆发后,央行、证监会、审计署等部门对支付宝审查,仅监管机构会议就有四十多次,另外银行认为是我们动了他们的蛋糕, 2014 年 3 月,中农工建四大行宣布全面下调快捷支付额度,以“保护用户资金安全”,工行更是关闭了支付宝所用接口。监管谨慎、银行联合绞杀,余额宝面临生存困境,我们也不得不去面对这些问题,去与监管和银行沟通,告诉他们余额宝与银行客群不一样,余额宝的交易量只占到存款总量的1%,其中人均投资为 5000 元,是小额客户,与银行是互补关系。解决问题最重要的还是回到最根本,去问自己那几个问题:我的客户价值是什么?我是谁?我从哪来?我要到哪去?3、最后是体力,主要是执行力,企业好的执行力,是要具体量化的,如达成的用户数、满意度、财务指标,它能够体现在某一个指标上面,产生结果。在阿里,经常会做批评与自我批评,不是一对一,都是群review的方法。比如我是一个CEO,下面有 10 个下属,我们会用半天的时间一起共同做群review。首先讲自己的问题,这一年下来,哪些方面做得好,哪些方面做得不好,自己去剖析。等自己自残完了,再由其他人去点评放枪,每个人都给他反馈,这一年做得怎么样:我觉得你哪些地方做得对,哪些地方做得不对。这是一个残酷的过程,阿里每年都会做,当面告诉他是是多少分,是满足期望,还是超出期望,是达标还是不达标。

  • 神秘组织喜提,为何赶不尽也杀不绝?

    文/金错刀频道 浪魏仙喜提是什么?它是最近火爆于网络的神秘组织,常常以狂傲的语气、惊人的配图,来达到宣传自己、征服群众的目的。他们庞大却零散,相似却不雷同。来,看几张图,快速入门一下。并且,陆地已经搁不下他们了。还要上天,与太阳肩并肩。没错,喜提们也就是那些无脑微商,如今已成为广大网友的快乐源泉。1那些年,喜提们秀过的智商下限面对每天朋友圈刷屏十几条的微商代理,看看他们的宣传内容,完全是把我们的智商拿起来放在地上摩擦。产品有多牛我不知道,P图技术还是不错的!起死回生术?不得了不得了,中科院负责修仙?微商,我看你都不是上天了!你是要冲破宇宙!微商徽商,傻傻分不清楚。这水平还做生意呢?一定是张冰冰、陈子怡吧,戏怎么这么多呢?!微商还惯用鸡血法,朋友圈里整天就是梦想,动不动就拉上马云王健林,还把拉黑自己的人,冠以“不努力”的负面角色,完完全全的道德绑架。真想告诉那些微商参与者:你们脚踩的不是梦想,而是直接践踏了智商!2总把自己意淫成创业者微商,不是创业,但是看那些微商代理呢?一个个把自己标榜的像个创业者一样。我们都知道,商业这种东西,是有自己的一套完整运作体系的,上游至产品研发、货源把控,中游至产品推广、客源开拓,以及售后的客户维护、售后服务等环节在内的一套完整的运营系统,每个环节环环相扣,看似简单,但其实任何一个环节拿出来都是相当复杂和庞大的。但是反观这些代理的朋友圈,不是今天提宝马就是业绩冲破 5000 万,仿佛成功就在眼前一样,因为一部手机就唾手可得,实在荒谬。微商代理的目标人群是学生党、宝妈,这是一群在时间上比较自由、几乎无收入的人。而微商代理正是牢牢抓住了她们不劳而获、希望一本万利的心理,于是用一堆三无产品给她们画了一个美好未来的大饼。根据统计,截至到 2017 年微商从业者人数已突破 5000 万人。在这庞大的微商市场中,起码有80%的从业者为女性。然而,如果他们一旦陷入微商代理的深渊,就很难把自己救出来。原因很简单,当他们还在苦闷于找不到消费者,其实他们就是整个微商代理顶层的消费者。很多所谓的微商赚钱模式,就是依靠不断地拉下线方式盈利,他门口中的产品,其实全卖给了下线代理,并没有实际客户。可能“喜提”一族真的存在,但是他们赚的钱都是来自于下线代理购买产品的费用,并且这一部分人也只是金字塔顶端的一小撮人群。下图就是从某乎上看到的,终极微商大代理,可以说是足够专业了。为了使线下更加安心的加入组织,这些顶层的人努力地去办晚会、请过气明星,给线下的人一种我司产品很有前途的模样。不然就不会闹出前段时间,微商“喜提”美国前总统奥巴马的事件了。想必那个时候奥巴马比就任时在朋友圈的出镜率还要高。3一个大会企图拯救微商?做梦!再过几天,居然有一个微商大会要举办!还是第四届!真是惊呆了!你说徽商大会我都信!不管如何再定义微商,目前中国的微商现状是非常差的。近几年内,微商的爆发式增长使朋友圈一度被广告信息持续刷屏,从而严重影响了用户体验以及大家心中的对微商的印象。想真的改变,是非常难的事情。这个所谓的第四届微商大会的预告,让人看了也觉得非常怀疑。1、大会预告里提到:事实上,发展微商,首先得发展“人”,“引流”、“团队裂变”是前提,也是必要条件。没错,人的裂变很重要,但这指的是用户的裂变,而不是代理商的裂变!产品都卖不出去了,代理商再增长又如何?如果用户的增长量远远低于代理商的增长量,我们是不是可以把这种行为理解成变相传销呢?有多少微商投入了大批资金进货,结果仅仅依靠朋友圈那点被“作死”的人脉,根本销售无门,导致货品囤积。在这种情况下,他们开始造假,伪造各种聊天记录,显得自己的产品销售很火的样子,这就是为了吸引新代理的加入,从而顺利甩锅,这难道不是变相传销?2、大会预告里还是提到:要与大数据结缘。解释到:微信的原点是社交而非营销工具,这就决定了微商比传统电商更能精准找到用户群和互联大数据,从而大幅提升企业服务和订单量。我们都知道大数据,是一个宏观的概念,往往也都聚在信息量很大的大企业手中,不然也不会闹出前段时间Facebook的事件了。然而仅仅是多加几个好友的微商,就想达到大数据的程度?一定是在搞笑。微商们可能想说,大数据赋能微商,不,那是电商的事情,这个热闹你们就甭想凑了。3、更搞笑的是,刀哥居然看到了微商要与区块链结合!在大会的宣传资料上说,该论坛将由一名央视主持人来主持,并邀请中国电子商会微商专委会秘书长,以及 10 家年销售额超过 10 亿元的微商代表作为嘉宾。玩笑,一定是在开玩笑!区块链技术,是很不容易踏入的领域,刀哥身边的大佬很多,但也不是很多人敢自称很懂区块链,区块链在他门口中就这样轻易的与微商结合了?!难道80%的女性代理商都是科技精英出身?!真是一波蹭热点好手。不仅如此,连之前炒作的沸沸扬扬的创业“神奇少女”王凯歆也开始加入微商队伍。一篇《 98 年鬼才少女新项目袭来!第一波创始人正式招募中!!!》的文章,成为了王凯歆微商的开始。按她所说的意思,掏 5 万元“入会费”成为合伙人后,能够获得公司提供的所有资源:引流、策划、招商、订单、培训等一整套系统服务,目标是帮助 50 人年回款 200 万以上。同时她还在文中立下目标:赚一个亿!并表示 50 个“联合创始人”可瓜分一个亿的现金回款红利, 50 个人坐拥品牌最高的经销代理权限, 50 个人享受终极联合创始人形象打造,媒体曝光!但在文中并未看到任何产品和商业模式,完完全全的在忽悠人。是不是以后可以讽刺人说,人都败落到去做微商了?正如热评第一的网友所说:“淘宝生意做不好可能是个人能力问题,微商做不好,那是必然问题!”

  • 为了拯救吃货,这位日本程序员做了一个拉面馆定位器

    吃货们往往都会遇到这样一个窘境:深夜看到一些报复社会的美食照片,愤懑之余自然会好奇它们的出处。可单纯靠图片一般都很难获知它们到底是出自哪家餐厅,这无疑给以后的觅食带来了很大的难度。不过现在通过机器学习软件,或许以后单纯靠照片,就真的可以辨别出它出自哪家门店了。Google 官方博客近期介绍了一项实验成果,来自日本 NTT Comware 道路监测系统研究开发的土井賢治,借助 Cloud AutoML 技术,将关东地区约 41 家日本次郎拉面店(ラーメン二郎)的 48000 张实拍拉面照片导入到程序中,从而辨别每碗拉面的“出身”;而次郎拉面店则是日本地区非常著名的连锁拉面品牌,以提供份量十足的拉面配料而闻名。这些照片都已经提前标注好了位置数据,所以在经过 24 小时的 AutoML 数据训练后,最终出炉的 AI 已经能很精准地对拉面照片进行辨别了,准确率达到了 94.5%。这个检测方式的过程也十分有趣。据日本媒体 HRナビ 报道称,最初土井賢治受到同事项目启发,便使用 Apache MXNet 深度学习技术框架来进行实验,样本则是从 Twitter 和 Instagram 收集到的 33000 张照片,那时候的准确率已经达到了 87%。他还专门在 Twitter 上开通了一个 ID 为 jirou_deep 的机器人账号,上面就有大量自动识别拉面照片的案例。而现在转而使用 Cloud AutoML 技术后,准确率进一步提升到了 94.5%。起初,土井賢治认为 AI 是将碗的形状和桌面的颜色来作为参考目标,以便有效针对不同餐厅进行分类,然而这对于一家连锁餐厅来说有些不切实际,毕竟大家用的都是同一套的模板,也不可能让 AI 靠“味觉”来对拉面进行辨别。目前真正的检测手法还在研究当中,但最大的可能性应该是根据不同餐厅拉面的叉烧体积和配料差异来进行区分的。虽然从图片来看,次郎拉面馆的制作手法都比较粗犷,但要说叉烧在形态上的微小差异,大概真的只有机器学习才能察觉吧。不过就如开头所说,对于一些没加地理位置标签的美食照片来说,现在借助 AI 的确可以更有效地查找对应的餐厅位置。这背后也少不了 Cloud AutoML 和图像识别技术的协助,除了这项实验,Cloud AutoML 技术也有一些比较成熟的项目,比如迪士尼乐园便会通过建立好的图像模型,就可以很方便地对商品进行品类或角色的划分。事实上,Cloud AutoML 所面向的也正是一些没有太多 AI 技术背景的开发人员和企业,像微软也有类似的名为 Custom Vision 的图像识别服务,目的就是在于将一些重复性较高的工作交给机器来实现。虽然从原理来看,前期依旧需要做人工调试工作,但对于有特定分类需求尤其是图像分类的商家来说,只需要上传一些照片做样本,就可以很快速地建立一个定制化的机器学习模型。不得不说,这种自动化服务对于降低人力成本来说的确十分有效。

  • 想要用户迫不及待点开你的广告,不如试试这5种方法!

    来源  |  后厂村广告局(微信号hcc_guanggao)不得不承认,我们身处的这个时代,广告比任何时候更要无所不在。尤其是近几年,随着智能手机人手一部的普及,广告已经见缝插针地渗透到每个人的身边。我们发现,越来越多的广告开始出现在我们刷朋友圈、刷微博、看新闻的过程中。这些广告与APP里的原生内容越来越像,这种广告的形式被称为“信息流广告”。APP里的内容就像永不间断、迅速流动的水流,“信息流广告”穿插在其中,试图争夺你飞速转动的眼球,想要吸引你下一秒的注意力。不过也出现了一个有趣的现象:很多用户通过标题就能识别软硬,看完几句就能判断文章走没走心,甚至练就了一秒屏蔽、取关营销号的独门绝技。用户变得越来越难伺候,他们的口味越来越叼,这意味着我们创造信息流广告的策略也需要进行调整,以应对变化。不过在进行调整之前,首先我们必须要明确一个事实:合格的信息流广告并不是广告。当你把信息流广告当成广告,并按照传统广告的思路来写的第一秒,你就错了。你对产品的夸张表达和自我吹捧,用户一眼就会跳过,而且还会心中暗骂这是可恶的广告。不能把信息流广告写成广告,那应该把它写成什么呢?好的信息流广告,当它出现在用户浏览的过程中,试图吸引用户的注意力时,不会显得那么突兀或者碍眼。好的信息流广告,像一条给用户的善意提醒,像一条迟来的通知,像一个好玩的新消息,或者像一个有趣的故事。今天,我们就告诉你 5 大模板,手把手让你掌握信息流广告内容化的正确姿势。1 “通知用户”模板请回忆一下自己看到“通知”时的场景。早上去上班时,物业办公室门口贴出通知:“假期临近,我市最近扒手增多......请您外出时注意关紧门窗......”或者手机一响,一条新的推送:“xx会员节......会员权益赶快抢......”在接到一条通知时,或许通知的内容本身很无聊,但是当这条消息被作为一条“通知”的形式收到后,直觉上你就会预感现在可能有什么新情况发生,而这些情况是我有必要知道的。事实上,通知推送已经成为很多用户打开某些低频App的唯一理由。这就是通知给人带来的感觉。在创作广告时,我们要做的就是把这一感觉复制到用户阅读信息流广告的情境之中,让用户感觉到你是在提供一个有用的通知,点开文案后预期会获得一些有用的信息。这就是“通知用户”模板。具体的操作方式其实很简单:在原本的广告前面加上提示词,例如“新消息、友情提示、今天、据说”等,从而让你的广告,更像一个给用户的通知。例如:春节火车票预订,省去订票烦恼。这条文案是直接描述的形态,用户读了之后可能并不会有什么特殊的反应。而如果我们使用“通知用户”模板,这条文案就可以写成:通知:春节火车票不用去抢票了,在这里就可以预订。是不是有一种读完之后注意力迅速被抓起的感觉?关于“通知用户”模板的效果对比,下面是一些例子。直接叙述:使用“通知用户”模板改写后:2 “引出疑问”模板请回想一下是否存在这样一种情况:有些信息流广告在标题中就已经把内容说完了。比如:单词轻松背,一个月你就能看懂英文版哈利波特。读完这一条文案,用户的感觉会是什么呢?“我知道这条广告点击进去,内容要么是教我背单词的方法,要么就是英语培训机构的介绍。”换句话说,用户在读完文案的瞬间已经知道了你将要表达的内容。这样会导致用户放弃点击行动,因为他已经知道你要说什么了,丧失了点击的动力和兴趣。“欲要卖米饭,先制造饥饿感”。在标题文案创作中,你想让用户点击,进一步探索,我们首先需要引起用户的兴趣。用户好奇你在说什么,就会产生点击的欲望。来听个故事。在电影《华尔街之狼》中,莱昂纳多·迪卡普里奥饰演乔治。有一次,乔治需要招聘推销员。小李子拿出一只笔,然后问:“把这支笔推销给我。”大部分推销员的做法其实如出一辙:这是一直非常好用的笔!这是一只德国进口的优质笔,买下它吧!而日后成为乔治左膀右臂的天才推销员是这样说的:能帮我签个名吗?事实上,大部分的推销员只是在讲笔的卖点,但实际上陈述这些卖点并没有与消费者产生什么联系。“能帮我签个名吗?”则在瞬间引起了消费者的兴趣,效果自然更好。回到上面那条英语教育的文案,如果我们进行这样的修改:记住这些英语单词,你也能看懂英文版哈利波特。“记住这些英语单词——那么是哪些英语单词呢?”用户在读完后会产生天然的好奇心,从而产生进一步探索的欲望。这样也就有了下一步点击的动力。我们对下面这些例子也用“引出疑问”模版进行了改写。直接叙述:使用“引出疑问”模版改写后:

  • 超过20万张可商用图片!美国大都会博物馆开放下载了!

    这几年陆陆续续有不少大型博物馆、美术馆将馆藏数位化,放在无远弗届的网络上,让使用者不用千里迢迢跑去现场,通过电脑或行动装置也能在家找到完整资讯。例如:纽约公共图书馆开放 18 万张历史相片、地图等高画质相片让使用者免费下载;大英图书馆推出百万张复古艺术照片;大英博物馆更将历史文物制作 3D 模型图放到 Sketchfab 开放下载列印;去年台湾的国立故宫博物院也释出超过70, 000 张图像资料到资料开放平台。本文要介绍同样是来自「美国大都会博物馆」的免费资源,当前收录超过 45 万张艺术品及文物图片。其中有不少采用公众领域(Public Domain)授权方式释出,这意味着使用者可以搜索并免费下载,将素材使用于商业及非商业用途。除了以关键字进行搜索外,还能以艺术家、文化、材质、物件种类、地理位置、日期和年代筛选分类,公众领域授权的照片大约有20 万张以上。如果你正在寻找灵感,或许可以到美国大都会博物馆 The Met 图库找找,应该能有收获。The Metropolitan Museum of Art网站链接:https://www.metmuseum.org/art/collection/开启 The Met  网站,直接输入关键字进行搜索,如果想浏览所有内容,可直接点选搜索框最右侧的黑色箭头。在我写这篇文章时,The Met  一共收录超过45 万张艺术品照片。将页面拖曳到最下方,除了可切换不同分页,还能选择在结果页面每一页显示多少内容,想在单一页面里显示更多照片,可从底下 Results per page  选择20、50 或100。要注意的是 The Met 并不是所有图片都是公众领域(Public Domain)授权,可从左侧的筛选功能选取「Public Domain Artworks」设定只显示公众领域图片,勾选后大约还会有超过二十万张的相片可以搜索浏览。那么要如何从 The Met 开放资料库下载这些图片呢?一样点选进入艺术品页面,下方会看到有个「Public Domain」标示,代表这件作品照片是采用公众领域授权,确认后点选旁边的下载按钮(如下图箭头所示)就能开启原图页面。最后,选择「另存图片」即可将它下载、保存使用。值得一试的三个理由:美国大都会博物馆资料库收录超过45 万张艺术品和文物图片。超过20 万张采用公众领域(Public Domain)授权释出。可自由检索、下载,无须注册或登入帐号。

  • 经常被忽略的动效,对于用户体验设计是如此重要

    动画效果是用户体验设计中绕不开的环节,而在移动端交互当中,动效是作为转场的润滑剂,承上启下的重要环节而存在。无论是发送信息,打开设置,选中元素,导航到下一个页面,这些变化发生的时候,动效让这一切不那么突兀,自然地过渡,呈现状态变化,帮助用户更清晰的明白当前的状态,这是绝佳的方式。在今天的文章当中,我们尽可能系统地呈现动画和动效在视觉和交互上的常见功能和作用。呈现系统状态当用户通过交互触发界面行为的时候,他们希望能够看到视觉上的响应——整个交互系统应该明确地表示它已经收到了请求并且进行处理。以下是动效反馈让用户受益的几种常见的情况:确认用户行为。系统收到用户的反馈之后,通过动效告知用户它已经收到反馈了。视觉反馈防止了用户再进行更多的操作。通知用户他们交互的结果。下拉刷新更新内容。以加载指示器为代表的视觉反馈告知用户,系统已经开始处理之前的请求了。微妙的动画能够帮助用户理解正在发生的事情。等待内容加载时的动画。加载不一定是无聊的。现在几乎所有的 APP 当中都会在加载的时候借助微妙的动画来组织用户离开。加载动画给予用户「信息正在逐步加载」的视觉反馈,因此用户会在这个过程中感觉时间没有实际上那么快。用动效连接多步骤中不同的步骤有的时候,用户需要通过一系列的步骤来完成操作,步骤和步骤之间是需要连接起来的,借助动画,帮助用户将流程串联起来,顺畅地完成整个历程。下面的案例当中,展示了动画是如何将线性的事件串联起来的。

  • 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:java-net@java.sun.com。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;}总结暂时遇到的兼容性就是这么多,会持续更新以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

  • 关于redis,学会这8点就够了!!!

    1、redis是什么redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存、事件发布或订阅、高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串、哈希、列表、队列、集合结构直接存取,基于内存,可持久化。 2、支持的语言 3、redis的应用场景有哪些1、会话缓存(最常用)2、消息队列,比如支付3、活动排行榜或计数4、发布、订阅消息(消息通知)5、商品列表、评论列表等 4、redis数据类型Redis一共支持五种数据类:string(字符串)、hash(哈希)、list(列表)、set(集合)和zset(sorted set 有序集合)。(1)string(字符串)它是redis最基本的数据类型,一个key对应一个value,需要注意是一个键值最大存储512MB。(2)hash(哈希)redis hash是一个键值对的集合, 是一个string类型的field和value的映射表,适合用于存储对象(3)list(列表)是redis简单的字符串列表,它按插入顺序排序(4)set(集合)是string类型的无序集合,也不可重复(5)zset(sorted set 有序集合)是string类型的有序集合,也不可重复sorted set中的每个元素都需要指定一个分数,根据分数对元素进行升序排序,如果多个元素有相同的分数,则以字典序进行升序排序,sorted set 因此非常适合实现排名 5、redis服务相关的命令slect           #选择数据库(数据库编号0-15)quit             #退出连接info             #获得服务的信息与统计monitor       #实时监控config get   #获得服务配置flushdb       #删除当前选择的数据库中的keyflushall       #删除所有数据库中的key 6、redis的发布与订阅redis发布与订阅(pub/sub)是它的一种消息通信模式,一方发送信息,一方接收信息。下图是三个客户端同时订阅同一个频道下图是有新信息发送给频道1时,就会将消息发送给订阅它的三个客户端  7、redis持久化redis持久有两种方式:Snapshotting(快照),Append-only file(AOF)Snapshotting(快照)1、将存储在内存的数据以快照的方式写入二进制文件中,如默认dump.rdb中2、save 900 1 #900秒内如果超过1个Key被修改,则启动快照保存3、save 300 10 #300秒内如果超过10个Key被修改,则启动快照保存4、save 60 10000 #60秒内如果超过10000个Key被修改,则启动快照保存 Append-only file(AOF)1、使用AOF持久时,服务会将每个收到的写命令通过write函数追加到文件中(appendonly.aof)2、AOF持久化存储方式参数说明    appendonly yes             #开启AOF持久化存储方式     appendfsync always          #收到写命令后就立即写入磁盘,效率最差,效果最好    appendfsync everysec         #每秒写入磁盘一次,效率与效果居中    appendfsync no          #完全依赖OS,效率最佳,效果没法保证 8、redis 性能测试自带相关测试工具实际测试同时执行100万的请求 

  • 快速自检电脑是否被黑客入侵过(Windows版)

    我们经常会感觉电脑行为有点奇怪, 比如总是打开莫名其妙的网站, 或者偶尔变卡(网络/CPU), 似乎自己"中毒"了,但X60安全卫士或者X讯电脑管家扫描之后又说你电脑"非常安全", 那么有可能你已经被黑客光顾过了. 这种时候也许要专业的取证人员出场,但似乎又有点小提大作. 因此本文介绍一些低成本的自检方法, 对于个人用户可以快速判断自己是否已经被入侵过.1. 异常的日志记录通常我们需要检查一些可疑的事件记录, 比如:“Event log service was stopped.”(事件记录服务已经停止) “Windows File Protection is not active on this system.”(Windows文件保护未开启) “The protected System file [file name] was not restored to its original, valid version because of the Windows File Protection…”(受保护的系统文件XXX无法还原) “The MS Telnet Service has started successfully.”(Telnet服务开启成功)除此之外, 还可以看看有没有大量失败的登录日志或者被锁定的账户.查看事件日志有两种方式:1) 通过图形界面查看, 开始->运行 eventvwr.msc2) 通过命令行查看, 主要是使用eventquery.vbs脚本:C:> eventquery.vbs | more或者只看某个条目下的日志:C:> eventquery.vbs /L securityeventquery.vbs是使用可以查看命令行帮助或者微软的官方文档.2. 异常的进程和服务即在我们熟知的Windows任务管理器中查看是否有奇怪的进程在运行, 重点关注用户名是SYSTEM(系统)或者Administrator(管理员), 以及在管理员组的用户.当然, 你最好能熟悉正常的进程和服务, 不然也不知道某个进程是不是"异常"的. 如果不熟悉也不要紧, 对着任务管理器不认识的进程, 挨个google一遍也就能大概了解了.查找异常进程使用Ctrl+Alt+Del快捷键或者开始->运行taskmgr.exe打开任务管理器即可看到运行中的进程. 当然也可以使用命令行查看进程:C:> tasklist C:> wmic process list full查找异常服务1). 图形界面: 开始->运行 services.msc2). 命令行:C:> net startC:> sc query查找和每个进程关联的服务:C:> tasklist /svc3. 异常的文件和注册表如果磁盘可用空间突然减小, 我们可以查找文件看是否有异常. 通过开始菜单依次点击:开始->查找->文件或目录然后设置查找选项, 比如文件大小大于10000KB, 或者创建/修改时间在一周以内, 并搜索相关文件.对于注册表, 通常是查找自启动的注册点, 并检查对应的应用程序, 常见的启动点为:HKLM\Software\Microsoft\Windows\CurrentVersion\Run HKLM\Software\Microsoft\Windows\CurrentVersion\Runonce HKLM\Software\Microsoft\Windows\CurrentVersion\RunonceEx HKCU\Software\Microsoft\Windows\CurrentVersion\Run HKCU\Software\Microsoft\Windows\CurrentVersion\Runonce HKCU\Software\Microsoft\Windows\CurrentVersion\RunonceEx注: HKLM和HKCU分别是HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER的缩写.查看注册表有两种方式:1) 图形界面: 开始->运行 regedit.exe2) 命令行reg query <key>, 例:C:> reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run当然除此之外还有很多注册点可以进行自启动, 这个在下面说.4. 异常的计划任务接下来是查看异常的计划任务, 重点关注那些以管理员组或者SYSTEM权限, 或者是以空白用户名定时启动的任务.查看定时任务1) 图形界面, 可以通过开始菜单搜索Task Scheduler打开, 或者:开始->运行 taskschd.msc /s2) 命令行输出计划任务:C:> schtasks查看自启动程序1) 图形界面, 开始->运行 msconfig.exe2) 命令行:C:> wmic startup list full其他自启动入口要注意的是, msconfig这些命令只是列出了部分开机自动启动的程序, Windows开机自启动的方式很多, 包括劫持系统程序/动态运行库等方式,其中涉及到许多注册表入口, 感兴趣的朋友可以查看网上的其他文章.5. 异常的网络流量常用的网络相关自检命令:检查防火墙配置:C:> netsh firewall show config查看共享文件, 检查是否是主动分享的:C:> net view \127.0.0.1查看本机活跃的会话:C:> net session查看本机对其他系统打开的会话:C:> net use查看NetBIOS over TCP/IP 的激活状态:C:> nbtstat -S查看当前网络连接和监听情况:C:> netstat -na持续输出上述信息, 每3秒刷新一次:C:> netstat -na 3查看网络连接对应的进程id(-o)和进程名字(-b)C:> netstat -naob注: netstat -b 除了显示进程名字, 还显示了进程所加载的DLL信息, 所以持续输出的话会消耗比较多的CPU资源.对于其他选项, 可以通过netsat /h查看帮助.6. 异常帐号重点查看新添加进管理员组的帐号.1) 图形界面方式:开始->运行 lusrmgr.msc -> 点击用户组 -> 双击管理员然后查看里面的用户列表.2) 命令行方式:C:> net user C:> net localgroup administrators小结当发现电脑突然变卡的时, 应当及时查看任务管理器看是否有某个异常进程占用了大量CPU资源; 当系统异常死机时,应当及时检查对应日志, 看是否是某个程序执行exp导致的崩溃. 总而言之, 最好经常按照上述方式快速对系统做一遍检查,以即使找出可能是电脑入侵引起的反常迹象, 以免导致个人信息和财产遭受损害.

  • 双重检查锁定与延迟初始化

    分享一篇13年曾经收藏学习的一篇文章,写的非常好~~在java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时程序员可能会采用延迟初始化。但要正确实现线程安全的延迟初始化需要一些技巧,否则很容易出现问题。比如,下面是非线程安全的延迟初始化对象的示例代码:public class UnsafeLazyInitialization {     private static Instance instance;     public static Instance getInstance() {         if (instance == null) //1:A线程执行         instance = new Instance(); //2:B线程执行         return instance;     }}在UnsafeLazyInitialization中,假设A线程执行代码1的同时,B线程执行代码2。此时,线程A可能会看到instance引用的对象还没有完成初始化(出现这种情况的原因见后文的“问题的根源”)。对于UnsafeLazyInitialization,我们可以对getInstance()做同步处理来实现线程安全的延迟初始化。示例代码如下:public class SafeLazyInitialization {     private static Instance instance;     public synchronized static Instance getInstance() {         if (instance == null)             instance = new Instance();         return instance;     }}由于对getInstance()做了同步处理,synchronized将导致性能开销。如果getInstance()被多个线程频繁的调用,将会导致程序执行性能的下降。反之,如果getInstance()不会被多个线程频繁的调用,那么这个延迟初始化方案将能提供令人满意的性能。在早期的JVM中,synchronized(甚至是无竞争的synchronized)存在这巨大的性能开销。因此,人们想出了一个“聪明”的技巧:双重检查锁定(double-checked locking)。人们想通过双重检查锁定来降低同步的开销。下面是使用双重检查锁定来实现延迟初始化的示例代码:public class DoubleCheckedLocking {                 //1     private static Instance instance;                    //2     public static Instance getInstance() {               //3         if (instance == null) {                          //4:第一次检查             synchronized (DoubleCheckedLocking.class) {  //5:加锁                 if (instance == null)                    //6:第二次检查                     instance = new Instance();           //7:问题的根源出在这里             }                                            //8         }                                                //9         return instance;                                 //10     }                                                    //11}                                                        //12在java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时程序员可能会采用延迟初始化。但要正确实现线程安全的延迟初始化需要一些技巧,否则很容易出现问题。比如,下面是非线程安全的延迟初始化对象的示例代码:public class UnsafeLazyInitialization {private static Instance instance;public static Instance getInstance() {if (instance == null) //1:A线程执行instance = new Instance(); //2:B线程执行return instance;}}在UnsafeLazyInitialization中,假设A线程执行代码1的同时,B线程执行代码2。此时,线程A可能会看到instance引用的对象还没有完成初始化(出现这种情况的原因见后文的“问题的根源”)。对于UnsafeLazyInitialization,我们可以对getInstance()做同步处理来实现线程安全的延迟初始化。示例代码如下:public class SafeLazyInitialization {private static Instance instance;public synchronized static Instance getInstance() {     if (instance == null)         instance = new Instance();     return instance; }}由于对getInstance()做了同步处理,synchronized将导致性能开销。如果getInstance()被多个线程频繁的调用,将会导致程序执行性能的下降。反之,如果getInstance()不会被多个线程频繁的调用,那么这个延迟初始化方案将能提供令人满意的性能。相关厂商内容UCan下午茶 悟有所值——一站式高可用数据平台设计与实践京东物流系统自动化运维平台技术揭密 阿里巴巴基础运维平台实践经验谈 Uber SRE团队如何做好守护系统稳定的最后一道防线? 腾讯云多Kubernetes集群高可用运维实践相关赞助商CNUTCon全球运维技术大会,9月10日-9月11日,上海·光大会展中心大酒店,精彩内容抢先看在早期的JVM中,synchronized(甚至是无竞争的synchronized)存在这巨大的性能开销。因此,人们想出了一个“聪明”的技巧:双重检查锁定(double-checked locking)。人们想通过双重检查锁定来降低同步的开销。下面是使用双重检查锁定来实现延迟初始化的示例代码:public class DoubleCheckedLocking { //1private static Instance instance; //2public static Instance getInstance() {               //3     if (instance == null) {                          //4:第一次检查         synchronized (DoubleCheckedLocking.class) {  //5:加锁             if (instance == null)                    //6:第二次检查                 instance = new Instance();           //7:问题的根源出在这里         }                                            //8     }                                                //9     return instance;                                 //10 }                                                    //11} //12如上面代码所示,如果第一次检查instance不为null,那么就不需要执行下面的加锁和初始化操作。因此可以大幅降低synchronized带来的性能开销。上面代码表面上看起来,似乎两全其美:在多个线程试图在同一时间创建对象时,会通过加锁来保证只有一个线程能创建对象。在对象创建好之后,执行getInstance()将不需要获取锁,直接返回已创建好的对象。双重检查锁定看起来似乎很完美,但这是一个错误的优化!在线程执行到第4行代码读取到instance不为null时,instance引用的对象有可能还没有完成初始化。问题的根源前面的双重检查锁定示例代码的第7行(instance = new Singleton();)创建一个对象。这一行代码可以分解为如下的三行伪代码:memory = allocate();   //1:分配对象的内存空间ctorInstance(memory);  //2:初始化对象instance = memory;     //3:设置instance指向刚分配的内存地址上面三行伪代码中的2和3之间,可能会被重排序(在一些JIT编译器上,这种重排序是真实发生的,详情见参考文献1的“Out-of-order writes”部分)。2和3之间重排序之后的执行时序如下:如上图所示,只要保证2排在4的前面,即使2和3之间重排序了,也不会违反intra-thread semantics。下面,再让我们看看多线程并发执行的时候的情况。请看下面的示意图:由于单线程内要遵守intra-thread semantics,从而能保证A线程的程序执行结果不会被改变。但是当线程A和B按上图的时序执行时,B线程将看到一个还没有被初始化的对象。※注:本文统一用红色的虚箭线标识错误的读操作,用绿色的虚箭线标识正确的读操作。回到本文的主题,DoubleCheckedLocking示例代码的第7行(instance = new Singleton();)如果发生重排序,另一个并发执行的线程B就有可能在第4行判断instance不为null。线程B接下来将访问instance所引用的对象,但此时这个对象可能还没有被A线程初始化!下面是这个场景的具体执行时序:这里A2和A3虽然重排序了,但java内存模型的intra-thread semantics将确保A2一定会排在A4前面执行。因此线程A的intra-thread semantics没有改变。但A2和A3的重排序,将导致线程B在B1处判断出instance不为空,线程B接下来将访问instance引用的对象。此时,线程B将会访问到一个还未初始化的对象。在知晓了问题发生的根源之后,我们可以想出两个办法来实现线程安全的延迟初始化:不允许2和3重排序;允许2和3重排序,但不允许其他线程“看到”这个重排序。后文介绍的两个解决方案,分别对应于上面这两点。基于volatile的双重检查锁定的解决方案对于前面的基于双重检查锁定来实现延迟初始化的方案(指DoubleCheckedLocking示例代码),我们只需要做一点小的修改(把instance声明为volatile型),就可以实现线程安全的延迟初始化。请看下面的示例代码:public class SafeDoubleCheckedLocking {     private volatile static Instance instance;     public static Instance getInstance() {         if (instance == null) {             synchronized (SafeDoubleCheckedLocking.class) {                 if (instance == null)                     instance = new Instance();//instance为volatile,现在没问题了             }         }         return instance;     }}注意,这个解决方案需要JDK5或更高版本(因为从JDK5开始使用新的JSR-133内存模型规范,这个规范增强了volatile的语义)。当声明对象的引用为volatile后,“问题的根源”的三行伪代码中的2和3之间的重排序,在多线程环境中将会被禁止。上面示例代码将按如下的时序执行:这个方案本质上是通过禁止上图中的2和3之间的重排序,来保证线程安全的延迟初始化。基于类初始化的解决方案JVM在类的初始化阶段(即在Class被加载后,且被线程使用之前),会执行类的初始化。在执行类的初始化期间,JVM会去获取一个锁。这个锁可以同步多个线程对同一个类的初始化。基于这个特性,可以实现另一种线程安全的延迟初始化方案(这个方案被称之为Initialization On Demand Holder idiom):public class InstanceFactory {     private static class InstanceHolder {         public static Instance instance = new Instance();     }     public static Instance getInstance() {         return InstanceHolder.instance ;  //这里将导致InstanceHolder类被初始化     }}假设两个线程并发执行getInstance(),下面是执行的示意图:这个方案的实质是:允许“问题的根源”的三行伪代码中的2和3重排序,但不允许非构造线程(这里指线程B)“看到”这个重排序。初始化一个类,包括执行这个类的静态初始化和初始化在这个类中声明的静态字段。根据java语言规范,在首次发生下列任意一种情况时,一个类或接口类型T将被立即初始化:T是一个类,而且一个T类型的实例被创建;T是一个类,且T中声明的一个静态方法被调用;T中声明的一个静态字段被赋值;T中声明的一个静态字段被使用,而且这个字段不是一个常量字段;T是一个顶级类(top level class,见java语言规范的§7.6),而且一个断言语句嵌套在T内部被执行。在InstanceFactory示例代码中,首次执行getInstance()的线程将导致InstanceHolder类被初始化(符合情况4)。由于java语言是多线程的,多个线程可能在同一时间尝试去初始化同一个类或接口(比如这里多个线程可能在同一时刻调用getInstance()来初始化InstanceHolder类)。因此在java中初始化一个类或者接口时,需要做细致的同步处理。Java语言规范规定,对于每一个类或接口C,都有一个唯一的初始化锁LC与之对应。从C到LC的映射,由JVM的具体实现去自由实现。JVM在类初始化期间会获取这个初始化锁,并且每个线程至少获取一次锁来确保这个类已经被初始化过了(事实上,java语言规范允许JVM的具体实现在这里做一些优化,见后文的说明)。对于类或接口的初始化,java语言规范制定了精巧而复杂的类初始化处理过程。java初始化一个类或接口的处理过程如下(这里对类初始化处理过程的说明,省略了与本文无关的部分;同时为了更好的说明类初始化过程中的同步处理机制,笔者人为的把类初始化的处理过程分为了五个阶段):第一阶段:通过在Class对象上同步(即获取Class对象的初始化锁),来控制类或接口的初始化。这个获取锁的线程会一直等待,直到当前线程能够获取到这个初始化锁。假设Class对象当前还没有被初始化(初始化状态state此时被标记为state = noInitialization),且有两个线程A和B试图同时初始化这个Class对象。下面是对应的示意图:下面是这个示意图的说明:第二阶段:线程A执行类的初始化,同时线程B在初始化锁对应的condition上等待:下面是这个示意图的说明:第三阶段:线程A设置state = initialized,然后唤醒在condition中等待的所有线程:下面是这个示意图的说明:第四阶段:线程B结束类的初始化处理:下面是这个示意图的说明:线程A在第二阶段的A1执行类的初始化,并在第三阶段的A4释放初始化锁;线程B在第四阶段的B1获取同一个初始化锁,并在第四阶段的B4之后才开始访问这个类。根据java内存模型规范的锁规则,这里将存在如下的happens-before关系:这个happens-before关系将保证:线程A执行类的初始化时的写入操作(执行类的静态初始化和初始化类中声明的静态字段),线程B一定能看到。第五阶段:线程C执行类的初始化的处理:下面是这个示意图的说明:在第三阶段之后,类已经完成了初始化。因此线程C在第五阶段的类初始化处理过程相对简单一些(前面的线程A和B的类初始化处理过程都经历了两次锁获取-锁释放,而线程C的类初始化处理只需要经历一次锁获取-锁释放)。线程A在第二阶段的A1执行类的初始化,并在第三阶段的A4释放锁;线程C在第五阶段的C1获取同一个锁,并在在第五阶段的C4之后才开始访问这个类。根据java内存模型规范的锁规则,这里将存在如下的happens-before关系:这个happens-before关系将保证:线程A执行类的初始化时的写入操作,线程C一定能看到。※注1:这里的condition和state标记是本文虚构出来的。Java语言规范并没有硬性规定一定要使用condition和state标记。JVM的具体实现只要实现类似功能即可。※注2:Java语言规范允许Java的具体实现,优化类的初始化处理过程(对这里的第五阶段做优化),具体细节参见java语言规范的12.4.2章。通过对比基于volatile的双重检查锁定的方案和基于类初始化的方案,我们会发现基于类初始化的方案的实现代码更简洁。但基于volatile的双重检查锁定的方案有一个额外的优势:除了可以对静态字段实现延迟初始化外,还可以对实例字段实现延迟初始化。总结延迟初始化降低了初始化类或创建实例的开销,但增加了访问被延迟初始化的字段的开销。在大多数时候,正常的初始化要优于延迟初始化。如果确实需要对实例字段使用线程安全的延迟初始化,请使用上面介绍的基于volatile的延迟初始化的方案;如果确实需要对静态字段使用线程安全的延迟初始化,请使用上面介绍的基于类初始化的方案。

  • 微信 All in 之下,小程序玩家们的第一个“双十一”

    过去几年的“双十一”,“鲸鱼颜习社”的博主鲸鱼最主要的工作,是帮助品牌客户将广告植入在微信公众号推文中,在临近11.11 的午夜时分推送即可。但在今年,鲸鱼开始尝试在自家的公众号平台中卖货。“做电商要比做广告复杂多了!”鲸鱼有些感慨。但首次作为卖家的参与感,仍然让鲸鱼这支内容出身的自媒体团队感到兴奋。他们选择了微信小程序作为店铺平台,同时与自媒体电商联盟 SEE 小电铺(以下简称 SEE) 进行合作——后者可以提供中端选品、供应链以及后端物流、售后等服务。不到一个月时间,鲸鱼的小程序电商“鲸鱼好物”、“大鹿好物”、“姐带你买”以及“美物图鉴 ”便出现在了公众号中。而为了备战今年的双十一,鲸鱼还和团队准备了一面销量墙,以记录旗下各个小程序每一天的销售量。“公众号里选品、文案的成败都可以直接从销售数据看出来,我们有很多粉丝群,大家可以在群里自由交流商品,但我们也发现,社群既能传播好的口碑,也会放大负面的意见。”鲸鱼对钛媒体记者说到。鲸鱼团队为此次微信双十一活动准备的“销量墙”。和鲸鱼这样的“电商新鲜人”不同,女性买手电商蘑菇街的店主小甜心从 2012 年就开始运营网络店铺。 2016 年,小甜心开始尝试直播的方式,在蘑菇街 APP 内向粉丝展示商品。而在今年“双十一”,小甜心的团队发现,在蘑菇街接入微信小程序后,观看店铺直播的粉丝上涨了将近一倍。由于长时间用嗓过度,小甜心只能用微信文字回复钛媒体记者的采访。在她看来,由于小程序支持群分享的功能,店铺可以以“直播间”的形式一键分享到粉丝群,而粉丝进一步的自发性分享,又为店铺带去了新用户。当 2017.11.11 零点的秒针划过午夜,电商行业一年中最大的狂欢结束。在上海的世博中心,阿里巴巴天猫发布会中,“ 1682 亿”被作为最终的战绩显示在背景屏幕;同一时间,位于北京亦庄的京东总部,累积下单金额“ 1271 亿”的数字诞生。可在阿里与京东的热闹之外,还有更多新的个体在“双十一”创下属于他们的纪录。比如鲸鱼,在初试小程序电商不足十天后,其团队得出的销量结果称得上惊喜——日交易超过 10 万,总订单超过20000,转化率在20%以上。还有增添了小程序入口的小甜心,微信内部的粉丝自传播为她带去了可观的流量,在蘑菇街APP 与小程序内开播后十分钟,小甜心就完成了去年双十一全天的 GMV,最高峰时一秒钟可以卖出 1309 件商品。在小甜心的蘑菇街小程序直播页面,用户可以在直播中一键购买正在展示的商品,也可以将直播画面形成商品标签转发到微信群中。依附于拥有 9 亿日活跃用户的微信,属于社交电商的风口正逐渐显露。在微信这样一个“老”的平台中,随着自媒体博主鲸鱼、蘑菇街主播小甜心这样的店主;SEE,蘑菇街等服务平台;以及年初发布的底层模型小程序——种种环节结合在一起,一个新的生态已初见端倪。再造一个“双十一”对于 SEE 的创始人万旭成来说,今年的双十一至关重要。“今年是社交电商元年。”他说到。如同“双十一”之于阿里巴巴,电商造节的意义除了让消费者享受折扣优惠以外,更多是希望普及网购行为;但用户目前对于双十一的认知仍然局限在天猫与京东,若想在微信生态内再造一个“双十一”,前期的营销等投入必不可少。在小程序正式推出 11 个月后,SEE 联合近 1000 个自媒体和 200 多个品牌,在今年双十一期间举行“我的微信11.11”活动,内容包括针对自媒体免费提供 10000 套“小电铺”电商工具;为品牌提供 1000 篇推文;以及为消费者准备的0. 01 元抽奖、新人拼团等福利。“今年融了两个多亿,全投进来了。”万旭成告诉钛媒体记者。除了代理品牌与物流仓储部分的投入外,SEE 还在广州地铁、中关村创业大街、纽约纳斯达克广场大屏进行了广告投放。为了增加首届“微信11.11”活动热度,SEE 在纽约纳斯达克广场等地花重金投放了广告。同样将小程序视为新机会的,还有移动商城开发平台“有赞”。在今年 9 月 29 日,有赞官方微信公号就发出一篇指导商家“玩转双十一营销”的教学贴,当中特别提到:今年有赞双十一最大的改变,是将主会场与分会场由过去的 Wap 页面形式搬到了小程序;同时,有赞鼓励商家善用“拼团”功能,诸如 0 元开团、抽奖团、新人团、百人团等。“商家可以在后台自行装修小程序页面,有赞的技术系统会自动帮忙提交给到微信,审核通过就可以在微信的小程序入口看到。”有赞 CEO 助理冷面告诉钛媒体记者。这已经是冷面第四年担任有赞“双十一”的总指挥了。去年有赞的全年交易额已经突破 130 亿元,70%的微信电商外链使用的都是有赞商城系统。蘑菇街也成为小程序电商的热潮中第一波“吃螃蟹”的公司,由于客单价较低,女性用户占绝对优势,蘑菇街发展出直播带货的优势,并且成为第一家将直播功能从 APP 迁移至小程序的公司。而在今年双十一,蘑菇街发起了“千播大战”,让平台上一千多名红人主播共同发起促销。蘑菇街发起了“千播大战”,让平台上一千多名红人主播共同发起促销。截至 11 月 12 日 24 点,蘑菇街双十一直播间总销售额较去年双十一增长2818%,在微信小程序直播间的日销售额达到平日28. 57 倍;直播小程序新客占比是APP的4. 75 倍。可以看出,不论是 SEE 、有赞还是蘑菇街,他们都在帮助腾讯教育商家,引导商家迁移至小程序,并且告诉商家如何用新的营销方式适应新的店铺体系,比如对“拼团”功能的重视、对粉丝群的精细化运营、以及对直播等新功能的有效利用——社交电商正在以它自己的特色在微信内部野蛮生长。All in 小程序对于 SEE 这样的创业公司来说,将重金押赌在小程序的方式称得上是冒险,但万旭成曾在腾讯工作过一年多,参与过应用宝、腾讯电脑管家等产品的研发,因此,万旭成对腾讯业务的发展逻辑较为熟悉,至今也与腾讯内部保持着每月几次的沟通频率。根据万旭成的预估,微信生态内的电商交易规模可达一万亿:其中群分享(代购、淘宝客)交易一年可达 3000 亿;自媒体类的内容电商一年有 500 亿;纯微商店铺一年有超过 4000 亿,而在用户属性上,用朋友圈卖货的微信用户已经超过 3000 万人。也就是说,在微信生态中,价值万亿的电商规模早已形成,但承接这些生意的平台良莠不齐,有 H5、Wap 页面、第三方微商城等,体验较差,接口也不统一,而作为兼具体验与展示的底层框架,小程序成为电商平台与卖家本就期待的工具。相比 H5 等形态的微信店铺,小诚信在响应速度、用户体验都更加完善。有赞团队也与微信小程序团队保持着近乎每天交流的频次,除了对开发文档的咨询以及对 Bug 的反馈以外,有赞也能感受到微信对小程序的重视。“微信团队正在 All in 小程序。”冷面告诉钛媒体记者。类似的讯号还体现在小程序从年中以来的数次重大更新。拿双十一前的最近一次更新来说, 11 月 2 日,微信官方宣布,小程序支持与内嵌网页的相互跳转,这意味着原本局限在微信体系内的小程序,正式开放了与外部互联网信息的流量入口。类似的更新还有: 9 月 8 日,开放微信搜索框下方的小程序快捷入口; 8 月 5 日,小程序可关联公众号增加至 50 个; 6 月 21 日, 10 个同主体小程序和 3 个非同主体小程序之间支持互相跳转; 4 月 22 日,小程序可被添加至公众号文章中。群、公众号、H5、聊天页面……尽管坚持了发布之初“去中心化”的策略,但微信内部,小程序已经无处不在,而随着触点越多,小程序被消费者的打开频率也会相应叠加。根据 SEE 团队统计,以小程序在微信聊天页面内的“服务通知”一栏为例,这个提醒消费者订单、红包、评价的入口,以往在 APP 推送的打开频率不过15%,短信提示打开率不足5%,但在微信页面内,打开率高达60%-70%。公众号、群聊、微信聊天页面……小程序已经在微信内部无处不在。“目前电商行业的获客成本大概在十几块钱,但不论是拼团、直播、拉新,小程序的获客成本都远低于这一数字。”蘑菇街小程序市场负责人王飞对钛媒体记者表示,也正因为小程序的轻量特性,蘑菇街也在今年 6 月开始逐渐抛弃了 H5 和网页,转而在小程序内率先尝试直播、小店微商城等功能。而在硬币的另一面,微信利用小程序对创业者的开放与扶持,与微信本身对商业化路径的探索需求不无关系。对于微信来说,拥有 9 亿日活用户与 350 万的公众账号只是开始,如何将“流量”与“内容”转化为“消费”,成为微信对存量资源商业化的目标;另一方面,随着微信支付与支付宝在线下的竞争白热化,小程序电商形成的线上商业闭环,也得以将单纯的“支付”转化为可持续产生的“服务”,从而复制阿里巴巴用电商推广支付宝时的流量优势。谁能取得“风口”的入场券?微信小程序生态的愈发开放,让这个尚处在蓝海的市场隐隐有着成为“风口”的趋势,社交电商的每一环节——店主、主播、开发工具、服务平台,都在用更配合的姿态,试图拿到风口中进场的首批入场券。但不是每个人都可以这么幸运。一位不愿意透露名称的自媒体博主对钛媒体记者透露,之前也尝试过跟风做小程序电商,但团队都是做内容运营出身,擅长“写段子”,不懂怎么去进货、找渠道、处理售后,几个月下来,发现不但没有盈利,原有的粉丝还因为公众号的商业化转型出现了流失。“微信对小程序的确很重视,但要想做电商,零售相关的经验还是很重要的,我们的团队没有电商基因。”这位自媒体博主总结到。而在辅助商家的那一端,诸如 SEE 和有赞这类平台方,也正在加速吞食小程序开发者的市场份额。今年年中,两家公司几乎共同推出免费版小程序开店工具,一方面为了笼络商户,另一方面也是为了击退其他试图入局的竞争者。根据公开数据,目前与 SEE 合作的自媒体数量已超过 3000 个,有赞平台上的线上、线下注册商家数量已经达到 300 万。诸如 SEE、有赞、上线了等小程序第三方开发平台,正在用更快的速度与商家联结以占领市场。“目前市面上浑水摸鱼的人有不少。如果单单给商家做一个展示型的小程序,这跟 10 年前的官网没啥区别。”冷面对钛媒体记者说到,在他看来,小程序不能仅是“一张皮”,商家布局小程序时应该注重三个阶段的能力:基础:展示、进阶:营销、成交、高级:联动门店、(到店自提、同城配送、会员卡通用、储值卡通用、线上线下营销活动)另外,冷面也会在辅导商家时警惕他们不要“唯小程序论”。对于商家来说,营销的本质是要聚焦在有用户基数的社交、咨询平台。除了公众号、朋友圈、微信群、小程序、以外,微博、支付宝生活号、今日头条、什么值得买,都是商家可以按需布局的渠道。不是谁都能够分得腾讯对小程序的扶持红利。SEE 和有赞扮演的是自媒体的服务方,在万旭成的分析中,这是在用社交电商的方式把万千个微信群、公众号、聊天页面像毛细血管一样连接起来,这符合腾讯去中心化的坚持,而诸如蘑菇街、拼多多此类在微信小程序中运营得不错的中心化电商,背后也都有着“腾讯系”的投资。那么,在微信官方看来,什么样的小程序是可被鼓励的?“我们希望优质小程序可以在微信内合适的流量入口展现,并且更多地形成用户间自发的传播及推荐使用。”在微信团队给钛媒体记者的回复中,再次强调了流量入口的重要性,这也进一步说明,尽管微信对生态的封闭已经步入“前紧后松”的状态,但对于诸如此前出现过的匿名聊聊、星座识人等可能出现“流量泄洪”的应用,依然会采取严肃处理的方式。不过对于小程序电商的商业化潜力,微信官方还是给予了认可,并表示“还有更多可挖掘空间”。“好的小程序不仅可以让用户’用完即走’,也可以让用户’用完再来’。就电商行业而言,不管是电商平台,还是品牌电商、自媒体包括传统公司,都可以通过小程序电商来进行探索,前提是必须抓出用户的需求,充分利用小程序能力,吸引新客、留住老客。”微信团队表示,而在未来,微信内部还会围绕对小程序用户画像的挖掘,个性化推荐数据的应用,电商社交玩法的拓展等方面,展开进一步的功能以及产品发掘。(本文首发钛媒体)

  • 关爱码农,“双11”福利 ——droidcon北京2017安卓技术大会门票来袭

    “金九银十”刚过,“双11”已紧随其后席卷而来。今年“双11”咱们换一种方式过,来一场与安卓大咖的相遇,两天领略安卓匠心,与各地同行、爱好者切磋交流、提升锐变吧!为迎接“双11”,droidcon北京2017安卓技术大会特推出优惠活动,现有机会获得价值2000元的大会门票。(50张,先到先得哦)droidcon北京2017安卓技术大会全球开发者的一次顶级盛会中国安卓领域唯一饕餮盛宴现诚邀您的参与!droidcon是2009年由一个Android爱好者国际研究小组在柏林和伦敦发起,旨在为Android开发工程师、应用人员、创业者以及用户提供一个开放的交流平台。目前已在全球5大洲、26个国家和地区召开。2017年,droidcon第二次登陆中国,并将于11月16-17日在北京开幕。大会邀请了来自Facebook、Intel、高通、Booking.com、阿里巴巴、百度、京东、腾讯、小米、中兴通讯、乐视、中国移动无线音乐基地、饿了么等国内外安卓技术大咖与知名博主亲临现场,多维度探讨Android性能优化与用户体验、Android工程与工具、移动开发与人工智能、Android设计与架构、人工智能移动端实践等时下领域热点话题。今年“双11”咱们来选择提升自己!无论你是追逐技术热点的安卓大神,或是混迹职场多年的程序猿族,还是痴迷安卓领域的屌丝新秀,droidcon北京2017安卓技术大会,专属于你,精彩不容错过!2017年11月16日-17日,我们在北京,你在哪里?报名或了解更多资讯可点击大会官网( http://hy.changfeng.org.cn)对大会感兴趣的小伙伴,请提供姓名、手机号、邮箱、公司、职务信息,发送至邮箱litong@changfeng.org.cn 。我们通过后,会尽快跟您联系门票索取事宜。索取门票,数量有限,欲报从速。截止时间:11月10日。

  • 新手怎么优化自己的网站?

    现在很多朋友都有自己的个人网站,也知道SEO优化是可以让自己网站拥有更好的排名、人气与流量。那么,具体怎么优化自己的网站呢?今天理想青年工作室为大家分享一下关于网站优化的大纲,共分5个部分,相信大家看完后,会对SEO优化有一个系统的理解。一、网站结构的优化1、代码结构:精简对于搜索引擎来说,爬取的都是网站的代码,所以代码结构越精简,蜘蛛爬取就越高效,怎样精简代码?CSS与JS进行封装调用,不要写进源代码中。另外网站尽量少使用JS,采用DIV+CSS结构,抛弃table结构等。不过现在无论是成品的博客模板、CMS模板,还是企业建站,在代码精简上都做得非常不错了。2、网址结构:url静态化url静态化到底对SEO有多重要呢?其实根据之前的一些研究表明,静态化与动态url并没有明显的优势,一般来说,静态化网址是 http://www.案例.com/reed/123.html,而动态化网址就是http://www.案例.com/view?123,其实两者差不多,但如果你的动态网址是http://www.案例.com/view&6548mm&id?3658 这样子的话,那就很不好了。加之又考虑到用户体验,所以url静态化是最好的选择。3、目录逻辑结构:进出有路,三级目录一般来说,我们建议网站的目录层次不超过3级,而前辈的众多经验是采用树状结构,也就是首页——目录——文章这样子的结构,如下图:树状结构使得整个网站结构逻辑清晰,便于用户快速找到自己想要的内容,再加上合理的使用内链,对于蜘蛛来说,就形成了一张四通八达的爬取道路系统,想要富,想修路,路修好了,还怕蜘蛛不来爬取么?二、网站小工具的优化:1、404页面制作:一个网站难免会有曾经的页面被删除,或者用户错误引用导致点击到根本没有过的页面,这时候没有一个404页面的引导,做为一个追求完美,追求卓越的站长来说,是不应该的。2、网站robots.txt制作:robots.txt是是搜索引擎爬取协议,也就是说你可以通过这个文件告诉搜索引擎,哪些目录不要爬去,一个网站的源码中包含了很多系统文件,而这些文件是不需要展示给用户看的,自然也不需要展示给搜索引擎看,如果你不进行引导,会让搜索引擎的蜘蛛把精力浪费在那些系统文件上,造成资源浪费。3、网站地图制作:网站地图一般指xml地图与html地图,对于个人站长来说,成品的博客系统与cms系统都有功能或插件来实现这两个地图,网站地图会让搜索引擎更高效的抓取网站内容。4、网站移动化制作:这是个移动互联网时代,所以网站移动化也是必须的,首选是自适应结构,像理想青年工作室的,次选是M站的制作。三、网站内容的优化当网站结构与促进用户体验与搜索引擎抓取的小工具都制作好后,我们就得开始进行内容优化了。1、优质内容:对于一个网站来说,优质的内容是根本,我见过太多内容优质,但结构,外链方面都不太好的网站仍然拥的好的排名,这就说明在SEO排名中,如果是100分满分的话,内容应该占了90分。所以在为网站更新内容时,一定要确保内容优质,有价值,而不要为了更新而写一些莫名其妙,无关痛痒,毫无营养的一些文章。2、持续更新:持续更新不单是搜索引擎的一个要求,更是对网站访客也起着至关重要的作用,持续更新能让访客经常访问你的网站,从而不至于流失用户,用户的流失会使得搜索引擎觉得你的网站正在被用户所抛弃,所以就会在排名打分系统中为你减分。试想一个用户连续三天来你的网站都没见到有新内容,他第四天来的可能性还有多大呢?3、持续挖掘用户需求:在为网站创造内容这件事情上,一个优秀的SEO人员应该通过挖掘用户需求,通过长尾关键词来写文章,长尾关键词就代表了用户需求,所以要为断地去挖掘长尾关键词,满足用户需求。4、与用户互动:开放评论、增加用户投稿渠道等,让用户参与到网站内容建设中来。四、网站外链的优化内容篇结束,就该到外链篇,目前虽然说外链不好做,但外链依旧有用。那么怎样做外链的优化呢?1、友情链接交换:同行业友情链接交换最常见,也是比较优质的外链,建议每周增加1-2个新的友情链接,如果首页友情链接已经过多,可以做一些目录页面的友情链接。2、行业网站投稿:行业网站投稿不单可以增加外链,在一定程度上还能增强品牌影响力。但并不是每个网站定位的行业都有行业网站可投稿,而在这方面,大家也可以去门户网站付费发布一些软文推广。3、门户博客发文章:门户博客主要是新浪、网易、天涯等,但部分门户博客放外链的话会自动带nofollow标签,目前新浪和天涯还可以做外链。4、自媒体平台发文章:自媒体平台目前也是可以做外链的,像今日头条、百家号、搜狐自媒体等,但只能做文本外链。推荐阅读:自媒体平台有哪些五、网站品牌优化品牌优化似乎于网站优化无关,其实也不然,品牌做得越好,用户们自发去搜索我们网站的概率就越大,这样子会让搜索引擎认为我们是一个受欢迎的网站,从而在排名的时候加分。1、建立QQ群便于用户交流:有微信群也可以,在用户交流中,你可以发现更多的用户需求,而一些用户的建议,会对你的网站有意想不到的帮助。2、建立微信公众号:一个网站也应该拥有一个微信公众号,要知道在手机上打开你的网站,远不如微信上看你的公众号文章方便哦。不要让有的用户不愿意麻烦的打开你的网站而流失了。文章来自理想青年工作室,原文地址:http://www.cdlxqn.com/reed/295.html 转载请注明出处。

  • 如何自学平面设计?6年设计师的“实战”总结

    VisionMyEye :做设计师 6 年,从集团企业到初创企业,从网页设计师到资深视觉设计师再到设计总监,再到今天的独立设计师,经历了不同组织架构公司中的不同设计职位,整个过程中可以说一直都在自学。这个过程当中也走过一些弯路,希望能够通过我的一些经验和思考,给对设计感兴趣、想要从事设计工作的人一些帮助。 首先,我认为有必要先提几点常见的对设计的误解,在对设计有一个较为正确的认识之后,才谈得上如何学习设计。 一. 设计和艺术创作很像 很多初学者甚至一些较为资深的设计师都常会将设计与艺术混为一谈。我也常常和朋友见面时,被朋友调侃说「艺术家来了」。设计和艺术在表面上的确相似,甚至有时会非常像,比如说一些时尚品牌、博物馆、艺术节的平面海报设计,总是充满艺术感。 然而,从本质上来看的话,设计和艺术却是非常不同的。他们的目的不同,艺术的目的是自我表达,设计的目的是解决问题。他们的受众不同,艺术的受众是所有人,但是每个人对艺术作品都可以有自己独特的理解,其理解是否和艺术家想表达的一致并不太重要,而设计的受众往往是一个特定的群体,需要受众对设计作品想要传达的信息进行正确的解读。所以,艺术手法在海报中仅当必要的时候才会使用,而当我们要做让人一目了然的促销海报时,艺术手法往往会让人摸不着头脑。请比较下面两幅促销海报,哪幅海报让你一眼就知道打折了呢? 二. 创意来自于灵感 如果你明白了设计与艺术的区别,那么也就不难明白,设计的创意并非来自于个人灵感,而是来自对问题的理解以及对信息的整理。当设计师面临待解决的问题时,不应只浮于表面看到要解决的问题是什么,而是应该追本溯源,理解「是什么」背后的「为什么」,以我的经验,这是找到出色创意的根本。在理解了问题的「为什么」之后,对所获得信息进行整理,解决方案自然会浮出水面。但这里所说的信息包含不限于与需求方沟通所获得的产品与客户信息、通过互联网或通过观察身边所看到的现有解决方案、或是设计师自己所掌握的视觉表现手法。 对如何整理信息感兴趣的,可以去看一下日本设计师佐藤可士和的书,他是一位了不起的「整理大师」。 三. 自我表达很重要 这个问题存在于我见过的不少设计师当中,这些设计师的视觉表现能力或许很出色,却往往不招老板或客户待见,双方常常会陷入无法沟通的状态。因为热爱自我表达的设计师,与急着解决视觉传达问题的需求方在根本目的上就大相径庭,这样的话设计师很难提出行之有效的视觉解决方案。如果你热爱自我表达,艺术家这个职业会比设计师更适合你。 综上,设计不是艺术,而是科学;脑洞大开不是设计的必要因素,而是理解问题与整理信息;设计不是为了自我表达,而是为了解决信息的视觉传达问题。所以我认为,作为平面设计师,需要学会的是如何整理信息,以及如何传达信息。 在我学设计的最初,我很疑惑应该通过什么方法,以怎样的优先级来学习设计,搜了不少资料,最常见的建议就是「多看、多练、多思考」,然而却少有人提到具体的每一步应该做些什么,又应该注意些什么,所以这里我想讲一下自学时要做什么、怎么做及其原因。 我建议的学习流程是: 同时学习软件和设计原则,重点学习设计原则。 用学到的设计原则去看好设计与坏设计。 完全照抄。 尝试做一些再设计。 解释自己使用的设计元素和设计原则。 第一步:同时学习软件和设计原则,重点学习设计原则 1. Photoshop 软件不等于设计,我大约在三年多前临摹过一个作品,原图是用三维软件Cinema 4D做的,我用的是Photoshop。 而当时有一位想要成为设计师的金融圈同学,居然用Excel就完成了临摹。 所以我认为只要能保证最后的产出结果,用什么软件都是可以的。但是想要找一份平面设计的工作,以及在学习的过程当中需要做一些必要的练习,那么Photoshop至少是要会用的。 怎么样算是会用呢?我在使用Photoshop的时候最常用到的有以下 8 个功能:移动工具、缩放工具、图层、蒙版、字体、纹理、叠加方式、透明度。在我自学的时候,这些功能的相关知识是在Tutsplus上看了一些实战教程后就差不多会用了,之后在工作应用中慢慢地就能掌握到必要的程度,能够根据自己的想法产出设计了。 对软件的精通能够较好地提升产出环节的效率,但是在正确的设计流程中,产出占的比重实际上并不高(对我来说,通常产出过程只占整个设计过程的不到20%),所以不需要将太多的精力放在软件本身上,我认为在实践中提升就好,当自己对软件的掌握度无法做出自己想要的效果时,再去学习相关的知识,或者也可以考虑软件以外的其他方法。 至于Illustrator,我个人很少用,只有在LOGO的设计确认后,会用Illustrator做最后的产出。而在大部分情况下,在做名片、海报、传单、包装等设计时,或是在设计过程当中制作情绪板等工具时,基本上都是使用Photoshop,至今还未遇到无法解决的问题。所以我认为作为平面设计师,学习Photoshop的优先级远高于Illustrator。Indesign,是出版物排版软件,暂时没必要学。 2. 了解设计原则与设计元素 我建议在学习软件的同时,就进行基本的设计原则的学习。随着对设计原则的了解,当在看软件教程的时候,也就慢慢地能理解教程中运用了哪些设计原则了。 设计原则,是对于设计元素的运用。在成为平面设计师初期,如果目的是做出可用的设计,那么并不需要了解所有设计原则,只需了解最关键的部分就够了。 设计元素包括:线条、形状、尺寸、颜色、明度、留白等 设计原则包括:对比、重复、对齐、亲密性等 我几乎会推荐身边的每一位初学平面的人将《平面排版基本的基本》这本书从头至尾至少看一遍。这是我所知的最快最有效的平面设计原则入门书了。书中深入浅出地解释了平面的设计元素与设计原则,而且它的案例是日文的,相对于西文案例来说,对中文设计更具有参考价值。 第二步:用学到的设计原则去看好设计与坏设计 能找到好设计的平台有很多,我个人的习惯是上Pinterest(需要翻墙)。根据你的个人习惯,上Behance或者花瓣、站酷,我觉得都可以,但是没必要每天抱着越多越好的心态把所有的都上一遍,初期能用心把一个平台上的认真看完就已经足够了。 请一定要用学到的设计原则去看设计的好坏,从最终的设计反推其想要传达的信息,然后再分析设计师使用了哪些设计原则来展示这些信息,如何突出主题,如何做视觉引导等等。不要单纯因为「自己觉得好看」就认为一个设计是好的,从而只是去学习设计当中使用的视觉效果,那样的话往往会导致将来自己做出的设计好看却「不好用」。 下图中的两张海报,同样是服装品牌,同样是简约风格,同样是促销海报,看看Zara与Acne Studios是怎么做的。如果只看促销效果,哪张海报的促销效果会更好呢? 第三步:完全照抄 把通过设计原则看到的好设计,尽可能一模一样地完全照抄出来。如果找不到相同的元素(比如说图案),那么用尽可能相似的图案来代替,如果找不到相同的字型,那么用尽可能相似的字型来代替。但是对于位置、字号、字重、字间距、行距、颜色、透明度、投影等效果,请做到完全一样。 完全照着做可以帮助初学者真正清楚了解设计当中的细节,不单单只是「用更大的字号与字重形成对比」这样的笼统概念。 下面这张图是我在大约 4 年前「照抄」的Yummly App,一款出生于美国的美食应用。你会发现图片被换成了油条、酸辣汤等中国特色食物,标题文案也根据图片做了相应的修改,但是其他的设计都力求做到了一模一样。 第四步:尝试做一些再设计 我有时会拿一些自己认为做的不够好的设计来做再设计,考虑原设计中没有考虑到的设计元素与设计原则,优化原设计。 但实际上,对于自己认为优秀的设计,同样可以拿来做再设计。在设计当中,正确的解决方案往往不是唯一的。只要遵循了设计原则,设计产出在形式上往往能够有很多不同的解决方案。比如以下的设计虽然表现手法不同,但我认为都是很好的促销海报设计。 对如何进行再设计感兴趣的话,可以看我另一篇文章:如何设计一张高品位高水准海报?该回答同时也讲解了在做海报设计时该如何整理信息。 第五步:解释自己使用的设计元素与设计原则 在真实工作中,如果你不想老板对你的设计指手划脚,如果你想提高自己的设计过稿的机率,请停止再说「因为我觉得这样好看」、「因为大家都这样做」,取而代之的,试着去解释清楚自己在设计当中的具体考量,这是让老板和同事信服你的设计的必要因素,久而久之,老板和同事才能将工作放心交给你负责。

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

    对搜索用户来说,标题是一个网页最直观的认知渠道和展现方式,也是吸引用户点击搜索结果进入落地页的关键因素。 为了保障搜索用户对所需资源的有效获取,保证搜索结果的公平性,现百度搜索对外发布《百度搜索网页标题规范》,希望在满足用户需求的同时,为站长带来更多流量,实现共赢。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朋友们有个初步印象了,如果还有什么不了解的话,欢迎加我的联系方式进行交流哦。

  • 百度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如何更好的优化网站着陆页?

    网站着陆页(landing page)是网站潜在用户点击广告或者利用搜索引擎搜索后点击进入的网页,一般这个页面是对所点击广告或搜索结果的扩展,所以在网站优化过程中,网站着陆页的优化至关重要,因为它直接决定了用户的转化。网站着陆页来源可以是活动、广告、特定的推广页面、电子邮件、搜索引擎等等,网站专题页就是典型的网站着陆页。  那么如何更好的优化网站着陆页呢?  优化网站着陆页的几个原则  1、让网站着陆页短小精干,尽量使用简单清晰的图片,把你最重要的信息以最简洁的信息传递给你的用户,不要把它复杂化。  2、了解你访客的需求,认真分析你访客的需求,为什么会访问你的页面,网站着陆页文案要给用户提供最佳解决方案,没有内容做载体,网站着陆页形同虚设。  3、网站着陆页是沟通页,是传达页,绝对不是广告页!不要把你的网站着陆页变成纯粹的广告页面,要传递有价值的信息给你的访问者。  4、使用清晰和醒目的call toaction,让你的读者更容易响应。确定你提供了一个醒目的响应机制给你的访问者,让他们能够了解更多的细节,让他们更容易注册,或购买一些什么东西。  5、如何网站着陆页内容比较多,注意规划,把重要内容放在第一屏。总有那么一些人懒得连鼠标滑轮都不愿意动一下。建议第一屏必须包含最有说服力的内容。  6、网站着陆页加载速度对于转化的影响非常大,网站着陆页是网站的重点转化页面,所以整个页面的速度优化更加要重要,除了网站整体的速度相关因素,网站着陆页单个页面还要注意图片、代码等影响速度的因素。  7、网站着陆页如果需要注册表单,不要搞得过于复杂,简单的几项就可以了,其他的信息可以让用户在之后进行补充。  8、将大的段落分割为几个小段落,每个段落不要超过5行。不要弄大篇幅的文章,网站着陆页需抓住重点,结合各种元素以最快的速度展现信息给用户,过于密集的文字会让他们无法完整的阅读。  9、如果有图文结合的段落,可以基于F-shared原理,把你的重要图片放到文字左面去。  10、在写文案或网站着陆页标语时,使用第二人称进行写作,让用户感觉到他面对的不是一个网站页面,而是一个正在与自己交谈,给自己建议的人。不要忘记你的目的是成交一笔生意,而不是向人们展示你的文采,所以你需要尽量使用平坦、清晰的叙述方式。  11、在段落开头清楚描述重点和卖点。现在的用户大多都是简单的扫视,所以让第一段尽量精简,长句分为几个短句,让你的内容更容易阅读以及发现。  12、把无关痛痒的元素放到侧边栏或者直接删除掉,集中突出重点内容,让用户聚焦到你的主题上,不要让其他事情吸引他们的注意力。  13、重要的网站着陆页就不要在弄很多页面广告或弹窗广告了,网站着陆页主要目的不是推荐,重要的是转化,所以重点要销售的是这个页面的产品或服务,就不要再加一些无关紧要的干扰广告。  14、网站着陆页积极响应用户的问题和需求!在此之前,需要添加页面的在线沟通问题,方便用户快速的咨询产品或服务,也方便客服人员用户交流。  总而言之,首先一定要明确网站着陆页目标是什么,促成销售还是引导注册?网站着陆页一定得把握这个目标,所有一切优化都应当围绕着即定的这个目标来进行,有利这个目标的就值得优化。  其次,需要不断分析你用户的需求,说到底网站着陆页最关键的还是内容,所以这个内容一定要结合用户最关心的问题,满足用户点击进来的需求,触动用户的痛点,只有这样,网站着陆页目标更易实现。