自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分布式与可重入性的一些问题

摘要:分布式系统由多个独立节点通过网络通信协同工作,具有无共享架构和容错能力。分布式锁用于控制多节点对共享资源的互斥访问,解决竞态条件等问题。可重入锁允许同一线程多次获取同一把锁,避免嵌套调用时的死锁问题,同时保持方法的独立线程安全。使用同一把锁而非不同锁可确保对同一资源的互斥访问,维护系统一致性。可重入机制通过记录持有者身份和重入次数实现安全嵌套调用。

2026-04-11 16:11:12 373

原创 一文搞懂 B 树与 B+ 树(原理 + 插入删除 + 区别)

本文从数据结构本身出发,系统分析了 B 树与 B+ 树的定义、节点结构以及查找、插入和删除等核心操作过程。通过对比可以看出,B 树将索引与数据存储在同一节点中,而 B+ 树则将二者分离:非叶子节点仅用于索引导航,所有数据集中存储于叶子节点,并通过链表形成有序结构。

2026-04-04 15:41:29 375

原创 从明文到加密:HTTP 与 HTTPS 的本质区别与建立全解析

本文主要讲了http和https的区别及https的建立过程,同时说了一下https中的tls加密机制。希望对你有所帮助。

2026-03-21 10:50:24 765

原创 新手入门:传统 Web 开发与前后端分离开发的区别

本文对比了传统Web开发和前后端分离开发两种模式。传统Web开发采用服务器端渲染(SSR),后端负责页面渲染和业务逻辑,架构简单但耦合严重;前后端分离则采用客户端渲染(CSR),前端负责页面交互,后端提供API接口,解耦程度高但架构复杂。文章从核心思想、优缺点、渲染方式等方面进行详细对比,指出传统模式更适合简单网站,而分离模式更适合复杂Web应用。最后通过表格总结了两种模式在渲染方式、路由控制、数据格式等方面的关键差异,为开发者选择合适架构提供了参考依据。

2026-03-11 11:31:07 206

原创 传统 Web 基础操作:Go 模版引擎的极简入门指南

本文基于 Go 语言介绍 Web 开发基础,包括单控制器与多控制器(Handle、HandleFunc)的使用方式,演示如何获取请求头与表单参数、使用正则进行表单校验。讲解项目目录结构划分(static、view 等)、通过 html/template 渲染 HTML 模版、传递字符串、结构体、map 数据,以及在模版中使用 if、range、比较函数和自定义函数。还说明模版嵌套与 ExecuteTemplate 用法。最后介绍静态资源加载、文件上传与文件下载。

2026-03-01 21:20:14 894

原创 轻松玩转Git:图文详解常用命令与操作

Git是一个开源的分布式版本控制系统,具有速度快、设计简单、支持非线性开发等特点。其工作流程包括克隆、检出、添加、提交、抓取、拉取和推送等操作。常用命令有add、commit、status、log等,分支操作包括branch、checkout和merge。远程仓库可通过remote、push、clone等命令管理。使用铁律包括切换分支前提交修改、及时提交代码和避免删除文件目录。

2026-02-07 08:49:33 841

原创 深入理解 Redis:事务、持久化与过期策略全解析

Redis事务通过MULTI/EXEC命令批量执行命令,保证命令队列的原子性,但不保证全部成功。Redis提供两种持久化方式:RDB(默认快照)和AOF(记录写命令),其中AOF支持三种同步策略。过期策略采用惰性删除与定期删除相结合,并配合内存淘汰机制防止内存溢出。这些特性共同保障了Redis的数据安全性和性能平衡。

2026-01-31 21:10:02 692 1

原创 Redis 核心:概念理解与五大数据结构

本博客系统整理Redis核心知识体系,涵盖基础概念、五大数据结构、命令大全及实战应用。内容从NoSQL特性切入,详细解析String、List、Hash、Set、Sorted Set的原理与使用场景,提供100+命令速查表。重点讲解持久化机制、事务特性、消费者组模式等高级功能,包含生产环境配置、性能优化、故障排查等实战经验。笔记结构清晰,既有理论学习深度,又具备命令查询的便捷性,适合开发者系统学习或日常快速参考。无论是Redis初学者还是进阶用户,都能从中获得实用的技术指导和解决方案。

2026-01-24 12:23:14 627 2

