北川广海の梦

北川广海の梦

最新文章

SQL的执行过程简析

对于这个执行过程,过去总是模糊不清,含糊的知道,会有SQL语法解析,执行计划分析等等。近日在工作中有相关学习,故写此文记录。
101
0
0
2023-03-17

前缀树实现

基于Golang,效率可能并不能达到O(N),因为要支持字母外的其他字符,所以子节点的长度并不固定,这里用的是链表存储。所以在进入到下一子节点前,需要遍历这个子节点链表。然而,如果是纯英文,则可以通过ASCII直接定位了,效率和内存都更有优势。 下面是代码: package main import
156
0
0
2023-02-12

Golang Mutex互斥锁原理

首先回顾一下Java中的锁的一些特性。在面试时,我们常被问道Java的锁升级过程:即一个锁的初始是不加锁的,而当只有一个线程来尝试获取这把锁的时候,它会变为偏向锁,(在锁对象头中存储线程id)这样可以对应的线程可以直接获得锁。而当有更多线程(2个)尝试获取锁时,它会转变为一个轻量级锁...
205
0
0
2023-02-10

Golang map数据结构与渐进式rehash

HashMap是日常开发中最常用的数据结构之一,由于其独特的性质,在许多场景其都能发挥作用,例如去重,快速判断存在性,甚至表示一个对象。而不同平台对于hashmap有着不同的实现,本文将分析Golang语言中的map实现原理。首先来回顾一下Java中的HashMap...
609
0
0
2022-12-07

Golang类型系统、接口与类型断言

普通结构体 type Man struct{ name string } func (m *Man) Speak(){ } 我们定义了一个简单的结构体,它有一个name字段,并且为它实现了一个Speak的方法。这个对象在运行时的元数据如下 runtime._type结构,描述了类型的大小,
304
0
0
2022-12-05

Golang GC 三色标记法与混合屏障

Golang采用了三色标记与混合写入屏障技术,经历几个版本的不断优化,最终实现了几乎完全无STW。本文将分析Golang的GC实现思想。
494
0
0
2022-11-25

SQL Server实现Join原理

Join操作 关系型数据库中,Join操作非常常见。正是由于对多表联合查询的支持,各个表之间的关系、关联,正是通过join实现。 Join操作可以理解为,将两张表,通过某一个字段,联合为一张表。 班级表中,记录了班级的班主任是谁。学生表中记录了学生的个人信息,已经学生所属哪个班级。以此可将学生和班级
334
0
0
2022-05-07

设计模式:中介者模式与桥接模式

中介者模式 在一个包含UI的客户端程序中,我们通常会包含许多UI组件,这些组件之间常常会有复杂的逻辑交互。例如一些按钮联动等等。如果我们在每一个组件中都需要处理其他按钮发生的事情,那么每一个组件都会变得极不稳定且难以维护。 想象一下机场塔台,它负责一切航班之间的调度。航班之间互相无需关心彼此的存在。
508
0
0
2021-11-11

设计模式:备忘录模式与组合模式

备忘录模式 当我正在写下这篇博客的时候,我会不断的修修改改。Ctrl+Z组合键是我的好帮手。但是此时我编辑的内容是如何实现撤销的呢?答案就是通过备忘录模式。 假设当前编辑器的文本内容就是它的状态。我们可以通过一个栈来记录每次编辑的状态。但是现在我们只保存了文本,如果我们需要恢复光标的位置,或者更多的
430
0
0
2021-11-10

设计模式:生成器模式与原型模式

建造者模式 当我们需要构建一个房子的时候,这是一个比较复杂的过程,因为房子由好几个部分组成:门、窗户、屋顶、墙壁。如果按照普通的做法,我们可能会写一个房子类,然后写上一个构造函数,房子有几个部分,构造函数就有几个参数。 客户端在构建房子的时候,还需要知道所有的细节,有些参数并不是必要的。这样的构造函
449
0
0
2021-11-09