暂无搜索历史
操作系统针对多个线程的执行,是一个“随机调度,抢占式执行的过程”。因为我们写代码的时候不希望是随机,希望是确定,所以期望通过一些变成手段来对这里的随机进行干预
在多个线程同时执行某个代码的时候,可能会引起一些奇怪的 bug。理解了线程安全,才能避免/解决上述的 bug
一个或多个线程因为无法获得执行所需的资源(如CPU时间、锁、或其他同步控制)而被长时间阻塞或延迟执行的情况。尽管这些线程可能处于可执行状态并且已经准备好运行,但...
但如果是你洗碗,就会把碗先泡一会再洗,但这样容易忘记,一拖,就拖到了下顿使用碗的时候才会洗
基于阻塞队列,最大的应用场景,就是实现“生产者消费者模型”(日常开发中,常见的编程手法)
此时,各元素可以被顺利地添加到这个优先级队列中了,各个任务已经可以被我们用优先级队列管理起来了
synchronized:只是市面上五花八门的锁种,其中一种典型的实现,Java 内置的,推荐使用的锁
偏向锁不是真的加锁,因为真的加锁开销比较大,偏向锁只是做个标记,标记的过程,非常的轻量高效(比轻量级锁还要轻量)
CAS 的关键不在于这个逻辑是干什么的,而是在于通过“一个 CPU 指令”完成上述一系列的操作
所以创建一个线程,希望它给你返回一个结果,那么使用 Callable 更加方便一些
网络上传输的数据:光信号(光纤,激光的光)/电信号(网线里的)/电磁波(WiFi、5G...)
操作系统给应用程序(传输层给应用层)提供的 API,起了个名字,就叫 Socket API
客户端发送什么样的请求,服务器就返回什么样的响应,没有任何业务逻辑,没有进行任何计算或者处理
不像 UDP 有 DatagramPacket 是专门的“UDP 数据报”,TCP 没有专门的“TCP 数据报”
针对这个问题,还有一个方案能解决这个问题,虽然数目非常多,但仍然可以使用较少的线程,提供高效的服务——IO 多路复用
关于组织数据的格式,还有一些说法,上述“行文本”简单粗暴的方案,在实际开发中,很少会这样做
UDP 用了好多年,一直挺好用,但随着业务的发展,广告越来越多,越来越复杂,导致一个网络响应数据报的体积越来越大,逐渐逼近 64 KB。一旦数据超过了 64 K...
TCP 最核心的资质就是“可靠传输”,不能做到 100% 送达,只能尽可能的是数据能到达对方方
暂未填写公司和职称
暂未填写个人简介
暂未填写技能专长
暂未填写学校和专业
暂未填写个人网址
暂未填写所在城市