自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis 持久化机制详解:RDB 与 AOF

RDB 是 Redis 的默认持久化方式。它会在指定的时间间隔内,对内存中的数据生成一个快照(snapshot),以二进制格式保存到磁盘上的dump.rdb文件中。内存数据 ─fork子进程──> 遍历数据 ──> 写入临时文件 ──> 原子替换 dump.rdbAOF(Append Only File)持久化以日志形式记录每一条写命令,Redis 重启时通过重新执行这些命令来恢复数据。SET name "张三" → 追加到 appendonly.aof。

2026-10-24 11:00:00 192

原创 Go 并发安全的 Map 全解析:从读写锁到分片锁,再到 sync.Map 源码级拆解

Go 的原生 在并发场景下是不安全的。当多个 goroutine 同时对同一个 map 进行读写操作时,会触发 runtime panic:常见的 map 操作有增、删、改、查和遍历,其中:下面介绍三种主流的并发安全 Map 方案。最直观的思路:给整个 map 加一把 。问题:加锁的对象是整个 map。协程 A 对 map 中的某个 key 进行修改操作,会导致其他协程无法对其它 key 进行读写操作。在高并发场景下,这把全局锁会成为严重的性能瓶颈。本质是降低锁粒度:把原本 的结构,拆成 的结构,

2026-10-23 21:30:00 197

原创 Fun-ASR 底层原理详解:从语音波形到文字输出的全链路解析

FunASR 是阿里巴巴语音实验室推出的工业级开源端到端语音识别工具包,其核心技术底座Paraformer 非自回归模型,是工具包最核心的技术支撑。Fun-ASR 在底层原理上的核心贡献,本质上是打破了传统语音识别"高精度"与"高延迟"不可兼得的痛点。它通过 Paraformer 的非自回归架构解决了速度瓶颈,又通过模块化的全链路协同核心技术解决的问题Mel 特征提取将原始波形转化为神经网络可计算的结构化表示同时捕捉局部发音细节和全局语义关联CIF 对齐机制。

2026-10-23 11:27:58 172

原创 大厂都在问:如何解决map的并发安全问题?三种方法让你对答如流

本文深度解析Go语言中解决map并发问题的三大方案: 1)读写锁方案(功能完整但性能差); 2)分片加锁方案(通过哈希分片降低锁粒度,读写均衡但读性能不足); 3)sync.Map方案(极致无锁读但写性能差,适合读多写少场景)。文章详细比较了各方案的底层实现、适用场景和性能特点,指出sync.Map在读多写少时性能最优,而分片map在高并发写入时更稳定。全文包含哈希算法原理、锁机制实现等核心知识点,并配有B站视频讲解链接。

2026-03-28 15:06:34 416

原创 github开源项目 “校园活动平台“ —— 报名活动二维码生成核销流程详解

上面是github链接,跟朋友写的一个开源项目,基于 go-zero微服务框架构建的校园活动发布、报名、签到平台。采用 Clean Architecture 设计,支持分布式事务、全文搜索、实时通讯。大家感兴趣觉得还不错的欢迎点点 star!有什么需要改进的地方欢迎大家指出!

2026-02-12 14:48:20 914

原创 golang context底层设计探究

Context 用于在多个函数、方法、协程、跨 API、进程之间传递信息。于 Go 1.7 版本发布,并纳入到 Go 语言标准库中。它不仅仅可以用于跨 API 场景传递上下文,同时还可以实现级联取消、超时控制等操作。Context 是可以进行嵌套的,一个非顶级或末级的 Context 是拥有其父亲和一个或多个儿子,我们可以把它看作是一个树,也就是 Context 树Go 官方提供了 三个接口的定义 和 四个结构体的实现。

2025-12-27 15:44:10 924

原创 golang中 Context的四大用法

超时时间适合用于任务需要在调用后一定时间内完成的场景, 而截止时间适合用于任务需要在指定时间之前完成的场景。两者都用于控制任务的执行时间,但适用场景有所不同。

2025-12-21 10:08:48 435

原创 waitGroup底层源码分析

本文介绍了Go语言中sync.WaitGroup的基本用法和底层实现。WaitGroup用于等待一组goroutine完成,包含Add()、Done()和Wait()三个核心方法。文章通过示例演示了WaitGroup的典型用法,并详细分析了其底层数据结构在Go 1.13和1.14版本中的差异。重点剖析了Add()方法的源码实现,包括竞态检测、状态检查等关键逻辑。Done()方法实际上是Add(-1)的封装,而Wait()方法会阻塞直到计数器归零。文章还强调了WaitGroup的正确使用方式,如避免并发调用A

2025-12-16 09:35:18 722

原创 MySQL 执行 SELECT 语句的完整流程详解

A[连接器] -->|建立连接/校验权限| B[查询缓存]B -->|命中| Z[返回结果]B -->|未命中| C[SQL解析]C -->|词法/语法分析| D[预处理]D -->|语义校验/重写| E[优化器]E -->|生成执行计划| F[执行器]F -->|调用存储引擎接口| G[返回结果]​。

