您当前位置: 南顺网络>> 官方资讯
  • 正月初七,开工大吉

    大年初七,人寿年丰。摊煎饼吃七宝羹,安顿身心,休养生息。亦称“人胜节”、“人庆节”、“人口日”、“人七日”等。传说女娲初创世,在造出了鸡狗猪牛马等动物后,于第七天造出了人,所以这一天是人类的生日。汉朝开始有人日节俗,魏晋后开始重视。古代人日有戴“人胜”的习俗,人胜是一种头饰,从晋朝开始有剪彩为花、剪彩为人,或镂金箔为人来贴屏风,也戴在头发上。道教认为:“天地先生鸡,次狗,次猪,次羊,次牛,次马,始生人。”汉代东方朔的《占书》也说:“岁正月一日占鸡,二日占狗,三日占猪,四日占羊,五日占牛,六日占马,七日占人,八日占谷。”在中国传统习俗中,大年初七“人日”,人过生日,要以七种蔬菜,煮成七宝羹,也就是将七种蔬菜,煮成杂菜汤,在农业社会,大家都祈望吃了七宝羹,来年大丰收。今天是鼓足干劲再奋斗的节后第一个上班日,你准备好了吗?

  • 南顺网络恭祝大家新春快乐!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2018年南顺网络推出H5场景在线制作平台! 南顺网络制作了700多套H5模板,提供给各行业选择,快速制作属于自己的H5宣传片。 南顺H5宣传融合了各大行业,可以接入视频、音乐、语言等,是目前主流的H5制作平台。南顺网络欢迎新老客户前来体验,请登录官方体验: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个互联网行业应用,让互联网+重塑传统企业边界,我们始终坚持为每个客户定制网站。

  • 工业物联网应用发展场景及市场预期

    工业物联网将在哪里得到施展才能的机会,它的市场预期会带给社会怎样的表现,都是工业物联网发展历程中所必须要思考和构建的重要思维模型。物联网的底层逻辑物联网作为信息技术,其本质是信息和计算。感知层负责信息的获取,网络层负责信息的传输,应用层负责信息的处理计算。物联网连接了大量物品数据,这些数据都是以往不曾处理的全新数据,新的数据加上新的处理方式,造就大量新的产品、新的商业模式、全面的效率提升,这是物联网带来的根本价值。物联网在工业的应用工业物联网是一个多元化整合、不同元素之间相互探索的平台,能够将生产现场的各种传感器、控制器、数控机床等生产设备连接起来。随着工业物联网的发展,连入工业物联网的智能设备将日趋多元化,网络互连所产生的海量数据能够输送到全球任何一个地方。通过将感知技术、通信技术、传输技术、数据处理技术、控制技术,运用到生产、配料、仓储等所有阶段,实现生产及控制的数字化、智能化、网络化,提高制造效率,改善产品质量,降低产品成本和资源消耗,最终实现将传统工业提升到智能化的新阶段。同时,通过云服务平台,面向工业客户,融合云计算、大数据能力,助力传统工业企业转型。随着数据量的增大,倾向于在数据源头处理数据的边缘计算不需要将数据传输到云端,更加适合数据的实时和智能化处理,因此更加安全、快捷、易于管理,在可预见的未来将得到更加有效的利用。工业物联网的价值物联网强调的是将生活和生产中一切硬件设备的连接;工业物联网是指在工业环境下,生产设备和产品的连接。工业物联网将生产过程的每一个环节、设备变成数据终端,全方位采集底层基础数据,并进行更深层面的数据分析与挖掘,从而提高效率、优化运营。与物联网在消费行业的应用不同,物联网在工业领域的基础已经存在了几十年。如过程控制和自动化系统、工业化以太网连接和无线局域网等系统已经在工厂运行多年,并接连可编程逻辑控制器、无线传感器和射频识别技术标签。但是在传统工业自动化环境下,一切都只是发生在工厂自己的系统里,从来没有与外部世界连接。工业物联网特点:到2020年,世界上物物互联的业务将是人人互联业务的30倍。工业领域目前是物联网项目最多的应用领域。制造业在物联网应用的占比约为15%—25%,制造业在物联网中的重要地位显而易见。·数据收集范围:工业物联网利用RFID、传感器、二维码等手段随时获取产品从生产到销售到最终用户使用各个阶段的信息数据,而传统工业自动化的数据采集往往局限于生产质检阶段。·互联传输:工业物联网利用专用网络与互联网相结合的方式,实时准确地传递物体信息,对网络依赖性更高,更强调数据交互。·智能处理:工业物联网综合利用云计算、云存储、模糊识别、神经网络等智能计算技术,对海量数据和信息进行分析和处理,并结合大数据技术,深入挖掘数据价值。·自组织与自维护:工业物联网的每个节点为整个系统提供自己处理获得的信息或决策数据,当某个节点失效或数据发生变化时,整个系统会自动根据逻辑关系做出相应调整。工业物联网的应用场景·预测性维护在过去,工厂生产设备的运营管理通常采用定期维护的方式进行。按预定计划每年定期中断生产设备,进行机器的维护和检修。这种维护可以减少意外事件和停机的风险,但也存在一些不足。不是所有机器都需要在同一时间进行维护,通过工业物联网技术企业可以做预测性维护。设备处于实时监控的环境下,公司可以在设备需要维护的时候进行维护,而不是在任意时间进行维护。·可视化供应链未来制造业中供应链的可视化是必不可少的,也是极具挑战性的环节。尤其是在某些些领域,如食品,生产成本可能来自各种各样的供应商,而新的法规会要求完全透明化。通过工业物联网,制造商可以实时预见所发生的一切事件,确保产品从原料采购、生产加工到销售过程都是可控的。·设备效率分析当需要对生产线上各设备的生产效率和产品质量做比较时,在过去是很难作出详细的回答的。今天,制造商可以使用工业物联网技术收集和分析来自多个设备的数据,他们可以为更好了解设备的工作状况,并为提升生产效率、质量控制等作出更好的决策,这就是使用工业物联网的好处。·自动化工业物联网的本质是让机器在没有人干预的情况下彼此通信。这使得更多的自动化解决方案采用了成群结队方式,从而提高机器的效率和产品质量,产品更一致的化。·安全控制当你接触工业物联网时可能不会想到安全问题,然而,在工厂安全方面可以通过物联网获联很多的帮助。安全一直存在的,只是没有人真正收集所需的数据,利用物联网能解决安全问题。我国工业物联网的预期价值物联网在工业的应用,是物联网最重要的领域之一。 “中国制造 2025”、“智能制造”、“互联网+”等战略规划,“中国智造”已经成为未来制造企业的发展方向。而工业物联网正是实现“中国智造”的基础。中国物联网生态环境日趋成熟,物联网在工业领域的应用需求逐渐强烈。2016 年我国工业物联网规模达到 1896 亿元,在整体物联网产业中的占比约为 18%。预计在政策推动以及应用需求带动下,到 2020 年,工业物联网在整体物联网产业中的占比将达到 25%,规模将突破 4500 亿元。对一些中小型工业企业来说,传统的系统集成、定制开发的理念无法应用到中小型企业中,工业物联网建设成本过高,使得大企业的成功模式无法在小企业复制,导致我国工业物联网应用呈现出两极分化的状态。随着 NB-IOT,eMTC 等物联网技术的推进,以及在 5G 网络的应用场景中,工业物联网才可以具备快速发展的空间。传感器识别技术、传感器网络技术、感知节点及终端服务、业务支撑及智能处理技术等都是助力物联网产业快速发展的动力。工业物联网的未来趋势未来企业工业物联网应用的重点由设备和资产转向产品和客户。工业企业借助物联网实现业务成长的主要途径包括新的产品和服务和更紧密的客户关系。为了开发更具吸引力的产品或提升现有客户关系,企业将需要大量产品和客户的相关信息支持。数据能力提升将以数据分析计算能力提升为投资优先选择。物联网的整体突破不仅依赖于硬件能力和商业模式创新,算法与数据同样不可或缺。中国制造企业多年基于应用研发积累了大量经验数据,如果将这些数据提取并模型化,形成可实用的专家算法,数据将变成具有良好盈利能力的金矿。技术的进步大大增加了物联网解决方案在工业领域的潜在实力,物联网解决方案将提高工业企业运营效率,增加其收入来源并激发创新。物联网也证明了它可以帮助企业制造更多的持续性价值,像是从过去一次性的交易转变成长久的客户关系。虽然面临连接性和安全性的问题,但我们仍可预期物联网将袭卷工业领域各大产业。

  • Windows Lite OS曝光:页面清爽 最快年内推

     所谓WCOS即Windows Core OS,是构建客户端、服务器、Xbox等平台Win10系统的基础,看来LiteOS同样基于它搭建。至于“Web”,似乎进一步确认了Windows LiteOS对抗Chrome OS的战略宗旨,据说其只允许运行UWP和PWA(渐进式网页应用)程序。        UI视觉方面,Windows Lite和Win10基本类似但更加弹性,目前流出的接近内部开发样式的效果图显示,开始按钮在底部居中,一个硕大的搜索框涵盖了账户管理、网页/文件/设置搜索、应用程序抽屉等。        综合目前资料,芯片厂商和OEM协作顺利的话,搭载Windows Lite OS的双屏产品最快今年末亮相。

  • 解决这4个难题,IoT低功耗设备也能有高清视频通话

    解决这4个难题,IoT低功耗设备也能有高清视频通话如果有人跟你聊“实时音视频通话功能”,你会想起什么?视频聊天、在线课堂,还是朋友之间的游戏开黑?其实,还有一个复杂且巨大的领域,有着旺盛的“互动”需求,那就是 IoT 领域。不少大厂商都纷纷布局推出了相应产品,例如在去年由“能打电话的智能手表”变为“能视频的电话手表”的小天才手表;在今年2019 CES 上,多家厂商都推出了支持实时视频的智能门禁。总体来讲,希望集成实时音视频功能的低功耗智能设备有以下几类:▪智能手表:“能打电话”已成很多儿童智能手表的标配,而“能视频通话”的智能手表已经纷纷出现在海内外市场上。▪智能眼镜:基于实时音视频与后处理技术(如 AR、计算机视觉算法)可以实现多种场景▪智能摄像头:安防监控、视频交互一直是智能摄像头的重要功能▪机器人:家庭机器人及少数公共场所的机器人,需要实时音视频功能▪智能门禁:通过实时音视频实现远程安防、通话低功耗设备上视频通话的难点事实上,利用WebRTC方案是可以在手机上实现实时音视频通话的,但如果将这套方案照搬到低功耗设备,则无法做到。这是由于低功耗智能设备在硬件、软件方面都与手机不同,所以对实时音视频通信的要求也有所不同,这导致了手机的方案无法直接拿来套用。以智能手表为例,如果要实现实时音视频,需要满足以下要求:1. 功耗要低很多低功耗智能设备的电池容量,以及可支持的功率有限。另一方面,很多智能设备采用的 CPU 性能有限,在进行音视频通话的同时,还要支持系统、常驻功能的运转。一般的解决方案,无法做到稍长时间的视频通话,最大的障碍就在于能耗。随着通话时长的积累,高负荷运转的设备会发热。所以低功耗十分必要。2. 实时音视频不可占用过多内存智能设备的内存有的高,有的低,要看是什么类型的设备。但智能手表这类产品的内存一般都不高。在这样的背景下,如果要在设备上进行实时音视频通话时,不能占用太多内存资源,否则会影响设备的正常使用。3. 跨平台、跨设备的通话支持智能设备并不像手机这样普及,所以当你在通过智能手表、智能眼镜与他人通话时,对方所使用的可能是手机或 Web 浏览器。所以还需要支持智能设备与其它平台的通话。4. 提供高音质高画质体验音视频通话的质量始终是关键,画面的卡顿、模糊,声音出现回声、噪声都是用户无法接受的。但是,一套音视频方案在别人的智能手表上跑通了的时候,并不意味着完全能用于你的设备。还是以 WebRTC 为例,它本身具备回声消除模块,但一个回声消除算法的设计实现与设备、系统状态紧密相关。 声音经过扬声器传导到麦克风,经过了多少路径就被处理多少次。不同的设备材质,甚至设备发热,都会导致声传导特性不一样,都会导致回声消除算法不一样。这是设备的差异带来的影响。另一方面,回声消除里有两大模块,自适应滤波和非线性处理。自适应滤波前置第一个模块就是延时搜索。延时估计要在一定范围内估计,就是要有一个预先设计的delay值,如果在一个很大的范围内搜索,会极大消耗CPU资源。而Android系统的线程调度设计存在特殊性,一旦资源抢占,会在Android底层buffer产生延时,可能会导致之前预设的delay值不准。而低功耗智能设备的系统存在很多细微差异,就更需要有针对性地优化算法了。所以,在低功耗智能设备上实现视频通话,并不是用一套通用的 demo,通过短短几步的配置、接口调用就能实现的。想要好的通话体验,都需要围绕你的设备进行调优。这也是难点之一。声网Agora低功耗智能设备场景方案而针对以上大部分问题,尤其是针对低功耗设备的硬件、软件系统的特点,声网对 Agora SDK 进行了多方面的优化,包括编码算法、降噪算法,帧率和分辨率的优化算法,推出了低功耗版本 Agora SDK ,支持低功耗智能设备与其它设备与平台进行视频通话。声网低功耗智能设备场景方案的特点:1. 跨平台实时语音通话声网Agora创建了基于UDP协议的软件定义实时网络SD-RTN™,并在全球部署的近200个数据中心。通过 Agora SD-RTN™虚拟通信网络,集成声网方案的低功耗设备,可以与 Web 浏览器、手机端进行实时的音视频通话。2. 低功耗、低内存占用占用的内存小,正常通话发热量小,可以保证用户之间的较长时间的正常通话,经测试在小天才智能手表上可进行15分钟的长时间视频通话。 3. 支持主流软硬件平台该方案适用于基于 ARM 架构、Android 系统平台的低功耗智能设备,只需要在集成后调优setVideoProfile、setAudioProfile参数即可正常通话。目前,声网智能设备低功耗 SDK 已经应用于多类智能硬件产品上,包括智能手表、智能眼镜、智能音箱、智能摄像头、机器人、智能门禁等 IoT 设备,被集成于小天才、亮亮视野、小米等多个品牌的产品中。

  • 支付宝小程序向个人开发开放公测:处于限量状态

    支付宝小程序在2018年8月开放公测给企业之后,一直没有开放给个人开发的消息,不过现在有用户发现,支付宝小程序在2月26日开始向个人开发开放公测,开发只要登陆支付宝账号就可以进入公测申请。据悉,支付宝这一次开放的个人开发公测处于限量状态,每天审核1000人左右的项目,由于支付宝发现有大量的个人开发申请创建支付宝小程序,因此目前支付宝决定开启个人开发的小程序开发功能。根据支付宝小程序提供的开发文档显示,个人开发与企业开发开发支付宝小程序所采用的流程、框架、开发工具相差不大,只是在类目和功能上会相对少一些。阿里支付宝小程序是一种全新的开放模式,它运行在支付宝客户端,可以被便捷地获取和传播,为终端用户提供更优的用户体验。在支付宝最近公布的数据中,支付宝小程序的总用户数超过了5亿,日活跃用户达到了1.7亿,春节期间的峰值一度达到了2.8亿。

  • 从家居智能场景看联想SloT2.0的制胜关键点

    万物互联正成为科技互联网行业下一个风口,而眼下AI、IoT已然成为了智能物联新时代的关键字符。而我们的生活也将被这场智能革命改变。试想一下,下班回到家门口,不用钥匙或卡片,指纹密码直接将智能门锁打开,智能摄像头识别出你的身份,直接进行隐私保护,家里灯光、空调等设备随当时的环境启动并调至最佳状态,电视自动开机续播之前没看完的节目,空气净化器开启强力工作模式。而手机、电脑、平板等设备自动连接到云端,共享“家庭云”里的照片、音乐等数据,音箱会根据你日常的使用习惯播放合时宜的歌曲等......随着AI和IoT技术的不断进步,这样的场景不用等到未来,现在已经部分实现并逐步完善,而5G,更让智能物联如虎添翼,势不可挡。作为智能物联时代的引领者和推动者,联想在这片领域早有布局。在联想云服务部新晋掌门人阿木的带领下,立足全面转型智能物联服务提供商的战略,更积极赋能行业合作伙伴,构建SIoT云服务平台,用UDS体系构建开放的智能物联网生态圈,重新布局软硬一体化,为用户提供更加智能、能够无缝连接到云内容、云应用和云服务的智能物联设备,带来极致的多场景互联新体验。联想集团中国区战略副总裁云服务部总经理阿木2019CES拉斯维加斯专访现场介绍云服务平台联想品牌日,用SIoT云服务守护您的家在消费端,联想这次能提供的不仅是传统的硬件产品,软件服务能力也大大提升。根据最新数据,目前联想SIoT云服务平台已经有了超过百家合作伙伴,SIoT云服务平台全终端月活用户亦进一步突破2000万。为了服务好越来越多的用户,切实考虑他们的日常需求,联想云服务平台将各种智能物联设备的联动进行了优化,实现了不同场景中细微需求的满足,充分发挥了不同设备的优势,让它们在场景中更好地配合起来。比如“看家宝”联想智能摄像头R1+联想Lecoo智能门锁R1就被用户视为看家护院的“黄金搭档”。如果你安装了这一套设备(需要搭配联想门磁和Zigbee网关),借助联想SIoT云服务,就可以使用“智慧联想”APP把联想智能摄像头R1与智能指纹锁R1网络尊享版连接到一起。当快递小哥或者保姆需要临时进门,用户一方面可以远程下发临时密码给联想Lecoo智能门锁R1网络尊享版,另一方面开锁后摄像头还可以自动进入监控状态并跟踪,再也不用担心安全隐患。而当房子的主人回家时,系统会识别主人的回家动作,关闭摄像头,从而保护主人的隐私;而当主人离家的时候,系统识别后会自动开启摄像头,保卫家庭的安全。可以说联想云服务平台给家庭安全“加了一重保险”,解决了安全和隐私双重问题,可谓是当下更贴心的护家使者。联想SIoT云服务打造的智能家庭联动场景示例另外,对大多数人来说,家人的身体健康和房屋的安全同等重要,日新月异的科技从不同维度守护我们的安全。联想智能体脂秤能帮我们守护这道安全底线。它1次上秤可测量包括体重、脂肪率、BMI、水分率等20项身体健康数据,让人获得更全的健康衡量指标,通过云平台支持的智慧联想APP,用户可以随时查看,并获得云服务健康建议,时刻注意。同时,联想智能体脂秤可同时智能识别10个用户并记录相关测量数据,家庭中每个人都可以分别科学地管理体脂、饮食、运动计,全家一起使用更便捷。想要这些智能物联新品?2.26上京东联想品牌日!上述这些智能产品在2月26日联想品牌日中还有钜惠活动,不仅是硬件的实惠价格,还有来自软件层面的优惠服务。当然,类似的SIoT产品还有很多,要尝鲜和感知智能家居的消费者,不妨就从这里起步,保你在这个春天用极震撼的价格就能体验到更惊喜的软硬一体化服务。提前感受场景互联联想SIoT云服务平台抢足风头当下几乎各家都推出了智能物联的打法,但是联想SIoT云服务平台却脱颖而出,可以说给智能物联行业发展提供了新的思路。从前述的几个场景案例可以看出联想SIoT2.0软硬一体化服务的完整性和科学性。除了设备,场景互联更大的价值就在数据的分析和整合,更有针对性地服务用户,并在互联世界里让人们的体验得到提升,这都离不开软件层面的支持。而数据、计算力、算法正是浸淫互联网科技行业多年的联想的长项。联想提早布局,建立了一张开放的、共生共赢的智能生态网络。这也是杨元庆眼中联想智能物联战略的另一个亮点,刘军“砸10亿做智能物联网的领军者”的基石——搭建SIoT智能物联生态平台,联合业界共同推动设备的智能化创新。联想在2017年提出“智慧联想服务中国”大战略愿景,基于此构建起了开放共赢的智慧物联生态平台,从产品、渠道、服务、AI、资本给其他合作伙伴输送养料,带动了一张包罗广泛的智能互联生态网的良性发展,打破“智能孤岛”,协助更多的中小企业能乘上智能升级的东风,提升更大程度实现万物互联的可能,也更快地推动契合用户场景的智能方案落地。这种赋能产业的做法,为更多谋求智能化发展的企业带去了红利,得到了行业好评,联想也获得了2018中国最有影响力物联网云平台企业等认可联想SIoT云平台荣获赛迪网2018中国最有影响力物联网云平台奖在万物互联的潮头,联想将联合更多合作伙伴一起,编织出一张无形的将人、物、数据服务等结合在一起的大网,这种带有生命的有机连接将让万物互动无限膨胀、变化,创造出新的价值。相信,联想有望在这波浪潮里创造出更大的辉煌

  • 百度Q4营收272亿元超预期:盘后股价涨3.38%

            对此,百度董事长兼CEO李彦宏表示,“百度在2018年打下了坚实的基础,全年营收达1023亿元人民币,同比增长28%。同样2018年对百度来说是关键的一年,我们将人工智能应用从搜索拓展到更多业务领域,如信息流、语音助手、AI解决方案和自动驾驶,让更多用户、客户和合作伙伴从百度的人工智能技术和应用中受益。”       百度CFO余正钧表示:“百度业务正在由移动互联网向智能家居、智能交通、云和自动驾驶多元化拓展,并将坚定持续地投资。我们希望看到这些投资结出硕果,并在未来几年持续推动百度的收入增长。”第四季度主要业绩       百度第四季度总营收为人民币272亿元(约合39.6亿美元),与上年同期相比增长22%,不计入公司已经宣布的资产剥离交易的影响为同比增长28%。“百度核心”(Baidu Core,即搜索服务与交易服务的组合)第四季度总营收为人民币205亿元(约合29.8亿美元),比上年同期增长14%,不计入公司已经宣布的资产剥离交易的影响为同比增长20%;  百度第四季度运营利润为人民币11亿元(约合1.62亿美元),比上年同期下降77%;运营利润率为4%,相比之下上年同期为21%;“百度核心”第四季度运营利润为人民币44亿元(约合6.45亿美元),比上年同期下降26%;运营利润率为22%,相比之下上年同期为33%;  不计入股权奖励支出,百度第四季度运营利润为人民币27亿元(约合3.86亿美元),比上年同期下降54%;运营利润率为10%,相比之下上年同期为26%。不计入股权奖励支出(不按照美国通用会计准则),“百度核心”第四季度运营利润为人民币58亿元(约合8.37亿美元),比上年同期下降17%;运营利润率为28%,相比之下上年同期为38%;   百度第四季度净利润为21亿元(约合3.03亿美元),比上年同期下降50%。百度第四季度每股美国存托凭证摊薄收益为人民币6元(约合0.86美元),比上年同期下降52%。“百度核心”第四季度净利润为41亿元(约合5.89亿美元),比上年同期下降22%;  不计入股权奖励支出,百度第四季度净利润为人民币46亿元(约合6.72亿美元),比上年同期下降17%。不计入股权奖励支出(不按照美国通用会计准则),百度第四季度每股美国存托凭证摊薄收益为人民币13元(约合1.92美元),比上年同期下降17%。不计入股权奖励支出(不按照美国通用会计准则),“百度核心”第四季度净利润为人民币65亿元(约合9.39亿美元),比上年同期下降1%。2018财年主要业绩:   百度2018财年总营收为人民币1023亿元(约合148.8亿美元),比2017财年增长28%,不计入公司已经宣布的资产剥离交易的影响为同比增长31%。“百度核心”2018财年总营收为人民币783亿元(约合113.8亿美元),比2017财年增长22%,不计入公司已经宣布的资产剥离交易的影响为同比增长26%;  百度2018财年运营利润为人民币155亿元(约合22.6亿美元),比2017财年下降1%;运营利润率为15%,相比之下2017财年为20%;不计入股权奖励支出,百度2018财年运营利润为人民币202亿元(约合29.4亿美元),比2017财年增长7%;运营利润率为20%,相比之下上年同期为24%。不计入股权奖励支出(不按照美国通用会计准则),“百度核心”2018财年运营利润为人民币279亿元(约合40.6亿美元),比2017财年增长23%;运营利润率为36%,与2017财年的运营利润率类似;  百度2018财年净利润为人民币276亿元(约合40.1亿美元),比2017财年增长51%。百度2018财年每股美国存托凭证摊薄收益为人民币78元(约合11.35美元),比2017财年增长49%。“百度核心”2018财年净利润为人民币336亿元(约合48.9亿美元),比2017财年增长52%;  不计入股权奖励支出,百度2018财年净利润为人民币233亿元(约合33.9亿美元),比2017财年增长35%。不计入股权奖励支出(不按照美国通用会计准则),百度2018财年每股美国存托凭证摊薄收益为人民币66元(约合9.64美元),比2017财年增长34%。不计入股权奖励支出(不按照美国通用会计准则),“百度核心”2018财年净利润为人民币285亿元(约合41.4亿美元),比2017财年增长37%。主要业务线财报数据:      百度2018年加大了对移动产品矩阵的投入,取得了令人振奋的成果。旗舰应用百度App、好看视频、全民小视频三款产品的用户增长强劲,整体信息流用户使用时长同比增长112%。QuestMobile数据显示,在中国十大短视频应用中,全民小视频与好看视频是增长最快的两个应用。       移动产品矩阵的卓越表现带动百度移动生态的进一步繁荣。截至2018年12月,百家号内容创作者达到190万,包含人民日报、新华社、中央电视台和多个省级媒体机构;百度智能小程序月活用户达到1.47亿,环比增长30%。       在AI新业务方面,DuerOS正在成为中国最受欢迎的智能语音助手。截至2018年12月,搭载DuerOS的智能设备激活量超过2亿台,环比上涨45%;语音交互达16亿次, 并连续八个季度实现每季度数据翻倍。DuerOS技能开放平台目前拥有约2.7万个第三方开发者,可提供包括网络电台、视频直播等1000多种技能支持。百度智能设备小度在家与小度智能音箱两款产品在国内多个电商平台创下购物节同品类最佳销售记录,深受用户喜爱。       Apollo开放平台也取得技术与商业化上的突破性进展。百度在今年1月CES上发布了全球首个智能驾驶商业化解决方案Apollo Enterprise,并发布Apollo 3.5,覆盖更多、更复杂的自动驾驶场景,支持市中心、住宅场景等城市道路路况。截至目前,百度已经获得超过50张智能网联汽车道路测试牌照,在国内遥遥领先。Apollo合作伙伴也已超过135家,持续领跑自动驾驶行业。此外,Apollo还与一汽、沃尔沃达成战略合作,共同生产商用L4级轿车。       百度云的技术实力、营收能力也得到显著提升。在百度与央视2019年春晚红包互动期间,百度云稳定承接了全球观众208亿次红包互动。百度云还推出了开源计算平台OpenEdge,帮助开发者构建轻量、安全、可扩展性强的边缘应用程序,将AI应用于智能家居设备、可穿戴设备以及其他物联网设备。       爱奇艺也延续了强劲增长势头。在优质自制内容驱动下,爱奇艺会员数量第四季度达到8740万,比去年同期增加3660万。百度还联合爱奇艺与四川有线电视推出混合OTT 机顶盒“蜀小果”,这是继“歌华小果”之后,百度推出的第二款人工智能机顶盒。现金流情况:        百度2018财年自由现金流为人民币272亿元(约合39.6亿美元)。若将爱奇艺排除在外,则百度2018财年自由现金流为人民币249亿元(约合36.2亿美元)。业绩展望:     百度预计在2019年第一季度,百度的净收入总额将会介于235亿元人民币(约合34.2亿美元)到247亿元人民币(约合36.0亿美元),同比增长12%到18%,移除百度国际业务与度小满拆分影响,同比增长18%至24%。该展望只代表基于当前情况的初步预测,不排除今后有调整的可能。股价变动情况:      百度发布财报后,其股价在纳斯达克常规交易中上涨0.63美元,报收于171.81美元,涨幅为0.37%。在随后的盘后交易中,百度股价再度上涨4.84美元,至176.65美元,涨幅为2.82%。过去52周,百度的最高价为284.22美元,最低价为153.78美元。

  • Gartner:云和企业软件2019年支出增长速度将超IT其他领域

    从实体业务转向数字业务,是支出增长的主要动力。如果您在怀疑数字化转型是否是IT主管的首要考虑事项,那么只需看看他们正在购买什么。预计在企业软件(尤其是云服务和应用程序)上的支出增长速度将在今年超过IT其他领域,这将推动全球技术支出的总体增长。根据市场研究和咨询公司Gartner发布的一份报告,该报告预测全球IT支出将增长3.2%,达到3.77万亿美元。预计在企业软件上的支出今年将较2018年增长8.5%,达到4310亿美元。企业软件包括ERP(企业资源规划)、SCM(供应链管理)、CRM(客户关系管理)、开源软件、本地软件和云端软件。Gartner表示,在整个企业软件类别中,云计算基础架构和应用程序将吸收大部分支出,今年总计将达到2140亿美元,比2018年增长17.5%。“我们所看到最重要的事情是从实体业务转向数字业务,” Gartner分析师约翰•洛夫洛克(John Lovelock)表示。“这是支出增长的主要动力。”虽然成本优化很重要,但它并不是转向云服务和应用程序的主要原因,洛夫洛克说。“转向云端的实际情况是,可获得更多的敏捷性,以及以您需要的速度获得所需的特色功能。数字业务的运行速度远远超过(实体)业务;超大规模数据中心是唯一的方案,它可以支持数字业务的速度,以及数字业务所需的合作——在本地则很难做到这一点。”然而,云端支出的增长在全球各地并不均衡。“必须说,在全球范围来看,云计算确实是源自美国的影响,并且正在蔓延;美国目前几乎占全球云计算支出的60%,”洛夫洛克说。除此之外,发展中国家市场缺乏超大规模数据中心,这导致其应用的滞后,从而减缓这些地区的云端业务增长,他说道。服务和数据中心的支出也在增长对IT服务和数据中心系统的支出也将对总体增长做出重大贡献。Gartner表示,包括服务器、存储和网络技术在内的数据中心系统支出将增长4.2%,达到2100亿美元,而对IT服务的支出将增长4.7%,达到1.03万亿美元。Gartner表示,虽然在设备和通信服务上的支出也将增加,但它们会落后于其他领域支出的增长。包括固定和移动电信服务以及统一通信技术在内的通信支出今年将增长1.3%,达到1.4万亿美元。与此同时,预计在PC、平板电脑、手机和打印机等设备的支出将增长1.6%,达到6,790亿美元。洛夫洛克表示,市场上出现的手机新功能似乎没有为许多用户带来足够的动力进行升级,尤其是在经济不稳定时期。“我们现在正在寻找经济混乱的迹象,”洛夫洛克说。经济领域的乌云包括英国即将退出欧盟,美国和中国之间的贸易紧张关系以及潜在的全球关税上升,这些都给商业计划注入了不确定性。“对于一家伦敦银行来说,如果不知道英国脱欧之后其商业模式将如何的情况下,就很难制定计划在技术方面投入大量资金,”洛夫洛克说。宏观经济问题是企业高管关注的焦点。洛夫洛克指出,杜克大学最近对首席财务官的调查显示,46%的受访者认为2019年将出现衰退。尽管如此,Gartner预测2019年的IT支出增长为3.2%,虽然略低于2018年的3.9%,但仍然相当强劲。“人们在购买IT的原因方面发生了基本面上的变化,以及他们在打算如何使用IT方面也发生了巨大变化——我们赚钱的方式正在改变,”洛夫洛克说。换句话说,尽管地缘政治问题令商业领袖感到担忧,但技术支出的基本驱动力——数字化转型——仍然是IT支出的推动力。

  • IT行业该如何应对AI带来的技术变革

           我们的家庭生活越来越多地开始使用智能设备和智能应用程序,这些设备和应用都是为了及时满足我们的需求。像Alexa和Siri这样的服务意味着,简单地大声说话就能立即获取信息或完成任务。这一趋势反映了在专业领域,工作者开始期待工作场所的需求得到同样的即时满足,因此提供自助服务和自动化已成为所有IT服务台必不可少的条件。人工智能正在加快普及       这一演变的下一个阶段就是人工智能服务的出现,它不仅满足我们的要求,而且通过分析我们的个人喜好来学习预测我们的需求。虽然这项技术还处于起步阶段,但人工智能已经成为大多数领域的主要关注点。知名分析师高德纳(Gartner)预计,到2020年,30%的首席信息官将把投资人工智能作为其最优先考虑的五大领域之一。随着人工智能驱动的解决方案变得越来越普遍,IT服务台行业也将不得不适应,以反映员工对工作场所请求的响应性、预见性支持的期望。       尽管几十年的科幻设定了共同的期望,但我们还不能看到独立的、自我实现的人工智能。相反,目前的人工智能技术都是分析复杂的信息来学习、识别模式和得出结论,当然所有这些都比人类的思维快得多。这一过程的最终结果通常是自动化和大大加快活动,这将节省我们许多小时的重复工作。       在IT服务管理(ITSM)中,人工智能开始自动化IT技术人员执行的常规和非常规任务,给他们更多的时间来执行其他具有更大价值的活动。人工智能在ITSM中最明显的应用之一是通过自然语言处理和机器学习为虚拟助理提供动力。这些功能将使服务能够与使用正常人类语言的人进行交互,观察模式,构建数据模型,并推荐操作。尽管这项技术还在开发中,但ITSM供应商不能忽视人工智能的进步,如果他们的解决方案想要适应和跟上新的、人工智能驱动,就应该开始多学习,打下基础。        建立知识管理实践        信息是任何人工智能应用的命脉,稳定地提供丰富、一致的数据是必不可少的。这一要求促使组织发展、收集和分享信息的方式发生了变化,越来越重视管理良好和维护良好的知识,这些知识对于解决方案来说很容易阅读和学习。       构建和优化数据存储是一项相当大的任务,因此IT团队应该开始建立强大的知识管理实践。包括来自第三方解决方案的数据以及内部系统将提供更多的洞察力,因此建立与API的外部互操作性也很重要。        自助文化建设        多年来,向用户提供自助服务一直是ITSM的一大趋势,解决方案包括可搜索的门户网站和如何指导用户直接收集知识和解决问题,可帮助自己和IT团队节省时间。人工智能的实现将极大地增强自助服务的提供,通过能够更好地预测用户需求的Web门户和交互式的、智能的聊天机器人。事实上,企业管理协会(EnterpriseManagementAssociates,EMA)在进行一项调查发现,通过移动、自助服务和机器人改善终端用户体验是首要优先事项。        那些已经专注于开发自助服务渠道的企业,自然能够更好地应对以人工智能为中心的未来。拥有现有自助服务门户的IT团队可以通过在一些选择用例中添加一个简单的聊天机器人或虚拟代理来尝试AI实现。使用这些测试机器人的用户越多,他们的学习和开发就越好,所以团队可以使用游戏化来激励用户尝试。        要充分实现人工智能的潜力,需要对ITSM背后的互联系统进行大规模、迭代的更改。这可能具有挑战性,因为ITIL(信息技术基础设施库)是最常见的ITSM框架,对于已建立的系统非常有效,但往往过于僵化,无法支持快速发展的环境。        相反,敏捷或精益的框架,如DevOps,是以实验和探索为导向的,更适合引入AI。敏捷方法采用了一种更小、更频繁的更改的迭代方法,这使得在没有不必要的风险的情况下更容易进行实验。        探索新的解决方案       在家里,大多数人已经习惯于使用单一的智能设备进行任何事情,轻松地在网上购物,设置音乐播放列表,用几个熟练的刷卡或口语短语联系朋友。因此,我们越来越期望在我们的职业生活中采取同样的统一办法。员工不再区分IT、人力资源和财务问题,他们希望在一个单一的系统中满足他们所有的需求。这意味着在一个地方包含所有业务服务需求的组合服务变得越来越有价值。        还没有组合产品的组织可以通过找到一个需要服务门户、自动化和报告的高价值业务部门来测试这些流程,并使用现有的ITSM解决方案实现这些过程的自动化。如果该平台不够灵活,无法满足这些新的需求,这是一个强烈的迹象,是时候探索新的解决方案,将能够应对统一的服务提供。        总结       虽然人工智能在大多数领域仍处于实际应用的早期阶段,但不可否认的是,这一概念最终超越了科幻幻想,进入了日常的、脚踏实地的现实。几乎没有哪个行业能够忽视这一趋势,尤其是那些以处理信息和尽可能高效地找到解决方案为中心的ITSM。那些已经开始通过更强有力的知识管理、自助服务和敏捷实践来奠定基础的ITSM提供商将在未来几年中处于领先地位。

  • 工业互联网已进入大发展时代

            一、工业互联网行业发展现状        工业互联网作为新一代信息技术与制造业深度融合的产物,不仅能为制造业乃至整个实体经济数字化、网络化、智能化升级提供新型网络基础设施支撑,而且催生了网络化协同、个性化定制、服务型制造等新模式新业态,有力促进了传统动能改造升级和新动能培育壮大。当前,我国已形成比较健全的工业互联网产业体系,工业互联网应用正由家电、服装、机械等向飞机、石化、钢铁、橡胶、工业物流等更广泛领域普及。        2018年是全面实施工业互联网的开局之年。”在近日由中国信息通信研究院、工业互联网产业联盟联合主办的2018工业互联网峰会上,工信部部长苗圩表示,工信部将开展工业互联网发展“323”行动,即打造网络、平台、安全三大体系,推进大型企业集成创新和中小企业应用普及两类应用,构筑产业、生态、国际化三大支撑。        目前工业互联网已进入大发展时代,我国已形成较健全的工业互联网产业体系。从工业互联网产业联盟的会员单位构成来看,工业企业占35%,信息通信企业占38%,几乎平分秋色,同时通信产业有很多在做工业软件,包括6%的安全公司。最重要的是,这个联盟是一个开放的联盟,面向全球,与全球在同样的起跑线上竞争,境外企业占7%。        工业互联网产业联盟的会员单位构成         相关报告:智研咨询网发布的《2018-2024年中国工业互联网行业市场专项调研及投资前景预测报告》  2017年中国工业互联网市场规模达到4676.99亿元, 增长率为13.5%; 随着产业政策逐渐落点, 市场空间将有望加速, 预计2020年中国工业互联网市场规模可达6929.12亿元。  2015-2020年中国中国工业互联网市场规模及增长率走势  2017年中国工业互联网细分领域结构情况中, 基础设施规模达到1912.89亿元, 占总规模的40.9%;软件与应用规模达到1435.84亿元, 占比为30.7%; 通信与平台的规模为1290.85亿元, 占比为27.6%; 工业安全为37.42亿元, 占总规模的0.8%。  2017年中国工业互联网细分领域规模   2017年中国工业互联网细分领域结构        当前,我国工业互联网网络、平台、安全三大体系建设正加速创新发展。企业在工业互联网网络、平台、安全等领域不断创造出新技术、新产品、新方案,工厂内外网络改造升级稳步推进,安全保障能力不断提升,初步建成了一批典型应用平台        工业互联网平台已成为全球主要国家与跨国巨头竞争和布局的焦点与核心,各类产业主体积极布局,推出一系列工业互联网平台产品。        我国工业互联网平台创新活跃,装备、自动化、工业软件、信息技术和制造企业从不同领域积极推动平台发展,目前已经形成超过30个工业互联网平台。部分平台企业能够在航空航天、装备制造、信息电子、冶金、石化等行业精耕细作,在质量优化、工艺优化、设备预测性维护、供应链协同等方面形成一系列创新应用,并逐步培育起一个工业应用的创新生态。        工业互联网作为新一代信息技术与制造业深度融合的产物,不仅能为制造业乃至整个实体经济数字化、网络化、智能化升级提供新型网络基础设施支撑,还催生了网络化协同、个性化定制、服务型制造等新模式新业态,有力促进了传统动能改造升级和新动能培育壮大。        目前我国工业互联网发展进度与全球一致,都处于起步阶段,但有自己的特色,目前在参考架构设计、技术创新与产业化、生态体系建设、应用模式创新、国际合作等方面都取得了一系列进展。        就发展阶段而言,国内工业互联网处于发展的第三个阶段快速发展期,中国互联网正从消费型转向企业型。不过还处于起步阶段,或者称之为“浅水区”,在深度和广度方面都十分有限,但中国作为仅次于美国的第二大互联网产业强国,工业互联网发展前景广阔。        二、工业互联网相关企业情况分析   中国互联网云平台产业链结构而言可分为数据采集层、IAAS层、PAAS层、SAAS层。其中,数据采集层是基础,IAAS层是支撑,PAAS层是核心,SAAS层是关键。白皮书还指出目前较为成熟的是IAAS层,但随着市场消费需求的不断扩大,另外三层的利润将逐渐上升,将成为产业利润的主要获取者。        巨大的市场前景吸引着各行业企业纷纷布局,这包括互联网企业、生产制造商、设备制造商在内的来自产业链不同阶段的企业纷纷跑马圈地,推动中国制造业正在向数字化、网络化、智能化和云化发展。       1、宝信软件  宝信软件是宝钢股份控股、 宝钢集团实际控制的软件企业, 是中国领先的工业软件行业应用解决方案和服务提供商。  2017 年正式发布宝信工业互联网平台, 实现企业内部信息流、 资金流和物流的集成和融合。  2018年1-3月实现营业收入10.14亿元,同比增长7.05%; 计算机应用行业平均营业收入增长率为18.14%; 归属于上市公司股东的净利润1.48亿元, 同比增长78.14%。  2014-2018Q1宝信软件总营收及净利润情况分析  2、用友软件(广东) 营销服务中心  用友软件(广东) 营销服务中心成立于2006年, 主要业务有用友各系列软件代理、 为企业信息化建设提供整体解决方案、 软件开发、 系统实施, 企业数据库管理及维护等。  2018年一季度业绩报告, 总营业收入10.74亿元, 同比增加3.28亿元, 增长43.9%;云服务业务营收3.66亿元, 同比增长158.3%;软件服务业务快速增长, 营收7.02亿元, 同比增长16.0%。  2014-2018Q1用友软件总营收及净利润情况分析  3、东方国信  东方国信成立于1997年, 专注于大数据领域, 紧跟全球大数据技术的发展趋势, 构建以大数据、 云计算及移动互联三大技术体系为核心的云化架构的大数据产品体系。  2018年1-3月实现营业收入2.31亿元, 同比增长2.63%; 计算机应用行业平均营业收入增长率为23.09%; 归属于上市公司股东的净利润3607.40万元,同比下降26.13%, 计算机应用行业平均净利润增长率为12.35%。  2014-2018Q1东方国信总营收及净利润情况分析  目前,在政策与市场的双重驱动下,工业互联网平台的制造业生态正成为产业竞争的“风口”,2018年的跑马圈地正愈演愈烈,一场“发展的腥风血雨”已经在所难免。  三、我国工业互联网平台建设和应用呈现六大亮点  2018年上半年,国家密集出台了一系列支持工业互联网的政策,工业互联网平台建设热度高企。总体看,我国工业互联网平台建设和应用呈现六大亮点。  亮点一:  工业互联网平台建设迎来政策密集红利期       为深入贯彻落实国务院《关于深化“互联网+先进制造业”发展工业互联网的指导意见》,工信部先后发布了《工业互联网发展行动计划(2018—2020年)》《工业互联网专项工作组2018年工作计划》《工业互联网APP培育工程方案(2018—2020年)》,可以说,支持工业互联网发展的政策体系基本形成。广东、上海、江苏、浙江、河南、重庆、福建等省市纷纷制定配套实施方案,加大工业互联网平台培育和企业上云支持力度。为加快国家与地方联动,工信部和广东、浙江、江苏等地签订了推进工业互联网发展的部省合作协议。       亮点二:  工业互联网平台建设和应用路线图基本形成  工信部重点围绕“一二三四五”部署工业互联网平台工作,工业互联网平台建设和推广路径基本形成。  一是打造两类工业互联网平台。一类平台是能够参与全球竞争的跨行业跨领域工业互联网平台,另一类平台是面向特定行业的企业级工业互联网平台。  二是培育三类工业App。包括基础共性、行业通用和企业专用工业App。  三是推动九大工业设备上云。推动高炉、工业锅炉、风电设备、光伏设备、数控机床等工业设备上云,带来工业互联网平台的功能演进和规模商用。  四是开展四类试验测试。开展跨行业跨领域工业互联网平台试验测试、特定行业工业互联网平台试验测试、特定区域工业互联网平台试验测试和工业互联网平台测试床建设,促进技术的快速迭代。  五是建立五大公共服务体系。加快建立平台基础及创新服务、监测分析、大数据管理、质量管理、标准管理等公共服务体系。        亮点三:  工业互联网平台建设双轮驱动格局业已形成  当前制造企业和互联网企业成为工业互联网平台建设的两股核心力量。据统计,由ICT企业主导建设的平台数量为45个,占比为60%;由制造企业主导建设的平台数量为30个,占比为40%。海尔、航天科工、徐工、三一重工、富士康等龙头制造企业基于较强的工业知识和模型沉淀能力,阿里巴巴、东方国信、浪潮、用友、华为、紫光等大型ICT企业基于云计算、大数据等使能技术,纷纷积极建设工业互联网平台。       亮点四:  工业App培育和应用全面展开  培育百万工业App,是建设工业互联网平台生态的核心,是形成工业互联网平台双边市场的关键。2018年上半年,工信部印发了《工业互联网App培育工程实施方案(2018—2020年)》,提出到2020年要培育30万个面向特定行业、特定场景的工业App。根据阿里巴巴、东方国信、浪潮、海尔、航天云网、用友、徐工、三一重工等国内领先工业互联网平台企业公开的数据,我国工业App数量约1万个,海量工业App和海量工业用户互促共进、双向迭代的双边市场正在初步形成。       亮点五:  工业互联网平台领域投融资热度空前高涨  2018年上半年,“工业互联网平台”投融资领域备受关注,首先从A股资本市场引爆投资热度。2月到3月仅仅一个月内,与工业互联网相关的A股上市公司中,东土科技股价上涨85.07%,汉得信息股价上涨71.03%,用友网络股价上涨125%,海得控制股价上涨高达135%,东方国信股价上涨66.35%,资本市场对工业互联网相关上市公司的热炒,使得A股上市公司与工业互联网相关的资产并购和投资愈演愈烈。股票市场的火爆提升了工业互联网平台领域股权投资的热度。富士康工业互联网股份有限公司(下称“工业富联”)于5月发布了招股意向书,在工业富联IPO过程中,共有20家知名企业及投资机构进入了战略配售名单,阿里巴巴、腾讯、百度三大互联网巨头全部在列。此外,上海国投、中央汇金、中国国有企业结构调整基金、中国人寿、招商局、国投等知名企业也都通过直接投资或旗下投资主体积极参与对工业富联进行战略投资。工业富联网上发行最终中签率为0.342%,网下配售中签率仅仅为0.08%,机构超额认购倍数高达1293.57。               亮点六  工业互联网平台区域集中度凸显  截至目前,我国工业互联网平台集中分布在环渤海、长三角、珠三角三大区域,数量较多的省市是北京、江苏、上海、浙江、广东、山东等,分别为15个、12个、9个、7个、6个、6个,约占平台总数的73%。这些地区的政府和企业积极性高、先进制造业集聚、制造业与互联网融合发展基础较好,大多以推动产业集聚区的行业整体上云为抓手,涌现出了一批各具特色的工业互联网平台。

  • 2019年IT新动态:IT市场压力将会引发科技生态链巨变

    就2018年IT业的发展进程,摩尔定律似乎已经跟不上人工智能和IT自动化的迅猛发展!!!由于电子器件的小型化,分布式计算在微处理器上得到了迅速的发展。图形处理单元(GPU)的出现以及由此产生的超集成基础设施就是证明。现在,IT部门正在将传统标准化服务器的成本效益与进入市场的创新产品与边际计算实践进行比较。IT部门所需的技能类型也发生了变化,IT社区的重点从手工任务工作转移到了IT自动化。因此,IT解决方案必须包含更多的软件功能来操作、监控、管理和动态配置企业的IT控制界面。对于IT供应商来说,更值得注意的是,高级功能和对安全环境不断增长的需求进一步增加了IT基础架构的复杂性,这是实现预期结果所必需的。同时,行业用户希望在不涉及复杂性的情况下从这些新功能中获益。从IT生态权威媒体端来看,IT供应商将经历许多变化:他们如何合作,如何进入市场,如何创新,以便在快速增长的2019年保持良好的相关性,值得我们关注。同时,行业用户希望在不涉及复杂性的情况下从这些新功能中获益。IT供应商将经历许多变化:他们如何合作,如何进入市场,以及他们如何创新以在快速增长的2019年保持良好的相关性,值得我们关注。首先,在一个日益开放的源代码环境中,合作伙伴的力量在以硬件为中心的供应商战略中变得更强。趋势:硬件供应商正在寻求更深入、更合作的合作伙伴关系,以支持围绕云等关键技术的新兴战略。驱动因素:不断增长的客户对开源技术的需求以及来自商业市场IT供应商的持续压力正在推动他们之间更深入的合作关系,因为他们必须保持技术和解决方案之间的联系,以形成一个整体的解决方案。结果:合作关系将使基础设施供应商能够承受来自以云为中心和以软件为中心的同行的压力。ODM也给原始设备制造商带来了越来越多的压力。加强这些合作关系的需要是为了确保长期的生存能力。回顾过去,2018年,IT供应商之间的合作关系有所增加。总体而言,该行业正在看到两种类型的合作关系。例如,联想和Netapp集成了基础架构并演示了协作硬件平台。据悉,两家公司目前正在使用netapp全闪存数据管理解决方案和联想ThinkSystem基础架构整合联想品牌存储产品,将充分利用联想供应链和渠道系统来布局存储市场。通过协作,联想和Netapp都可以从扩大客户群中获益。此外,联想与美商在中国的存储产品合资企业,增强了大公司可以积累的优势,改变了利润率的下降,成为推动技术转型的重要途径。戴尔与VMware的合作是软硬件合作的另一个例子。尽管VMware是戴尔集团的一部分,但它与硬件关系不大。戴尔曾考虑反向收购VMware,但除了资本运营外,这两个方案的整合也吸引了业界客户的更多关注。通过在整个IT基础架构上进行协作,Dell和VMware使客户能够从IT待办事项列表中删除冗余的管理任务,同时使用户更加满意和高效。戴尔正通过更强大的软件和硬件集成吸引客户做出选择。毕竟,这样一个大型硬件供应商很少有与软件产品相关的解决方案。此外,客户对开放性的追求使其成为供应商战略的重要组成部分。作为回应,IBM拥有Red Hat技术,并以更有利可图的产品组合迎合市场。IBM可能会看到亚马逊和谷歌的盈利方向,跟随潮流或顺应潮流。简言之,更多利基设施提供商将遵循这些合作策略,以维持商业化和以云为中心的市场。然而,通过合作或合资,一些专业领域的小公司会感到压力,后者如何选择一个更强大的合作平台是值得考虑的。其次,IT供应商将重新考虑创新,因为研发部门正转向满足客户的主要需求,以利用其关键IT供应商作为一站式服务。趋势:基础设施供应商将更加关注预售和服务。驱动力:快节奏的全球经济正在鼓励IT客户尽快采用自动化技术,如人工智能,以跟上行业垂直部门的技术变化。结果:这种快速采用,再加上嵌入新的IT技术,鼓励客户寻求以服务为中心的基础架构解决方案,这些解决方案可以反复迭代。从基础设施提供商的角度来看,服务是利润率较高的解决方案。因此,通过提供服务来促进基础设施销售,不仅有助于密封交易,而且还能提高公司的利润价值。在整个2018年,以硬件为中心的公司一直致力于通过有机创新、合作和收购来增强其软件和服务能力,以满足不断变化的客户需求,并在其他商品行业创造差异化。随着我们进入2019年,当人工智能和云服务成为基础设施供应商战略的重点时,需要加快这一转变,以便基础设施供应商保持相关性。然而,在以小型基础设施为中心的供应商的服务领域,后者面临着一个关键挑战,即人才的获取,因为众所周知的高技能IT人员短缺。大型IT企业对人才生态有了更大的信心,因为他们有着成熟的人才培养渠道、大学工程师培训基金会和完善的人才培养体系。中国权威IT生态媒体之一的广端网络观察表明,目前,能够持续向人才系统前端输送人才资源的代表性企业包括华为、新华三、思科、IBM、戴尔等大型制造企业,他们在TAL有着相当的培养经验。耳鼻喉科输入。基于此,他们可以在现有产品组合的基础上为客户提供硬件、软件和服务。小型IT供应商必须寻求更具战略意义的方法来取得类似的成功。此外,随着客户越来越依赖基础设施供应商来满足其所有IT需求,物联网和安全也将成为IT供应商在2019年合作的一个领域。第三,新兴的基础设施技术重塑了客户的需求,越来越多地关注计算和管理数据的新方法。客户寻求与较少的供应商合作,以降低其环境的复杂性,这将加速对大型IT供应商的收购。趋势:基础设施提供商继续投资新兴的基础设施技术,如(NVMe)、GPU、量子计算和优势。驱动因素:部分来自业务部门的安全问题正在增加,这增强了硬件差异化的价值,而技术进步则更加强调新的数据处理方法,如边缘计算。结果:客户将寻求新的硬件功能来实现现代计算,如量子计算和优势。新兴的基础设施技术将为公司未来的计算和数据存储奠定基础。人工智能和机器学习等用例导致了数据的快速创建。IT供应商在数据中心基础设施中的任务是创新,以便开发和利用这些数据为客户提供强大的方法。IT供应商正在围绕NVMe和GPU等新兴技术进行创新,以处理不断增长的数据创建并实施边缘计算,以便客户在购买许多不同组件后能够使用传统和非结构化数据更快地实现业务增长。业界普遍认为,随着客户越来越需要能够促进转型的基础设施创新,2019年将围绕边缘计算和数据中心、基础设施增强(如NVME和GPU)进行大量创新。量子计算属于另一类新兴的基础设施技术,因为它的创新将比计算机技术产生更大的影响,而不是增强现有功能的NVME和GPU技术。也就是说,商业级量子计算的出现将使近半个世纪摩尔定律的进步显得更加有力。到2024年,量子计算产品和服务的市场规模将达到84.5亿美元,政府资助的研发投资将达到22.5亿美元。预计未来几年将是量子计算技术快速发展和产业应用逐步扩展的时期。如果传统计算改变了传统制造业的信息技术应用形式,那么量化将加速知识和技能的发展,加速全球经济从制造业向以知识和技能为核心的发展路径,这种转变将更加加强与传统制造业的整合。NK和练习。智能计算将有一个指数级的进步,应用世界上最复杂的算法来解决困难的业务问题。未来的公司和技术公司致力于围绕算法开发构建API连接器和策略规则,以接近量子计算的应用级别,然后将结果返回到经典计算模型。简单地说,IT程序员获得优化的量子算法以满足硬件性能和特定的应用场景。考虑到性能改进的潜力,量子计算可以超越经典计算的竞争劣势。据IT生态权威媒体广端网络预测,2019年量子计算商业化将在一定程度上刺激行业IT解决方案的实质性创新,而不是概念的包装。回到搜狐看看更多

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 看懂这几点,轻松搞定企业建站!

    为什么企业要建站?建设网站能带来哪些?随着互联网信息技术在不断进步的同时,网站建设也取得较大发展。现在越来越多的企业都要建设自已的网站,利用网络推广宣传自己的品牌来扩大企业产品的影响力,进一步拓展市场,加强与消费者的互动性已经成为了企业发展的迫切需求。一.网站建设可增强宣传企业形象企业网站建设是展示企业形象的一面镜子,能够更好的宣传企业的理念和商业层次,所以在企业形象宣传上,往往是每个公司最重视的事情。二.网站建设可促进企业与用户互动企业与用户互动其实有好多方式,具体根据不同的情况来分别对待,其中有一些比较好的方式是通过调查问卷和会员服务的方式获取用户的信息。同时,企业通过高端型网站获取用户的反馈是非常有必要的,这也是企业站点必备的一个功能。三.网站建设有助于业务宣传从业务宣传方面来看,选择合理的程序模块来满足需要逐步更新的服务内容,把用户最关心的问题摆在最显眼的位置,并且不需要用户过多的点击就能让他找到所需要的信息。提倡企业应该根据自身的特点,用最合适的网站展示方式和展示效果来体现自己的特色。想要搭建一个让客户眼前一亮的网站,一定要好好做准备一、先做好规划,再全力执行所谓‘凡事预则立,不预则废’。做站也是如此,因此,在开始的前期,应该根据自身的具体情况做一个长期的规划。请注意,是长期的。因为只有把目光放在远处,每一天你才能有足够的动力不顾一切的前行,才有足够的毅力来坚持自己的选择,因为在互联网这一行业,胡乱抛弃是永远不会成功的。二、请选择适合自己的建站程序如今网上开源的源码一大堆,最终选择什么样的源码来搭建网站,这取决于你搭建网站的类型以及如后的规划。但是有一点必须要注意,那就是在选择源码的时候一定要选择比较知名的建站程序,因为如果在使用的过程中有什么问题在网上才能找得到答案,这是在选择建站程序上应该注意的问题。在网上,论坛、门户、科技等等建站程序应有尽有,至于该做何选择,这取决于你自己。三、域名、空间的选择互联网创业,首先要具备的一点就是:要拥有自己的站点。网站的搭建,首要任务就是注册一个属于自己的域名,然后在根据自身经济情况选择一个自己能承受的空间服务器。对于IDC服务商的选择,首先我们就是要明确自己所需要的空间类型,是VPS、虚拟主机、独立服务器还是云服务器。选择虚拟空间的时候一定要注意他们所支持的数据库,否则买了也不能用。至于最后你自己该做出怎样的选择,这取决于你自身的情况。注册好域名,找准放置自己网站的服务器,这是建站首要考虑的东西。四、如果你想长远的做站,那么请备案!很多人嫌备案麻烦,所以选择了国外或者香港服务器,免去了备案这一比较繁杂的环节。其实这是一种目光短浅的做法,更是一种从长远来看不可取的做法!话说回来,如果你只是想搭建个网站玩玩,并没有什么长远的计划,那么这样的做法无可厚非,但是如果你想要在互联网行业闯出自己的一片天地,那么这样的做法是极为不可取的。五、江西南顺网络科技有限公司介绍:   南顺网络是江西首家推出四网合一技术的网络公司,电脑PC端、WAP手机端、手APP客户端、微信端,四网合一,同一后台管理,解决了多端多后台管理,把繁琐的管理容纳到同一个后台。四网合一技术管理方便,操作性灵活,体现了南顺网络技术实力,方便了客户管理,减少客户的管理成本,带领江西互联网进入了四网合一时代!建站套餐:(可根据客户需求制定开发,栏目客户可以自己制定,南顺全能后台系统管理)基础型 ¥:880/起 栏目:网站首页+关于我们+公司动态+产品展示+在线留言+联系我们品牌型 ¥:1580/起   栏目:网站首页+关于我们+公司动态+产品展示+在线留言+联系我们+WAP手机版营销型  ¥:2280/起  栏目:网站首页+关于我们+公司动态+产品展示+在线留言+联系我们+WAP手机版+FLASH动画+SEO结构优化+栏目可以制定商城型  ¥:5800/起   栏目:制定栏目+文章系统+产品系统+评论系统+会员系统+在线客服+在线支付系统微信公众号   ¥:1880/起    微信开发:微官网+微商城+公众号开发+微喜帖+微信预约+微点餐+微分销+微交易+微金融+微信幻灯片+接受微信功能制定APP型   ¥:8800/起   APP开发:APP官网+APP商城+APP预约+APP点餐+APP分销+APP交易+APP金融+接受APP功能制定三合一    ¥:6800/起 三网合一:PC电脑端+WAP手机端+微信端(三网同一后台管理,便于宣传管理)四合一    ¥:12800/起四网合一:PC电脑端+WAP手机端+微信端+APP(四网同一后台管理,便于宣传管理)联系我们:(赶紧拿起手机联系我们把,免费获取建站方案)联系电话:0791-82328290     手机:18970956300 (微信同号)   QQ:1006063299 

  • 必须了解的一些IT知识点

    一、硅:是一种化学元素,符号是Si,有无定形硅和晶体硅两种同素异形体,在地壳中,是第二丰富的元素。 高纯的单晶硅是重要的半导体材料。广泛应用的二极管、三极管、晶闸管、场效应管和各种集成电路(计算机内的芯片和CPU)都是用硅做的原材料。半导体(semiconductor):指常温下导电性能介于导体(conductor)与绝缘体(insulator)之间的材料。 半导体的分类,按照其制造技术可以分为:集成电路器件,分立器件、光电半导体、逻辑IC、模拟IC、储存器等大类。还有按照其所处理的信号,可以分成模拟、数字、模拟数字混成及功能进行分类的方法。 半导体与计算机的关系:半导体是集成电路制造的主要材料,还是很多电子元件的组成部分,计算机的大脑CPU就是一种集成电路,计算机的逻辑元件和主存储器都采用了大规模的集成电路硅谷:狭义上讲是以旧金山湾区圣塔克拉拉县为中心的从旧金山市以南移植到包括圣荷西市在内的地区,从广义上讲包括旧金山市本身和旧金山湾东岸奥克兰市在内更广阔的地区,也成为大硅谷地区。 之所以得名硅谷,是因为早期在旧金山湾区的公司大多是半导体或计算机硬件,三四十年前,硅谷就是半导体的同义词,二十多年前,半导体公司离开硅谷。硅谷没有了硅,反而更加繁荣,因为硅谷的灵魂是创新,它演变为高科技之地。有人这样描述硅谷:亘古而长青的昨天永远是过去,也永远会再来。硅谷:狭义上讲是以旧金山湾区圣塔克拉拉县为中心的从旧金山市以南移植到包括圣荷西市在内的地区,从广义上讲包括旧金山市本身和旧金山湾东岸奥克兰市在内更广阔的地区,也成为大硅谷地区。 之所以得名硅谷,是因为早期在旧金山湾区的公司大多是半导体或计算机硬件,三四十年前,硅谷就是半导体的同义词,二十多年前,半导体公司离开硅谷。硅谷没有了硅,反而更加繁荣,因为硅谷的灵魂是创新,它演变为高科技之地。有人这样描述硅谷:亘古而长青的昨天永远是过去,也永远会再来。二、带宽又叫频宽,是指在固定的的时间可传输的资料数量,亦即在传输管道中可以传递数据的能力。 单位:bps(比特)或Hz(赫兹) 对于模拟信号而言,带宽又称为频宽,以赫兹(Hz)为单位。例如模拟语音电话的信号带宽为3400Hz,一个PAL-D电视频道的带宽为8MHz(含保护带宽)。 对于数字信号而言,带宽是指单位时间内链路能够通过的数据量。 带宽在计算机中可简单理解:带宽就是传输速率,每秒传输的最大字节(b/s)计算速率的方式(其实都一样,只是单位不同): 描述带宽时常常把“比特/秒”省略。例如,带宽是1M,实际上是1Mb/s,这里的Mb是指1024*1024位,转换成字节就是(1024*1024)/8=131072字节(Byte)=128KB/s。例如所谓 10M 带宽,其实是指 10Mbps (兆比特) 计算带宽理论最快下载速度:10÷8=1.25MB/s 那么100M的带宽最快下载速度是12.5MB/s。 但这只是理论上的速度,在这个数值附近浮动都算是较理想的,实际上因为各种因素,还要再减去一些损耗.局域网(Local Area Network ,缩写:LAN):指有限区域(封闭的,如一个学校,办公室)内的多台计算机通过共享的传输介质互连,所组成的计算机组。例如:一个大院的人能在一起共同的活动。 范围一般为方圆几千米之内。依据拓扑结构的不同,局域网又分为以太网(施乐公司(xerox)的帕洛阿尔托实验室几位科学家发明了以太网(Ethernet))、令牌环网、无线局域网等类型。 广域网(WideAreaNetwork,缩写:WAN):也叫远程网RCN (RemoteComputerNetwork),一个国家或国际间建立的网络都是广域网。它的作用范围最大,一般可以从几十公里至几万公里。目前,世界上最大的信息网络Internet已经覆盖了包括我国在内的180多个国家和地区,连接了数万个网络。 互联网(internetwork,简称internet):即广域网、局域网及单机按照一定的通讯协议组成的国际计算机网络。作用相当于我国的普通话,相当于国际上的英语,用一种语言将世界联系起来。城域网(Metropolitan Area Network,简称MAN):是在一个城市范围内所建立的计算机通信网,属宽带局域网。门户网站:即链接互联网之门,属于信息服务系统,例如:谷歌、雅虎、百度、腾讯等防火墙(firewall):指的是一个由软件和硬件设备组合而成、一种位于内部(专门)网络与外部(公开)网络之间的网络安全系统,是一种获取安全性方法的形象说法。 三、摩尔定律:英特尔公司的创始人戈登.摩尔(Gordon Moore)博士提出,演变后的内容为:当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。换言之,相同性能的计算机等IT产品,每18个月价钱会降一半。这一定律揭示了信息技术进步的速度,也主导着IT行业的发展。安迪-比尔定律:给所有的计算机消费者带来一个希望,如果我今天嫌计算机太贵买不起,那么我等十八个月就可以用一半的价钱来买。要真是这样简单的话,计算机的销售量就上不去了。需要买计算机的人会多等几个月,已经有计算机的人也没有动力更新计算机。其它的 IT 产品也是如此。那么IT行业将成为传统行业,没什么发展了。 但事实上,世界上的个人电脑销量在持续增长。那么是什么动力促使人们不断滴主动更新自己的硬件呢?IT界把它总结成安迪-比尔定律安迪-比尔定律:即比尔要拿走安迪所给的(What Andy gives, Bill takes away.),安迪是原英特尔公司CEO安迪.格鲁夫(Andy Grove),比尔就是微软创始人比尔.盖茨 介绍: 英特尔处理器的速度每十八个月翻一番,计算机内存和硬盘的容量以更快的速度在增长。但是,微软的操作系统等应用软件越来越慢,也越做越大。所以,现在的计算机虽然比十年前快了一百倍,运行软件感觉上还是和以前差不多。而且,过去整个视窗操作系统不过十几兆大小,现在要几千兆,应用软件也是如此。虽然新的软件功能比以前的版本强了一些,但是,增加的功能绝对不是和它的大小成比例的。因此,一台十年前的计算机能装多少应用程序,现在的也不过装这么多,虽然硬盘的容量增加了一千倍。更糟糕的是,用户发现,如果不更新计算机,现在很多新的软件就用不了,连上网也是个问题。而十年前买得起的车却照样可以跑。 反摩尔定律:Google的前CEO埃里克·施密特(Eric Schmidt)提出的:如果你反过来看摩尔定律,一个IT公司如果今天和18个月前卖掉同样多的、同样的产品,它的营业额就要降一半。IT界把它称为反摩尔定律。 反摩尔定律被逼着所有的硬件设备公司必须赶上摩尔定律规定的更新速度。风险投资:二战后,在美国,一些愿意以高风险换取高回报的投资人发明了非常规的投资方式–风险投资(Venture Capital Investment,简称VC),在中国简称风投。风投无需抵押,也不需偿还。如果投资成功,风投资本家将获得几倍、十几倍,甚至上百倍的回报,如果投资失败,钱就打水漂了。 由于美国有完善的社会保险制度和信用制度,使得信用成为美国社会的基础,因此银行就敢在没有抵押的情况下把钱借出去,投资人也敢把钱交给一无所有的创业者去创业。天使投资:本质上是早期风险投资。天使投资人,简称天使,常常是一些这样的有钱人:以前创办过成功的公司,对技术很敏感,又不缘再辛苦创业,希望出钱让别人干。在硅谷这种人很多,被称为“不愿当总(经理),只肯当董(事)”四、时间戳时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。时间戳分类:1.自建时间戳:此类时间戳是通过时间接收设备(如GPS,CDMA,北斗卫星)来获取时间到时间戳服务器上,并通过时间戳服务器签发时间戳证书。此种时间戳可用来企业内部责任认定,在法庭认证时并不具备法律效力。因其在通过时间接收设备接收时间时存在被篡改的可能,故此不能做为法律依据。2.具有法律的效力的时间戳:它是由我国中科院国家授时中心与北京联合信任技术服务有限公司负责建设的我国第三方可信时间戳认证服务。由国家授时中心负责时间的授时与守时监测。因其守时监测功能而保障时间戳证书中的时间的准确性和不被篡改。获取时间戳平台有“大众版权保护平台”,可与我国中科院国家授时中心时间同步。在这个日新月异的时代,原地踏步就是在退步。 

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

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

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

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

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

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

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

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

  • 关于企业建站

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

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

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

  • 高速数据缓存

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

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

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

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

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

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

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

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

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

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

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

  • HTTP简介

    HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。http请求-响应模型.jpg主要特点1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。3.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。4.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。5、支持B/S及C/S模式。HTTP之URLHTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。以下面这个URL为例,介绍下普通URL的各部分组成:http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name从上面的URL可以看出,一个完整的URL包括以下几部分:1.协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在"HTTP"后面的“//”为分隔符2.域名部分:该URL的域名部分为“www.aspxfans.com”。一个URL中,也可以使用IP地址作为域名使用3.端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口4.虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”5.文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名6.锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分7.参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。(原文:http://blog.csdn.net/ergouge/article/details/8185219 )URI和URL的区别URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的URI一般由三部组成:①访问资源的命名机制②存放资源的主机名③资源自身的名称,由路径表示,着重强调于资源。URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL一般由三部组成:①协议(或称为服务方式)②存有该资源的主机IP地址(有时也包括端口号)③主机资源的具体地址。如目录和文件名等URN,uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto: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); }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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