分享一:

如今,各种互联网的Web应用程序层出不穷,那么如何快速入门,成长为一个优秀的Web开发工作者呢?

这个问题不容易回答,几乎所有的培训机构都不能清晰地解答。

所以对于Web开发刚刚入门的菜鸟们,我觉得只有通过去做,去实验,学会Web开发,可能是学着学着,实验着实验着就会了。

没有人告诉你如何去做。我学习的时候,我的导师只是给了我一堆视频,一堆文档。我们从明确一个目标开始:“哦,这个阶段,我要独立完成一个简单的Web应用程序,例如新闻发布系统”。

或许学会如何开发Web应用程序只是在完成这个Web应用程序过程中产生的副产品而已。你可以管它叫项目驱动,也可以认为这只是学习任何语言的一个非常有效的方法。

一、分析与设计

无论做一个传统的桌面应用程序,还是做一个Web应用程序,前期的分析与设计是不可避免的。

分析:需求分析,你必须了解你要做的是什么,你的客户到底想要的是什么,在做新闻发布系统的时候,我就必须问我自己这样的问题:我的新闻发布系统能干什么,我想他是什么样子的等等。

当搞明白了,我到底要做什么的时候,就要开始设计了。设计是很繁琐的,记得以前做机房收费系统,设计几乎是改了又改,细化了又细化,这里也是一样。

对于刚刚入门的你,我想应该简单地画画页面流程图,选择什么样的工具?不重要,可以用word,可以用viso,即使用纸也无所谓,因为铅笔和橡皮能让你快速应变,只是如果要保存和传播,就不要选择纸了。这个时候,页面画出来,就是一堆框框的罗列,很简单,只要能让自己知道,这个应用最后大概会是什么样就可以了。当然点击某个按钮能完成什么等,可以用程序流程图表示出来,流程图还是推荐大家画的,因为这样你对系统的整个脉络会有更加清晰的认识。

二、网页实体模型

呵呵,理论上说,草图整完了,应该做实体模型了,仍然可以看做是页面的细化,不过这次看起来应该像最后Web应用程序成品的一个截图了。当然,如果你的客户就是你自己,只要你自己看着满意就可以了。

如果你是在不信任自己的Ps技术,或者,你实在没有审美细胞,又或者你不想成为大牛的网页设计师,你也可以偷懒,直接奔向网页原型的开发。当时,我就偷懒了,给自己的理由是:我是没有审美的程序员。事实证明,如果你没有实体模型,做起网页原型来肯定是要花费更多时间的,有句话说得好,“出来混,早晚要还的”。

三、网页原型开发

网页原型是用HTML开发出来的,肯定是要使用CSS渲染的。一般,我们的HTML文档都会利用外部样式来定义文档中使用的样式。Javascript也放在外部文档中,这个文档只包含了Javascript代码。

按照这样方式进行分离,网站将包含三种文本文件:HTML,包含页面的内容和结果;CSS:控制页面的外观和表示;Javascript,控制页面的行为。

HTML,Javascript,CSS文件必须是纯文本格式的,这样浏览器才能理解他们,推荐几款不错的编码工具:NotePad++(小巧,免费),EditPlus(功能全面的文本、HTML、程序源代码编辑器),VIM(速度,用它你可以把鼠标扔掉了)

这个时候,在我的网页原型上做一些可用性测试,防止以后出现大面积的失误。在这个步骤的最后,我基本上就知道了我的web应用是如何组织到一起的了,前台页面有什么,各个页面是怎么跳转的等等。

这就好比,我做好了一个车模,剩下的就是让车跑起来了,又或者,我是造人,我已经把人的皮囊做好了,接下来就是做它的五脏六腑了,哈哈,貌似人不是这么造的,不太贴切。

四、选择框架

现在你已经知道了要去开发什么东西了,接下来的工作依然很多,我想,这个时候,你就该选择,要采用什么语言,什么框架了。

有选择自然就有痛苦。我至今没有看到,有人大胆宣称,哪个框架最好,哪种语言最好。

其实,它们都各有不同,每个都有自己的长处。最重要的是你要知道它们任何一个都能让你开发出好用的web应用

选择合适自己的,真是不容易,还好,如果你并不想花时间去研究所有框架,那么建议你选择比较容易上手的ASP.NET 框架吧,语言自然就选择C#了。

