147
参考链接: Python中的屏障对象Barrier Objects什么是垃圾回收 曾几何时,内存管理是程序员开发应用的一大难题。传统的系统级编程语言(主要指C/C++)中,程序员必须对内存小心的进行管理操作,控制内存的申请及释放。稍有不慎,就可能产生内存泄露问题,这种问题不易发现并且难以定位,一直成为困扰开发者的噩梦。如何解决这个头疼的问题呢?过去一般采用两种办法: 内存泄露检测工具。这种工具的原理一般是静态代码扫描,通过扫描程序检测可能出现内存泄露的代码段。然而检测工具难免有疏漏和不足,只能起到辅助作用
52
基础面试go的调度GPM是Go语言运行时(runtime)层面的实现,是go语言自己实现的一套调度系统。区别于操作系统调度OS线程。G很好理解,就是个goroutine的,里面除了存放本goroutine信息外 还有与所在P的绑定等信息。
P管理着一组goroutine队列,P里面会存储当前goroutine运行的上下文环境(函数指针,堆栈地址及地址边界),P会对自己管理的goroutine队列做一些调度(比如把占用CPU时间较长的goroutine暂停、运行后续的goroutine等等)当自己的队列消费
41
LCP 34. 二叉树染色这道题理解错题意了 改了n久 自己好菜题目
小扣有一个根结点为 root 的二叉树模型,初始所有结点均为白色,可以用蓝色染料给模型结点染色,模型的每个结点有一个 val 价值。小扣出于美观考虑,希望最后二叉树上每个蓝色相连部分的结点个数不能超过 k 个,求所有染成蓝色的结点价值总和最大是多少?
解题思路
设 dp[k] 表示在当前节点染色了k的最大值。
则 dp[0] = max(left,right),dp[k]=max(dp_left[n],dp_right[k-n-1])
57
Golang数组与切片
数组的声明
func main() {var arr1 [3]intfmt.Println(arr1)var arr2 = [3]int{1, 2, 3}var arr3 = [...]int{1, 2, 3}fmt.Println(arr2, arr3)
}[0 0 0]
[1 2 3] [1 2 3]Golang中的数组属于静态数组,不允许动态扩展Golang中数组会默认初始化值
可以通过[...]int{1,2,3}的方式初始化数组数组的传值Golang中数组与C++中的容器
381
参考链接: Go-字符串最近在做性能优化,有个函数里面的耗时特别长,看里面的操作大多是一些字符串拼接的操作,而字符串拼接在 golang 里面其实有很多种实现。 实现方法 1. 直接使用运算符 func BenchmarkAddStringWithOperator(b *testing.B) { hello := "hello" world := "world" for i :=
566
参考链接: Go-数据类型#使用.(type)及reflect.TypeOf() func main() { demo.TypeOf(1) demo.TypeOf("golang") demo.TypeOf(true) demo.TypeOf(1.2)}func TypeOf(param interface{}) { // 打印数据类型 fmt.Println(param, reflect.TypeOf(param)) // 判断数据类型 switch pa
74
参考链接: Go语言-错误处理错误处理机制 当程序发生错误,程序就会崩溃,所以,引进错误处理机制,当发生错误后,可以捕获错误,并进行处理,保证程序正常执行,并返回给管理员错误的信息提示。 异常处理 Go中抛出一个panic的异常,然后在关键字defer中通过recover()函数捕获这个异常,最后正常处理。 defer语句的作用是不管程序是否出现异常,均在函数退出时自动执行相关代码。 程序案例 package mainimport ( "fmt")func test() { //
48
* 提炼你的个人技能,而不是把所有你听过的技术都加上去。* 按熟练程度分解技能,精通,有实战经验,熟悉。* 项目经验非常需要细节。* 技能和项目不匹配,时间不匹配* 拼写错误是大忌。* 教育背景请写到底部。* 保持简洁,没人愿意听你的高谈阔论。提炼你的个人技能我知道你一直在关心行业的发展,也一定听过很多非常火热的名词。 比如 Golang, DevOps。 你也可能一时心血来潮花了 2 个晚上,理解了他们的概念和基础语法,但是并不能说明你就具备了这项技能。把你不熟悉的技术写到简单当中只会害了你。因为一旦面