带着工作中的一些疑问,我参加了在上海举办的QConf 全球软件开发大会。会议以主题的形式按分会场召开,我主要选择知名网站案例分析、大数据处理技术、高效能团队建设和金融系统架构与设计四个主题内容。三天会议下来,通过和业界的前辈和同仁沟通交流,加深了我对一些问题的思考。下面结合我个人理解和会上的所见所闻,从四个主题方向分别进行介绍。

1. 知名网站案例分析

该主题下,我主要听了阿里巴巴带来的“跨境网站性能优化的挑战和思路”。背景是:跨境电子商务网站,由于各种原因如买家分布地区分散,而卖家多来自国内,并且严重依赖于搜索爬虫引流而使得性能优化的手段受到很大的限制。这些特点决定了优化思路与传统的网站思路会略显不同,也会出现传统网站不同的问题。主要有两类:

a. 爬虫依赖问题,性能优化手段受到了很大限制:网站性能的优化,很多时候是通过异步加载(Ajax)实现用户体验的提升。由于该网站依赖搜索引擎的引流,导致不能通过异步加载方式提高性能。原因很简单,搜索引擎需要解析网站的内容来决定该网站与搜索关键字的匹配程度,而如果使用异步加载网站内容,则搜索引擎无法抓取网站内容,导致网站排名靠后。但是,如果不降低响应时加载的内容,在网速不变的情况下,性能是很难得到大的提升的。最终的解决方案是,Google出台了一套标准,通过在网页源码中增加特定标签来解决该问题。即正常访问时,网站仍然是通过异步加载方式加载页面。当爬虫抓取网页时,如果遇到前面说的特定标签,会自动发起第二次请求获取网页内容。听到这个解决方案后,有人会提出,其实我们自己也可以识别出爬虫访问和正常访问。然后,根据不同的请求源,采取不同的加载方式。理论上,这种方式是可行的。但是,商业经验告诉他们,这种迎合爬虫请求的方式是有可能会受到反作弊程序的惩罚的。所以,商业社会,不仅仅是技术的考量,还要有商业因素的考量。

b. 买家分布在多个国家,网速差别非常大,如何保证性能:即使网络通畅的情况下,物理距离本身就是一个问题。解决的方法是在不同的地区分别部署服务器,增加静态文件的缓存力度,通过CDN将请求分发到距离最近的服务器。维护的过程中,需要查看CDN的回流情况,如果回流比例太高,需要仔细检查引起回流的原因。只有回流比率较低,即大部分情况下命中缓存,网站性能才能有保障。

2. 大数据处理技术

该主题下,我主要听了由百分点公司带来的“照进感性世界的大数据之光”。背景是:工业技术发展使人各方面的生活需求被大量、迅速的满足。但以服饰搭配为典型代表的感性需求,仍然一直被视作技术难以企及的禁地,因此无法大规模的自动化、量产化。大数据,给予了互联网从业者突破这一禁区的可能性。
在推荐系统领域,之前的推荐多是满足客户的理性需求。举例而言,一般用户在购买三星Note3手机时,大部分人都会购买一块某品牌的电池。基于统计结果,推荐系统可以非常容易地推荐新购买三星Note3手机的客户该款电池,而且推荐的成功率很高。而所谓的感性需求是指非标准化的,难以度量的以及非常个性化的需求。服饰搭配就是典型的感性需求,每个人的爱好都不一样。一般的统计方法,无法找出规律。例如,有的人喜欢白色包搭配红色的上衣,而有的人喜欢黑色的包搭配红色的上衣。最终的解决方案是从两个方面入手,解决感性需求。首先,基于个性化数据进行挖掘提高推荐准确性。其次,分析客户之间的相关性,推断某个客户时,利用相似客户的数据集提高推断准确性。

3. 高效能团队建设

