终于有人把云计算、大数据和人工智能讲明白了!

今天跟大家讲讲云计算、大数据和人工智能。为什么讲这三个东西呢?因为这三个东西现在非常火,并且它们之间好像互相有关系:一般谈云计算的时候会提到大数据、谈人工智能的时候会提大数据、谈人工智能的时候会提云计算……感觉三者之间相辅相成又不可分割。但如果是非技术的人员,就可能比较难理解这三者之间的相互关系,所以有必要解释一下。 一、云计算最初的目标 我们首先来说云计算。云计算最初的目标是对资源的管理,管理的主要是计算资源、网络资源、存储资源三个方面。 1. 管数据中心就像配电脑 什么叫计算、网络、存储资源? 比如你要买台笔记本电脑,是不是要关心这台电脑是什么样的CPU?多大的内存?这两个就被我们称为计算资源。 这台电脑要上网,就需要有个可以插网线的网口,或者有可以连接我们家路由器的无线网卡。您家也需要到运营商比如联通、移动或者电信开通一个网络,比如100M的带宽。然后会有师傅弄一根网线到您家来,师傅可能会帮您将您的路由器和他们公司的网络连接配置好。这样您家的所有的电脑、手机、平板就都可以通过您的路由器上网了。这就是网络资源。 您可能还会问硬盘多大?过去的硬盘都很小,大小如10G之类的;后来即使500G、1T、2T的硬盘也不新鲜了。(1T是1000G),这就是存储资源。 对于一台电脑是这个样子的,对于一个数据中心也是同样的。想象你有一个非常非常大的机房,里面堆了很多的服务器,这些服务器也是有CPU、内存、硬盘的,也是通过类似路由器的设备上网的。这时的问题就是:运营数据中心的人是怎么把这些设备统一的管理起来的呢? 2. 灵活就是想啥时要都有,想要多少都行 管理的目标就是要达到两个方面的灵活性。具体哪两个方面呢? 举个例子来理解:比如有个人需要一台很小的电脑,只有一个CPU、1G内存、10G的硬盘、一兆的带宽,你能给他吗?像这种这么小规格的电脑,现在随便一个笔记本电脑都比这个配置强了,家里随便拉一个宽带都要100M。然而如果去一个云计算的平台上,他要想要这个资源时,只要一点就有了。 这种情况下它就能达到两个方面灵活性: 时间灵活性:想什么时候要就什么时候要,需要的时候一点就出来了;空间灵活性:想要多少就有多少。需要一个太很小的电脑,可以满足;需要一个特别大的空间例如云盘,云盘给每个人分配的空间动不动就很大很大,随时上传随时有空间,永远用不完,也是可以满足的。 空间灵活性和时间灵活性,即我们常说的云计算的弹性。而解决这个弹性的问题,经历了漫长时间的发展。 3. 物理设备不灵活 第一个阶段是物理设备时期。这个时期客户需要一台电脑,我们就买一台放在数据中心里。…

Continue Reading →

世界公认的最科学作息时间表

对于健康来说,年轻并不是资本,因为如果你肆意的挥霍,30岁之后都会一一报偿回来,监督自己和他一起养成好作息吧,不熬夜、不暴饮暴食、不吸烟、多运动,这才是健康生活的真谛哟! 7:00 起床 7:00是起床的最佳时刻,身体已经准备好一切了。 打开台灯,告诉身体的每一个部分,尽快从睡眠中醒来,调整好生物钟。 醒来后需要一杯温开水,水是身体内成千上万化学反应得以进行的必需物质,饮水帮助每一个缺水的细胞都重新活力四射。 7:20-8:00 吃早饭 早饭必须吃,这没有什么好解释的! 一上午专注的工作学习需要正常的血糖来维持,因此为自己也为他准备一份丰盛的早餐是必须的。 8:30-9:00 避免运动 清晨并不是运动的最佳时间,因为此时免疫系统功能最弱,你可以选择步行上班,那却是很健康的。 9:00-10:30 安排最困难的工作 学习工作的最佳时间,头脑最清醒,思路最清晰的时间段。 千万不要把宝贵的时间用来看电影、逛淘宝。 10:30 眼睛需要休息一会儿 看看窗外,眼睛很累了,需要休息一会儿。 11:00 吃点水果…

Continue Reading →

怎样练习一万小时

