GMP调度模型详解 | Golang

程序员通常提到的线程都是用户线程,而操作系统是不知道用户线程这个东西的,操作系统跑的是内核线程,那么这两者之间就必须要有一种联系。所以会有以下几种常见的线程模型一、线程模型一对一线程模型一对一线程模型,也叫内核级线程模型。一个内核线程对应一个用户线程,内核负责每个线程的调度。实现简单,但是线程的创建、删除和切换的代价都由 CPU 完成,代价较高。Java用的就是这种模型。多对一线程模型多对一线程模

- 阅读全文 -

不懂多态的实现原理?只需要记住一句话 | Java

面向对象编程的语言里,多态是一个非常重要的特性,优点很多,类型解耦,灵活性,可替代性,接口性等。面向对象编程的三大特性:封装、继承,多态。封装和继承都很好理解,多态可能你每天都在用,但却不知道怎么解释它,当然,这也是新手从入门到放弃一个必经之路☺一、多态概念多态?顾名思义,就是一种行为具有多种形态。再具体一点,就是同一个接口,有多个不同的实现。要完全理解Java里的多态,还需要知道两个概念:向上转

- 阅读全文 -

Interface和struct几个易混淆的点 | Golang

在golang中,struct是设计来存储一组同一个类型或不同类型的数据的一个数据集合,是一种值类型,所以传递时需要区分是否传递其指针。interface也是一种数据结构,存储的是一组具有共性的方法,但是只做定义,其他类型只要实现了这些方法,就是实现了这个接口,可以类比JAVA中的抽象类。使用struct时,可以直接使用func方法数据结构中使用的方法,但是为了解耦这种方式,还是推荐使用inter

- 阅读全文 -

如何理解Java内存模型?| 内存泄漏&内存溢出

大家都知道Java能跨平台,是因为JVM,它屏蔽了底层操作系统和物理计算机的差异。Java中还有一个非常重要的概念,JMM(Java Memory Model),Java内存模型,JMM 也是 JVM 规范里定义的一部分,JMM 定义了 JVM 在计算机内存中的工作方式。Java 内存模型方法区:线程共享的一个区域,用于存储虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。在JVM

- 阅读全文 -

协程 & Python异步编程(asyncio)

协程(Coroutine)也可以被称为微线程,是一种用户态内的上下文切换技术。简而言之,其实就是通过一个线程实现代码块相互切换执行。说协程之前,先用一张表来说明进程、线程、协程的异同进程线程协程定义系统进行资源分配和调度的独立单位是进程的一个实体,是cpu调度和分配的基本单位微线程,比线程小,占用更少,cpu其实不知道协程的存在功能完成多任务,例如一台电脑同时运行多个QQ,多用于计算密集型完成多任

- 阅读全文 -