该主题下,我主要听了由豌豆荚带来的“如何通过文化建设来提升团队效能”。他们认为:文化是一个人群的共同特性,是他们在具体行事中的思维方式的一种内在基础与外在表现。文化建设一定程度上来说是对这些共同特性的有意识的、主观的刻画。然而正因如此,所以文化建设既是有排他性的,也一定存在被团队中的具体个体所排斥的问题。 所谓“好”的文化不是无视这些文化自身的问题,而是在文化建设的基本原则、规则与逻辑中找到一个合适的方式来消化这些问题,使文化与具体行事之间得以契合。因此一切无视文化的实效性,而空谈文化建设的行为都无异于耍流氓。

我理解豌豆荚作为一个创业团队,在从几人、几十人到两百人的团队规模的快速推进中。主要通过四个手段解决个体特性与团队特性之间的矛盾,并且做到在二者共洽以提升团队的效能。a. 开放的团队文化:不仅仅体现在开放性的办公室(没有老板办公室),更加体现在思想的开放性。鼓励团队成员打破权威,追求内心的真理,挑战CEO是一件没有任何压力的事情。b. 自上而下的汇报制度:管理层定期的向全体员工汇报公司的发展情况以及战略规划,培养每位员工的主人翁意识。c. 信任每一位员工:公司内部没有秘密,包括公司的盈利数字,账上的现金等信息,都放在文档库里面。每个人都有权限,需要时可以查阅。一开始会担心,员工泄密怎么办?其实,没什么可以隐瞒的,竞争对手可以从很多渠道知道你的数据,只要你的数据是真的就不怕泄密。d. 高效的合作方式:尊重每个人的工作时间,保证每个人工作时间的连续性。每个人都分享自己的Google日历,需要开会时通过Google日历即可,无需询问。如果不想被打扰,任何人都不能干扰你的工作时间。

4. 金融系统设计与架构

该主题下,我主要听了阿里金融带来的“云决策平台与应用”。主要分享了:互联网信贷业务特性与问题、云决策平台应用架构及解决方案和云决策平台技术架构。阿里金融是当前互联网金融领域做的比较成功的一家。他们基于阿里电商的交易数据,线上计算出客户的信用等级。其中,对于易变的业务规则的处理和我所在项目的计算引擎非常相似。阿里也采用了Drools规则引擎来处理易变的业务规则。但是,我在使用过程中,遇到了性能瓶颈,速度非常慢。通过和阿里嘉宾进行沟通,他们在规则引擎的基础上写了一个编译器,在编译时将规则引擎文件编译成Java代码。因为,规则引擎文件在运行时是解析执行的,速度必然会慢,通过编译后,运行时无需再解析,性能会有大的提升。这个经验对我非常有借鉴价值。我们没有人力去开发一个编译器。但是,可以沿着这个路子,将规则引擎文件做成编译器代码,在运行时通过一次反射再调用,速度也会有大的提升。这也是我当前正在做的工作。

这次参会,收获颇丰,美中不足之处在于每个专题的分享时间太短,导致内容的深度不够或者忽略很多细节,相关经验不足的人员听起来非常费劲。所以,在会后,大胆的和演讲嘉宾面对面的进行交流。不用“胆怯”他们很多人也是和我们一样,出道不久。即使是非常资深的人士,也无所谓,参会的目的不就是为了提高自我吗?学到东西才是最重要的。