《新知客》,2010年8月。本来应该等到8月1日再发,但今天突然发现此文已经被在网上泄漏出来了!) 随着畅销书《异类》的流行,“练习一万小时成天才”这个口号现在是尽人皆知。也许仍然有不少人相信那 些不世出的天才必有天生的神秘能力,但科学家通过大量的调查研究已经达成共识,那就是所有顶级高 手都是练出来的。不但如此,最近几年的科学进展,人们可能第一次拥有了一个关于怎样炼成天才的统 一理论。 好消息是除了某些体育项目对天生的身高和体型有特殊要求之外,神秘的天生素质并不存在,也就是说 人人都有可能成为顶级高手。早在20多年以前,芝加哥大学的教育学家 Benjamin Bloom 就曾经深入考 察过120名从音乐到数学多个领域内的精英人物,发现他们幼年时代没有任何特别之处。后人的研究更证 明,在多个领域内,就连智商都跟一个人能不能达到专家水平没关系。 有个匈牙利心理学家很早就相信只要方法得当,任何一个人都可以被训练成任何一个领域内的高手。为 了证明这一点,他选择了一个传统上女性不擅长的项目,也就是国际象棋。结果他和妻子把自己的三个 女儿都训练成了国际象棋世界大师,这就是著名的波尔加三姐妹。这个实验甚至证明哪怕你不爱好这个 领域,也能被训练成这个领域的大师,因为三姐妹中的一个并不怎么喜欢国际象棋。 而坏消息是成为大师需要长时间的苦练。每天练三小时,完成一万小时需要十年时间,但这只是达到世 界水平的最低要求。统计表明对音乐家而言,世界级水平要求的训练时间是十五到二十五年。但最关键 的并不是练习的时间,而是练习的方法。 天才是怎样炼成的?中国传统思维比较强调一个“苦”字,冬练三九夏练三伏,甚至是头悬梁锥刺股。而近…

Continue Reading →

突破自己,挑战10K

绿色代表熟悉、红色达标不熟悉、黄色(橙色)代表中间值 其他:SVN、GIT、MAVEN 算法:基本排序算法、了解队列、栈、二叉树 服务器:tomcat、nginx、linux常用命令 缓存:redis、ehcache 数据库:基本SQL语句、mysql java基础:JAVA SE基础、servlet、JDBC、jsp(EL表达式、常用C标签) web基础:html、css、jquery、ajax 框架:灵活使用spring各种注解、spring mvc、mybatis、hibernate、权限框架shiro 努力方向:1.熟悉spring、mybatis的底层实现原理,最后能阅读源码                 2.spring-cache搭配redis使用缓存…

Continue Reading →

大型网站技术架构的核心原理与案例分析

第一章:大型网站架构演化   1.1大型网站软件系统的特点:高并发、大流量,高可用,海量数据,用户分布广泛、网络情况复杂,安全环境恶劣,需求快速变更、发布频繁,渐进式发展。   1.2大型网站架构演化发展历程 1.2.1初始阶段:应用、数据库、文件在同一台服务器上。 1.2.2应用服务和数据服务分离 1.2.3使用缓存改善网站性能,二八定理80%的业务集中在20%的数据上,缓存又分为本地缓存和分布式缓存 1.2.4应用服务器集群 1.2.5数据库读写分离 1.2.6使用反向代理和CDN加速网站响应 1.2.7使用分布式文件系统和分布式数据库 1.2.8使用NoSql和搜索引擎 1.2.9业务拆分 1.2.10分布式服务   第二章:大型网站架构模式   模式:经过验证的,描述并解决某一类问题的固有方案。  …

Continue Reading →

Java工程师成神之路

一、基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http://www.jcp.org/en/jsr/detail?id=133 http://ifeve.com/jmm-faq/ 1.1.2. 了解JVM各种参数及调优 1.1.3. 学习使用Java工具 jps, jstack, jmap, jconsole, jinfo, jhat, javap, … http://kenai.com/projects/btrace…

Continue Reading →

为什么程序员不喜欢写文档?

