V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lewis89
V2EX  ›  程序员

建一个技术交流 NT 群,不定期分享一些研究 欢迎加入

  •  
  •   lewis89 · 2020-12-27 22:00:31 +08:00 · 3200 次点击
    这是一个创建于 1428 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前做过两次分享,分别是 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== 注明加入内推技术交流群

    21 条回复    2020-12-29 09:52:19 +08:00
    suxiaotian
        1
    suxiaotian  
       2020-12-27 22:08:06 +08:00 via iPhone
    给政委顶一波
    liuhuan475
        2
    liuhuan475  
       2020-12-27 22:15:13 +08:00
    给政委顶一波
    ming168
        3
    ming168  
       2020-12-27 22:31:37 +08:00
    给政委顶一波
    Leigg
        4
    Leigg  
       2020-12-27 22:38:00 +08:00 via iPhone
    goroutine
    Thexz
        5
    Thexz  
       2020-12-27 23:25:47 +08:00
    小白可以进去学习吗
    stupil
        6
    stupil  
       2020-12-27 23:28:50 +08:00
    给政委顶一波
    laike9m
        7
    laike9m  
       2020-12-28 06:04:59 +08:00
    什么是 NT 群?
    lewis89
        8
    lewis89  
    OP
       2020-12-28 07:09:15 +08:00
    @laike9m #7 奶头乐群...你懂的内种自家公司 HR 不待见别家公司 HR 非常待见的群
    Dogtler
        9
    Dogtler  
       2020-12-28 08:18:27 +08:00 via Android
    给政委顶一波
    lewis89
        10
    lewis89  
    OP
       2020-12-28 08:56:06 +08:00
    @Thexz #5 随便加,加群后 吹水的时间肯定比讨论技术的时间多
    pythonee
        11
    pythonee  
       2020-12-28 09:11:41 +08:00
    什么是 NT 群
    burnbrid
        12
    burnbrid  
       2020-12-28 09:39:19 +08:00
    加好友过于频繁了
    woduzibue
        13
    woduzibue  
       2020-12-28 09:39:36 +08:00
    对方被加好友过于频繁,请稍后再试.
    nthhdy
        14
    nthhdy  
       2020-12-28 10:13:27 +08:00
    搜不到这个微信 id 啊
    lewis89
        15
    lewis89  
    OP
       2020-12-28 10:20:11 +08:00
    @nthhdy #14 base64 解码
    janxin
        16
    janxin  
       2020-12-28 10:20:38 +08:00
    NTR 群?
    LionMusician
        17
    LionMusician  
       2020-12-28 10:33:08 +08:00
    给政委顶一波
    caiji11
        18
    caiji11  
       2020-12-28 12:47:03 +08:00
    @laike 内推
    chenxiaolani
        19
    chenxiaolani  
       2020-12-28 20:26:53 +08:00
    才摸到电脑,给政委顶一波
    群里大佬还是不少的,也会有不定的内推岗位,欢迎加入!
    xiangbohua
        20
    xiangbohua  
       2020-12-29 09:51:11 +08:00
    今天不讲人文社科,改讲自然科学啦?
    lewis89
        21
    lewis89  
    OP
       2020-12-29 09:52:19 +08:00
    @xiangbohua #20 随便讲点什么
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3971 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:15 · PVG 12:15 · LAX 20:15 · JFK 23:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.