自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Go语言中的Session和Cookie

因为 HTTP 协议是无状态的,所以很显然服务器不可能知道我们已经在上一次的 HTTP 请求中通过了验证。当然,最简单的解决方案就是所有的请求里面都带上用户名和密码,这样虽然可行,但大大加重了服务器的负担(对于每个 request 都需要到数据库验证),也大大降低了用户体验 (每个页面都需要重新输入用户名密码,每个页面都带有登录表单)。既然直接在请求中带上用户名与密码不可行,那么就只有在服务器或客户端保存一些类似的可以代表身份的信息了,所以就有了 cookie 与 session。

2025-11-21 21:16:54 762

原创 Go中ServeMux(路由器)详解

Go 的设计非常灵活,只要实现了Handler接口,你就可以自定义路由系统。return")下面是整个过程的完整链路图Browser↓↓↓↓↓找到 handler(默认是 DefaultServeMux)↓↓路由匹配 muxEntry↓调用 handler.ServeHTTP()↓你的处理函数执行↓ResponseWriter 写回客户端。

2025-11-15 11:33:14 683

原创 HTTP详解

是互联网上最核心的通信协议之一。它定义了客户端(Client)与服务器(Server)之间如何请求和传输数据。HTTP 是万维网(WWW)的基础,支持网页浏览、文件下载、API 调用等应用场景。简单来说:HTTP 是“浏览器与服务器交流的语言”。实际上发生了以下几步:浏览器将域名解析为 IP 地址;通过 TCP(或 QUIC)建立连接;向服务器发送 HTTP 请求;服务器返回响应(HTML、图片、JSON 等);浏览器渲染内容给你看。类型是否请求服务器典型头部强缓存否协商缓存。

2025-11-08 11:01:13 1015

原创 Go 与 Redis 实战指南:从入门到高性能应用

功能Redis 数据结构Go 常用函数缓存数据StringSet/Get计数器StringIncr/Decr用户信息Hash队列ListLPop/RPush去重集合Set实时消息StreamXAdd/XRead分布式锁SetNXRedis 与 Go 的组合,是高性能服务端的黄金搭档。如果你掌握了go-redis的用法、Stream 消息流与分布式锁实现,那么你已经具备开发一个可支撑百万级并发的后台系统的基础。

2025-11-01 16:41:24 727

原创 使用 Docker Compose 部署 Go 聊天项目的完整流程

