Kai`s memo

《Java Concurrency In Practice》阅读笔记(更新中...)

目前的观感 东西是好的,整体叙事结构也合理,但是每章内部的叙事逻辑有点混乱,加上形式化描述的使用,读起来不好读,心智负担比较大。 需要通读全书之后,仔细梳理一番。 这本书的整体结构如下: Chapter 1:介绍并发解决什么问题,又带来什么问题。 Part I:介绍并发和线程安全的理论,讲解如何用并发库构建线程安全的类。 Chapter 2&...

分布式理论学习笔记

部署在多节点上的应用就是分布式应用 部署在多个节点(物理机、虚拟机或者容器)上的应用就是分布式应用或者分布式系统,DNS 系统就是典型的分布式系统。 微服务应用几乎总是分布式应用,因为每个微服务部署在不同的节点中。 例外的情况是,虽然应用被拆分成了多个微服务,但是所有的微服务都部署在了同一个节点上。 分布式解决了单点故障和单机性能瓶颈问题 ...

计算机网络悟记

本文记录了我对计算机网络的理解,随着自己理解的变化会不断更新 我让 Gemini 帮我起了 悟记 这个名字来表达此意 文章结构 本文先抛出了一个常见的面试题:从键入网址到页面显示,这中间发生了什么? 通过回答这个问题来理解现代计算机网络的运行方式。 在描述时,会有意将数据在网络中的处理过程拆分为不同的阶段,同时深入过程中涉及的各个协议的细节,藉此来引入计算机网络的分层模型:...

Smoker problem

抽烟者问题 问题描述: 有一个供应者和三个抽烟者。每个抽烟者不停地卷烟并抽掉它,但要卷起并抽掉一支烟,抽烟者需要有三种材料:烟草、纸和胶水。三个抽烟者中第一个拥有烟草,第二个拥有纸,第三个拥有胶水。供应者进程无限地供应三种材料,供应者每次将两种材料放到桌子上,拥有剩下那种材料的的抽烟者卷起一根烟并抽掉它,并给供应者一个信号告诉已完成,此时供应者就会将另外两种材料放到桌上,如此重复(...

Sleeping barber problem

睡眠理发师问题 经典睡眠理发师问题 问题描述: 理发店有一位理发师、一把理发椅和 \(n\) 把供等候理发的顾客休憩的椅子;如果没有顾客,理发师便在理发椅上睡觉,当有顾客到来时,他唤醒理发师;如果理发师正在理发时又有新顾客来到,那么,如果还有空椅子,顾客就坐下来等待,否则就离开理发店。 经典问题,固定解法。如下: semaphore barber = 0; semaph...

Readers Writers problem

读者-写者问题 问题描述: 有读者和写者两组并发进程,共享一个文件,当多个读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时,则可能导致数据不一致的错误。因此要求: 允许多个读者同时对文件执行读操作; 只允许一个写者对文件执行写操作; 任何写者在完成写操作前不允许其他读者或写者工作; 写者在执...

Dining Philosophers problem

哲学家就餐问题 题目描述: 有 \(5\) 位哲学家围坐在一张圆桌旁,桌子中央放有一盘通心面,每人面前有一只空盘子,每两人之间放一把叉子;每位哲学家思考、饥饿,然后吃通心面;为了吃面,哲学家必须获得两把叉子,且每人只能从紧邻自己的左边或右边去取叉子。 为了避免 \(5\) 名哲学家同时拿起一边筷子导致死锁,有几种方法: 至多允许 \(4\) 名哲学家同时吃通...