原创 Go项目容器化实战:一份清晰的Docker部署清单

本文介绍了使用Docker部署Go语言聊天室项目的完整流程。首先通过SCP命令将本地项目上传到服务器,然后详细说明了Dockerfile的编写方法,包括服务端和客户端的分阶段构建策略,使用轻量级Alpine镜像优化部署。接着展示了docker-compose.yml文件的配置,包含MySQL数据库、服务端和客户端的容器编排,以及网络和数据卷的设置。重点强调了容器间通信时的DNS解析方式,需将IP地址改为容器名称。最后提供了构建和运行命令,并特别说明Alpine Linux的特殊shell路径。

2025-12-22 20:28:51 363 2

原创 MySQL深入之索引、存储引擎和SQL优化

MySQL存储引擎与索引优化摘要 存储引擎是MySQL表级别的数据存储实现方式,主要包含InnoDB、MyISAM和Memory三种类型。InnoDB是默认引擎,支持事务、行锁和外键;MyISAM适合读密集型场景;Memory引擎数据存储在内存中,适合临时表。索引是提高查询效率的数据结构,主要有B+Tree、Hash等类型。InnoDB中索引分为聚集索引和二级索引,聚集索引必须有且只有一个。通过执行计划(EXPLAIN)可以分析SQL性能,慢查询日志帮助定位低效SQL。优化SQL需要关注数据访问量、索引使用

2025-12-15 08:48:06 636 1

原创 Go连接MySQL:从驱动到事务的完整指南

客户端对SQL语句进行占位符替换得到完整的SQL语句。客户端发送完整SQL语句到MySQL服务端MySQL服务端执行完整的SQL语句并将结果返回给客户端。把SQL语句分成两部分,命令部分与数据部分。先把命令部分发送给MySQL服务端,MySQL服务端进行SQL预处理。然后把数据部分发送给MySQL服务端,MySQL服务端对SQL语句进行占位符替换。MySQL服务端执行完整的SQL语句并将结果返回给客户端。

2025-12-07 15:20:17 307

原创 底层--map的拉链式剖析!

Go Map底层实现(拉链法)摘要 Go语言中的map采用哈希表实现,使用拉链法解决冲突。核心结构包括hmap和bmap:hmap存储哈希表元信息(桶数量、元素数、标志位等);bmap是桶结构,包含tophash数组、键值对和溢出桶指针。哈希计算使用runtime中的专用函数,冲突通过链表形式的溢出桶解决。当负载因子超过6.5或溢出桶过多时会触发扩容。map创建时根据预估容量计算合适大小的桶数组,访问时通过哈希值定位桶并遍历链表。迭代器hiter结构用于支持range遍历,维护当前遍历状态。

2025-11-28 11:22:45 581

原创 MySQL深入之约束、事务和视图

该文主要讲解了MySQL的约束、事务和视图几种抽象的MySQL部分,帮助深入学习的朋友更好的理解MySQL的建表及SQL语句的执行。

2025-11-22 14:52:48 683

原创 Mysql--sql基础语句通解

本文概述了SQL语言的四大分类及其常用命令:DDL(数据定义语言)用于创建和管理数据库对象;DML(数据操作语言)实现数据的增删改操作;DQL(数据查询语言)支持单表和多表查询,包含条件筛选、聚合函数、分组排序等功能;DCL(数据控制语言)负责权限管理。详细列举了数据库/表操作、数据修改、各类查询语句的具体语法格式和执行顺序,特别说明了多表连接的四种方式(内连接/外连接/自连接/联合查询)和子查询的三种类型(标量/列/行子查询)。全文以表格和代码示例形式呈现,便于快速查阅SQL核心语法。

2025-11-15 10:01:17 851

原创 【Linux】软硬链接的区别和路径--你真的清楚吗?

本文主要讲解了软硬链接的使用命令和情况,以及软硬链接的区别和使用时遇到的路径问题,希望对你有所帮助。

2025-11-08 11:43:23 415

原创 Docker进阶命令讲解(docker网络+docker compose)

本文主要讲解docker网络和docker compose的主要命令和知识点,举例来辅助理解,加强对docker的运用

2025-11-02 08:41:04 433

原创 Docker命令详解(镜像+容器+dockerfile)

