1-区块链基础概述
1-区块链基础概述
区块链(英语:blockchain或block chain)是借由密码学串接并保护内容的串连文字记录(又称区块)。每一个区块包含了前一个区块的加密散列、相应时间戳记以及交易资料(通常用默克尔树(Merkle tree)算法计算的散列值表示),这样的设计使得区块内容具有难以篡改的特性。用区块链技术所串接的分布式账本能让两方有效记录交易,且可永久查验此交易。目前区块链技术最大的应用是数字货币,例如比特币的发明。
比特币(英语:Bitcoin,缩写:BTC 或 XBT)是一种基于去中心化,采用点对点网络与共识主动性,开放源代码,以区块链作为底层技术的加密货币,比特币由中本聪(网名)(Satoshi Nakamoto)于2008年10月31日发表论文,2009年1月3日,创世区块诞生。在某些国家、央行、政府机关则将比特币视为虚拟商品,而不认为是货币。
区块链结构在加密货币应用中,区块链结构的作用就是用作账本,每一个区块都是一页账册,它们相互之间通过哈希值进行连接形成一条完整有序的链表,每个区块的头部哈希是它们的唯一标识。
从上面的区块链结构可以看得出,一个区块由主要 ...
基于tio实现P2P网络
基于tio实现P2P网络结构导入相关依赖1234567891011121314151617181920212223<!-- swagger API框架--><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version></dependency><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version></dependency><!-- tio Network framework 基于JVM的网络编程框架--> ...
Swagger技术概述
Swagger技术概述Swagger出现的原因,很大程度上是由于前后端开发人员对于接口文档,无法做到高效的同步。前端人员苦于接口文档老旧,更新不及时,后端人员苦于在任务外另外维护接口文档。故而随着项目开发时间的推移,就导致项目的接口文档老旧,使用性差等问题暴露出来。
为解决这一问题而出现的Swagger,通过总结规范,开发项目工具,实现生成各种格式的接口文档,生成多种语言的客户端和服务端的代码,以及在线接口调试页面等。按照新的开发模式,在开发新版本或者迭代版本的时候,只需要更新Swagger描述文件,就可以自动生成接口文档和客户端服务端代码,做到调用端代码、服务端代码以及接口文档的一致性。
Swagger开发流程1. 在SpringBoot项目中引入相关依赖1234567891011<!-- swagger API框架--><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> ...
4-基于SpringBoot的Web开发
基于SpringBoot的Web开发流程静态资源的导入SpringBoot项目中的静态资源有两种访问方式
通过webjars访问首先引入相关依赖
12345678910<dependency><!--Webjars版本定位工具(前端)--> <groupId>org.webjars</groupId> <artifactId>webjars-locator-core</artifactId></dependency><dependency><!--Jquery组件(前端)--> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>3.3.1</version></dependency>
根据webjars路径访问静态资源,快速访问:http://localhost:8080/ ...
3-Lombok应用
Lombok应用在SpringBoot中整合SSM项目的过程中,不可避免的涉及对数据库的操作,既然有对数据库的操作就必然包括依据数据库结构创建POJO,而POJO创建过程重复度高,并且使得代码看起来冗杂,这种情况下可以通过使用Lombok插件,通过注解的方式,简化POJO的创建过程
使用过程1. 在IDEA中安装Lombok插件
2. 添加Lombok对应的依赖到项目pom.xml文件中1234<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></dependency>
3. 改造实体类,使用Lombok方式配置基本注解
@Data:自动提供getter和setter,hashCode,equals,toString等方法
@Getter:自动提供Getter方法
@Setter:自动提供Setter方法
@Slf4j:自动在bean中提供log变量(本质还是使用slf4j的日志功能)
...
14-关系代数Relation Algebra
关系代数Relation Algebra概述
关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。关系代数的运算对象是关系(集合),运算结果亦为关系(集合)。
传统的集合运算:广义笛卡尔积运算,并,交和差运算
专门的关系运算:选择,投影,连接和除运算
传统的集合运算基本概念设关系模式为$R(A_1,A_2,…,A_n)$
R表示关系模式$R(A_1,A_2,…,A_n)$的一个关系
t表示元组,$t\in R$表示t是R的一个元组,可以理解为数据库某一表中一行实例
$t[A_i]$表示元组t中相对应于属性$A_i$的一个分量,即表中t元组中$A_i$属性所对应单元格的值
若$A=\lbrace A_{i1},A_{i2},A_{i3},…,A_{ik}\rbrace$,其中$A_{i1},A_{i2},….,A_{ik}$是$A_1,A_2,…,A_n$中的一部分,则称A为属性列或属性组,简单来说,属性组就是一个关系所有属性的一个子集
$t[A]=(t[A_{i1}],t[A_{i2}],…,t[A_{ik}])$表示元组t在属性列A上诸分量 ...
2-Yaml文件
Yaml文件SpringBoot使用一个全局配置文件,配置文件的名称是固定的,但文件类型有两种
application.properties
语法结构:key=value
application.yaml (推荐)
语法结构: key: value
注意冒号后边必须跟空格,否则语法结构错误(约定大于配置的体现)
YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种标记语言)。
YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。
YAML 的配置文件后缀为 .yml,如:application.yml
Yaml文件基本语法1234567891011121314151617181920# yaml配置文件可以注入到 ...
1-SpringBoot基础
SpringBoot基础
SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。
SpringBoot所具备的特征有:
可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
内嵌Tomcat或Jetty等Servlet容器;
提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
尽可能自动配置Spring容器;
提供准备好的特性,如指标、健康检查和外部化配置;
绝对没有代码生成,不需要XML配置。
IDEA快速部署SpringBoot项目通过SpringInitializr创建SpringBoot项目,配置相关信息
自动配置SpringWeb
完成项目部署
编写Controller层,测试结 ...
4-网络层(上)
网络层基础在参考模型中网络层位于传输层之下,链路层之上。
网络层的功能主要是将源端产生的数据包/分组,送达至目的机
完成这项工作需要:
封装源数据
识别目的机
找到一条好的路径(路由)
可能遭遇的问题:
地址不够用
丢包
拥塞
网络层主要内容被路由协议:IP协议
IP地址:定位目的机
IP分组:解决信息封装
IPv6:新一代IP协议
路由选择协议:找到目的机和源机之间的最优路径
距离矢量路由选择协议(RIP)
链路状态路由选择协议(OSPF)
其他方面:
ARP
ICMP
CIDR
NAT
源和目的机之间的网络分为:数据报网络:提供无连接的服务
虚电路网络:提供面向连接的服务
比较项目
数据报子网(无连接服务)
虚电路子网(面向连接服务)
建立电路
不需要
要求
地址信息
每个分组含完整的SA和DA
每个VC包含一个很短的VC号码
状态信息
路由器不保留任何连接状态信息
每个VC都要求路由器建立表项
路由
每个分组独立选择路由
每个分组沿建立VC时确定的路由
路由器失效影响
没有,只有系统崩溃时丢失分组
所有经过失效R的VC都终止
服务质量 ...
4-Dockerfile And Docker Compose
DockerfileDocker镜像原理Linux文件系统由bootfs与rootfs两部分构成
bootfs:包含bootloader(引导加载程序)和kernel(内核)
rootfs:root文件系统,包含的就是典型的Linux系统中的/dev,/proc,/bin,/etc等标准文件与目录
不同的Linux发行版bootfs基本相同,主要区别在于rootfs
而Docker镜像是由特殊的文件系统叠加而成,其最底端同样依赖bootfs,但是其不需要自己独立拥有bootfs,其可以直接使用宿主机的bootfs。第二层是root文件系统rootfs,被称为base image即基础镜像。
在其上可以继续叠加其他镜像,而各个镜像之间的文件目录资源等可以相互共享,进一步提高了镜像利用率
统一文件系统(UFS:Union File System):该技术能够将不同层镜像整合为一个文件系统,为这些层提供一个统一的对外视角,这样就隐藏了多层存在,从用户角度来看,只暴露了最外层文件系统
一个镜像可以位于另一个镜像下层,位于下层的镜像被称为父镜像,最底部的镜像称为基础镜像
当从一个镜像启动 ...