第四章 后端知识


后端知识

目标

  1. 掌握CS和BS架构的特点
  2. 知道什么是服务器及常见的软件服务器
  3. 了解编程语言的时代发展
  4. 知道Java语言的特点和应用领域
  5. 知道Python语言的特点和应用领域
  6. 掌握XML的语法
  7. 掌握JSON的特点和语法规则
  8. 知道如何使用SVN管理文件

一、系统架构介绍

目标

  1. 掌握CS架构的特点
  2. 掌握BS架构的特点

1、系统架构介绍

两种常见的系统结构:

  • CS架构
  • BS架构
1.1、CS架构

CS:(Client/Server)即客户端-服务器架构

优点:

  1. 能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后在提交给服务器,所以CS客户端响应速度快
  2. 操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求
  3. 能够实现复杂的业务流程
  4. 安全性能更容易保证

缺点:

  1. 需要专门的客户端安装程序,不方便实现快速部署安装和配置
  2. 兼容性差,不同的操作系统需要开发不同的程序
  3. 开发、维护成本较高,需要具有一定专业水准的技术人员才能完成,发生一次升级,则所有客户端的程序都需要改变
1.2、BS架构

BS:(Browser/Server)即浏览器-服务器架构,是伴随着Internet技术的兴起而发展起来的

优点:

  1. 分布性强,客户端零维护,只要有网络、浏览器即可实现业务处理
  2. 业务扩展简单方便,通过增加网页即可增加服务器功能
  3. 维护简单方便,只需要改变网页,即可实现所有用户的同步更新
  4. 开发简单,共享性强

缺点:

  1. 个性化特点明显降低、无法实现具有个性化的功能要求
  2. 在跨浏览器上,存在一定的兼容性
  3. 客户端服务器端的交互是请求-响应模式,响应速度低
  4. 在速度和安全性上需要花费巨大的设计成本
  5. 功能弱化,难以实现传统模式下的特殊功能要求
1.3、CS与BS区别总结
  • 效率:C/S效率高,某些内容已经安装在系统中了,B/S每次都需要加载最新的数据
  • 升级:B/S无缝升级,C/S删除老版本再安装新版本
  • 安全:C/S更安全,需要安装、注册、登录。B/S有浏览器即可使用,安全程度低
  • 开发成本:B/S成本低,C/S需要不同的系统要不同的开发人员,成本高

二、服务器介绍

目标

  1. 知道什么是服务器
  2. 了解常见的软件服务器

1、什么是服务器

我们通常所说的"服务器"可以从硬件和软件两个层面来理解:

  • 硬件服务器:其实就是我们所说的电脑;任何一台电脑安装了软件并且可以对外提供服务就可以叫服务器;专业服务器需要专业的硬件和软件支持,性能高,价格也比较高
  • 软件服务器:一个运行在硬件服务器上并为用户提供服务的计算机软件

提示:在不同的意境下,"服务器"代表着不同的含义;有时指的是硬件,有时指的是软件,有时指的是提供服务的系统

2、软件服务器

  • 软件服务器也可以称为服务器软件,不同类型的服务器软件能够提供不同的服务。常见的软件服务器有:
  • 文件服务器:是指在计算机网络环境中,所有用户都可访问的文件存储设备,是一种专供其他电脑检索文件和存储的特殊电脑
  • 数据库服务器:提供了对数据组织、存储和管理功能的服务器,比如Oracle、MySQL、Microsoft MQL Server等等
  • 邮件服务器:邮件服务器是一种用来负责电子邮件收发管理的设备
  • FTP服务器:是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务
  • Web服务器:
    • 严格意义上Web服务器只负责处理HTTP协议,只能发送静态页面内容
    • 常见的Web服务器有Nginx、Apache、IIS等等
  • 应用服务器:
    • 应用服务器是指通过各种协议把商业逻辑曝露给客户端的程序
    • 应用服务器一般也支持HTTP协议,能够实现Web服务器的功能
    • 应用服务器可以处理业务逻辑,实现动态生成文档
    • 常见的应用服务器有Tomcat、Weblogic、Jboss等等

三、编程语音介绍

目标

  1. 了解编程语言的时代发展
  2. 知道Java语言的特点和应用领域
  3. 知道Python语言的特点和应用领域

1、编程语言

  • 编程语言(programming language)可以简单的理解为一种计算机和人都能识别的语言
  • 一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动
1.1、编程语言的时代发展

编程语言经理的时代一般分为:低级语言、高级语言和面向对象时代

1、低级语言时代

  • 时间:1949-1953
  • 主要包含被称为"天书"的机器语言以及汇编语言

2、高级语言时代

  • 时间:1954-至今
  • 随着时间上第一个高级语言fortran的出现,新的编程语言开始不断涌现出来
  • 数十年来,全时间涌现了2500种以上高级语言,一些流行至今,一些则逐渐小时
  • 代表语言:BASIC、C语言

3、面向对象时代

  • 时间:90年代初-至今
  • 面向对象程序设计(Object-Oriented Programming,简称OOP)如今在整个程序设计中十分重要,其最突出的特点为封装性、继承性和多态性
  • 代表语言:Java、Python
