【2016.2.5】小白自学敲代码的零散知识点整理(2)

补一下之前的web前端的图

【2016.2.5】小白自学敲代码的零散知识点整理(2)_第1张图片
web前端

详细的前端技术什么的,由于笔者是才入门的小白,技术相关的只能从理论开始,没有很丰富的知识及实践能力,所以写的同时更多的是说明思维以及想法,技术谈不了,也不敢谈,顶多引用一下大神的话语.

上次说了不少关于web前端的相关知识,今天说下web后端这块的来源及相关知识.

早期互联网的发展是没有前后端这么明显的说法,早期的Web项目是一个封闭的项目,用户从浏览器里看到的页面直到后台数据库都是在一个项目里集成的,而现在Web系统的规模越来越大,中大型的Web系统是一个开放式的系统,开放型的系统用户在浏览器发起的请求可能会转发到外部的系统里进行处理,或者是本地的系统和外部系统一起完成请求的处理,此外有的请求可能不会直接请求数据库,而是请求缓存服务器,这些变化几乎都是发生在Web系统的服务端,前后端耦合度很高的Web系统服务端的复杂度提升必然带来了Web前端的复杂度的提升。因此Web前端从系统架构的角度也需要更加专业的管控,管控的作用之一就是前后端进行分离,降低前端对服务端的依耐性,这个时候前后端开始分家做事,对应的web框架也就出来了.

首先说下什么是前端,什么时候后端。


前端:相对静态化.前端有且仅有静态内容,再明确些,只有HTML/CSS/JS等. 其内容来自于完全静态的资源而不需要任何后台技术进行动态化组装.前端内容的运行环境和引擎完全基于浏览器本身.

后端:后端可以用任何语言,技术和平台实现,但它们必须遵循一个原则:只提供数据,不提供任何和界面表现有关的内容.换言之,他们提供的数据可以用于任何其他客户端(如本地化程序,移动端程序).

前后端的接口:数据


前后端究竟是什么样的?


【2016.2.5】小白自学敲代码的零散知识点整理(2)_第2张图片
图是目前大部分系统的架构图,虽然有些系统采用分布式架构,层与层之间使用了远程调用框架,但是本质上都逃不开上面这个架构设计。这张图是一张比较合理的图,在实际开发里最常发生的事情就是控制层(Control)越过服务层(Service)直接处理下面的资源。

在这个情况下基本就明了了,前后分离方便管理,方便维护.

前端呈现效果,后端逻辑计算,数据管理.


【2016.2.5】小白自学敲代码的零散知识点整理(2)_第3张图片
再详细一点就是这样

还不懂?


【2016.2.5】小白自学敲代码的零散知识点整理(2)_第4张图片
web前后端详细图

这下从逻辑图,到详细的流程图,你也该看懂了吧..

知乎大神推荐的

需要的技能也列出来:

1/ .net/java

庞大,复杂。但 Java 的优点就是适合处理特别大的数据量,如果你的项目会很快实现大爆发,需要处理海量的请求,那么 Java 是一个不错的选择。

2/ PHP

可以快速上手,相比其他语言,可以更快的为应用添加各种新功能。当然,可维护性就另当别论了。

3/ Ruby

非常接近自然语言,基本上即使不懂编程,也能看明白 70% 或 80%。04 年出现了一个用 Ruby 编写的 Web 开发框架 Ruby on Rails,当时的效果是非常震撼的,以前需要一个团队才能搞定的事情,使用 Ruby on Rails 后 1 个人就可以胜任了,所以 Ruby on Rails 在极短的时间内就成为了 Ruby 的代名词,也成为了新手学习 Web 开发的不二选择,但是 Ruby 语言也并非十全十美,快的同时,他的最大短板就是性能。Twitter 最早就是使用 Ruby on Rails 开发的,但是随着用户数的逐步增长,Twitter 的宕机开始变得非常频繁,后来他们迫不得已将整个系统从 Ruby 迁移到到了一个从 Java 派生出来的语言 Scala。

4/ node.js

简单来说,可以把 node.js 理解为跑在服务器上的 javascript,再直白一点,就是一个跑在服务器上的浏览器,因为 node.js 最早就是从 chrome 浏览器的 Javascript 引擎 V8 中剥离出来的。相比 Ruby,Node.js 程序可以获得更高的并发性能,这在一些高并发的场景下(比如群聊,多人协作等)会很有优势。

5/ 其它(python,closure 等)

6/ 无后端(leancloud)

无后端编程是最近的一个新趋势,但她并非说是真的没有后端,而只是把后端交给一些第三方的云平台,比如 Leancloud,Firebase 等。如果你开发一个手机 App,这样的好处就是你可以在早期没有后端程序员的情况下快速开工,像 Leancloud 这样的云平台已经可以胜任大部分的应用场景,如果后期业务逻辑复杂之后再寻找合适的后端工程师迁移也不迟。

7/ 最强编程语言 Lisp

如果要评选一个最强的编程语言,该是哪个呢?答案就是 Lisp。为什么是 Lisp?Lisp 的作者在很早以前就从数学的层面总结了一个完美的编程语言应该具备的 9 种能力,而 Lisp 就是为了配合他的这个理论而产生出来的语言。Hacker News 是由 YC 的创始人 Paul Graham 开发的,而 Paul Graham 本身就是一个 Lisp 程序员,他为了开发 Hacker News,专门发明了一种新语言叫做 Arc,但因为它是基于 Lisp 的,所以也被归为了 Lisp 的方言之一。

数据库

我们平常访问的大部分网站都是需要登录操作的,登录之后我们看到的就是只和自己相关的那部分内容。这些用户信息是保存在什么地方的呢?这就需要用到数据库。关于数据库,代表性的有两个:

1/ MySQL

2/ MongoDB

MySQL 是最常用的结构化数据库,也是大多数创业公司的选择。为什么是结构化的?就是说它的表的结构是固定的

工具及环境:

来源:知乎

Windows系列(非主流),CoreOS+Docker,RedHat/Fedora/CentOS, Debain/Ubuntu, Arch, BSD系列.....

按IDE划分:类编辑器:Sublime Text,VisualStudio Code,Notepad++,IDE类: Visual Studio,JetBrain系列,Eclipse(老,丑,卡),NetBeans……极客范:Vim+Emacs

备份相关:rsync,replication,cluster,备份工具。


后端这块大致就是这样,详细的谈不来..

网上关于后端开发的技能树很难找到,下面是其他网友分享的一些技能树

【2016.2.5】小白自学敲代码的零散知识点整理(2)_第5张图片
网址:http://naotu.baidu.com/file/5fce9d2409c035792dbf7efcace9fce9?token=4a5eaac8ce32c76e


详细点开就知道了

web前后端基本上介绍的差不多了,详细的框架什么的会慢慢介绍.

今天就到这里....

你可能感兴趣的:(【2016.2.5】小白自学敲代码的零散知识点整理(2))