摘要: 一、Socket抽象层 我们知道两个进程如果需要进行通讯最基本的一个前提是能够唯一标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的IP地址可以唯一标示主机,而TCP层协议和端口号可 阅读全文
posted @ 2022-04-09 23:47 刘清政 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 一、背景描述 通过OSI七层网络模型中IP层的介绍,我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据。IP协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程。而端到端的通 阅读全文
posted @ 2022-04-09 23:46 刘清政 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层。实际上这个七层是不存在的。没有这七层的概念,只是人为的划分而已。区分出来的目的只是让你明白哪一层是干什么用的。 每一层都运行不同的协议。协议是干什么的,协议就是标准。 实际上还有人把它划成 阅读全文
posted @ 2022-04-09 23:45 刘清政 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 一、互联网的组成(教材版) 互联网的拓扑结构非常复杂 ,并且在地理位置上覆盖了全球,从工作方式上看,可以划分为两大块: 边缘部分:这部分由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信和资源共享。 核心部分:由大量网络和连接这些网络的路由器组成。这部分用来为边缘部分提供服务。 注 阅读全文
posted @ 2022-04-09 23:43 刘清政 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 一、单机架构 应用领域: 植物大战僵尸 office 二、CS架构 [ 应用领域: QQ 大型网络游戏 计算机发展初期用户去取数据,直接就去主机拿,从这里开始就分出了客户端和服务端。 客户端:用户安装的软件; 服务端:统一管理数据库的主机中的软件就叫做服务端,再后来服务端不只是管理数据,外加处理业务 阅读全文
posted @ 2022-04-09 23:42 刘清政 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 一 介绍 标准库strings用于处理utf-8编码的字符串,字符串的操作,通过该标准库 二 字符串比较-Compare 介绍 func Compare(a,b string) int 若 a==b ,则返回0;若 a <b ,则返回 -1;若 a>b ,则返回 1。 字符串的比较方法是根据单个字符 阅读全文
posted @ 2022-04-09 23:30 刘清政 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 一、Path包 1.1 常用函数 path实现了对斜杠分隔的路径进行操作的函数。 func IsAbs(path string) bool // 判断是否是一个绝对路径 func Split(path string) (dir, file string) // 将路径分割为路径和文件名 func J 阅读全文
posted @ 2022-04-09 22:55 刘清政 阅读(498) 评论(0) 推荐(0) 编辑
摘要: 一 中间件介绍 Gin 框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函 数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、 记录日志、耗时统计等。 通俗的讲:中间件就是匹配路由前和匹配路由完成后执行的一系列操作 二 局部中间件 2.1 阅读全文
posted @ 2022-04-09 22:53 刘清政 阅读(595) 评论(0) 推荐(0) 编辑
摘要: 一 自定义控制器 当我们的项目比较大的时候有必要对我们的控制器进行分组,我们采用MVC架构,自定义C层controller,控制器 目录结构 main.go package main import ( "gin_test/routers" "github.com/gin-gonic/gin" ) f 阅读全文
posted @ 2022-04-09 22:52 刘清政 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 一 路由分组 routes group是为了管理一些相同的URL https://gin-gonic.com/zh-cn/docs/examples/grouping-routes/ package main import ( "fmt" "github.com/gin-gonic/gin" ) / 阅读全文
posted @ 2022-04-09 22:51 刘清政 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 一 静态文件 当我们渲染的 HTML 文件中引用了静态文件时,我们需要配置静态 web 服务 r.Static("/static", "./static") 前面的/static 表示路由 后面的./static 表示路径 1.1 开启static访问 //1 第一步:在路由中注册 // route 阅读全文
posted @ 2022-04-09 22:50 刘清政 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 一 同步异步 goroutine机制可以方便地实现异步处理 另外,在启动新的goroutine时,不应该使用原始上下文,必须使用它的只读副本 package main import ( "github.com/gin-gonic/gin" "log" "time" ) func main() { r 阅读全文
posted @ 2022-04-09 22:50 刘清政 阅读(622) 评论(0) 推荐(0) 编辑
摘要: 一 基本使用 第一步:index.html 在项目根路径下新建templates文件夹,文件夹内写模板文件,如index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>第一个模板文件</title 阅读全文
posted @ 2022-04-09 22:49 刘清政 阅读(1596) 评论(0) 推荐(0) 编辑
摘要: 一 路由的基本使用 gin 框架中采用的路由库是基于httprouter做的 地址为:https://github.com/julienschmidt/httprouter 1.1 基本路由 package main import ( "github.com/gin-gonic/gin" "net/ 阅读全文
posted @ 2022-04-09 22:48 刘清政 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 一 上传文件 1.1 上传单个文件 multipart/form-data格式用于文件上传 gin文件上传与原生的net/http方法类似,不同在于gin把原生的request封装到c.Request中 package main import ( "github.com/gin-gonic/gin" 阅读全文
posted @ 2022-04-09 22:48 刘清政 阅读(560) 评论(0) 推荐(0) 编辑
摘要: 一 请求 Gin的请求对象被封装在gin.Context这个结构体指针中 1.1 c.Request结构体 fmt.Println(c.Request.Method) // 请求方式 fmt.Println(c.Request.Header) // 请求头 fmt.Println(c.Request 阅读全文
posted @ 2022-04-09 22:47 刘清政 阅读(608) 评论(0) 推荐(0) 编辑
摘要: 一 项目热加载 如果你是一名python开发者,应该很熟悉这个。我们在Flask或者Django框架下开发都是支持实时加载的,当我们对代码进行修改时,程序能够自动重新加载并执行,这在我们开发中是非常便利的,可以快速进行代码测试,省去了每次手动重新编译。 如果你是一名JAVA开发者,不仅会听过热加载, 阅读全文
posted @ 2022-04-09 22:46 刘清政 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 一 Go Web框架介绍 1.1 Gin Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确。具有快速灵活,容错方便等特点。其实对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错。框架更像是一些常用函 阅读全文
posted @ 2022-04-09 22:45 刘清政 阅读(648) 评论(0) 推荐(0) 编辑
摘要: 1 Go位运算符有如下几种 &:按位与:两位都为1,结果为1,否则为0 |:按位或:只要有一位为1,结果就为1 ^:按位异或:两对应的二进位相异时,结果为1 <<:左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。 >>:右移动运算符:把">>" 阅读全文
posted @ 2022-04-09 14:48 刘清政 阅读(171) 评论(0) 推荐(0) 编辑