1.2、Java语言
  • Java语言是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念
  • Java语言具有功能强大和简单易用两个特征
  • Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点
  • Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等
  • 近几年来,Java企业级应用飞速发展,主要被运用于电信、金融、交通、电商等大型项目平台建设
1.3、Python语言
  • Python是一种跨平台的计算机程序设计语言
  • 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言
  • 最初被设计用于编写自动化脚本(shell)。随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发
  • 相对于Java语言更加简单易学
  • 主要应用领域:大数据、人工智能、科学计算和统计、网络爬虫、软件开发等

四、常见文件格式

目标

  1. 知道什么是XML
  2. 掌握XML的语法
  3. 知道JSON的特点
  4. 掌握JSON的语法

1、XML

1.1、什么是XML
  • XML指可扩展标记语言(Extensible Markup Language)
  • XML是一种标记语言,很类似HTML
  • XML的设计宗旨是传输数据,而非显示数据
  • XML标记没有被预定义,您需要自行定义标签
  • XML被设计为具有自有描述性
  • XML是W3C的推荐标准
  • XML是纯文本的,文件后缀名为:.xml
 1 <?xml version="1.0" encoding="UTF-8" ?> 
 2 <node>
 3     <db id="db" desc="三条边的长度都一样"> 
 4         <b1>3b1> 
 5         <b2>3b2> 
 6         <b3>3b3> 
 7         <expect>等边三角形expect> 
 8     db> 
 9     <dy>
10         <b1>4b1> 
11         <b2>4b2> 
12         <b3>5b3> 
13         <expect>等腰三角形expect> 
14     dy> 
15 node>
1.2、XML与HTML的主要差异
  • XML不是HTML的替代
  • XML和HTML为不同的目的而设计
  • XML被设计为传输和存储数据,其焦点是数据的内容
  • HTML被设计用来显示数据,其焦点是数据的外观
1.3、XML树形结构

XML文档形成了一种树形结构,它从"根部"开始然后扩展到枝叶

1 <?xml version="1.0" encoding="UTF-8" ?> 
2 <mail>
3     <from>张三from> 
4     <to>李四to> 
5     <subject>会议记录subject> 
6     <body>本次会议的主要内容有...body> 
7 mail>

XML文档中第一行是XML声明,它定义XML的版本和所使用的编码

1.4、XML语法

XML的主要语法规则包含:

  • XML文档必须有根元素
    • XML文档必须有一个元素是所有其他元素的父元素,该元素称为根元素
  • 所有XML元素都必须有结束标签
    • 在HTML中经常会看到没有结束标签的元素,但是XML中省略结束标签是非法的
  • XML标签对大小写敏感
    • 在XML中。标签与标签是不同的
  • XML必须正确的嵌套
    • HTML中:This text is bold and italic
    • XML中,所有元素都必须彼此正确的嵌套:This text is bold and italic
  • XML的属性值须加引号
  • XML中的注释
1.5、XML案例

需求:小明是个男生,今年20岁了,毕业于清华大学,家里养的宠物有1岁的狗,2岁的猫,3岁的猪,他的幸运数字是2、5、8.请把上面的信息用XML文档来表示

 1 <?xml version="1.0" encoding="UTF-8" ?> 
 2 <intro> 
 3     <name>小明name> 
 4     <gender>gender>
 5     <age>20age>
 6     <university>清华大学university> 
 7     <pets>
 8         <pet age="1">pet> 
 9         <pet age="2">pet> 
10         <pet age="3">pet> 
11     pets> 
12     <luckyNumbers> 
13         <number>2number> 
14         <number>5number> 
15         <number>8number> 
16     luckyNumbers> 
17 intro>

2、JSON

JSON的全称是"JavaScript Object Notation",是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式

2.1、JSON的特点
  • JSON是纯文本
  • JSON具有良好的自我描述性,便于阅读和编写
  • JSON具有清晰的层级结构
  • 有效地提升网络传递效率

2.2、JSON的语法规则
  • 大括号保存对象
  • 中括号保存数组
  • 对象数组可以互相嵌套
  • 数据采用键值对表示
  • 多个数据由逗号分隔
  • JSON键
    • JSON的键必须是字符串类型,用英文双引号括起来
  • JSON值
    • JSON值可以是:
      • 数字(整数或浮点数)
      • 字符串(在双引号中)
      • 逻辑值(true 或 false)
      • 数组(在大括号中)
      • 对象(在大括号中)
      • null

示例:

 1 { 
 2     "name": "tom", 
 3     "age": 18, 
 4     "isMan": true, 
 5     "school": null, 
 6     "address": { 
 7         "country": "中国", 
 8         "city": "江苏苏州", 
 9         "street": "科技园路" 
10     },
11     "numbers": [2, 6, 8, 9], 
12     "links": [ 
13         { 
14         "name": "Baidu", 
15         "url": "http://www.baidu.com" 
16         },
17         { 
18         "name": "TaoBao", 
19         "url": "http://www.taobao.com" 
20         } 
21     ] 
22 }
2.3、案例

