准备 安装第三方开源Redis库 go mod init redis-demo go get github.com/redis/go-redis/v9 然后我们先不管别的 ,我们来一段代码,来试试看看可不可以跑通,我们再来继续学习 package main import ( "c…
基本介绍 Redis (Remote Dictionary Server) 本质上是一个巨大的 Map(字典)。 Key (键):永远是字符串(String)。 Value (值):可以是多种数据结构(String, List, Hash, Set, ZSet)。 内存存储:速度极快(纳秒级),但也意味着断电会丢失(除非配置了持久化)。 单线程模型…
分类 TCP socket编程,是网编的主流,底层用的是TCP/ip协议 b/s结构的http编程,使用浏览器去访问服务器时,使用的http协议,但是底层依旧是tcp socket实现。 基础知识 协议 TCP/IP是Internet最基本的协议,是由网络层的IP协议和传输层的TCP协议组成。 OSI模型约TCP/IP参考模型 层级(从高到低)OS…
引入 在我们前面学结构体的序列化和反序列化时,我们通过给结构体属性加标签,解决了序列化的时候可以将字段的名字根据我的tag进行序列化,这里就用到了我们的反射,所以反射到底是什么东西,我们接着往下看。 基本介绍 1.反射可以在运行时动态获取变量的各种信息,比如变量的类型和类别。 2.如果是结构体变量,还可以获取到结构体本身的信息,如字段、方法 3.通…
Goroutine协程 引入 某天产品经理闲着没事干,提出了以这样一个需求: 统计1~10000之间哪些是素数 当然,for循环秒了,但是你要循环多少次捏? 为了优化这个问题,引入了并发或者并行的方式,将任务分给多个goroutine去完成,这个时候就会使用到goroutine。 基本介绍 进程和线程 进程就是程序在操作系统中的一次执行过程…
引入 我们写了一段函数或者一个模块,我们该怎么确认他的运行结果是正确的呢? 当然我们有最简单粗暴的方法,就是直接调用该函数,看实际输出结果和预期结果是否一致,但是这样很不方便,我们在main函数里面调用,如果项目正在运行,需要停止项目,同时我们要测试多模块的时候需要调用很多函数,非常麻烦。 我们为了优化传统的测试方式,Go引入了testing框架和…
基本介绍 是一种轻量级的数据交换格式,易于人阅读和编写的同时也利于机器的解析和生成,目前已经成为主流的的数据格式,任何数据类型都可以用json来表示。 通常程序再网络传输时先将数据序列化成json字符串,接收方获得json字符串后再进行反序列化回复成原来的数据。 JSON键值对是用来保存数据的一种方式,键值组合中键写在前面用双引号包裹,用冒号分隔,…