[TOC]
知识梳理
第一层级
算法
压缩算法
压缩算法主要有霍夫曼编码压缩和LZ77算法。霍夫曼算法利用建立霍夫曼树,将所有信息作为树的节点,进行编码。lZ77算法是利用重复出现的数据信息进行压缩,将出现最长的数据作为一个单元,对其位置进行编码,从而实现最高的压缩率。
查找算法
有二分法和散列算法。二分法查找算法是将中间元素和被查找对象对比,再对信息进行对半分割,直至查找到元素位置。散列算法,将数据压缩成摘要,生成散列函数,通过直接计算函数,得到数据的存储位置,查找速度远高于 二分法。
语言
JavaScript & typescript
JavaScript是现今大多浏览器的默认脚本语言,定义了网页的行为。typescript是JavaScript的未来,扩展了JavaScript。
JavaScript中对象是拥有属性和方法的数据,类似于其他面向对象的语言中类的概念,可通过复制实现继承,通过调用属性和方法实现重写和扩展。
使用构造函数能够方便地实现对象的建立和继承功能。
function obstacle(x, y, speedX, speedY, width, height, beginPos){
this.x = x;
this.y = y;
this.speedX = speedX;
this.speedY = speedY;
this.width = width;
this.height = height;
this.beginPos = beginPos;
}
var obstacle1 = new obstacle(
0,
0,
0,
1,
150,
30,
-500
);
HTML5
是一种建立网页的标记语言。
XML
是一种可扩展的标记语言,通过自行定义标签, 方便数据传输和存储,比较好的兼容性,利于信息的更新。json是近年来了更流行的数据数据交换语言。
svg
是一种可扩展的标记语言,可用来描述二维矢量图。
系统
Linux
Linux是一个多用户网络操作系统,从嵌入式到大型计算机,具有许多发行版本。现今服务器大多使用Linux作为操作系统,不同于Windows,Linux可以定制自己想要的功能,保留当前设备需要的,具有较强的专一性,利于充分发挥硬件性能。
熟练掌握文字界面的操作方法,是使用Linux的关键。
第二层级
UML
UML类图
类图是面向对象的软件系统结构重要的表达方式,类图显示了类的构成、接口和类之间的关系。在软件开发中,类图的建立是相当重要的,对团队的协作和程序框架结构搭建具有较大的帮助。
OSI七层模型
OSI参考模型是一种电子设备之间建立通讯的结构模型,它分为七层,物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。从数据传输最底层电信号的规定,到用户服务的管理,七层模型十分完善地描述了现代信息通讯的层次结构。
路由
路由工作在OSI参考模型总的网络层,通过运行TCP/IP协议转发数据包实现网络互连。
由于当今的网络域名有限,无法实现每台终端都占有一个IP,所以需要路由器来转发数据,实现若干终端同时占有一个IP。每台路由器占有固定的IP,又由路由器分配给每台相连的计算机局域网的IP,局域网内的计算机可通过路由器发送自身分配的IP和端口至公网,可实现公网内的计算机间通讯。为了不造成数据的收发混乱,路由器通过查找路由表,将数据发送至指定IP的指定端口,应用通过占有对应端口,实现数据的无损收发。
域名
域名是互联网上计算机的名称,用户可通过访问域名来访问相应的计算机。通过对域名的不同端口的选择,可以访问到远程计算机指定的文件。域名通过DNS服务器解析之后就成了一个固定IP,这样看域名其实就是一个IP。
TCP & UDP
TCP/IP协议是一种互联网通讯协议,规定了互联网内设备之间的连接和通讯的方法。TCP协议可实现数据的安全无损正确的传输,同时满足了不同种类设备终端之间的无差别传输。
UDP也是一种网络传输协议,不同于TCP协议,其数据传输的可靠性不足,但是速度较快,两者适用于不同要求的环境下。对于数据准确性要求高的环境下,适用于TCP协议,而对于那些不要求每帧数据都落实,但对速度有要求的通讯环境则适用UDP协议。
共享单车
共享单车是现今互联网技术和电子技术的一个典型的综合应用,需要对其逻辑关系和包含的技术,工作流程有个全面地了解。
二维码
不同的车都有自己独一的ID,手机扫描二维码之后得到一个字符串,代表一个服务器请求地址,其中包含这辆车的ID。
交互逻辑
客户端首先检查该用户是否为合法用户否是欠费,如果不合法,则提示违法信息,如果合法,客户端得到服务器地址后并访问服务器,服务器在数据库中寻找被扫的车子,读取其状态,若车子状态异常,便向客户端返回该异常,若车子状态正常,便向该车子的地址发送解锁请求。车子接收到解锁请求,控制IO口开锁,并通过行程开关检测车锁是否正常开启,并向服务器返会结果。如果服务器接收到开锁成功得信息,就向客服端返回成功信息,并在服务器上开始计费,如果开锁失败或者在一定时间内没有接收到车子的返回信息,则向客户端返回失败信息,同时在服务器的数据库中标记异常车辆。
st=>start: Start
e=>end
getCode=>operation: 扫描二维码
checkUser=>condition: 是否为违法用户
badUser=>operation: 显示违法信息
putID=>operation: 访问服务器
searchBike=>operation: 数据库中寻找车子并读取状态
checkBike=>condition: 车子是否异常
badBike=>operation: 向客户端返回车辆异常信息
putUnlock=>operation: 向车子发送解锁请求
unlockBike=>operation: 控制IO口开锁
checkLock=>condition: 行程开关检查车锁是否开启
unlockOk=>operation: 向服务器返回成功解锁信息
unlockFail=>operation: 向服务器返回失败信息
charging=>operation: 向客户端返回成功信息并开始计费
st->getCode->checkUser
checkUser(no)->putID->searchBike->checkBike
checkUser(yes)->badUser->e
checkBike(no)->putUnlock->unlockBike->checkLock
checkBike(yes)->badBike->e
checkLock(yes)->unlockOk->charging->e
checkLock(no)->badBike->e
P2P传输的实现
因为处于内网的计算机IP是不固定的,所以一般两个处于内网的终端之间无法直接得到对方的地址,两者之间的访问往往需要第三方的公网服务器的帮助,但是如果类似于视频的大数据量的传输,会造成带宽严重浪费,提高运营成本,所以点对点数据传输是解决这一问题的方法。P2P传输技术实现了两个处于内网的终端如何直接访问。
大致原理如下
A->routeA:
routeA->server:send data
Note right of server:get IP of A
B->routeB:
routeB->server:send data
Note left of server:get IP of B
A->routeA:
routeA->server:send request
server->routeA:send IP of B
routeA->A:
Note left of A:get IP of B
A->routeA:
routeA->routeB:send data
routeB->B:
Note left of B:build connect
处于内网终端的IP是由路由器分配而不固定的,而路由器的IP是固定不变的,所以可以通过中间服务器的媒介作用,使处于内网的两个终端得到互相的IP,从而做到点对点的数据传输。
学习规划
自身现状分析
经过这段时间的学习,对HTML5有了更多的了解,同时掌握了js的基本语法,能够实现基本的游戏逻辑和一般的静态界面。对于互联网的基础知识和系统概念,在茶话会之后有了基本的了解。
虽然有了一些基本概念,但是还没有进行更多的动手实践,很多知识还需要深入了解学习。例如知道很多算法,其实没有真正使用过。
学习目标
基础知识学习
提高自己python和js的能力和编程思想。完善自己的js小游戏。
动手实践
实现一些物联网技术的小制作,利用树莓派,搭建一个可以远程访问的服务器,并制作从一个远控控制小车,同时可实现图像传输,信息交互。