Loading

摘要: package SkipList import ( "fmt" "math/rand" ) const MaxLevel = 10 type Node struct { score int value string next []*Node } func NewNode(score int, val 阅读全文
posted @ 2024-06-23 19:04 Duancf 阅读(21) 评论(0) 推荐(0)
摘要: 手写一个协程池 阅读全文
posted @ 2024-06-23 18:48 Duancf 阅读(17) 评论(0) 推荐(0)
摘要: ThreadLocal 本文参考 参考资料 什么是内存泄漏 内存泄漏指的是,当某一个对象不再有用的时候,占用的内存却不能被回收,这就叫作内存泄漏 因为通常情况下,如果一个对象不再有用,那么我们的垃圾回收器 GC,就应该把这部分内存给清理掉。这样的话,就可以让这部分内存后续重新分配到其他的地方去使用; 阅读全文
posted @ 2024-06-23 16:58 Duancf 阅读(22) 评论(0) 推荐(0)
摘要: Thread源码 构造方法 Thread() Allocates a new Thread object. Thread(Runnable target) Allocates a new Thread object. Thread(Runnable target, String name) Allo 阅读全文
posted @ 2024-06-23 16:57 Duancf 阅读(25) 评论(0) 推荐(0)
摘要: HashMap和ConcurrentHashMap的区别 主要区别就是hashmap线程不安全,ConcurrentHashMap线程安全 HashMap线程不安全,有以下两个问题 put覆盖问题 比如有两个线程A和B,首先A希望插入一个key-value对到HashMap中,首先计算记录所要落到的 阅读全文
posted @ 2024-06-23 16:43 Duancf 阅读(32) 评论(0) 推荐(0)
摘要: String 常量池/运行时常量池 java类编译之后生成的.class文件包含三部分信息, 类的基本信息,常量池,方法的定义 通过javap -v xxxx.class命令可以看到 Constant pool: #1 = Methodref #2.#3 // java/lang/Object."< 阅读全文
posted @ 2024-06-23 16:31 Duancf 阅读(29) 评论(0) 推荐(0)
摘要: 什么是Goroutine Goroutine = Golang + Coroutine。Goroutine是golang实现的协程,是用户级线程。 Goroutine的特点: 相比线程,其启动的代价很小,以很小栈空间启动(2Kb左右)[这个特点使得我们可以在一台机器上并发成千上万的线程] 能够动态地 阅读全文
posted @ 2024-06-23 15:31 Duancf 阅读(85) 评论(0) 推荐(0)
摘要: 动态栈 每一个OS线程都有一个固定大小的内存块(一般会是2MB)来做栈,这个栈会用来存储当前正在被调用或挂起(指在调用其它函数时)的函数的内部变量。这个固定大小的栈同时很大又很小。因为2MB的栈对于一个小小的goroutine来说是很大的内存浪费,比如对于我们用到的,一个只是用来WaitGroup之 阅读全文
posted @ 2024-06-23 14:42 Duancf 阅读(38) 评论(0) 推荐(0)
摘要: 概括 sync.Map的实现原理可概括为: 通过 read 和 dirty 两个字段将读写分离,读取时会先查询 read,不存在再查询 dirty,写入时则只写入 dirty,所以read相当于dirty的缓存。 读取 read 并不需要加锁,而读或写 dirty 都需要加锁。 misses 字段统 阅读全文
posted @ 2024-06-23 11:16 Duancf 阅读(67) 评论(0) 推荐(0)
摘要: 源码 // Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LI 阅读全文
posted @ 2024-06-23 11:12 Duancf 阅读(25) 评论(0) 推荐(0)