如果不是开发很小的系统,我想,你应该会用到数据库,如果你不知道如何选择,那就先从Access或者Sql Server开始吧。

五、开发进行时

好像蓄势待发了,那就挽起袖子开干吧,标准的编程工作嘛。在后台,你要创建类,对象,服务,过程,以及数据持久层来把这些对象保存到数据库中。

后台是整个应用的核心,对任何应用来说,它跟普通的编程没有什么区别,才用面向对象的方式,应用设计模式,等等,可以把C/S开发的经验应用过来。

然后,把后台的程序和原型界面集成到一起,把系统各部分集成到一起。集成的过程依然是可以用javascript精雕细琢滴,采用Jquey,采用Ajax等等。

六、测试,调试。

这个时候,你的web应用程序开发已经接近尾声了,只是开发。再回头看看自己的需求和设计是否被实现,你同时还要确保你的程序能够在各种浏览器里都能正确的运行(如果是IE6,我想你还是会纠结一下的,至于为什么?真正做的时候,你就知道了)。

在各个浏览器中调试的时候,推荐你安装一些插件,例如FireFox浏览器中的Firebug,IE下可以用WebDevelopmentHelper等。

自己测试没有问题了,最好找一个身边的人简单测试一下,你也不希望,发布了后,你的应用被一些“愚蠢的网友”莫名其妙的操作搞死吧。

如果你是一个追求完美客户体验的人,那么接下来就要花些心思去改变你的Web应用程序去给用户创造更美好的体验了,这个时候依然会用到一些刚才提过的技术,Jquery和Ajax等,如果你选择Asp.NET框架,你可以试着了解一下Asp.Net Ajax。

七、发布和后续工作

这最后一步是发布你的应用,如果你愿意,先发布一个Beta版,因为肯定会有bug,这样只有一小部分用户能够发现你的应用里的大问题。

他们会帮助你改进程序的质量。切记,不要忙着增加功能,要专注于把你目前的程序变的稳固。

经过了beta阶段,就要发布正式版了,这里会牵扯到一个推广的问题,像我这种小人物,我还是喜欢用微博,这是个好东西,如果你不懂,可以去了解一下这方面的动态。

或许直到你彻底完成自己的第一个Web应用程序才明白我开头说的那句话:"或许学会如何开发Web应用程序只是在完成这个Web应用程序过程中产生的副产品而已"

那么,上述内容一到七中提到的那些英文单词就是我们开发过程中学到的东西,让我们一起来大概地看一看,在上述开发过程到底学到了什么:

1、Html

HTML 超文本标记语言 (Hyper Text Markup Language) ,是用来描述网页的一种语言。 不是一种编程语言,而是一种标记语言(markup language) ,HTML 使用一套标记标签(markup tag) 来描述网页 。

网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,对于不同的浏览器,对同一标记符可能会有不完全相同的解释,因而可能会有不同的显示效果。

HTML之所以称为超文本标记语言,是因为文本中包含了所谓“超级链接”点。所谓超级链接,就是一种URL指针,通过激活(点击)它,可使浏览器方便地获取新的网页。这也是HTML获得广泛应用的最重要的原因之一。

2、Xml

