第四章 后端知识
后端知识
目标
- 掌握CS和BS架构的特点
- 知道什么是服务器及常见的软件服务器
- 了解编程语言的时代发展
- 知道Java语言的特点和应用领域
- 知道Python语言的特点和应用领域
- 掌握XML的语法
- 掌握JSON的特点和语法规则
- 知道如何使用SVN管理文件
一、系统架构介绍
目标
- 掌握CS架构的特点
- 掌握BS架构的特点
1、系统架构介绍
两种常见的系统结构:
- CS架构
- BS架构
1.1、CS架构
CS:(Client/Server)即客户端-服务器架构
优点:
- 能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后在提交给服务器,所以CS客户端响应速度快
- 操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求
- 能够实现复杂的业务流程
- 安全性能更容易保证
缺点:
- 需要专门的客户端安装程序,不方便实现快速部署安装和配置
- 兼容性差,不同的操作系统需要开发不同的程序
- 开发、维护成本较高,需要具有一定专业水准的技术人员才能完成,发生一次升级,则所有客户端的程序都需要改变
1.2、BS架构
BS:(Browser/Server)即浏览器-服务器架构,是伴随着Internet技术的兴起而发展起来的
优点:
- 分布性强,客户端零维护,只要有网络、浏览器即可实现业务处理
- 业务扩展简单方便,通过增加网页即可增加服务器功能
- 维护简单方便,只需要改变网页,即可实现所有用户的同步更新
- 开发简单,共享性强
缺点:
- 个性化特点明显降低、无法实现具有个性化的功能要求
- 在跨浏览器上,存在一定的兼容性
- 客户端服务器端的交互是请求-响应模式,响应速度低
- 在速度和安全性上需要花费巨大的设计成本
- 功能弱化,难以实现传统模式下的特殊功能要求
1.3、CS与BS区别总结
- 效率:C/S效率高,某些内容已经安装在系统中了,B/S每次都需要加载最新的数据
- 升级:B/S无缝升级,C/S删除老版本再安装新版本
- 安全:C/S更安全,需要安装、注册、登录。B/S有浏览器即可使用,安全程度低
- 开发成本:B/S成本低,C/S需要不同的系统要不同的开发人员,成本高
二、服务器介绍
目标
- 知道什么是服务器
- 了解常见的软件服务器
1、什么是服务器
我们通常所说的"服务器"可以从硬件和软件两个层面来理解:
- 硬件服务器:其实就是我们所说的电脑;任何一台电脑安装了软件并且可以对外提供服务就可以叫服务器;专业服务器需要专业的硬件和软件支持,性能高,价格也比较高
- 软件服务器:一个运行在硬件服务器上并为用户提供服务的计算机软件
提示:在不同的意境下,"服务器"代表着不同的含义;有时指的是硬件,有时指的是软件,有时指的是提供服务的系统
2、软件服务器
- 软件服务器也可以称为服务器软件,不同类型的服务器软件能够提供不同的服务。常见的软件服务器有:
- 文件服务器:是指在计算机网络环境中,所有用户都可访问的文件存储设备,是一种专供其他电脑检索文件和存储的特殊电脑
- 数据库服务器:提供了对数据组织、存储和管理功能的服务器,比如Oracle、MySQL、Microsoft MQL Server等等
- 邮件服务器:邮件服务器是一种用来负责电子邮件收发管理的设备
- FTP服务器:是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务
- Web服务器:
- 严格意义上Web服务器只负责处理HTTP协议,只能发送静态页面内容
- 常见的Web服务器有Nginx、Apache、IIS等等
- 应用服务器:
- 应用服务器是指通过各种协议把商业逻辑曝露给客户端的程序
- 应用服务器一般也支持HTTP协议,能够实现Web服务器的功能
- 应用服务器可以处理业务逻辑,实现动态生成文档
- 常见的应用服务器有Tomcat、Weblogic、Jboss等等
三、编程语音介绍
目标
- 了解编程语言的时代发展
- 知道Java语言的特点和应用领域
- 知道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语言更加简单易学
- 主要应用领域:大数据、人工智能、科学计算和统计、网络爬虫、软件开发等
四、常见文件格式
目标
- 知道什么是XML
- 掌握XML的语法
- 知道JSON的特点
- 掌握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中。标签
- 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
目标
- 知道SVN是什么
- 知道如何使用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、点击确定按钮