概述:**结构型模式(Structural Pattern)**关注如何将现有类或对象组织在一起形成更加强大的结构.
不同的结构型模式从不同的角度组合类或对象,它们在尽可能满足各种面向对象设计原则的同时为类或对象的组合提供一系列巧妙的解决方案。
- 类结构型模式:关心类的组合,由多个类组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系。
- 对象结构型模式:关心类与对象的组合,通过关联关系,在一个类中定义另一个类的实例对象,然后通过该对象调用相应的方法。
概述:**结构型模式(Structural Pattern)**关注如何将现有类或对象组织在一起形成更加强大的结构.
不同的结构型模式从不同的角度组合类或对象,它们在尽可能满足各种面向对象设计原则的同时为类或对象的组合提供一系列巧妙的解决方案。
软件的可维护性(Maintainability)和可复用性(Reusability)是两个非常重要的用于衡量软件质量的属性,软件的可维护性是指软件能够被理解、改正、适应及扩展的难易程度,软件的可复用性是指软件能够被重复使用的难易程度。 – Java设计模式
Purpose: Controls and manage access to the object they are protecting
代理模式是用某个类来代理一个实体对象的行为的一种模式,其目的是为了保护和管理对这个实体对象的访问。
同时,代理模式有可能会在代理类中添加一些附属功能来扩展我们对实体对象(Server)的需求与访问。我们一般采用在代理类中与实体对象组合来实现代理模式
以Java
为后端,Springboot
+ Mybatis
为技术栈的Web
项目一直是目前十分火热的点,本文将会介绍我在学习过程中总结的一些Web
知识,目前打算分成以下几篇来写:
Java Web – Web Application, Server and Client
主要讲解Web Application中的一些基本概念
Java Web – Tomcat and Servlet
主要讲解Java中的Servlet和Tomcat,这两者是Java在开发
Server
端时十分重要的两个东西。
Java Web – 分层模型
Java Web – Springboot
主要讲解Springboot,Springboot是在Spring基础上简化配置的一款现代化Web Applicaiton开发框架,具有内置Tomcat,配置简单等优点。
Java Web – Mybatis
Mybatis是Java中的一款数据持久化框架,能够在Java实体类和SQL语句间建立映射关系,是一种半自动化的ORM(Object Relational Mapping)实现
动态规划是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题
即,将问题拆分成子问题,直到子问题可以解决,然后将子问题的答案保存起来以达到减少重复计算的目的。再根据子问题答案反推,得出原问题答案
Definition(Binary Search Tree)
二叉搜索树可以是一棵空树,如果它是非空的树,那么其满足以下的条件:
所有的节点都有一个值(key),且任意两个不同的节点的值是不同的。
即所有的值都是唯一的
某节点的左子树的所有节点的值都小于该节点的值
某节点的右子树的所有节点的值都大于该节点的值
根节点的左子树和右子树都是二叉搜索树(递归)
A network is an intricately connected system of objects, devices, or people.
网络是由对象、设备或人员组成的错综复杂的连接系统
多个设备(也称为主机)的互联,它们使用多条路径连接,以发送/接受数据。计算机网络还可以包括有助于两个不同设备之间通信的多个设备/介质,这些被称为网络设备,包括路由器(routers)、集线器(hub)和网桥(bridges)之类的东西
可以将网络分为 node 和 link。
Local Area Networks
Wide Area Networks
Data is sent in bits, 1s and 0s
Data is not the information itself
Data is an encoded form of information which is a series of electrical impulses/optical signals into which information is transmitted for sending
数据不是信息本身
数据是信息的编码形式,它是一系列电脉冲/光信号,信息被传输到其中以进行发送
- 对于传输,计算机数据通常被分解成易于传输的小单元
- 使用 OSI 模型,这些单元可以称为数据包、帧或段
- 为什么是数据包?
- 电脑可以轮流发包
- 如果数据包丢失,只需重新传输少量数据。
- 数据可以采用不同的路径。
- 不同类型的计算机系统可以进行通信
- 所有设备必须使用相同的“语言”或使用相同的协议(使用相同的规则集)
Bandwidth is the measure of how much information can flow from one place to another in a given amount of time.
带宽是衡量在给定时间内可以从一个地方流向另一个地方的信息量。
Throughput bandwidth
OSI: Open System Interconnection
物理层是OSI模型中最底层的模型,它主要负责设备间真实的物理连接。物理层以bits
的方式保存和传输数据。它负责将bits
从一个节点传输到下一个节点。当接收到数据时,物理层会将信号转换成“01”串并且将其传输给Data Link Layer
。Data Link Layer
会将这些数据帧重新组合在一起。
物理层的作用
集线器(Hub)、中继器(Repeater)、调制解调器(Modem)、电缆(Cables)是物理层设备。
数据链路层负责消息的节点到节点传递。该层的主要功能是确保通过物理层从一个节点到另一个节点的数据传输无差错。当数据包到达网络时,数据链路层 负责使用其 MAC(Media Address Control) 地址将其传输到主机。数据链路层可以划分成两个子层:
数据链路层的作用
数据链路层中的数据包称为帧(Frame)
交换机(Switch)和网桥(Bridge)是数据链路层设备
网络层用于将数据从一台主机传输到位于不同网络中的另一台主机。它还负责数据包路由,即从可用路由的数量中选择传输数据包的最短路径。发送方和接收方的IP地址由网络层放置在标头中。
网络层的作用
Routing(路由):网络层协议决定了哪条路由适合从源到目的地。
什么是Routing:Routing is the process of selecting a path for traffic in a network or between or across multiple networks.(wikipedia)
Logical Addressing(逻辑寻址):为了唯一地识别互联网上的每个设备,网络层定义了一个寻址方案。发送方和接收方的 IP 地址由网络层放置在标头中。这样的地址可以唯一且普遍地区分每个设备。
网络层中的数据段(Segment)称为包(Packet)
网络层由路由器等网络设备实现。
Keyword: Reliability, Flow control, Error correction
传输层向应用层提供服务,并从网络层获取服务。传输层中的数据称为分段(Segment)。它负责完整消息的端到端(End-to-End)交付。传输层还提供数据传输成功的确认,并在发现错误时重新传输数据。
在发送方看来:
传输层从上层接收格式化的数据,执行分段(Segmentation),并执行流和错误控制以确保正确的数据传输。它还在其标头中添加源和目标端口号,并将分段数据转发到网络层。
note:发送方需要知道与接收方应用程序关联的端口号。 通常,此目标端口号是默认配置或手动配置的。例如,当 Web 应用程序向 Web 服务器发出请求时,它通常使用端口号 80,因为这是分配给 Web 应用程序的默认端口。许多应用程序都分配了默认端口。
在接收方看来:
传输层从标头读取端口号,并将接收到的数据转发给相应的应用程序。它还执行分段数据的排序和重组。
传输层的作用
传输层由操作系统操作。它是操作系统的一部分,通过系统调用与应用层通信。 传输层被称为 OSI 模型的核心。
数据在传输层中被称作段(Segments)
会话层负责连接的建立、会话的维护、身份验证,同时也保证了安全性。
会话层的作用
表示层也称为翻译层(Translation layer)。来自应用层的数据在这里被提取出来,并按照所需的格式进行处理,以通过网络传输。
表示层的作用
ASCII
翻译成EBCDIC
在 OSI Model的最顶层,就是由网络应用程序实现的应用程序层。这些应用程序产生数据,这些数据必须通过网络传输。该层还用作应用服务访问网络和向用户显示接收到的信息的窗口。
应用层的作用
上三层一般被称为 应用层,因为它们处理用户界面、数据格式和应用程序访问。
下次层一般称为 数据流层,因为它们控制网络上消息的物理传递。
OSI 模型作为参考模型,由于其发明较晚,并未在 Internet 上实现。当前使用的模型是 TCP/IP 模型。