自学内容网 自学内容网

9.22学习记录

进程间通信方式

管道、有名管道、共享内存、消息队列、信号、信号量、套接字

JVM内存模型

私有:程序计数器、本地方法栈、虚拟机栈

公有部分:堆、方法区

equals和hashcode有什么区别和联系?

equals默认比较两个对象的引用,但是实际需要更多的是判断两个对象的值是否相等,所有我们通常要进行重写                                                 

hashcode是返回对象的哈希码值,而这个哈希码值默认是对地址的哈希,如果equals进行了重写,则hashcode必须重写

在HashMap我们先通过hashcode来找出对象在数组中的位置,再通过equals来比较是否相等,可以减少equals的调用次数

为什么栈内存的空间使用效率高于堆内存?

  1. 栈内存管理简单,不需要进行垃圾回收
  2. 栈内存操作是顺序的,分配非常快
  3. 不容易产生内存碎片

为什么内存访问速度高于磁盘?

  1. 存储介质和技术差异 两种不同的存储介质,工作原理和技术特性存在很大差异。内存通常使用半导体技术制造。而磁盘则依赖机械或基于闪存的技术来读写数据。
  2. 访问延迟 内存可以直接通过电子信号访问。磁盘访问涉及到寻道时间、旋转延迟以及数据传输时间。
  3. 数据传输速率 内存的数据传输速率通常比磁盘高得多。内存--高速总线--CPU通信,而磁盘--I/O控制器--总线或网络--CPU。
  4. 缓存机制 现代计算机系统使用多层次缓存来提高数据访问速度。CPU缓存是最接近处理器的高速缓存,访问速度极快。还有L2和L3缓存层,缓存层可以进一步减少从内存到CPU的数据传输时间。而磁盘数据通常需要通过内存缓冲区或其他形式的缓存来加速访问。
  5. 并发访问能力 内存支持并发访问,可以同时处理多个请求。而磁盘的并发访问能力相对较弱。
  6. 数据组织 内存中的数据组织更为紧凑,通常按照页或段的方式组织。而磁盘上的数据可能会因为碎片化而分布在不同的物理位置。

http各版本的比较

1.0和1.1

1.1支持长连接,引入更多的状态码如409、410,引入多种缓存机制,允许请求部分更节省带宽,并且Host可以设置多个域名

2.0支持多路复用,HPACK头部压缩,服务器推送和二进制帧传输

3.0引入了quik协议,连接建立只需要0次或1次握手,利用多个数据流解决了队头阻塞问题,使用HPACK算法来进行头部压缩,有更好的错误恢复和安全性

UDP如何解决丢包问题?

UDP本身是无状态的,但是可以通过再应用层引入一些机制来保证可靠性

序列号机制、ACK机制、超时重传、冗余数据、多路传输、心跳机制

UDP传输效率为什么高?

无连接,减少握手过程延迟

头部开销比TCP小

不提供确认机制,减少往返通信次数

无流量/拥塞控制,最大化利用网络带宽

较少的错误检测

数据库三大范式

  1. 表中的字段不能再被分割,只能是一个值
  2. 消除了非主属性对码的部分函数依赖
  3. 消除了非主属性对码的传递函数依赖

原文地址:https://blog.csdn.net/w75779/article/details/142439105

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!