Xml可扩展标记语言 (Extensible MarkupLanguage, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

XML与HTML的设计区别是:XML是用来存储数据的,重在数据本身。而HTML是用来定义数据的,重在数据的显示模式。

3、CSS

在Web开发早期,网页设计人员经常抱怨他们对网页的外观缺乏控制力,他们无法精确地控制对象在网页上的位置,而且对页面上的字体的外观也没有什么控制力,因为网页不比实际纸张,针对多大的纸做什么样的设计,而网页的大小是不固定的。

CSS(Cascading Style Sheet,层叠样式表)规范是由W3C制定的,由于允许同时控制多重页面的样式和布局,CSS可以称得上 WEB 设计领域的一个突破,它使得内容与表现分离 。作为网站开发者,你能够为每个 HTML元素定义样式,并将之应用于你希望的任意多的页面中。如需进行全局的更新,只需简单地改变样式,然后网站中的所有元素均会自动地更新。这样,即设计人员能够将更多的时间用在设计方面,而不是费力克服HTML的限制。

4、JavaScript

首先,JavaScript和Java无关,JavaScript 是属于网络的脚本语言!那么为什么名字如此相似?这是典型的市场营销方面的成功,它的推广成功,也是借了Java的东风。当微软开始意识到JavaScript在Web开发人员中流行起来时,微软还是一贯风格,建立了自己的脚本语言,JScript。

JavaScript可以使网页更具交互性,给用户提供更令人兴奋的体验,当用户在页面间导航时向他们提供反馈。例如他可以设置鼠标悬停效果,在客户端验证表单,创建定制的HTML页面,显示警告框,设置cookie等等。

5、Ajax

Ajax是Asynchronous JavaScript and XML(异步 JavaScript 和 XML)的缩写。严格意义上Ajax是javascript的一小部分。但随着频繁地使用,这个词不再指某种技术本身,而是以下这些技术的组合:

XHTML;CSS;JavaScript访问DOM;XML,在服务器和客户之间传输的数据的格式;XMLHttpRequest,用来从服务器获取数据。

Ajax是一种用于创建快速动态网页的技术,大多数处理在用户的浏览器中发生,往往在后台与服务器进行少量数据交换,时间很短,而且AJAX可以使网页实现异步更新,这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新(传统的网页,即不使用AJAX的网页,如果需要更新内容,必需重载整个网页面)。基于以上这些,可以使用Ajax建立功能丰富的应用程序。

有很多使用 Ajax的应用程序案例:Google 地图,Google日历,Gmail,My Yahool!门户,腾讯微博,新浪微博、开心网等等。

不错的ajax工具包有:AjaxControlToolkit,Yahool!UserInterfaceLibrary等等

 

6、DOM

在网页上,组成页面的对象被组织在一个树形结构中,页面的顶级包含在<html>标签中,在其中会找到<head>和<body>标签,而其他标签包含在这两个标签中,依此类推。

Javascript将文档树中的每个项目当作对象,通过 JavaScript,您可以重构整个 HTML 文档。您可以添加、移除、改变或重排页面上的对象,要改变页面的某个东西,JavaScript就需要获得对 HTML 文档中所有元素进行访问的入口。这个入口,连同对 HTML元素进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的,也就是说,文档中对象的表示称为文档对象模型,即Document Object Model,简称DOM。

在 1998年,W3C 发布了第一级的 DOM 规范。这个规范允许访问和操作 HTML 页面中的每一个单独的元素。所有的浏览器都执行了这个标准,因此,DOM的兼容性问题也几乎难觅踪影了。DOM 可被 JavaScript 用来读取、改变 HTML、XHTML 以及 XML 文档。

DOM被分为不同的部分(核心、XML及HTML)和级别(DOM Level 1/2/3):

Core DOM,定义了一套标准的针对任何结构化文档的对象

XML DOM,定义了一套标准的针对 XML 文档的对象

HTML DOM,定义了一套标准的针对 HTML 文档的对象。

7、Jquery

Jquery是继prototype之后又一个优秀的Javascrīpt框架。它是轻量级的js库(压缩后只有21k),它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera9.0+)。jQuery使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。

其宗旨是——WRITELESS,DO MORE(写更少的代码,做更多的事情)。

8、ASP.NET。这个就不用我罗嗦了,你懂得……

9、整个开发过程你还会学习到一些工具的使用:

Visio,Dreamweaver,Vistual Studio,Sql Server或Access,(Vim,EditPlus,Notpad++),各种浏览器以及FireBug的插件,IE下的WebDevelopmentHelper等

10、当然,如果你足够用心,你还发掘出很多不错的资源,例如MSDN,W3cSchool,一些前辈的博客,一些技术论坛等等,这都是你未来前进道路上的财富。

综上,如果你真的完成了自己的Web应用程序,并通过做这个程序学习了以上这些技术和工具的基础内容,那么恭喜你,你已经成为一个初级Web应用程序开发者了

原文来自 :http://www.2cto.com/kf/201201/116779.html

分享二:

博客源地址:http://diaoyifu.sinaapp.com/?p=24

我读过的相关书籍发布在豆列(待完善):程序员的自我修养 http://book.douban.com/doulist/1268022/

最近常有同学问我Web开发如何入门,那就把我的经验分享出来,希望对计算机专业出身和非专业的同学都有帮助。本文也部分适用于移动应用开发。

一、准备工作

