Fork me on GitHub

02 2022 档案

摘要:一、网络编程基础 网络基础之TCP/IP协议族 网络编程之socket 二、TCP Socket编程 (一)流程 首先应该了解服务端和客户端的处理流程: 1、服务端处理流程 监听端口 接收客户端tcp链接,建立双方的链接 创建goroutine,处理该链接的请求 2、客户端处理流程 建立与服务端的链 阅读全文
posted @ 2022-02-26 07:08 iveBoy 阅读(137) 评论(0) 推荐(0) 编辑
摘要:一、反射的基本概念 (一)什么是反射 反射可以再运行时动态获取变量的各种信息,比如变量的类型、值等 如果时结构体变量,还可以获取到结构体本身的各种信息,比如结构体的字段、方法 通过反射,还可以修改变量的值、调用方法 不过使用反射,需要引入一个包:reflect 典型用法是用静态类型interface 阅读全文
posted @ 2022-02-25 21:34 iveBoy 阅读(944) 评论(0) 推荐(1) 编辑
摘要:在gin中通过如下代码可以正常的启动一个服务: package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { router := gin.Default() router.GET("/index", func( 阅读全文
posted @ 2022-02-17 06:26 iveBoy 阅读(1705) 评论(0) 推荐(0) 编辑
摘要:一、模板引入 在进行Web开发中,你可能进行的项目是前后端不分离的情况,此时需要将html与后端放入一个工程中,gin框架支持这种做法,需要通过 LoadHTMLGlob() 或 LoadHTMLFiles()。 (一)LoadHTMLFiles 故名思义就是加载文件 1、main.go packa 阅读全文
posted @ 2022-02-16 07:56 iveBoy 阅读(3104) 评论(0) 推荐(0) 编辑
摘要:一、表单基本校验 Gin是一个Web框架,提供Web服务,所以很多功能是通过第三方插件集成进去的,这里使用了https://github.com/go-playground/validator来处理的。它实现了结构体值验证以及基于标签的单个字段。所以可以将请求体绑定到结构体模型上。 需要在绑定的字段 阅读全文
posted @ 2022-02-15 08:08 iveBoy 阅读(1210) 评论(0) 推荐(0) 编辑
摘要:路由分组顾名思义就是将具有一类功能的路由放到一起,有时也会因为不同版本的路由分成一个组: func main() { router := gin.Default() // Simple group: v1 v1 := router.Group("/v1") { v1.POST("/login", l 阅读全文
posted @ 2022-02-12 09:46 iveBoy 阅读(270) 评论(0) 推荐(0) 编辑
摘要:一、Gin中间件基础 中间件可以实现在整个请求或者响应的生命周期过程中对请求或者响应做一些额外的处理,比如说在每个请求进入路由匹配、函数处理前进行权限校验,避免在业务函数中进行处理,非常方便。那么在Gin中是如何做的呢? ... router := gin.Default() ... 在gin中的D 阅读全文
posted @ 2022-02-12 09:46 iveBoy 阅读(523) 评论(0) 推荐(0) 编辑
摘要:一、路径参数 func main() { router := gin.Default() // This handler will match /user/john but will not match /user/ or /user router.GET("/user/:name", func(c 阅读全文
posted @ 2022-02-11 07:43 iveBoy 阅读(877) 评论(0) 推荐(0) 编辑
摘要:一、单体应用 谈到微服务必定要说到之前的应用架构,比如说单体应用: 单体应用结构比较简单,所有的功能都集中在一起,所以被称为单体。当然这种结构有优点,但是也有缺点。 1、优点 架构简单,开发周期短,容易上手,维护成本低,适合小型项目。 2、缺点 耦合性太高,所有的功能都集中在一起 如果说现在是一个P 阅读全文
posted @ 2022-02-10 22:43 iveBoy 阅读(88) 评论(0) 推荐(0) 编辑
摘要:一、什么是Gin Gin 是一个用 Go (Golang) 编写的 web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter,速度提高了近 40 倍。 如果你是性能和高效的追求者, 你会爱上 Gin.。它具有如下特征: 快速 基于 Radix 树的 阅读全文
posted @ 2022-02-10 22:43 iveBoy 阅读(380) 评论(0) 推荐(0) 编辑
摘要:一、rpc之HelloWorld Go语言的rpc包的路径为net/rpc: 1、server.go package main import ( "net" "net/rpc" ) type HelloWorldService struct { } func (s *HelloWorldServic 阅读全文
posted @ 2022-02-08 22:22 iveBoy 阅读(132) 评论(0) 推荐(0) 编辑
摘要:一、什么是Protocol Buffers Protocol Buffers是谷歌的语言无关、平台无关、可扩展的机制,用于序列化结构化数据(比如XML),但更小、更快、更简单。您只需定义数据的结构化方式,然后就可以使用特殊生成的源代码轻松地向各种数据流写入和读取结构化数据,并使用各种语言。目前支持J 阅读全文
posted @ 2022-02-08 22:22 iveBoy 阅读(286) 评论(0) 推荐(0) 编辑
摘要:一、Python下grpc的开发 1、简介 在之前的Protocol Buffers学习指南中说明了与GRPC的配合,需要先进行安装相关的工具: python -m pip install grpcio #安装grpc python -m pip install grpcio-tools #安装gr 阅读全文
posted @ 2022-02-08 22:22 iveBoy 阅读(335) 评论(0) 推荐(0) 编辑
摘要:一、httpserver实现rpc 1、server.py from http.server import HTTPServer, BaseHTTPRequestHandler from urllib.parse import urlparse, parse_qsl import json host 阅读全文
posted @ 2022-02-07 22:50 iveBoy 阅读(311) 评论(0) 推荐(0) 编辑
摘要:一、什么是RPC RPC(Remote Procedure Call)远程过程调用,简单的理解就是一个节点服务器中的服务请求另一个节点服务器中的服务。如果使用常用的http请求肯定可以实现,但是如何做的的更好这就是RPC要来解决的问题。它需要调用远程服务就跟调用本地一样简单。比如本地调用: # 定义 阅读全文
posted @ 2022-02-05 22:49 iveBoy 阅读(54) 评论(0) 推荐(0) 编辑
摘要:一、context上下文简介 context简单的理解就是上下文,它可以进行不同协程之间的通信,所以也就包含了上下文的环境等变量信息。有下面三种用法: WithCancel 通过该方法可以达到一个协程在某一时刻控制另一个协程的退出 WithDeadline 通过该方法可以在一个协程在指定时间点控制另 阅读全文
posted @ 2022-02-04 10:44 iveBoy 阅读(134) 评论(0) 推荐(0) 编辑
摘要:一、channel基础 1、引入 在Goroutine基础中我们通过WaitGroup解决了主线程因为无法感知其它协程是否结束而造成提前结束的问题,通过锁机制解决了多协程之间共享数据而造成数据混乱和安全的问题。归结起来协程问题: 资源竞争,数据共享而引发数据安全问题 一个协程不知道另一个协程什么时候 阅读全文
posted @ 2022-02-01 17:27 iveBoy 阅读(66) 评论(0) 推荐(0) 编辑

TOP
点击右上角即可分享
微信分享提示