本文记录了Docker的镜像、容器、dockerfile等等的基础命令,并详细解释了其运用方法,搭配一些不可或缺的实例,助您了解熟悉docker的运用。

2025-10-26 16:16:58 945

原创 Linux基础命令详解--彻底搞懂命令使用

本文概括了Linux大部分的命令并配有解释和一些例子,旨在帮助大家理解Linux中命令的使用,将本文理解后能处理基础的Linux命令,简单的使用命令来控制Linux系统

2025-10-18 11:39:17 910

原创 go进阶项目实战--网络聊天室

网络聊天室系统摘要 本项目实现了一个基于Go语言的网络聊天室系统,具有以下核心功能:用户重名检测 群聊/私聊功能 在线用户查看 心跳检测和超时处理 异常退出处理。使用sync.Map和锁机制实现并发安全的用户名检测 通过管道实现消息分类处理 读写超时控制和心跳机制保证连接稳定性。支持多用户同时在线交流,服务端可监控所有用户活动。该系统展示了Go语言在网络编程和并发处理方面的优势,通过合理的架构设计和错误处理机制,实现了稳定可靠的实时通信功能。

2025-10-12 10:22:29 425

原创 go进阶重点概括(文件、反射、网络编程)

本文介绍了Go语言中的文件操作和反射机制。在文件操作部分,详细讲解了如何打开、读取、写入文件,以及移动文件指针和判断文件存在的方法。反射部分则阐述了如何通过reflect包获取类型信息、转换反射对象回原变量,并特别说明了处理结构体方法和指针时的注意事项。文章通过代码示例展示了文件读写的基本模式、反射的基本操作流程以及常见错误处理方式。最后介绍了网络编程的基本语法操作,为Go开发者提供了实用的技术参考。

2025-10-04 11:41:37 290

原创 go进阶重点概括(协程和管道)

本文介绍了协程和管道的核心概念及应用。协程作为轻量级并发任务单元,解决了多进程/线程的资源消耗和切换成本问题,特别适合I/O密集型场景。文章详细讲解了协程的定义、同步控制(如WaitGroup)和资源竞争解决方案(如互斥锁)。管道部分则阐述了其作为线程安全通信通道的特性,包括FIFO顺序、阻塞机制和关闭操作,并提供了管道的初始化、读写、遍历等具体操作示例。最后总结了管道使用中的注意事项,如及时关闭、容量设置和异常处理等。协程和管道的结合使用能显著提升并发程序的效率和可靠性。

2025-09-26 11:18:38 755

原创 go基础重点概括(map映射、闭包、error错误)

本文介绍了Go语言中的三个核心概念:map映射、闭包和错误处理。map是一种键值对集合,需用make初始化,支持增删改查操作,具有无序性和类型限制特性。闭包是能访问外部变量的特殊函数,需注意内存管理问题。错误处理包括defer/recover机制、panic触发及error类型处理,介绍了errors.Is和errors.As用于错误链检查。文章通过代码示例展示了这些特性的具体应用场景和注意事项。

2025-09-19 21:17:01 926

原创 go基础项目实战--简易计算器

本文介绍了一个简易计算器的实现方案,该计算器支持连算、负数运算、括号嵌套运算及错误处理。计算器核心分为无括号和有括号两种运算方法:无括号运算通过递归处理单个运算符表达式,而有括号运算则递归处理最内层括号。文章详细讲解了数字和运算符的识别、连算实现、错误检测(如非法运算符、除零错误、负数格式错误等)的具体代码实现。计算器采用字符串处理输入,通过递归算法逐步简化运算表达式,最终输出结果。完整的Go语言代码包含了输入处理、运算逻辑和错误检查等功能。

2025-09-14 09:51:11 367

原创 go基础重点概括(切片篇)

本文介绍了Go语言中切片的三种定义方法:1)直接对数组进行切片;2)使用make函数创建;3)直接指定具体数组。详细说明了切片遍历的两种方式(普通for循环和for range循环)以及使用注意事项,包括声明后必须引用数组、简写操作规则和动态增长特性。重点讲解了切片的长度与容量关系,以及append函数的底层实现机制:当容量不足时会创建新数组并将容量翻倍。最后介绍了切片复制操作,通过copy函数可以实现两个切片底层数组的独立。

2025-09-13 11:53:52 326

空空如也

空空如也

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

TA关注的人

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