1,  做好失败的心理准备

Web应用的竞争异常激烈,开发难度也是入门容易做好很难,所以第一次开发的应用不成功是很正常的事情。不过这正是一个积累的过程,反正你需要的只是电脑和少量服务器经费,所以多磨练几次,水平自然会提高。

2, 习惯阅读及查阅英文资料

前沿信息基本源自美国,翻译的东西不及时,不全,很多水平不高,再加之中文原创资料毕竟很有限,因此是否能熟练地查阅英文资料决定了你获取信息的及时性和质量。另外习惯用英文思考,你才能更好地用英文表达自己碰到的问题,借力StackOverflow, ServerFault, Quora这些社区。阅读原版书,常上英文程序员社区,并且把谷歌的默认界面语言调为英文,都是强迫自己使用英文的好办法。特别值得一提的是,原版书里以O'Reilly和Apress出版社的最为推荐。

3, 边学边练

Web开发非常强调实践性,千万不要一本书读完了,却一行代码或者一行命令也没敲过。即使你看似简单的问题,也要亲手做做,因为由于软件配置,软件版本的不同,书上写的并不一定能执行成功,只有你做过才知道,做过之后记得记好笔记。

4, 时时跟进技术趋势。

创意总是相似的,虽然我很反感抄袭,但是基本所有创意都是以别人的为基础。跟进技术趋势除了在条件许可的情况下多玩玩最新的数码产品外,更重要的是时刻保持对科技文章的饥渴感。

我觉得关注三个基本够了:Hacker News, Techcrunch, 36氪。另外天涯海阁经常报道创业网站,月光博客的见解一般比较到位。除此以外,多多订阅各种技术geek的博客。

这里有张更全的列表 http://www.tisiwi.com/123

哦对了,当然还有团队,资金,创意这些准备,不过其他文章谈的很多了,我这就不谈了。

二、编程语言及框架

古往今来,程序猿们不知在这个问题上浪费了多少口水。一句废话来总结这个问题的答案,就是没有最好,只有最适合。免责声明,我曾经接触过的Web开发语言是PHP, Java, Python,现在用的是Python下框架Django。

首先大家需要弄清动态语言(PHP, Ruby, Python等)与静态语言(C/C++,Java为代表)的区别。简单的来说,动态语言在执行的时候才编译,静态语言先编译好再执行。动态语言往往更高级(体现在更丰富的数据结构,更简洁的用法上)。从效果上来说,动态语言编写过程快,运行过程慢;静态语言则恰恰相反。那么在Web开发中选择哪种类型的语言好呢?现在已经有一个争议很少的标准答案:动态语言。那是因为网站性能瓶颈在于I/O,特别是在对数据库的操作上,随着CPU速度不断提高,程序语言执行速度的差别已经对网站性能鸭梨不大;而程序员的时间是宝贵的,使用一门开发更快速,让程序员更愉悦的语言,可以让开发过程更加高效。当然,程序语言的速度也有成为瓶颈的时候,不过那是当你达到Google或者Facebook级别的时候,不然Gmail不会是C++写的,Facebook也不会弄个Hiphop把PHP翻译成C++了;你并不用担心,到那时再进行改写就好了。

在参考现在大网站用的是什么语言时,要搞清楚他们选择那门语言是在什么时候,当时有哪些可选项,他们是否对此后悔。比如Zuckerberg选择了PHP, 直到现在Facebook也在前端用PHP; 但是Quora的创始人,前Facebook的CTO Adam D'Angelo就出来解释为什么Facebook仍然用PHP,那是因为‘Facebook is stuck there',Facebook(因为代码量太大)困在PHP上了。同理,在Ruby和Django都还不成熟的时候,J2EE是中流砥柱,Ebay, 淘宝等很多大型网站都是J2EE的架构,但是现在大家越来越发现J2EE过于笨重(开发缓慢),而开始提倡轻量级框架。京东网用.Net也是类似的情况,现在想转型也转不了了。顺便说一句,尽量不用微软系的东西,因为需要跑在Windows上,服务器的正版授权开销是吃不消的,另外现在也极少有web程序员学.Net了。

