- 博客(105)
- 收藏
- 关注
原创 【IPC】 共享内存
共享内存允许两个或者多个进程共享给定的存储区域。共享内存的特点1、 共享内存是进程间共享数据的一种最快的方法。一个进程向共享的内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。2、使用共享内存要注意的是多个进程之间对一个给定存储区访问的互斥。若一个进程正在向共享内存区写数据,则在它做完这一步操作前,别的进程不应当去读、写这些数据。共享内存示意图总结:共享内存是进程间通信方式中效率最高的,原因在于进程是直接在物理内存上进行操作,将物理地址映射到用户进程这,
2023-11-19 21:34:20 225
原创 【IPC】消息队列
2.1 消息队列的概念消息队列是消息的链表,存放在内存中,由内核维护消息队列的特点1、消息队列中的消息是有类型的。2、消息队列中的消息是有格式的。3、消息队列可以实现消息的随机查询。消息不一定要以先进先出的次序读取,编程时可以按消息的类型读取4、消息队列允许一个或多个进程向它写入或者读取消息。5、与无名管道、命名管道一样,从消息队列中读出消息,消息队列中对应的数据都会被删除。6、每个消息队列都有消息队列标识符,消息队列的标识符在整个系统中是唯一的。
2023-11-19 13:00:31 327
原创 【C/C++】结构体内存分配问题
4字节对齐,即存放double型变量的起始地址,必须是4的倍数,double变量。(4):long 在32位平台下,4字节对齐 ,即存放long int 型的变量,占1个内存单元,但是要补3个,凑到4(规则1)2字节对齐 ,即存放short int 型的变量,起始内存单元的编号是2的倍。4字节对齐 ,即存放float 型的变量,起始内存单元的编号是4的倍数即。1字节对齐 ,即存放char型的变量,内存单元的编号是1的倍数即可。4字节对齐 ,即存放int 型的变量,起始内存单元的编号是4的倍数即。
2023-10-09 19:45:17 714 1
原创 【JVM】运行时数据区之方法区——自问自答
开局从康师傅那里借图几张线程共享与私有《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。” 但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开。所以,方法区看作是一块独立于Java堆的内存空间.方法区 (Method Area)与Java堆一样,是各个线程共享的内存区域。
2023-09-26 15:12:26 388
原创 【JVM】运行时数据区之 堆——自问自答
一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域Java 堆区在JVM 启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。堆整体上分为年轻代+老年代> 堆内存的大小是可以调节的。-Xms 堆的初始值大小 等价于:-XX:InitialHeapSize-Xmx 堆的最大值大小 等价于:-XX:MaxHeapSize比如设置堆的初始值为6兆-Xms6144k-Xms6m。
2023-09-25 22:15:30 298
原创 【计算机网络】——应用层
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP地址,要么告诉本地域名服务器:“你下一步应当向哪个顶级域名服务器进行查询”。也就是说,如果本地主机所询问的本地域名服务器不知道被查询域名的 iP 地址,那么本地域名服务器就以DNS客户的身份,向根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自已进行下一步的查询。域名到IP 地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的(或有权限的)范围称为区(不以“域”为单位)。
2023-09-21 13:32:21 552
原创 【计算机网络】——传输层
物理层、数据链路层、网络层是通信子网。传输层:它属于面向通信部分的最高层,同时也是用户功能的最低层为应用层提供通信服务使用网络层的服务网络层提供主机之间的逻辑通信。
2023-09-19 20:29:56 643
原创 线索二叉树——找前驱、后继
一个二叉树被线索化之后,一个节点的前驱或后继会存在两种情况,1、tag=1,有明确的线索化前驱或后继,2、tag=0,只存在左右孩子,但是没用明确的线索化前驱后继,需要分析//线索二叉树结点定义int data;
2023-08-24 17:54:56 3575 1
原创 【JUC】复习指南
这组过程可以根据资源共享的情况,或接收或阻塞进程的访问,确保每次仅仅有一个进程使用共享资源,这样就实现对共享资源的统一管理,实现互斥。但是有了接收缓存队列后,生产者可以保持运行,也不必等待消费者必须把缓冲区的内容消费了,生产者可以生产到缓存队列满了再停等,减少了系统的停等时间。通过一个缓存队列,把生产者和消费者的直接制约关系破坏,打破同步,形成异步关系,可以有效提高CPU的利用率,减少空等时间,提高了系统吞吐量。我们可以看到,JVM中的管程是线程粒度的,毕竟,一个JVM只对应一个工作进程。
2023-08-09 17:27:49 199
原创 【JVM】 垃圾回收篇——自问自答(1)
新生代中有YGC/MinorGC, 当Eden区满的时候触发,并使用复制算法,和分代策略,将Eden区和from区的存活对象 放到to区,如果存不下,就直接晋升老年代。对象(new A()),被对象 ReferenceClass的静态变量引用,我们知道类变量的初始化是在类加载三部曲的初始化阶段,随着类卸载而消亡。比如使用G1回收器时,新生代的region里的对象,被老年代的某些对象所引用。因为从内存解构上,局部引用是在虚拟机栈的局部变量表中的,而类内的成员变量引用,是在堆内的。
2023-08-06 15:06:10 1087 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人