2025-11-22 08:52:00 1011

原创 Golang的前世今生(出身名门的后起之秀)

一直到 2009年,Go正式开源了,GO项目团队将 2009.11.10即该语言正式对外开源的私自作为其官方生日,并且发布了官方的吉祥物——土拨鼠,(据说也叫囊地鼠)长下面这样:吉祥物的创作者 芮妮·弗伦奇( Go 语言第一任老大(罗伯·派克)的爱人),还亲手用黏土制作了一个精致的土拨鼠雕塑,使它成为一个独特的创造。并且一直到现在,Go 语言的爱好者们,一直视这只土拨鼠作为 Go 语言的吉祥物。2018年,Go 语言启用了全新的 logo,是一个类似于快速运动中两个轮子的标记,形象的代表速度和效率。

2025-10-18 08:10:26 1137 1

原创 Golang 切片(深入了解切片底层扩容机制,部分源码,测试实战+核心用法)

切片又称动态数组,依托数组实现,可以方便地进行扩容和传递,实际使用时比数组更灵活,正因为灵活,实际使用时容易出错,避免出错的方法之一便是了解其使用原理。

2025-10-12 16:21:40 803

原创 Golang并发通信机制 channel (超详细,干货)

CSP理论是早期被提出的一种并发模型不通过共享内存实现通信,而是通过通信实现内存共享多个进程想交换数据时,直接访问同一块内存区域,数据放在一个共享变量里面,大家来读写,为了保证一致性,需要加锁,不然就会有数据竞争,死锁多个进程不直接操作内存,而是需要的时候通过通信机制例如 channel,消息队列等来传递,这样不会出现数据竞争,因为同一时刻数据的“读写权限”只在一个线程手里,程序员也不用操心锁,channel天然的保证了同步。

2025-10-12 15:34:49 969

原创 defer的代码陷阱,你中招了吗?(一文golang defer详解)

defer 是 go 语言中的一个关键字,用于延迟执行一个函数调用,干函数会在当前函数即将返回之前被调用(无论是正常返回还是因panic导致的返回),多个 defer 语句会按照先进后出的顺序执行。今天给大家主要介绍了关于defer的一些知识点,defer的来由、定义、结构、优化过程、代码举例、开放编码等等,大家下去也可以再深入了解一下,有什么问题和想法欢迎随时在评论区交流!大学生讲解Golang defer执行过程、代码陷阱、优化过程,一文轻松搞懂defer全部内容_哔哩哔哩_bilibili。

2025-09-18 14:57:02 1027 1

原创 进程、线程与协程详解

类比:海底捞内,【传菜员】【服务员】【后厨】是三个线程 —— 它们共享海底捞的食材(内存)、锅具(CPU),但分别负责 "上菜","接待顾客","炒菜",传菜员不会抢后厨的锅,但能快速配合完成一桌 meal。类比【海底捞】和【麦当劳】是两个独立进程 —— 它们各自有独立的厨房(内存)、食材储备(文件)、收银系统(CPU),互不干扰。同一进程内的线程共享进程的资源(如内存、文件)。进程内的 "执行单元",共享进程资源(如餐厅的食材、设备),但负责不同任务(如传菜、点单、清洁)。

2025-08-16 08:46:24 1236 6

原创 计算机网络——UDP

① UDP 是一种在网络通信中使用的传输层协议,是一个简单的、面向无连接的协议,② UDP用于将数据从一个应用进程发送到另一个应用进程,并在此过程中不提供可靠的数据传输保障无连接:1. 通信之前不建立,通信之后也不释放任何连接(专属通道):把每个数据包当独立快递包裹,直接扔出去就算完成任务,不建立,不维护,也不拆除任何长连接不可靠:2 发送端发出去的消息在网络传输中一旦丢失,接收端将收不到这个消息引入问题:为什么TCP就比UDP可靠?请看下文。

2025-07-31 11:39:44 1158 6

原创 GC(垃圾回收机制)

垃圾回收机制是计算机编 程语言中的一种自动内存管理机制。

2025-07-24 15:22:43 761 8

原创 Go内存逃逸(一文搞懂)

编译器将原本应该分配到栈上的变量,分配到了堆上(延长了变量的生命周期,在编译阶段完成)在Go语言中,Go程序会在两个地方为变量分配内存,一个是全局的堆空间,另一个是栈空间1.栈空间:函数调用的参数,返回值以及小类型局部变量大都会被分配到栈上,这部分内存会由编译器进行管理,无需GC的标记2.堆空间:全局变量,大对象,逃逸的变量会被分配到堆上,go运行时GC就会在后台将对应的内存进行标记从而能够在垃圾回收的时候将对应的内存回收,进而增加了开销。

2025-07-09 15:13:55 1218 6

原创 一文搞懂 Gorm框架 基础操作