那在动态语言里,我们又改选则哪一门呢?主流的选择就是PHP, Ruby和Python。PHP是一个让人又爱又恨的东西,不过恨的成分居多。PHP无疑在流行语言中配置最为简单,上手最为迅速,流行开源软件很多(Wordpress, Joomla, Drupal等),在大型网站中应用也很广泛(微博,腾讯网,百度很多产品比如有啊)。不过因为PHP的发明者说,他是一个不喜欢编程的人,所以PHP多少是有点业余,在语法和功能上有不少缺陷。大公司已经有不少PHP程序员,而且在市场上好招聘,所以他们倾向于用PHP,而小公司则没有这个约束了。Ruby现在在欧美最为流行,不过我并不了解,代表网站是Twitter(现在已经大量用Scala改写)和Groupon。Python是我现在用的开发语言,语法非常简洁,可以应用在几乎所有领域(桌面开发,Web开发,Linux系统管理),并且可以与其他语言很好的结合,典型的应用是Quora, Dropbox,豆瓣。同时,Python也是Google三门官方语言(C++,Java, Python)之一,并且刚刚成为MIT的计算机教学语言。当然还有Scala这种很有潜力的语言(Foursquare和Twitter大量采用),不过入门者就不用考虑了。

选好语言,还应选择本语言下的编程框架。优秀的编程框架贯彻了MVC的思想,并帮你实现了ORM, 用户模块,后台管理等功能,同时在防止SQL注入等安全性上也很有帮助,庞大的社区更提供各种插件和帮助。PHP下框架主要是CodeIgniter(在欧美最流行,最轻量级),Cakephp和Zend; Ruby下是Rails一统天下;Python下以Django为主,也有web.py, pylons, tornado等轻量级框架。

学习语言可以去买一本经典的书,而因为Web框架的代码变化很快,其最好的资源就是官方网站的Tutorial。 当然,你还需要数据库和服务器软件。对入门者来说,最直接的办法就是安装wamp或者xampp套件(php+apache服务器软件+Mysql数据库),wamp只在windows下,xampp则在各个平台下都有。安装套件是傻瓜式的操作,可以省去你不少配置烦恼;当然,以后你部署Linux服务器的时候,还是要学会用命令行方式安装这些软件。即使你有前端人员配合,你也需要学习HTML和CSS。这方面最推荐的书籍是Head First HTML+CSS,以对话的形式来讲述,非常易懂也非常清楚。进阶可以看O'reilly的各种XX Definitive Guide.

除此之外,你还需要一个代码版本管理工具,以往最著名的是SVN和Google Code,不过现在基本所有开源项目都迁移到Github去了。Github上建立开源项目是免费的,私有项目有7刀和12刀以及更贵的套餐。

特别需要提醒的,是要注意文字编码问题。除了理解编码的原理外,尽量在所有的地方都设置为UTF-8编码(HTML, 代码,数据库连接校验,文档)以最大程度避免问题。

参考:Quora上讨论,为什么Python比PHP好 www.quora.com/Why-is-Python-better-than-PHP

Progit简体中文版 progit.org/2010/06/09/pro-git-zh.html

三、服务器和域名

服务器是个让人头疼的问题,特别是在我国。你首先有必要了解一下我国的一些国情:1,由于各个电信公司的垄断,各大公司的网络之间互连带宽非常有限(比如电信与网通之间)。解决这个问题的唯一办法是选择双线(电信+网通)或者多线机房。2, 有很多大学有缩减版的上网服务(比如浙大的10元VPN),只能访问教育网定义IP地址段的服务器,除了不能访问国外网站外,国内有些IP段也无法访问,所以在购买前你需要进行测试。3,国内服务器市场竞争不充分,相较于美国,在提供更差服务的情况下,价格更贵。4, 国内对域名有严格的监管,并且备案流程十分复杂,工信部的指导资料极度复杂且含混不清。

我现在认为对创业者而言最靠谱的服务器是云计算平台。云计算有两大流派,分别以亚马逊AWS(主要是EC2)和Google App Engine为代表。EC2在使用上相当于传统的VPS,通过命令行可以对主机以root权限管理。GAE则仅允许你使用它配置好的环境,并且不能使用Mysql数据库而只能调用它以big table为基础的key-value存储。GAE仅支持Python和Java, 限制了你的编程方式,相当于将你的程序与其平台绑定,因此只适合做做博客或个人应用来玩玩,并不推荐。而EC2则相当强大,其按小时计费,随时可以开启新的instance(虚拟机器)的方式,不仅利于灵活的扩展网站,更是非常有利于创业者的现金流。在国内,新浪App Engine类似于GAE,不过仅支持PHP,前几天使用感觉还不错,功能也很全面了。阿里云涵盖了EC2和GAE的两种方式,不过由于其刚开放一个月,服务还完全不稳定,甚至在安装Apache的时候也会卡在连接网易镜像那里。阿里云是按月计费,价钱比EC2还要有竞争力。

