Go语言中的slice表示一个具有相同类型元素的可变长序列,语言本身提供了两个操作方法: 创建:make([]T,len,cap) 追加:append(slice,T...) 同时slice支持随机访问。本篇文章主要对slice的具体实现进行总结。 1.数据结构 go语言的slice有三个主要的属性: 指针:slice的首地址指针 长度:slice中元素的个数 容量:由于slice底层结构本身物理空间可能更大,因此该值记录slice实际空间大小。 因此,在golang官网中的GoSlices:usageandinternals对slice的描述如下: Asliceisadescript...

  kzj9QAIs8VT7   2023年11月02日   50   0   0 Go

单调性 单调性是数学中使用的一种常见性质,通常用于描述函数,在高等数学中的定义常常为: 设函数f(x)在区间I上有定义,如果对于I上的任意两个数x1和x2,当x1<x2时,有f(x1)<f(x2)(或者f(x1)>f(x2)),则称函数f(x)在区间I上是单调递增的(或者单调递减的)。 例如如下图像就是两个单调函数。 利用单调性我们可以减少很多重复的运算。例如,对于如下函数,我们给定其定义域为[0,+∞),现在要求查找出在其定义域内所有f(x)即y大于0.5的区间。 如果不借助单调性,我们需要采用遍历的方法,依次遍历定义域中的所有点x,判断其f(x)是否满足条件(大于0...

  kzj9QAIs8VT7   2023年11月01日   57   0   0 求职面试

二分法是搜索算法中极其典型的方法,其要求输入序列有序并可随机访问。算法思想为 输入:有序数组nums,目的数值target要求输出:如果target存在在数组中,则输出其index,否则输出-1 将原数组通过[left,right]两个索引划分范围,初值left=0,right=数组的最后一个元素 当left<=right时 middle=(left+right)/2 判断nums[middle]是不是要查找的target,如果是则返回结果 判断nums[middle]>target,证明要查找的target在左边,因此right=middle1 判断nums[middle]&...

  kzj9QAIs8VT7   2023年11月01日   88   0   0 求职面试

提要:本系列文章主要参考MIT6.828课程以及两本书籍《深入理解Linux内核》《深入Linux内核架构》对Linux内核内容进行总结。 内存管理的实现覆盖了多个领域: 内存中的物理内存页的管理 分配大块内存的伙伴系统 分配较小内存的slab、slub、slob分配器 分配非连续内存块的vmalloc分配器 进程的地址空间 传统的内存管理主要包括段式存储、页式存储、段页式存储,这里我们会以这部分开始,逐步介绍Linux内核中的内存管理,而要学习内存管理,首先需要了解内存寻址。所以本节内容主要讲解内存寻址的相关知识,并介绍Linux内核中的段、页式存储。 内存地址 在编程过程中,难免需要通...

  kzj9QAIs8VT7   2023年11月01日   98   0   0 Linux

提要:本系列文章主要参考MIT6.828课程以及两本书籍《深入理解Linux内核》《深入Linux内核架构》对Linux内核内容进行总结。内存管理的实现覆盖了多个领域: 内存中的物理内存页的管理 分配大块内存的伙伴系统 分配较小内存的slab、slub、slob分配器 分配非连续内存块的vmalloc分配器 进程的地址空间 内存管理实际分配的是物理内存页,因此,了解物理内存分布是十分必要的。 物理内存布局 在初始化阶段,内核必须建立一个物理地址映射来指定哪些物理地址范围对内核可用而哪些不可用(或者因为它们映射硬件设备I/O的共享内存,或者因为相应的页框含有BIOS数据)。 内核将下列页框记...

  kzj9QAIs8VT7   2023年11月01日   74   0   0 Linux

提要:本系列文章主要参考MIT6.828课程以及两本书籍《深入理解Linux内核》《深入Linux内核架构》对Linux内核内容进行总结。内存管理的实现覆盖了多个领域: 内存中的物理内存页的管理 分配大块内存的伙伴系统 分配较小内存的slab、slub、slob分配器 分配非连续内存块的vmalloc分配器 进程的地址空间 上一节介绍了内存管理相关的主要数据结构以及它们之间的关系,本节主要介绍这些数据结构的初始化,方便在介绍内存分配时读者思路更加清晰(这部分内容主要参考《深入Linux内核架构》)。 函数start_kernel()负责完成Linux内核的初始化工作,内存管理相关数据结构的...

  kzj9QAIs8VT7   2023年11月01日   49   0   0 Linux

提要:本系列文章主要参考MIT6.828课程以及两本书籍《深入理解Linux内核》《深入Linux内核架构》对Linux内核内容进行总结。内存管理的实现覆盖了多个领域: 内存中的物理内存页的管理 分配大块内存的伙伴系统 分配较小内存的slab、slub、slob分配器 分配非连续内存块的vmalloc分配器 进程的地址空间 内核初始化后,内存管理的工作就交由伙伴系统来承担,作为众多内存分配器的基础,我们必须要对其进行一个详细的解释。但是由于伙伴系统的复杂性,因此,本节会首先给出一个简单的例子,然后由浅入深,逐步解析伙伴系统的细节。 伙伴系统简介 伙伴系统将所有的空闲页框分为了11个块链表,...

  kzj9QAIs8VT7   2023年11月01日   120   0   0 Linux

众所周知,Mysql的事务隔离级别分为4个,分别是READ-UNCOMMITED,READ-COMMITED,REPEATABLE-READ,SERIALIZABLE,在常规数据库概论中,前三种事务隔离级别会带来脏读、不可重复读、幻读的问题,对应关系如下: 脏读 不可重复读 幻读 READ-UNCOMMITED √ √ √ READ-COMMITED × √ √ REPEATABLE-READ × × √ SERIALIZABLE × × × 但是在Mysql中使用了Next-keyBlock解决了幻读问题,下面我们通过讨论该问题来详细讨论Next-keyBl...

  kzj9QAIs8VT7   2023年11月01日   79   0   0 MySQL
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~