dao.Init()Age: 18,//添加操作1.指针类型是为了更好的存null类型,但是传值的时候,也记得传指针2.Create 接收的是一个指针,而不是值由于传递的是一个指针,调用完 Create 之后,student 这个对象上面就有该记录的信息了,如创建的id。

2025-06-20 21:14:56 495

原创 一文详解OCR图片文字识别技术(超详细)

OCR 是一种将图像中的文字内容识别出来并转换成可编辑文本的技术。

2025-06-07 21:39:14 1243 6

原创 Go web 用户管理系统(部分前后端代码+项目功能展示)

主要功能分为上述五个部分,其他小的细节不再赘述二、项目架构项目结构主要基于MVC三层架构模式主要分为三层:controller层:用于接收前端传过来的数据service层:用于数据逻辑的处理,为controller层服务dao层:主要用于项目与数据库的交互,为service层服务除此之外,项目还有专门存放参数的model层;存放用来响应前端数的据的pkg层;存放前端页面代码的view层;存放图片的uploads层本次讲述的项目主要是围绕用户的登录注册,增删改查等功能展开实现的。

2025-05-18 16:57:42 780 1

原创 大模型基础知识(LLM、Transformer、Prompt、MCP)

LLM基本概念是用于做自然语言相关任务的深度学习模型,给模型一些输入,可以返回相应的输出;大语言模型首先需要通过大量文本,进行。,它的训练数据有多个互联网文本语料库。覆盖了 线上书籍,新闻文章,科学论文,维基百科,社交媒体帖子 等等,借助海量的训练文本数据,模型能更多了解单词与上下文之间的关系,从而更好理解文本含义,从而给出更精准的预测。,不仅是训练数据巨大,而是参数数量巨大,参数,是模型内部的变量,可以理解为是模型在训练过程中学到的知识,参数决定了模型如何对输入数据作出反应,从而决定模型的行为。

2025-05-08 15:56:16 611

原创 从输入URL到页面显示的全过程

步骤:浏览器解析用户输入的URL,提取出协议,域名,路径等信息,根据这些信息生成对应的HTTP报文。

2025-04-22 11:22:54 432

原创 贪心思想1(JAVA)

以上题目均来自于力扣官网,大家可到官网上自行尝试作答,有疑问或者不懂的地方欢迎大家评论区留言或者私信作者。

2025-03-06 21:51:18 356

原创 网络编程——心跳检测

在网络编程中,心跳检测是一种可用于检测网络连接状态的技术,用于确保连接的活跃性并检测连接是否中断,通过定期发送心跳消息,来保证通信的可靠性。

2025-02-06 15:12:59 677

原创 go map 底层详解(基础语法、底层实现、扩容机制)

以上就是关于go map的所有内容,如有没涉及到的或者是大家觉得不正确的地方,欢迎评论区留言或者私信作者。

2025-01-22 19:42:03 1264

原创 基本回溯算法介绍

/调用回溯算法returnres;//返回正确的结果以上就是回溯最基本的过程,欢迎大家在评论区留言,也可以私信问作者,希望大家有所收获。

2025-01-19 21:41:53 399

原创 力扣 203.移除链表元素题解(思路 + 代码)

存储数据元素的值指向链表中下一个节点的指针,指针允许我们遍历链表,由一个节点移动到下一个节点。

2024-12-14 16:29:25 339

原创 蒙特卡罗方法 (Python)

蒙特卡罗方法在生活中还有其他应用,比如积分的计算,大家感兴趣的可以私信作者哦,也欢迎在评论区留言。numberOfTrails = int(1e9)#科学技术法。

2024-11-03 16:19:06 474

原创 go语言中的切片扩容

append函数会分配一个新的底层数组,将原切片的元素以及新追加的元素复制到新的数组中,并返回这个新切片的引用。append函数会在原切片的基础上追加元素,并返回原切片的引用(即指向同一个底层数组)。所以上述计算出来的map(最终)是个估计值,大部分情况下是等于最终结果的,极少情况下不等于,但是相差也不大。map(最终) = map(初始) + ( map(初始) + 3*256 )/4。map(最终) = map(初始) + map(扩的容量)map(最终) = 2*map(初始)

2024-10-27 08:26:46 433 3

原创 JS入门 + 作品

JavaScript是一种运行在客户端(浏览器)的编程语言,实现人机交互效果1.网页特效 2.表单验证 3.数据交互(获取后台数据,渲染到前端) 4.服务器编程(node.js)对象是一种数据类型无序的数据的集合(1)对象名.属性名 obj.age(2)对象名['属性名'] obj['age']//当属性名是字符串时(6)对象中的方法。

2024-08-14 21:35:04 1389 2

原创 JAVA FX+MySQL图书管理系统(内含部分重要代码)

增加、删除、借书、还书类似。

2024-07-30 10:23:37 1620 4

空空如也

空空如也

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

TA关注的人

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