当然,你也可以选择传统的虚拟主机,VPS或者主机托管,三者的价钱从便宜到贵,功能从弱到强。虚拟主机是指服务器提供商为你配置好环境(一般仅支持PHP),然后你把程序和数据库脚本上传上去即可运行。VPS和主机托管的管理方式类似,都是通过命令行,可以有root权限管理。不过VPS的主机只能租用,并且同虚拟主机一样是多人共享一台,只不过系统资源和权限都比虚拟主机要丰富。主机托管的价钱最贵,主机的产权归你。我还没在国内发现靠谱的服务器厂商,就不推荐了。美国最大的是Rackspace, 从国内访问很快的是Linode,另外Slicehost, Dreamhost都不错,不过你把服务器放在那的话,部分教育网用户就无法访问了。

接下来谈域名和备案。域名的注册很简单,国内最大的是万网,国外最大的是Godaddy,服务和价格都差不多。域名最好想个.com的,因为用户习惯已经养成。双拼的域名基本不可能注册的到了,你可以试试看三个字的拼音,还基本都可以注册。备案是非常麻烦的,并且2010年以后工信部修改了备案的流程,管理更加严格;据说他们自己有爬虫系统,爬到没有备案的网站是会直接要求服务器商关闭的。所有使用国内服务器的网站都需要备案,并且现在只能通过服务器提供商代为备案。在2010前备案过,在网站上可以查到备案主体,并且有备案密码的情况下(或者可以通过工信部网站重置密码),可以让服务器接入商在本主体下加入新的域名。更换服务器提供商是需要重新向工信部申请的。更详细的信息就需要你咨询服务接入商了。

四、网站运维/扩展网站性能

绝大多数网站在发布第一个版本后就不会很频繁的推出新功能,那么他们在做什么呢,除了不断修复bug,就是运维服务器,还不断修改程序以应对不断增长的用户量。对于小网站来说,有比较简单的几步可以做:将Web服务器和数据库服务器分离,避免频繁的上下文切换。配置数据库Master-Slave,不仅增加了并发量,也实现了热备份。将Web服务器分离为两台,在前端用负载均衡器(Load Balancer)调度,增加并发性。向更大规模扩展的过程,根据每个网站的情况就差别很大了。需要你组建一个团队,具有数据库,分布式系统,信息检索等背景。Nosql特别适合Web2.0站点,不过需要注意的是Nosql技术并不成熟,也没有一个Nosql方案像Mysql那样统领江湖,因此使用时有一定风险。特别是Nosql不支持事务性,所以对于用户数据等关键信息,还是放在Mysql里合适,对于需要denormalization的冗余数据,Nosql非常合适。最为推荐的Nosql方案是MongoDB和Redis,Redis的数据结构特别方便,我们在一个功能里使用了Redis后性能就得到了飙升。此外,在网站进入超大规模后,也是绕不开以Google GFS+MapReduce+Bigtable为代表的分布式系统和分布式计算的,其开源实现是Hadoop。

我认为最有帮助的几本书和文章:

《Mysql 性能调优与架构设计》简朝阳

《High Performance Mysql》

《构建高性能Web站点》郭欣

《Linux系统管理技术手册》 Evi Nemeth等

如果希望更深入的了解计算机系统,需要阅读很多经典论文:

http://www.cs.cmu.edu/~15712/

Nosql综述: http://blog.nosqlfan.com/html/2171.html

Designs, Lessons and Advice from building large Distributed System(Jeff Dean, MapReduce发明者) www.odbms.org/download/dean-keynote-ladis2009.pdf

On Designing and Deploying Internet-Scale Services

http://www.mvdirona.com/jrh/talksAndPapers/JamesRH_Lisa.pdf

Quora上关于设计新鲜事的讨论

http://www.quora.com/What-are-the-scaling-issues-to-keep-in-mind-while-developing-a-social-network-feed

