小生凡一
Talk is cheap. Show me the code.
展开
-
MySQL锁相关总结|悲观锁、乐观锁、读锁、写锁、表锁、行锁、页面锁、间隙锁、临键锁
MySQL 的锁上可以分成三类:总体、类型、粒度。下面我们就来详细讲一下这些锁。原创 2024-02-21 00:10:33 · 139 阅读 · 0 评论 -
【Go语言实战】(26) 分布式搜索引擎
基于go语言的分布式搜索引擎原创 2023-11-21 01:09:18 · 1844 阅读 · 2 评论 -
【Go语言实战】(25) 分布式算法 MapReduce
现在回过头来看mapreduce,发现技术这东西和语言不一样,技术万变不离其中,而语言只是实现技术的一种方法而已,用什么语言其实并不重要。原创 2023-10-06 22:06:28 · 796 阅读 · 2 评论 -
【Go语言实战】(1) Gin+微信小程序 车辆信息联络平台
使用Golang+微信小程序打造的车辆信息联络平台当然也有一部分的python在里面。1. 背景1.1 创作背景:在校园生活中,电动车是大多数同学的主要通勤工具,电动车的使用群体日益庞大。但问题接踵而来,有限的充电与停放空间给同学们带来了许多麻烦。同时,由于难以联系上车主,造成了许多不必要的冲突。例如:电动车占了充电位却找不到人,车辆违规停泊影响出入,电动车丢失难以快速找回,刮伤别人车时难以及时联系车主……为了杜绝这些问题的发生,我们设计并开发了这套车辆联络信息小程序平台——斗量车联,功能包括:原创 2021-06-02 07:27:57 · 10345 阅读 · 193 评论 -
【Go语言实战】(2) Gin+Vue 电子商城
618来!!不用纠结去哪里剁手了!直接自己安排一个商场不香吗??原创 2021-06-18 10:20:10 · 4089 阅读 · 103 评论 -
【Go语言实战】(3) Gin + Gorm 简单备忘录 | 含接口文档
Go语言实战:TodoList 备忘录原创 2021-10-11 08:00:00 · 5315 阅读 · 12 评论 -
【Go语言实战】(4) 简简单单的几十行代码实现 TCP 通信
Go语言实战:简单几行代码实现TCP通信原创 2021-10-24 08:00:00 · 3084 阅读 · 7 评论 -
【Go语言实战】(5) 爬取CSDN博客评论
中秋快到了,评论区抽一位送份神秘的中秋礼盒吧~原创 2021-09-14 08:00:37 · 6837 阅读 · 53 评论 -
【Go语言实战】(6) Go语言爬取Blink评论 | 小小的Blink有大大的动静
CSDN的Blink评论区抽奖脚本原创 2021-11-09 17:39:08 · 1448 阅读 · 3 评论 -
【Go语言实战】(7) 基于 WebSocket + MongoDB 的IM即时聊天Demo
文章目录写在前面1. WebSocket原理2. 具体流程2.1 定义用户类型进行连接2.2 进行连接2.3 写入2.4 读取写在前面这个项目是基于WebSocket + MongoDB + MySQL + Redis。MySQL 用来存储用户基本信息MongoDB 用来存放用户聊天信息Redis 用来存储处理过期信息1. WebSocket原理WebSocket是应用层第七层上的一个应用层协议,它必须依赖 HTTP 协议进行一次握手。握手成功后,数据就直接从TCP通道传输,与HT原创 2021-12-09 09:46:04 · 11290 阅读 · 7 评论 -
【Go语言实战】(8) Go语言并发爬虫
文章目录写在前面1. 单线程爬虫2. 多线程爬虫2.1 channel2.2 sync.WaitGroup3. 源码地址写在前面这篇文章主要让大家明白多线程爬虫,因为go语言实现并发是很容易的。这次的服务端,是我们之前搭建的电子商城平台,所以我们不担心ip被封之类的问题。而实际生产环境中,其实我们都是用python爬虫的。python实现多线程也很简单。这次我们可以试试新玩法,试试go语言的并发爬虫。主要是爬取第一页的商品,爬取十次,比较单线程和多线程的时间。1. 单线程爬虫定义一原创 2021-12-12 13:39:12 · 4168 阅读 · 5 评论 -
【Go语言实战】(9) gRPC 实现一个简单微服务
文章目录写在前面1. 安装1.1 grpc1.2 proto1.3 protobuf2. 编写代码2.1 初始化项目2.2 编写proto2.3 编写服务端2.4 实现客户端3. 演示写在前面这一次我们用gRPC实现获取用户的信息1. 安装1.1 grpcgrpc的安装直接go get即可go get google.golang.org/grpc1.2 proto下载proto,我是下载这个的。然后解压出来把bin目录放在直接放在系统变量当中1.3 protobuf我们在原创 2021-12-16 13:21:38 · 2733 阅读 · 2 评论 -
【Go语言实战】 (10) go-micro微服务 实现简单备忘录 (上) | 用户模块
文章目录写在前面1. 下载1.1 go-micro/v21.2 protoc1.3 protobuf2. 用户模块2.1 数据库配置2.2 proto文件编写2.3 实现用户模块业务逻辑2.3.1 用户注册方法2.3.2 登录服务方法2.4 接入etcd服务发现3. 接入网关3.1 proto文件3.2 接入路由3.3 编写接口3.3.1 用户注册3.3.2 用户登录3.4 接入etcd3.5 测试写在前面基于go-micro v2版本的简单备忘录的实现,这一章,我们先实现用户的登录注册功能go-原创 2022-01-03 15:53:42 · 5516 阅读 · 7 评论 -
【Go语言实战】 (11) go-micro微服务 实现简单备忘录 (下) | 备忘录模块
文章目录写在前面1. RabbitMQ创建备忘录1.1 导入配置1.2 proto1.2.1 taskModels.proto1.2.2 taskService.proto1.3 写入数据1.4 读取数据2. 备忘录其他操作2.1 获取备忘录列表2.2 获取备忘录详情2.3 更新备忘录2.4 注册到etcd中3. 接入网关3.1 接入路由3.2 编写接口(创建备忘录为例子)3.3 测试写在前面这一章节我们继续前一章的内容,将备忘录模块完善,我们将使用RabbitMQ作为消息队列去创建备忘录1. R原创 2022-01-04 15:17:16 · 2850 阅读 · 0 评论 -
【Go语言实战】 (12) Docker 部署 Gin+MySQL+Redis 项目
目录写在前面1. 安装docker2. 镜像启动2.1 MySQL2.1.1 拉取2.1.2 启动2.2 Redis2.2.1 拉取2.2.2 启动3. Dockerfile4. docker-compose.yml最后写在前面今天我们用 docker 部署我们的商城项目,主要有项目Mall、MySQL、Redis。基于CentOS 7系统项目地址https://github.com/CocaineCong/gin-mall项目结构1. 安装docker更新源yum update原创 2022-02-02 20:14:34 · 4088 阅读 · 2 评论 -
【Go语言实战】 (13) 商品秒杀的本质以及Golang实现解决方案
源码:https://github.com/CocaineCong/Go-SecKill当两个或多个协程同时访问同一个内存地址,并且至少有一个是在写时,就会发生数据竞争。比如A线程修改完之后,线程B读的是线程A之前的值(初始值),所以不知道A是否修改,所以会导致线程B也把自己修改的值放到这个内存地址中,就会导致本次修改无意义。常用的方法就是加锁了,当这个进程已经执行了,就为该进程进行加锁,防止其他进程对这个数据进行修改,所以这个数据进行修改之后,再释放这个锁。关于加锁,我们有两种锁机制,和。本次秒杀商城,原创 2022-06-12 01:00:01 · 2150 阅读 · 8 评论 -
【Go语言实战】 (14) Gin+gRPC 微服务实现备忘录 (上) | 用户模块
https://github.com/CocaineCong/gRPC-todoList1.2 安装protoc可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。下载proto,我是下载这个的。然后解压出来把bin目录放在直接放在系统变量当中验证2.2 proto文件定义user/internal/service/pb执行生成 pb.go 文件定义user模块的请求和返回的结构类型,已经rpc方法。2.3 repository视图返回原创 2022-06-17 11:00:28 · 6085 阅读 · 5 评论 -
【Go语言实战】 (15) Gin+gRPC 微服务实现备忘录 (下) | 备忘录模块
https://github.com/CocaineCong/gRPC-todoListtaskModel.prototaskService.proto获取所有生成pb.go文件展示所有的任务创建备忘录删除备忘录更新1.3 接入ETCDETCD服务初始化节点接入ETCD服务注册节点2. 网关接入2.1 服务接入获取ETCD的服务路由注入将服务存放在gin.Keys中2.2 controller获取token,获取是哪原创 2022-06-18 16:39:52 · 1630 阅读 · 1 评论 -
【Go语言实战】 (16) gRPC 集成 ETCD 进行服务注册
在Go语言的RPC框架中,gRPC 是比较原生的,并没有集成 ETCD 服务发现的集成,需要我们去稍微封装一下。而像 micro 框架这种封装性比较好的就有集成 ETCD、consul 等等的服务发现功能,就直接调用就行了。本文实战例子源码在 各个模块下的discovery中Name:名字为服务的名字(用来进行服务的发现)Addr:服务的地址(存储服务地址)Version:服务的版本(方便服务的版本迭代)Weight:服务的权重(后续用来降级熔断)定义注册的地址函数将值反序列化成一个注原创 2022-07-04 01:01:25 · 2442 阅读 · 2 评论 -
【Go语言实战】 (17) gRPC 集成 ETCD 进行服务发现
上一篇文章 gRPC集成ETCD进行服务注册 中,我们已经知道了如何对集合ETCD进行注册。这一次我们继续下一步,对ETCD进行服务的发现。原创 2022-07-05 10:40:08 · 1497 阅读 · 0 评论 -
【Go语言开发】将logrus日志送到elasticsearch构成elk体系
这篇文章我们来讲讲怎么把logrus日志送到es。使用的日志库是,由于这个包中的日志对象是可以接入很多个hook的,所以我们可以使用hook来接入来操作。hook 就是钩子,当设置hook在某个点之后,hook会执行这个点之后异步进行。比如让我们把hook设置到log日志的地方,当我们log日志的时候,就会异步执行hook。原创 2023-07-12 09:38:43 · 1547 阅读 · 0 评论 -
【Go语言实战】(18) Go语言自动生成项目与固定代码
最近在做毕设,前台做完了,现在要开始搭建后台系统了,而后台系统,又大多数是固定的模版。所以为了方便摸鱼,顺便写一个可以 自动生成模版 的代码工具。原创 2023-03-11 15:19:22 · 884 阅读 · 3 评论 -
【Go语言实战】(19) Todolist 项目重构 gin+gorm
这篇文章我们来重构一下之前写的Todolist项目,包括项目结构,代码逻辑项目地址:https://github.com/CocaineCong/TodoList。原创 2023-05-02 07:34:29 · 2304 阅读 · 0 评论 -
【Go语言实战】(20) B站点赞功能的思考与简单实现
实际的场景是比这个复杂非常多的,因为有非常多台机器,还有很多关于消息发送的丢失,重复消费,幂等性,读写分离,负载均衡等等的问题,我们只是简化了非常多。原创 2023-03-15 01:40:10 · 979 阅读 · 2 评论 -
【Go语言实战】(21) gin+grpc+etcd 重构 grpc-todolist 项目
gin+grpc+etcd重构todolist项目原创 2023-05-20 18:11:10 · 1357 阅读 · 0 评论 -
【Go语言实战】(22) gin+micro v4+rabbitmq+etcd 重构备忘录
最近稍微重构了之前写的 micro-todolist 模块项目地址:https://github.com/CocaineCong/micro-todoList本次升级将原有的micro v2升级到了micro v4版本,v5 still deving,所以可能不太稳定,所以选择了v4版本。micro相对于grpc,区别就是grpc比较原始,什么都要自己封装,比如服务的注册与发现熔断降级等等… 而micro这些都帮忙做好了,。原创 2023-06-09 22:09:20 · 2190 阅读 · 2 评论 -
【Go语言实战】(24) secret 包新特性 | 多位密钥支持 & 多种模式选择
这是我封装的一个加密库,secret包,上层抽离接口,让我们的更容易对敏感数据进行脱敏处理。这里就不再过多赘述。这一次重点介绍一下新增的一些新特性,主要是在 AES 加密这一块。原创 2022-10-24 08:00:00 · 778 阅读 · 0 评论 -
【Go语言实战】(23)封装一个加密包,让敏感数据更易脱敏 【 Golang | Go语言】
提供 对称加密 AES、DES、3DES 以及非对称加密 RSA 的上层封装接口,让您的敏感数据更加容易脱敏并存储原创 2022-10-12 00:03:40 · 1749 阅读 · 0 评论