服务端 (chat_app):Go 编写,监听 TCP 端口 8080,处理用户注册、登录和消息转发。客户端 (chat_client):Go 编写,通过 TCP 连接服务端,支持注册和登录。:存储在线用户信息和消息缓存。:存储用户信息,包括用户名、密码和最近消息。Dockerfile 分阶段构建:减小镜像体积docker-compose 管理服务依赖:Redis、MySQL、服务端、客户端数据库初始化:保证表和字段存在网络与端口:容器间通过服务名访问 (app:8080容器调试:查看日志和。

2025-10-26 16:54:40 448

原创 深入理解Redis Stream消费组:行为模式与Go语言实战

在讲消费组之前,我们先回顾下Redis Stream的基础特性。Stream本质是一个有序的消息日志,就像我们日常生活中的快递仓库——生产者不断往仓库里放快递(发送消息),消费者从仓库里取快递(处理消息)。但如果只有一个仓库和多个消费者,很容易出现“多个消费者抢同一个快递”(重复消费)或者“某个消费者累死、其他消费者闲死”(负载不均)的问题。消费组就是为解决这些问题而生的“快递分拣系统”:它给每个消费者分配专属的分拣区域,确保每个快递只被一个消费者处理;

2025-10-18 09:45:03 654 2

原创 Go进阶项目聊天室进阶处理

和是一对用于网络通信的函数,实现了基于长度前缀的消息传输协议。负责发送带长度前缀的消息,负责读取带长度前缀的消息。

2025-10-12 15:52:18 366

原创 Redis

无论统计的数据集有多大(哪怕是 1 亿条数据),一个 HyperLogLog 结构仅占用约 12KB 内存(用于存储概率算法所需的 “桶” 和 “位数据”),内存开销与数据量无关。统计结果不是 100% 精确的,但误差率固定为 0.81%(Redis 官方优化后的值),且支持通过 “合并多个 HLL” 来降低误差(合并越多,误差越接近理论值)。有序集合中的成员(member)必须是唯一的,每个成员关联一个浮点数分数(score),Redis 根据分数对成员进行升序排序。增量迭代,是⼀个基于游标的迭代器。

2025-10-04 11:45:01 1002

原创 Redis的安装与入门

1、下载redis压缩包也可以用官网下载地址:下面以github地址为例。2、解压redis文件将下载的redis压缩包解压可以看到以下内容3、启动redis临时服务在解压路径下,输入cmd按回车键,打开终端。

2025-09-27 11:49:34 499

原创 MYSQL学习(2)

information_schema 是 MySQL 的系统数据库,用于存储数据库服务器的元数据信息,所有数据以只读视图形式提供。以下是其核心表的功能及查询示例。

2025-09-21 15:29:49 834

原创 GO语言的依赖管理

在 Go 语言(Golang)中,“依赖管理” 是指对项目所依赖的第三方库(或其他模块)进行版本控制、下载、更新和维护的机制,核心目标是解决 “不同环境下依赖版本一致”“避免依赖冲突”“简化依赖引用流程” 这三大问题。

2025-09-13 11:05:30 836

原创 Mysql 学习(1)

MySQL 连接使用 MySQL 二进制方式连接指定主机和端口连接(适用于远程连接):mysql -h 主机名或IP地址 -P 端口号 -u 用户名 -p --示例 mysql -h 127.0.0.1 -P 3306 -u root -p创建数据库服务端创建数据库。

2025-09-06 10:25:45 958

原创 GO进阶总结

反射是指在程序运行期间对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。支持反射的语言可以在程序编译期间将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期间获取类型的反射信息,并且有能力修改它们。

2025-08-13 17:04:09 736

原创 Docker总结

创建名为 mynet 的桥接网络(默认驱动为 bridge)# 查看网络详情(包括关联的容器)

2025-08-13 11:50:10 804 1

原创 Liunx常用命令

调用默认编辑器(如vi或nano)编辑当前用户的定时任务。以易读格式(GB/MB)显示磁盘分区使用情况,包含总容量、已用空间、可用空间和挂载点。以完整格式显示进程信息,包含UID、PID、父进程ID(PPID)、启动时间等。向指定进程发送终止信号(默认SIGTERM),允许进程自行清理后退出。显示系统中所有进程的简要信息,包括进程ID(PID)和命令名称。强制终止进程(SIGKILL),立即生效,但可能导致资源未释放。分别表示:分钟、小时、日期、月份、星期(0-6,0为周日),

2025-08-13 10:43:55 766

原创 GO语言实现简易聊天室

接收连接,返回值是用户所设置的正确的用户名。将服务端所需的内容封装,便于在main函数中调用。循环让用户输入用户名,直到服务端返回 “设置成功”处理客户端发送的消息,区分公共消息、从客户端读取数据,处理连接关闭等异常。客户端连接,每个连接开。

2025-07-24 09:20:22 485

原创 GO实现简易计算器

如果是数字则需要继续向后遍历直到遇到符号,然后将这一段字符串切片。接着通过调用splitString函数要得到算式的每个元素,并把值赋给s1。遍历字符串的每一个字符,如果是加减乘除符号则直接加入到结果result中。因为输入的是一串字符串,所以首先要将字符串拆分为一个个数字和运算符。计算器的核心功能是接收用户输入的数学表达式,解析并计算后输出结果。op为接收的运算符 通过比较返回值的大小来确定优先级。通过这个函数得到一个按算式顺序排列出的一个切片。先写出基本的入栈出栈操作对应的函数。最终计算得到最终结果。

2025-06-01 17:42:50 245 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除