51
Dev开发社区
首页
文章
问答
工具
搜索
登录
注册
#深入理解计算机系统
深入理解java:2.2. 同步锁Synchronized及其实现原理
同步的基本思想为了保证共享数据在同一时刻只被一个线程使用,我们有一种很简单的实现思想,就是 在共享数据里保存一个锁 ,当没有线程访问时,锁是空的。当有第一个线程访问时,就 在锁里保存这个线程的标识 并允许这个线程访问共享数据。在当前线程释放共享数据之前,如果再有其他线程想要访问共...
代码星球
·
2021-01-30
深入
理解
java
2.2.
同步
深入理解java:2.1. volatile的使用及其原理
在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析...
代码星球
·
2021-01-30
深入
理解
java
2.1.
volatile
深入理解java:2. 多线程机制
很多人都对其中的一些概念不够明确,如同步、并发等等,让我们先理清一些概念,以免产生误会。多线程:指的是这个程序(一个进程)运行时,产生了不止一个线程。并行与并发:并行:多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时。并发:通过cpu调度算法,让用户看上去同时执行,实际上从cpu操作层面不是真正的同时。并发...
代码星球
·
2021-01-30
深入
理解
java
线程
机制
深入理解java:1.3.2 JVM监控与调优
学习JavaGC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之。本篇,来看看[如何监控和优化GC机制。] 通过学习,我觉得JVM监控与调优,主要在3个着眼点上:1,如何配置?2,如何监控?3,如何优化? 首先,先来看看[1,如何配置?]参数设置在Java虚拟机的参数中,有3种表示...
代码星球
·
2021-01-30
深入
理解
java
1.3.2
JVM
深入理解java:1.3.1 JVM内存区域的划分(运行时数据区)
学习JavaGC机制,可以帮助我们在日常工作中排查各种内存溢出或泄露问题,解决性能瓶颈,达到更高的并发量,写出更高效的程序。 我们将从4个方面学习JavaGC机制,1,内存是如何分配的;2,哪些内存需要回收;3,在什么情况下执行GC以及执行GC的方式;4,如何监控和优化GC机制。 先来看看[1,内存...
代码星球
·
2021-01-30
深入
理解
java
1.3.1
JVM
深入理解java:1.3. 垃圾收集
某一个时点,一个对象如果有一个以上的引用(Rreference)指向它,那么该对象就为活着的(Live),否则死亡(Dead),视为垃圾,可被垃圾回收器回收再利用。 垃圾回收操作需要消耗CPU、线程、时间等资源,所以容易理解的是垃圾回收操作不是实时的发生(对象死亡后不会马上释放),当内存消耗完或者...
代码星球
·
2021-01-30
深入
理解
java
1.3.
垃圾
深入理解java:1.2. 字节码执行引擎
执行引擎是Java虚拟机的核心组成部分之一。 首先,想想C++和Java在编译和运行时到底有啥不一样?下图左边,C++发布的就是机器指令,而下图右边Java发布的是字节码,字节码在运行时通过JVM的类加载器,加载到JVM的虚拟内存的方法区,再通过编译器、解释器做一次转换生成机器指令。执行引擎正是执行了这样的过...
代码星球
·
2021-01-30
深入
理解
java
1.2.
字节
深入理解java:1.1.1. 反射机制
反射到底什么是反射(Reflection)呢?反射有时候也被称为内省(Introspection),事实上,反射,就是一种内省的方式,Java不允许在运行时改变程序结构或类型变量的结构,但它允许在运行时去探知、加载、调用在编译期完全未知的class,可以在运行时加载该class,生成实例对象(instanceobjec...
代码星球
·
2021-01-30
深入
理解
java
1.1.1.
反射
深入理解java:1.1. 类加载器
我们知道,Java是一种动态语言。那么怎样理解这个“动态”呢?或者说一门语言具备了什么特性,才能称之为动态语言呢? 对于java,我是这样理解的。我们都知道JVM(java虚拟机)执行的不是本地机器码指令,而是执行一种称之为字节码的指令(存在于class文件中)。这就要求虚拟机在真正执行字节码之前...
代码星球
·
2021-01-30
深入
理解
java
1.1.
加载
计算机专业课系列之五:漫谈文件系统
一,机械硬盘二,文件和目录1,解释c:确定在哪个柱面h:确定在哪个磁头s:确定在哪个扇区先找到柱面,然后找到磁头(磁头决定哪个盘片),最后确定在哪个扇区。按照(C,H,S)将扇区形成一维扇区数组,数组索引就是扇区编号。2,用户是无法直接访问扇区的,操作系统把扇区抽象成文件。(文件是我们操作硬盘的最小单位)元数据:描述数...
代码星球
·
2021-01-30
计算机
专业课
系列
之五
漫谈
计算机专业课系列之四:漫谈操作系统之虚拟内存
一,虚拟内存的三条总结1,将内存看做硬盘的高速缓存 内存中只保存程序的活动区域(数据) 根据需要在硬盘和内存之间传递数据2,为每个进程提供一个一致的地址空间3,保护每个进程的地址空间不被其他进程破坏 每个进程都有一块独立的地址空间,那么进程之间是隔离的。但是我们只有一块物理上的内存,怎么隔离呢?这就是虚拟内存的一...
代码星球
·
2021-01-30
计算机
专业课
系列
之四
漫谈
计算机专业课系列之三:进程和线程
一,操作系统的关键抽象解析:1,把IO设备抽象成文件,这样用户不用直接面对硬盘做操作了,因为硬盘是复杂的机械式设备(磁盘块,旋转,扇区等)。操作系统不仅把IO设备抽象成文件。还包括控制台,输入输出设备都可以抽象成文件。2,物理主存+IO设备抽象成虚拟存储器。虚拟存储器是对内存和硬盘的抽象,他让每个进程都有一个超级大的内...
代码星球
·
2021-01-30
计算机
专业课
系列
之三
进程
计算机专业课系列之二:程序的机器表示(汇编)
一,预备知识:1,堆栈应用:函数调用(先进后出),数组遍历,表达式计算2,寄存器寄存器是是cpu中临时存储数据的地方,非常小,但是非常快。cpu进行计算时,cpu不能直接对内存中的两个数据进行操作。他必须先装入寄存器中,然后才进行加减等操作。我们最常用的是AX,BX,CX,DX。它们都是16位的。现在都扩展...
代码星球
·
2021-01-30
计算机
专业课
系列
之二
程序
计算机专业课系列之一:漫谈计算机组成原理和编程语言
一,冯诺伊曼结构的计算机1,计算机的五大组成部分 运算器+控制器(CPU),存储器(内存+硬盘),输出设备(显示器),输入设备(鼠标和键盘)。2,数据和指令以二进制形式,不加区别的存放在存储器中。数据和指令存储在一块,存储在一个存储器中是风诺伊曼结构的重要标志3,冯诺伊曼结构的计算机的工作原理内存是一个线性结...
代码星球
·
2021-01-30
计算机
专业课
系列
之一
漫谈
Linux系统编程之事件驱动
通常,我们写服务器处理模型的程序时,有以下几种模型:(1)每收到一个请求,创建一个新的进程,来处理该请求;(2)每收到一个请求,创建一个新的线程,来处理该请求;(3)每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求分析:第(1)中方法,由于创建新的进程的开销比较大,所以,会导致服务器性能比较差,...
代码星球
·
2021-01-30
Linux
系统
编程
事件
驱动
首页
上一页
...
44
45
46
47
48
...
下一页
尾页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他