之前做过两次分享,分别是 JVM 垃圾回收原理与实现,还有 GoRoutine 与 Java 线程池的区别。
最后都失败了,基本上就一两个人听明白了,可能分享会的前置知识量太大,分享的主题又大,所以老感觉讲了老半天,有基础在的同学,可能一下子就听明白了,听不明白的就难以听明白了,主要是每次的分享可能从高层次的抽象讲,非常难以理解是怎么一回事,例如调度 怎么调度的 存储了哪些状态 为什么又能恢复回来,可能简单几句话就能说清楚抽象模型,但是听的人还是一塌糊涂,然后又要回到低层次的细节例如 栈 寄存器 操作系统中断向量表等概念,非常难以难把握这个度。
例如 线程就是一个状态存储的概念,操作系统调度就是将 CPU 时间划分好,然后将 CPU 的控制权交给线程,CPU 通过硬件时间中断响应来抢断线程对 CPU 的控制权,然后将线程的 寄存器 栈保存起来 为下一次恢复当前线程的状态做好准备,或者线程主动使用 syscall 进入内核,让操作系统挂起线程,等待 syscall 的返回后再调度线程,例如网络 IO 硬盘 IO 系统提供的互斥锁。
Goroutine 也是同理的一个状态存储的概念,不同的地方是 GoRoutine 的栈可以动态变化,然后整个 GoRoutine 的调度都发生在用户态,然后 GoRoutine 的抢占调度又是使用了操作系统提供的信号软中断机制来实现对线程的控制权抢断(不同于操作系统内核使用硬件时钟中断),或者 GoRoutine 发生网络 IO 调用等情况主动放弃对线程( CPU )的控制权。
感觉还是资料准备的不到位,应该分开为抽象概念模型与底层细节原理两篇来讲,不然最后讲了老半天,听的人也是一塌糊涂。
因为我自己脑子里面建的模型早就清楚了,例如 epoll 可以监听多个 fd 的事件,可以减少上下文切换,然后根据 epoll 返回 fd 事件的结果在用户态完成 GoRoutine 的调度,这样 GoRoutine 的所有非阻塞 IO 都可以被 epoll 托管,然后实现非阻塞 IO 当做阻塞式 IO 来用的编程模型。
而上下文切换这个概念,从上层的抽象概念模型到寄存器操作栈跟内存地址我都了解的非常清楚,所以这些概念对我来说不难以理解,但我还是没找到一个好的讲解方式与办法。
最后建个群,希望有各位大佬加进来,我个人的知识量覆盖的点 其实并不是很全面,希望在工作或者各种情况下,大家能相互指引一下,偶尔其实讲个 key 跟方向就好了,可以节省不少 Stack Overflow 的搜索时间,我之前开发一个 springboot 组件,在 BeanDefinitionRegistryPostProcessor 处理器里面注入 bean 希望通过 ConfigruationProperties 注解注入属性.
结果死活 application.properties 配置变量注入不进来,后来我有一个经常做组件开发的哥们跟我讲那个阶段不能注入依赖,只能通过 Binder 加载 environment 内置对象来注入外部配置,后来又在 Stack Overflow 上找到了同样类似的问题 https://stackoverflow.com/questions/53462889/create-n-number-of-beans-with-beandefinitionregistrypostprocessor
微信 id: Y2hlbjExMjIwMDM3Cg== 注明加入内推技术交流群
![]() | 1 suxiaotian 2020-12-27 22:08:06 +08:00 via iPhone 给政委顶一波 |
2 liuhuan475 2020-12-27 22:15:13 +08:00 给政委顶一波 |
![]() | 3 ming168 2020-12-27 22:31:37 +08:00 给政委顶一波 |
![]() | 4 Leigg 2020-12-27 22:38:00 +08:00 via iPhone goroutine |
![]() | 5 Thexz 2020-12-27 23:25:47 +08:00 小白可以进去学习吗 |
6 stupil 2020-12-27 23:28:50 +08:00 给政委顶一波 |
7 laike9m 2020-12-28 06:04:59 +08:00 什么是 NT 群? |
![]() | 9 Dogtler 2020-12-28 08:18:27 +08:00 via Android 给政委顶一波 |
![]() | 11 pythonee 2020-12-28 09:11:41 +08:00 什么是 NT 群 |
12 burnbrid 2020-12-28 09:39:19 +08:00 加好友过于频繁了 |
![]() | 13 woduzibue 2020-12-28 09:39:36 +08:00 对方被加好友过于频繁,请稍后再试. |
![]() | 14 nthhdy 2020-12-28 10:13:27 +08:00 搜不到这个微信 id 啊 |
![]() | 16 janxin 2020-12-28 10:20:38 +08:00 NTR 群? |
![]() | 17 LionMusician 2020-12-28 10:33:08 +08:00 给政委顶一波 |
19 chenxiaolani 2020-12-28 20:26:53 +08:00 才摸到电脑,给政委顶一波 群里大佬还是不少的,也会有不定的内推岗位,欢迎加入! |
![]() | 20 xiangbohua 2020-12-29 09:51:11 +08:00 今天不讲人文社科,改讲自然科学啦? |
![]() | 21 lewis89 OP @xiangbohua #20 随便讲点什么 |