需求:小明是个学生,今年20岁了,毕业于清华大学,家里养的宠物有1岁的狗,2岁的猫,3岁的猪,他的幸运数字是2、5、8,请把上面的信息用JSON数据来表示

参考答案:

 1 { 
 2     "name": "小明", 
 3     "gender": "男", 
 4     "age": 20, 
 5     "university": "清华大学", 
 6     "pets": [ 
 7         { 
 8             "name": "狗", 
 9             "age": 1 
10         },
11         { 
12             "name": "猫", 
13             "age": 2 
14         },
15         { 
16             "name": "猪", 
17             "age": 3 
18         } 
19     ],
20     "luckyNumbers": [2, 5, 8] 
21 }

五、SVN

目标

  1. 知道SVN是什么
  2. 知道如何使用SVN管理文件

1、为什么学习SVN

  • 备份数据不丢失
  • 历史版本随时提取
  • 版本如何同步简单
  • 提交内容不会出现覆盖

2、SVN是什么

  • 一个开源的版本管理软件
  • 可架设在Apache上,最常用的客户端为TortoiseSVN(TSVN)

3、SVN应用环境

  • 服务器端:CollabNet的SVN服务器安装包(内含Apache2.2)
  • 推荐使用TortoiseSVN(以下简称TSVN)
  • 可通过TSVN进行读、写操作
  • 可通过IE浏览器进行读操作
  • 可通过各种插件与开发工具集成

4、客户端安装

安装文件:
TSVN客户端:
  TortoiseSVN-1.6.8.19260-win32-svn-1.6.11.msi
TSVN中文语言包:
  LanguagePack_1.6.8.19260-win32-zh_CN.msi
全部选择默认安装,安装完成后重启电脑

TSVN通过右键菜单与Windows资源管理器集成,没有自己的窗口界面

5、SVN的使用-创建版本库

在SVN服务器端操作

在响应文件夹内新建一个文件夹,用于存储数据

在新建文件夹上点右键,选择"TortosseSVN-在此创建版本库",TSVN会在此文件夹内建立若干控制文件。如图

6、SVN使用-检出

"检出"用于客户端第一次从SVN服务器上下载版本库数据

在客户端新建一个文件夹用于存放下载的数据

在新建文件夹上点右键,选择"SVN检出"

在弹出窗口的"版本库URL"处填入版本库的访问地址,如:http://10.50.22.35:8080/svn/XXX部门/XXXX项目/

点“确定”开始从SVN服务器下载数据

7、SVN使用-更新

“更新”用于客户端从SVN服务器下载最新版本

在受SVN控制的某层文件夹上(或文件夹内空白处)点右键,选择“SVN更新”,TSVN自动比较该文件夹客户端与服务器的版本差异,并下载最新版本到客户端

8、SVN使用-提交

“提交”用于将客户端的改动上传到SVN服务器

在受SVN控制的某层文件夹上(或文件夹内空白处,或某文件上)点右键,选择“SVN提交…” 

TSVN自动检查该文件夹客户端的改动,并将其列在弹出窗口的“变更列表”栏

在弹出窗口的“信息”栏写上对此次提交的注释,以便将来追溯

点击“确定”将客户端的改动上传到服务器 

9、SVN使用-增加

“增加”用于将新文件或文件夹纳入SVN的控制之下

在受SVN控制的某层文件夹上(或文件夹内空白处,或新增的某文件上)点右键,选择“TortoiseSVN-增加”

直接在受svn控制的文件夹中添加想要上传的文件,然后右键选择“提交”即可;

10、SVN使用-删除

  • 删除”仅是对客户端的文件进行操作,并不改变服务器上的内容,需要执行“提交”操作才会将删除操作上传到服务器
  • 将“删除”操作“提交”到服务器后,仅是从服务器的最新版本中删除了此文件或文件夹,在历史版本中仍可找回此文件或文件夹 

11、SVN使用-改名

“改名”用于在受SVN控制的状态下,对文件或文件夹改名

在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-改名”

  • “改名”仅是对客户端的文件进行操作,并不改变服务器上的内容,需要执行“提交”操作才会将改名操作上传到服务器
  • 不要用Windows“重命名”来实现改名,因为这个操作不受SVN控制,SVN会将其理解为删除原文件、增加一个新文件,从而导致文件改名后不能跟踪到改名前的状态 

12、SVN使用移动

“移动”用于在受SVN控制的状态下,移动文件或文件夹的位置

在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-版本库浏览器”

在弹出窗口拖动文件夹或文件到需要的位置

由于是对服务器版本库直接操作,移动后将自动执行一次“提交”操作

移动完成后需要在客户端执行一次“更新”,以下载最新状态 

不要用Windows的拖动操作或“剪切”、“粘贴”来实现移动,因为这些操作不受SVN控制,SVN会将其理解为在原位置删除文件、在新位置增加文件

从而导致文件移动后不能跟踪到移动前的状态 

13、SVN使用-更新至版本

1、在受svn控制的文件夹上右击

2、选择TSVN中的更新至版本

3、选择显示日志

4、勾选具体更新到的版本

5、点击确定按钮