一提到文档,肯定会有人向你大谈外国公司、大公司、正规公司是怎么怎么重视文档的,什么2/3时间用于写文档,1/3时间才用来编程序;写文档要按照什么ISO、什么CMM、什么什么标准;不按这些标准写出来的就不是文档,就不是好文档。不重视文档就是不正规等等等。当问及他自己写过什么文档,编写过什么文档标准的时候,这种人就哑口无言了。这种人就是一种媒体一种广告。 不管怎么说,文档绝对是程序员最大的软肋。一些被称之为高手的程序员,往往是文档方面的低能儿。不管这个程序员是在大公司、还在小公司、不管程序是写文档的、还是不写文档的,大部分程序员在内心深处中是不愿意写文档的。 天下的怪事特别多,有时让人不能理解。程序员一般不愿意写文档,但是程序员却喜欢看别人的文档。即使写了文档,程序员一般不会把所有功能都写入文档,却抱怨别人文档有的功能没有说明。即使写了某段文档,程序员一般不不想把文档写的很详细,却抱怨别人写的文档不够详细。文档绝对是摆在程序员面前的一个矛盾,如果让程序员选择是喜欢写文档,还是喜欢看文档,我估计大多数程序员都会选择后者。 那么程序员为啥不愿意写文档呢?个中原因很多,我自己不妨归纳几点: 一、 怕烦 程序员从入门之日起,就在心里埋藏了一个编程的种子,认为程序员就是编程序的,就是和计算机打交道的,程序就是程序员的全部。无论是在编程之前要写文档,还是在编程之后要写文档。他们都认为写文档很烦人。 (1) 文档种类太多。越是正规越是多。一想到要写那么多的文档程序员头都要大了。 (2) 文档写作要求不低。有格式要求、有内容要求、还需要画各种流程图、示意图、关系图、界面图、还需要填写各种表格说明,要收集各种资料。虽然没有技术含量、但是时间要花的比编程序要多的多呀,而且也不一定能写好。 (3) 在正规的开发公司一般一个变更就要编写一系列的变更文档。当变更不断的时候,只有最后的变更文档是最重要的,当我们不知道当前是不是最后一个文档的时候,我们就不可能愿意写将被后面替代的文档。 (4) 当你写了文档后,就会不断有使用文档的人来问这问那,这些询问往往会让你崩溃。因为,你很难写出让每个人都提不出问题的文档。 二、 没空 在很多情况下,程序员处于一种“时间紧,任务重”状态。在急于看出编程结果的驱使下,程序员一心扑在编程上,恨不得一分钟一个变化。哪有心思和时间先把文档写好再去编程呀。即使他们想先把程序编出来,然后补写一下文档想法,但是一旦他们一个段程序完成之后,就会立即扑向第二段程序的。如此下来,编写文档只能放在项目开发的后期了。要是你真的写文档,那写文档的时间早已将编程时间给挤占了,你的编程工作就完不成了。 三、 没有用…

Continue Reading →

周鸿祎:很多程序员一看就知道不会创业

很多人都向往着有一天自己创业,程序员更是如此。如果你想创业,那么该怎样创业、需要有哪些准备、自己还有什么不足等等这些问题你考虑过吗?本文就跟大家分享周鸿祎在接受某媒体采访时给程序员上的创业课。 程序员创业的特别之处 关于程序员创业,我之所以愿意谈我的观点,是因为我是程序员出身,也是从小公司做起来的,我自认为对待很多程序员个人包括共享软件作者和一些小网站还是很好的。我希望分享一些经验和体会。 首先,我想说的是聪明人不一定能成功,很多程序员很聪明,但我一看就知道他们不会成功。 因为我看到了一些问题,而且现在太多程序员存在很多误解。因此,我希望把我的观点告诉程序员。或许有一些程序员能够清醒,某个人可能因为我的某一句话有了感觉,对他以后的成长产生了帮助,这就足够了。 要知道,程序员总是以为自己优秀所以就能成功,其实不是。 中国的程序员大部分是盲目的:看看一些论坛就能够感觉到,要么有一群人自我感觉极端的良好,以专家自居,要么就是一群蓝领埋怨公司和社会环境不行,待遇不好。 应该说,中国程序员创业的成功率也是很低的。放眼望去,中国互联网成功的人士有几个是真正写过十年软件的。事实上,现状和我们所能听到的媒体宣传的故事很不一样。 很多程序员的最高理想就是写一个共享软件,一年可以挣几百万。但我希望谈的不是告诉程序员如何挣钱,挣钱很容易,而是要告诉程序员如何去创业。比如虽然 FlashGet 的作者收入很高,衣食无忧,但从创业的角度看,它并没有以商业公司的方式创业成功。 程序员在创业方面的欠缺 首先,我看到中国程序员的合作心态非常缺乏,我认为这是中国程序员最大的问题,当然这是有很多原因的。 大家经常说这句话:态度决定一切。但事实上好程序员基本上都比较傲气,因为程序员往往会觉得自己在做世界上一件十分伟大的事情,这就是驱动机器,修改一行代码,机器就能够工作,可以产生各种不同的行为。这很容易会让程序员产生一种错觉,认为自己可以 Control Everything。 程序员的自信在编程上是非常需要的,但不是适合一切场合。 如果我们不说这些,可能很多程序员到现在还不知道自己错在哪里,仍然认为自己是 King of…

