Go与Redis
准备 安装第三方开源Redis库  go mod init redis-demo go get github.com/redis/go-redis/v9 然后我们先不管别的 ,我们来一段代码,来试试看看可不可以跑通,我们再来继续学习  package main ​ import (  "c…
Redis入门
基本介绍 Redis (Remote Dictionary Server) 本质上是一个巨大的 Map(字典)。 Key (键):永远是字符串(String)。 Value (值):可以是多种数据结构(String, List, Hash, Set, ZSet)。 内存存储:速度极快(纳秒级),但也意味着断电会丢失(除非配置了持久化)。 单线程模型…
网络编程(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。 基本介绍 进程和线程 进程就是程序在操作系统中的一次执行过程…
单元测试
引入 我们写了一段函数或者一个模块,我们该怎么确认他的运行结果是正确的呢? 当然我们有最简单粗暴的方法,就是直接调用该函数,看实际输出结果和预期结果是否一致,但是这样很不方便,我们在main函数里面调用,如果项目正在运行,需要停止项目,同时我们要测试多模块的时候需要调用很多函数,非常麻烦。 我们为了优化传统的测试方式,Go引入了testing框架和…
Json
基本介绍 是一种轻量级的数据交换格式,易于人阅读和编写的同时也利于机器的解析和生成,目前已经成为主流的的数据格式,任何数据类型都可以用json来表示。 通常程序再网络传输时先将数据序列化成json字符串,接收方获得json字符串后再进行反序列化回复成原来的数据。 JSON键值对是用来保存数据的一种方式,键值组合中键写在前面用双引号包裹,用冒号分隔,…
C语言速通
一些你该知道的东西 基本结构  #include <stdio.h>//头文件,这个头文件基本上必加 int main()//主函数 {  //这是内容  return 0; } 变量 注意变量的作用域;(可以理解为,作用范围是包含定义最小的大括号范围)如果跑出这个范围,函数就…
文件处理&命令行参数
文件处理 打开文件和关闭文件 核心 API 打开:os.Open(path)(只读)、os.OpenFile(path, flag, perm) 关闭:defer file.Close() 按行读取示例  f, err := os.Open("test.txt") if err != nil {    &nb…
接口&多态
前言 按理来说,OOP编程的三大特性,前面讲完了两个,应该下一个就是多态,但是Golang中 的多态就是通过接口来实现的,所以我们先讲一下接口。 接口(interface) 接口的设计在Golang中是大量存在的,Golang面向对象的核心就是接口编程,Golang与其他的语言相比也是很有特色。 快速入门 我们这里不讲细节,就感受一下,接口是怎么用…