2013 QConf上海软件开发大会总结的更多相关文章

  1. QCon2019全球软件开发大会广州站即将来袭

    QCon广州2019|全球软件开发大会 会议时间:2019-05-25 08:00至 2019-05-28 18:00结束 会议地点: 广州  广州万富希尔顿酒店  中国广州市白云区云城东路515-5 ...

  2. B’QConf(北京软件质量大会)记

    下午从公司加班回来,顺路到淘宝(大望路)参加B'QConf(北京软件质量大会).淘宝所在的国家广告产业园原来是一个菜市场,已经有大约6年没有到那一带活动了.之所以记得这么清楚,是因为6年前曾经从那里的 ...

  3. AI如何驱动软件开发?华为云DevCloud 权威专家邀你探讨

    近期,国际著名咨询公司Gartner 在一份研究报告中将 "AI-Driven Development" 列为 2019 年的 Top 10 Strategic Technolog ...

  4. 精《记叙“tom”4年的软件开发之旅》

    1.引言 本篇文章是记叙tom四年的软件开发从业经历,虽然他资历不长,况且本身也是个菜鸟,但他也曾有过荣誉.迷茫.困惑与选择,在这里他希望通过自己所经历过的事情分享给大家,给那些真正热爱软件开发的同学 ...

  5. C#(Net)软件开发常用工具汇总,提高你的开发效率

    C#(Net)软件开发常用工具汇总,提高你的开发效率 写代码也要读书,爱全栈,更爱生活.每日更新原创IT编程技术及日常实用技术文章. 我们的目标是:玩得转服务器Web开发,搞得懂移动端,电脑客户端更是 ...

  6. 软件开发顶尖高手的杀手锏SQL语句

                  软件开发顶尖高手的杀手锏SQL语句                                                                     ...

  7. SNF快速开发平台成长史V4.5-Spring.Net.Framework-SNF软件开发机器人

    SNF快速开发平台成长史 SNF框架CS\BS 视频教程 https://pan.baidu.com/s/1dFegFKX SNF开发机器人教程:链接:https://pan.baidu.com/s/ ...

  8. MTSC2019第五届中国移动互联网测试开发大会北京站震撼来袭!

    MTSC2019 暨第五届中国移动互联网测试开发大会(Mobile Testing Summit China)是由国内最大的测试开发技术社区之一 TesterHome 发起的行业会议,聚焦于软件测试及 ...

  9. java 软件开发面试宝典

    一. Java 基础部分........................................................................................ ...

随机推荐

  1. pip 在windows下如何升级

    建议:由于是pip的国外的,在更新之前先开启vpn,这样更新会顺畅些. 官方网页要求在 cmd中输入以下命令进行 pip的 更新: python -m pip install -U pip 更新成功后 ...

  2. Window 显示鼠标的坐标

    Window 显示鼠标的坐标 GetCursorPos(POINT *p)函数 windows.h头文件里面的GetCursorPos(POINT *p)函数是用来获取鼠标在屏幕中的坐标信息的. Ge ...

  3. hadoop主节点(NameNode)备份策略以、恢复方法、操作步骤

    一.dits和fsimage      首先要提到两个文件edits和fsimage,下面来说说他们是做什么的. 集群中的名称节点(NameNode)会把文件系统的变化以追加保存到日志文件edits中 ...

  4. 8、泛型程序设计与c++标准模板库2、c++标准模板库中的容器

    顺序容器类以逻辑线性排列方式存储元素,在这些容器类型中的元素在逻辑上被认为是连续的存储空间中存储的.顺序容器可用于存储线性群体. 在关联容器类中,元素的存储和检索基于关键字和元素与其他元素之间的关系, ...

  5. 解决java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList问题

    在spring + springmvc + mybatis框架中,我们配置接口对外返回json格式,但是报如下错误: 24-Oct-2017 17:42:23.495 严重 [http-nio-808 ...

  6. 使用MailMessage发送邮件

    SmtpClient smtp = new SmtpClient(); //实例化一个SmtpClient smtp.DeliveryMethod = SmtpDeliveryMethod.Netwo ...

  7. MySQL中ORDER BY与LIMIT一起使用(有坑)

    1.  现象与问题 ORDER BY排序后,用LIMIT取前几条,发现返回的结果集的顺序与预期的不一样 下面是我遇到的问题: 可以看到,带LIMIT与不带LIMIT的结果与我预期的不一样,而且“很不可 ...

  8. [WIP]JavaScript import, export

    创建: 2019/06/14 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/import h ...

  9. Python数据聚合和分组运算(2)-Data Aggregation

    在上一篇博客里我们讲解了在python里运用pandas对数据进行分组,这篇博客将接着讲解对分组后的数据进行聚合. 1.python 中经过优化的groupy方法  先读入本文要使用的数据集tips. ...

  10. MySQL 逻辑备份mysqldump&mysqlpump&mydumper原理解析

    目录 准备 mysqldump备份 mysqlpump备份 mydumper备份 想弄清除逻辑备份的原理,最好的办法是开启general_log,一探究竟 准备 创建用户 CREATE USER IF ...