Continue Reading →

Get IT技能知识库 50个领域一键直达

成长的因素有很多,你知道知识图谱的作用吗?本文GET了当下最热门、最火爆的技术知识点,让你一库在手,技术全有! 众所周知,我们的每个知识库都是邀请专家精心绘制图谱,并依据每个图谱的知识结构,筛选该技术分支知识点下的优质资源,经特邀编辑一一审核、精心挑选后,形成该技术点的知识库。节省开发者学习时间和成本,最大化的满足和解决大家的日常技能问题,开发者还可以在上面绘制专属于自己的技能图谱(图谱+干货)。 成长的因素有很多,你知道图谱都作用吗?       操作系统 管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。     下载操作系统知识图谱高清大图     计算机网络 利用通信设备和线路将地理位置不同、功能独立的多个计算机系统互联起来,以功能完善的网络软件实现网络中资源共享和信息传递的系统,它是计算机基础知识的重要分支。       下载计算机网络知识图谱高清大图  …

Continue Reading →

高效程序员的 7 个共同特征

导读:要想成为一个伟大的程序员,需要的可不仅仅是能够编写出可以正常运行的代码。Justin James给出了能够成为业内顶尖高手的程序员应该具有的几个典型特质。 要想成为高效的程序员,你需要具备一定的综合素质才能够让你用你所掌握的技能、经验和知识编写出有效的代码。有一些开发人员在技术方面具备一定的技巧,但他们永远无法成为高效的程序员,就是因为他们缺乏所需的其它几项特质。本文将给出成为一个伟大的程序员所必须具备的7项特质。 1.主动学习新的技术和非技术两方面的知识 不好的程序员只有在实在不行的时候才开始进行知识学习。良好的程序员会主动学习新的技术知识。伟大的程序员不仅会自行学习新的技术知识, 而且还会学习非技术方面的知识,对各种知识来源都有一种开放的心态,而不会象有的人那样固步自封。 具体点说,不好的程序员只有在参加了采用WPF的项目时才开始学习XAML;良好的程序员一年前就学习了XAML,因为他感觉它很有意思;而伟大的程序员还阅读了WPF应用程序的设计指南、可用性(usability)理论或者什么类似的学习课程,因而他能够制作出卓尔不群的UI。 2.务实而不教条 严格遵守那些不成文的“编程规则”往往是一种奢侈品,没有多少开发人员能够承受得起。如果你们的规格说明书不是由顶尖的开发人员编写的,也不是在顶尖的开发人员指导下编写的, 我就可以向你保证,你可能也承受不起。 我经常能够碰到一些程序员,他们无法或者拒绝做某个任务只是因为完成这个任务的做法通常不为最佳实践所接受。业务需求很少会受到实现需求所采用的技术的制约;没有人会说,“这我们不应该把这个需求写到规格说明书里,因为要实现这个需求,程序员就不得不写一段很臭的代码。” 在结束的那一天,程序员的任务是要生成一个有效的应用程序,而绝不是要求在技术方面达到十全十美。我可不是在为垃圾代码做辩护。我想说的是,总会在有些时候,你会写出一些代码,这些代码你永远不会作为范例向别人展示做事的正确方法。如果只有一种写法,那么这种代码就不是糟糕的代码 —— 但要保证你已穷尽了其它所有可能的方案。 3.懂得如何通过研究找到答案 通过研究找到答案可不仅仅只是在搜索引擎中键入几个关键字那么简单, 也不是到Stack Overflow或者MSDN forums这类网站发个问题帖。我就碰到过在搜索引擎里根本搜不到答案的问题,然后我Stack Overflow…

Continue Reading →