web 开发入门分享相关推荐

  1. web开发入门_Web开发人员和设计师的自由职业入门

    web开发入门 Learn how to get started with freelancing as a web developer and designer. Cara Bell shares ...

  2. JSP WEB开发入门基础到高手进阶教程002

    JSP WEB开发入门基础到高手进阶教程 -------开发入门 JSP与微软的Active Server Pages 兼容,但它是使用类似HTML的卷标以及Java程序代码段而不是VBScript. ...

  3. 【python】 web开发入门

    进入Web开发 现在你完成了Python忍者训练,准备深入Ptyhon的Web开发,但现在的问题是有很多的框架,从中选择最好的框架非常困难,但从初学者的角度出发,Flask基本Web框架将非常适合We ...

  4. Flask Web开发入门

    Flask Web开发入门(八)之文件上传 https://blog.csdn.net/kangkanglou/article/details/79027425 前端:详情见上面的链接/也可以直接用f ...

  5. 《Java Web开发入门很简单》学习笔记

    <Java Web开发入门很简单>学习笔记 1123 第1章 了解Java Web开发领域 Java Web主要涉及技术包括:HTML.JavaScript.CSS.JSP.Servlet ...

  6. EAS的WEB开发入门

    web入门案例文档 web开发入门文档样例 web重写保存提交等方法,在保存提交时改变单据状态 在实体的ContrallerBean重写save和submit方法 如果需要改变工作流审核时的其他状态要 ...

  7. python开发web教学视频_Python快速Web开发入门与实践视频课程

    Python快速Web开发入门与实践欢迎来到KK的<Python快速Web开发入门与实践>捧场!下面请允许我为这套课程做一点介绍. <Python快速Web开发入门与实践>是一 ...

  8. SpringBoot的Web开发入门案例1

    SpringBoot的Web开发入门案例1-登录和页面数据遍历读取 新建maven项目:logintest pom.xml文件: <project xmlns="http://mave ...

  9. SpringBoot的Web开发入门案例2—国际化

    SpringBoot的Web开发入门案例2-国际化 改造logintest项目:SpringBoot的Web开发入门案例1 地址:https://blog.csdn.net/BLU_111/artic ...

最新文章

  1. python比较数据库表今天跟前一天数据增量,Python 生产环境Mysql数据库增量备份脚本...
  2. ashx文件和HttpHandler
  3. html 调用ios手机相机 demo,H5网页调用Android和iOS手机相机功能
  4. Rhel6服务器ftp服务配置
  5. Django REST Framework限速
  6. 使用RMAN VALIDATE验证数据和备份
  7. 环境变量和用户变量有什么区别?
  8. poj1969---找规律
  9. oh-my-zsh扫描git仓库卡慢的解决方法
  10. MySQL数据库应用形考_2020国开中优教育《MySQL数据库应用》形考任务题库
  11. python-面向对象-05_面向对象封装案例 II
  12. 一道经典JS题(关于this)
  13. 拓端tecdat|R语言里的非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析
  14. 麻省理工18年春软件构造课程阅读15“相等”
  15. 玩机搞机----安卓全机型修改开机第一屏步骤教程
  16. 三维空间数据建模——Smart3D的安装
  17. 2021-04-17
  18. 房东拿租金去还房贷是天经地义的嘛
  19. 二分图最大匹配与其应用
  20. win10照片查看器_非常好用的19个Win10小技巧,学会之后事半功倍

热门文章

  1. 数据采集课程录制计划
  2. 【白板动画制作软件】万彩手影大师教程 | 调整整个动画时长
  3. 小米node2红外_感应光、感应你,小米人体传感器2体验分享
  4. python做事件研究法_事件研究法
  5. 暖科技激活清明上河图,井贤栋:里面有最美的数字中国
  6. 机器人学 —— 机器人视觉(基础)
  7. 开讲啦观后感2017计算机科学家,【开讲啦俞敏洪观后感】 开讲了俞敏洪观后感_俞敏洪开讲啦观后感_东城教研...
  8. ROS之游戏手柄控制乌龟和机器人
  9. 抢跑分布式存储赛道,精准助力行业转型,这家厂商凭什么?
  10. 计算机网络中的安全、常见攻击、以及HTTPS原理与抓包实践