一、介绍队列:是一种特殊的线性表特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。二、逻辑例:现有一个空队列1.添加元素:q{ },我们向队列中加入(push)元素,push(1)则 q{ 1
......
327
0
0
2022-04-28
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。代理代码package main
import ("fmt""net/http" "net/http/httpu
......
333
0
0
2022-04-27
前言当我们完成一个模块后,先不着急继续完成其他模块,而是进行单元测试,这样我们能够提前发现当前模块的错误,减少整个项目完成后出现的bug。可以了解下TDD(测试驱动开发)1.需要的包1.常用的包import (
//gomonkey : 一个方便的打桩工具
"github.com/agiledragon/gomonkey"
......
468
0
0
2022-04-25
博客:Golang项目中读取配置文件)package setting
import (
"fmt"
"github.com/gomodule/redigo/redis"
"log"
"time"
)
var (
RedisPool *redis.Pool
)
func InitRedis
......
333
0
0
2022-04-24
目前我们一般都是将配置单独放在一个配置文件中,读取该文件,也方便修改,golang项目中有两种文件可以读取配置需要的知识(相对路径”./“,”../“和”/“的区别)blog.csdn.net/qq_34769573/article/...项目目录项目名
|-config
| |-app.ini
|-pkg
| |-set
......
406
0
0
2022-04-24
1.前置知识1.代理模式可以用以下的例子来学习github.com/crazybber/go-pattern-ex...2.线程生命周期(先看图) — 了解线程的生命周期即可线程状态: 创建(new),就绪(runnable),运行(run),阻塞(block),结束(dead)www.cnblogs.com/sunddenly/p/410656...3.g
......
376
0
0
2022-04-24
[TOC]服务注册与发现之ETCD我们一起来回顾一下上次的分享:通道是什么,通道的种类无缓冲,有缓冲,单向通道具体对应什么对于通道的具体实践分享了关于通道的异常情况整理简单分享了sync包的使用要是对上述 GO 的通道 和 sync 包有点兴趣的话,欢迎查看文章 GO通道和 sync 包的分享今天我们来看看服务注册与发现什么是服务注册和发现?服务注册和发现的
......
311
0
0
2022-04-22
[TOC]GO通道和 sync 包的分享我们一起回顾一下上次分享的内容:GO协程同步若不做限制的话,会产生数据竞态的问题我们用锁的方式来解决如上问题,根据使用场景选择使用互斥锁 和 读写锁比使用锁更好的方式是原子操作,但是使用go的 sync/atomic需要小心使用,因为涉及内存要是对GO的锁和原子操作还感兴趣的话,欢迎查看文章GO的锁和原子操作分享上次我
......
392
0
0
2022-04-22
[TOC]GO的锁和原子操作分享上次我们说到协程,我们再来回顾一下:协程类似线程,是一种更为轻量级的调度单位线程是系统级实现的,常见的调度方法是时间片轮转法协程是应用软件级实现,原理与线程类似协程的调度基于 GPM 模型实现要是对协程的使用感兴趣的话,可以看看这篇文章简单了解一下瞅一眼就会使用GO的并发编程分享今天我们来聊聊GO里面的锁锁是什么?锁 是用于解
......
422
0
0
2022-04-21
[TOC]GO的并发编程分享之前我们分享了网络编程,今天我们来看看GO的并发编程分享,我们先来看看他是个啥啥是并发编程呢?指在一台处理器上同时处理多个任务此处说的同时,可不是同一个时间一起手拉手做同一件事情并发是在同一实体上的多个事件,而这个事件在同一时间间隔发生的,同一个时间段,有多个任务执行,可是同一个时间点,只有一个任务在执行为啥要有并发编程?随着互联
......
303
0
0
2022-04-21
JSON,一种轻量级的资料交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。现已经被广泛应用,Go 当然也提供了完备的支持,通过 encoding/json 便可方便的序列化及反序列化 JSON 数据。但是也有些关键点需要额外注意下。Go 可使用 json.Marshal() 便
......
352
0
0
2022-04-21
GO 中如何设置 HTTPS 分享先回顾一下上次说到关于HTTP相关的知识点HTTP 属于网络模型中的应用层协议 , 应用层的作用就是规定应用程序使用的用语规范HTTP 的建立过程涉及客户端和服务端,需要详细了解的可以查看文章:互联网协议知多少 、来我们一起探究一下net/http 的代码流程HTTPS 是什么?说到 HTTPS 我们就来看看 HTTPS 是
......
318
0
0
2022-04-21
因为在每次创建项目,build时都会出现Error:cannot not find package,所以会有这篇文章的诞生1. 在创建项目前的准备1.1 安装好golang1.2 查看GOPATHecho $GOPATH
# 如果需要更改GOPATH可以根据以下操作 (Mac)
vim ~/.bash_profile
export GOPATH=#
......
334
0
0
2022-04-21
[TOC]GO的网络编程分享回顾一下我们上次分享的网络协议5层模型物理层数据链路层网络层传输层应用层每一层有每一层的独立功能,大多数网络都采用分层的体系结构,每一层都建立在它的下层之上,向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽。每一层背后的协议有哪些,具体有啥为什么出现的,感兴趣的可以看看互联网协议知多少 了解了网络协议的分层,
......
368
0
0
2022-04-21
在服务端程序更新或重启时,如果我们直接 kill -9 杀掉旧进程并启动新进程,会有以下几个问题:旧的请求未处理完,如果服务端进程直接退出,会造成客户端链接中断(收到 RST)新请求打过来,服务还没重启完毕,造成 connection refused即使是要退出程序,直接 kill -9 仍然会让正在处理的请求中断很直接的感受就是:在重启过程中,会有一段时间
......
345
0
0
2022-04-20