【Go笔记】深入协程设计与调度原理 协程的声明状态 如图: _Gidle - 刚开始创建的状态,初始化之后会变成_Gdead _Gdead - 被初始化和销毁时候的状态 _Grunnable - 在运行队列中,等待运行 _Grunning - 正在被运行,已经分配了M和P _Gwaiting - 运行时被锁定,不能执行用户代码,在gc和channel通信的时候常常遇到 _Gsyscall - 正在执行系统调用 _Gpreempte 2025-08-11 go-note #Go笔记
【Go笔记】哈希表 简介 map又称哈希表,是一种KV结构,分散存储在桶中 第一步计算键的哈希值,其结果与桶的数量无关 第二步通过取模得到下标 通常认为map是一种O(1)时间复杂度的操作,通过一个键快速查找到一个值 哈希碰撞与解决方法 哈希碰撞即不同的键通过哈希函数可能产生相同的哈希值,可能会导致同一个桶中可能存在多个元素 有两种主要策略可以避免哈希碰撞:拉链法以及开放寻址法 ¶拉链法 即将同一个哈希桶( 2025-08-11 go-note #Go笔记
【Go笔记】接口与设计模式 接口的特征 隐藏细节 控制系统复杂性 权限控制 接口必须实现所有的方法 接口的使用 隐形声明 - 即只要实现接口内的所有方法,则实现了该接口 接口本身可以作为一个父类使用,即可以接受所有实现了该接口的数据类型,然后调用接口内定义了的方法 一个类型可以同时实现多个接口 鼓励使用组合而不是继承的方式来实现OOP 使用s, ok := i.(Type)断言来获取结构内存储的类型与数据 使用swit 2025-08-11 go-note #Go笔记
【Go笔记】异常与异常捕获 特性 panic执行的时候程序并不会直接异常退出,而是会终止当前函数的正常执行,执行defer并逐层返回 逐层返回的过程中,上层函数中,调用语句接下来的代码都不会被执行,而是直接执行defer然后再退出到上层 恢复 在defer中使用recover函数用于异常恢复 panic会在同一个goroutine中的defer调用中寻找到第一个recover用于恢复,恢复了之后就没有panic了,剩余 2025-08-11 go-note #Go笔记
【Go笔记】反射 简介 反射是程序在运行时检查、修改自身结构和行为的能力,有点相当于自定义runtime 不会使用特别多,一般会作为框架或基础服务的一部分打包使用 使用方法 ¶基本 两个基本方法 - func ValueOf(i interface{}) Value, func TypeOf(i interface{}) Type 可以将reflect.Value看做反 2025-08-11 go-note #Go笔记
【Go笔记】协程 进程与线程 一个进程可以有单个或者多个线程 线程之间共享进程的内存等资源 进程之间相互独立,有独立的内存空间,机器码,状态,资源描述符等 开启一个新进程的开销比一个新线程大得多,且多进程之间通信困难 操作系统调度CPU的最小单位是线程,单核CPU使用交织线程,多核可实现真正的并行处理 线程的上下文切换 实际运行中,线程数量比CPU核心数多得多 为了平衡每个线程的执行时间,操作系统需要再适当的 2025-08-11 go-note #Go笔记
【Go笔记】字符串 字符串的本质 一般的字符串分为编译时指定长度和动态长度两种,Go使用的是前者 字符串的终止有两种方式,一种是C中的隐式申明,以\0结尾;一种是Go中的显示声明 Go中的字符串本质上是字符数组,可以用下标访问,但是不能被修改 空间方面,一般字符占1字节,特殊字符如中文,日文等占3个字符 符文类型 (rune) 设计者认为,因为有些字符非常相似,用于表示字符串可能会有歧义,而其不同的本质是编码之 2025-08-11 go-note #Go笔记
【Go笔记】类型 类型推断 ¶特性 已经确定的类型不能进行隐式转化,因此类型被推断出来之后就不能隐式转换了 不允许对变量标识符引用的值进行转换,如b := a + 1中,a必须和b的类型相同 int和int64,float32和float64是四种不同的类型 ¶原理 在词法解析阶段,右边的常量会被解析为一个未定义的类型 全是0~9的就是整数,字符中有小数点的就是浮点数,字符串的首字符为"或',识别0 2025-08-11 go-note #Go笔记
【SE笔记】一些Jvav复习的东西 数据类型 & 运算符 float型字符必须在变量最后面加上F或f 高精度可以用java.math.BigDecimal(没讲) 数组 定义 - double[] marks,double [5]marks, marks = new double[5], marks = new double[]{1, 2, 3, 4, 5} public static void a 2025-06-12 se-note #SE笔记
【K8s笔记】kubernetes的相关命令 这是一些常见的kubectl和docker命令 kubectl ¶other kubectl get nodes kubectl get namespaces / ns kubectl delete all --all - 注意,使用这个命令的时候,kubernetes服务也会被删除,但是会自动重新创建 kubectl apply -f {YAML} kubectl dele 2025-01-12 k8s-note #k8s笔记