Python开发者的完全指南 ·学习专业的Python风格、最佳实践和好的编程习惯; ·加强对Python对象、内存模型和Python面向对象特性的深入理解; ·构建更有效的Web、CGI、互联网、网络和其他客户端/服务器架构应用程序及软件; ·学习如何使用Python中的Tkinter和其他工具来 ...
分类:
编程语言 时间:
2020-06-03 00:34:59
阅读次数:
130
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。 这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范》 的规定,Java虚拟机所管理的内存将会包括以下几个 ...
分类:
其他好文 时间:
2020-05-30 22:09:29
阅读次数:
71
一开始就直接上代码,直接来看一段木有使用volatile关键字的线程调用代码吧: public class VolatileDemo { public static boolean stop = false; public static void main(String[] args) throws ...
分类:
编程语言 时间:
2020-05-30 19:59:55
阅读次数:
77
1.幸运而匆忙的一面 一面完等了差不多半个月才突然接到二面面试官的电话。 一面可能是简历面,所以问题比较简单。 ArrayList和LinkedList区别? ArrayList 是一个可改变大小的数组。 当更多的元素加入到ArrayList中时,其大小将会动态地增长。内部的元素可以直接通过get与 ...
分类:
编程语言 时间:
2020-05-26 12:00:44
阅读次数:
93
JMM内存模型 JMM即Java内存模型(Java Memory Model)。可以理解为它是一种抽象出来的硬件存储模型的规范。 根据JMM的设计,系统存在一个主内存(Main Memory),Java中所有变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存(Working Me ...
分类:
其他好文 时间:
2020-05-26 10:32:42
阅读次数:
88
一、内存分区模型 代码区:存放函数体的二进制代码,有操作系统进行管理的 存放CPU执行的机器指令 代码区是共享的,共享的目的是对频繁被执行的程序,只需要在内存中有一份代码即可 代码区是只读的,使其只读的原因是防止程序意外地修改了它的指令 全局区:存放全局变量和静态变量以及常量 全局变量和静态变量存放 ...
分类:
编程语言 时间:
2020-05-24 12:01:19
阅读次数:
68
1 缓存导致的可见性问题 一个线程对共享变量的修改,另一个线程可以立即看到,这称之为可见性。 Java内存模型规定所有的变量存储在主内存中。每个线程都有自己的工作内存,线程在工作内存中保存了使用到的主内存中变量的副本拷贝,线程对变量的操作必须在工作内存中进行,不能直接读写主内存中的变量。不同线程之间 ...
分类:
其他好文 时间:
2020-05-23 00:41:09
阅读次数:
77
2020-05-21 22:42:36 1.1.1 程序计数器 内存空间小,内存私有,字节码解释器工作就是通过这个计数器的值来选取下一条需要执行指令的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖计数器完成。 1.1.2 Java 虚拟机栈 线程私有,生命周期和线程一致。描述的 ...
分类:
编程语言 时间:
2020-05-22 00:12:20
阅读次数:
68
1.JVM内存模型 ?程序计数器:当前线程字所执行节码的行号指示器,用于记录正在执行的虚拟机字节指令地址,线程私有。 ?Java虚拟机栈:存放基本数据类型,对象的引用,方法出口等,线程私有。 ?本地方法栈:和虚拟栈类似,不过它服务于本地方法,线程私有。 ?Java堆:Java内存中最大的一块,所有对 ...
分类:
编程语言 时间:
2020-05-21 21:18:05
阅读次数:
64
对于内存模型的三大特性:有序性、原子性、可见性。 大家都知道volatile能保证可见性和有序性但是不能保证原子性,但是为什么呢? 一、原子性、有序性、可见性 1、原子性: (1)原子的意思代表着——“不可分”;(2)在整个操作过程中不会被线程调度器中断的操作,都可认为是原子性。原子性是拒绝多线程交 ...
分类:
其他好文 时间:
2020-05-18 22:53:52
阅读次数:
65