Golang
未读
Go语言修炼(八):面试必问的GMP调度模型
前言 上一篇文章我们提到:多线程并发的时候会抢夺全局协程队列中的全局锁,造成高并发情况下效率低的问题。G-M-P模型的出现就是为了解决这个问题。 GMP模型是Go语言运行时用于管理并发执行单元(Goroutine)的一套精妙设计。在这个模型中,Goroutine作为轻量级的线程,实现了高效的并发执行
Golang
未读
Go语言修炼(七):协程的本质与线程循环模型
前言 协程是Go语言中一个非常重要的概念,Go语言能够天然支持高并发应用的开发所依赖的就是协程。本文将深入探讨协程的本质以及早期Go语言的线程循环模型,揭开协程的神秘面纱。 协程的概念 首先我们回顾一下《操作系统》这门课的知识。操作系统的处理机管理中,一个非常重要的模块就是进程和线程的管理。 进程:
Golang
未读
Go语言修炼(六):什么是Go语言的内存对齐
前言 在编程的世界里,理解并有效利用内存是每位开发者不可或缺的技能之一。特别是在追求高性能和高效率的现代应用程序开发中,合理的内存管理显得尤为重要。 内存对齐(Memory Alignment)是一个既基础又关键的概念,它直接关系到程序的运行效率和性能。内存对齐是指数据在内存中的存储位置按照某个特定
Golang
未读
Go语言修炼(五):搞清楚Go语言中的那些“空”们
前言 在Go语言里,每一个细节都蕴含着深刻的设计哲学与实现智慧。今天,我们将深入剖析Go语言中三个常被提及却又容易让人困惑的“空”——空结构体、空接口以及nil,并揭开接口底层实现的神秘面纱。 这三个概念,虽然听起来简单,但在Go语言的编程实践中却扮演着举足轻重的角色,它们既是Go语言灵活性和强大功
Golang
未读
Go语言修炼(四):面试官问我sync.Map的底层实现
前言 上一篇博文我们讲解了Go语言中map的底层实现,然而就像Java中的HashMap是并发不安全的,Go语言的map也是不支持并发场景的。 如果要在并发场景下使用map,就需要用到我们即将介绍的sync.Map。 map的并发问题 首先,我们先来理解一下为什么Go语言的map会存在并发问题。 让
Golang
未读
Go语言修炼(三):Go语言中的Map到底是怎么实现的
前言 在编程的世界里,数据结构是构建高效、可维护软件大厦的基石。而在众多数据结构中,Map(哈希表)因其能够快速存取键值对的能力而备受青睐。对于使用Go语言进行开发的程序员来说,Map更是日常编码中不可或缺的一部分。它允许我们以近乎常数的时间复杂度(O(1))来查找、插入或删除元素,极大地提升了程序
Golang
未读
Go语言修炼(二):Go语言字符串和切片底层探索
前言 字符串作为文本处理的基础,在Go语言中扮演着举足轻重的角色。它提供了一种方便的方式来存储和操作文本数据。而切片,作为Go语言特有的动态数组实现,他不仅仅是数组的抽象,更是Go语言并发编程中不可或缺的组件。 本文旨在剖析字符串与切片的关键底层原理,不仅为面试准备提供有力支持,更关键的是,这些知识
Golang
未读
Go语言修炼(一):Go语言编译与运行过程浅探
Go:简洁且并发性能优异的语言 在当今这个快速迭代的软件开发时代,掌握一门高效、简洁且并发性能优异的编程语言显得尤为重要。Go语言(又称Golang),自2009年由Google团队推出以来,凭借其独特的设计哲学——简洁、快速、安全,迅速在云计算、微服务、大数据处理等领域崭露头角,成为众多开发者心中
技术
未读
Ascend C入坑笔记
初始AscendC 本文记录笔者在杭研学习Ascend C的所得和体会。本次学习AscendC主要涵盖从基础概念、产品定位到AscendC算子开发。 AI Core架构 物理结构 昇腾AI处理器架构图如下: AI Core是昇腾AI处理器的核心,采用达芬奇架构。 达芬奇架构的主要部分有: 计算单元:
学与思
未读
思悟与三省(I):摒弃投机,走向自我觉知
近况:走着走着,我停不下来了 身处现代,无限奔忙已是常态。行,做,干,凡事总是这三字当头,至于所谓驻足思考,所谓停一停,所谓慢慢欣赏,管他丫的,先走再说,先做再说,先干再说。 干着干着,却又不自觉地陷入罗洛.梅所说的精神空虚,老人家有句箴言: “不是行动越多就表示越有活力。许多人终日忙碌,将其作为掩