分类: Golang

23 篇文章

中间件与生态
日志系统 引入 现在已经2026年了,现在的日志不只是简单的文本文件,而是可观测性的基石,我们当然不能用Println去打印日志了,我们需要一个更加结构化,更加高效的日志系统。 基本介绍 时至今日,Uber-go/zap依旧是高性能日志的常用库,Lumbjack是文件切割的标准组件。 我们再终端执行  go get -u go.uber.…
Goweb项目的分层架构
引入 前面我们写了这么一个简单的RESTful API接口  package main ​ import (  "net/http" ​  "github.com/gin-gonic/gin"  "gorm.io/driver/mysql"  "gorm.io/gorm…
Redis缓存双写
引入 当有十万人同时刷新页面MySQL会直接挂掉,这个时候我们想到了Redis可以轻松抗住压力那么,我们能不能通过Redis来优化一下。 核心思路 我们先去Redis找数据找到了返回,找不到再去MySQL找,增删改则是先改MySQL的数据,然后删除Redis的缓存,下次读取时去DB拉最新的数据 Redis 的“特殊错误”:redis.Nil 在 G…
GORM&RESTFUL API
链接与建表 基础概念 数据库类似于一个Excel表,与Redis相比,SQL必须建一个库,才能建表 Table类似于Excel里面的Sheet工作表,表必须规定好表头 Model模型,就是Go的结构体,GORM负责把结构体变成MySQL表。 核心函数解析 ① dsn (Data Source Name) 这是连接数据库的“身份证”,格式是固定的: …
Goweb——Gin 入门
路由控制 引入 我们前面写过的代码,路由比较简单,但是实际开发中往往很复杂,我们可能要这样写  r.GET("/user/login", login) r.POST("/user/register", register) r.GET("/user/info", info) r.GET("/video/list…
GoWeb——Gin初识
Web本质 web是基于HTTP协议进行交互的应用网络,web就是通过使用浏览器OrApp访问各种资源。,说白了就是一个请求——处理——响应的过程。 HTTP协议 HTTP 只是规定了 TCP 连接里传输的文本格式。 请求(Request):浏览器发给服务器的信。 Method (动词):GET(我要查数据)、POST(我要提交数据)、PUT(我要…
Go与Redis
准备 安装第三方开源Redis库  go mod init redis-demo go get github.com/redis/go-redis/v9 然后我们先不管别的 ,我们来一段代码,来试试看看可不可以跑通,我们再来继续学习  package main ​ import (  "c…
网络编程(TCP)
分类 TCP socket编程,是网编的主流,底层用的是TCP/ip协议 b/s结构的http编程,使用浏览器去访问服务器时,使用的http协议,但是底层依旧是tcp socket实现。 基础知识 协议 TCP/IP是Internet最基本的协议,是由网络层的IP协议和传输层的TCP协议组成。 OSI模型约TCP/IP参考模型 层级(从高到低)OS…
反射
引入 在我们前面学结构体的序列化和反序列化时,我们通过给结构体属性加标签,解决了序列化的时候可以将字段的名字根据我的tag进行序列化,这里就用到了我们的反射,所以反射到底是什么东西,我们接着往下看。 基本介绍 1.反射可以在运行时动态获取变量的各种信息,比如变量的类型和类别。 2.如果是结构体变量,还可以获取到结构体本身的信息,如字段、方法 3.通…
Goroutine&Channel
Goroutine协程 引入 某天产品经理闲着没事干,提出了以这样一个需求: ​ 统计1~10000之间哪些是素数 ​ 当然,for循环秒了,但是你要循环多少次捏? 为了优化这个问题,引入了并发或者并行的方式,将任务分给多个goroutine去完成,这个时候就会使用到goroutine。 基本介绍 进程和线程 进程就是程序在操作系统中的一次执行过程…