pull/6/head
yuanguangxin 4 years ago
parent 4ef5993d49
commit 4d3e6d1352

@ -716,16 +716,16 @@
<screen x="0" y="0" width="1440" height="900" />
</state>
<state x="458" y="204" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog/0.0.1440.900@0.0.1440.900" timestamp="1587221348872" />
<state x="404" y="60" key="CommitChangelistDialog2" timestamp="1592881815834">
<state x="404" y="60" key="CommitChangelistDialog2" timestamp="1592882002208">
<screen x="0" y="0" width="1920" height="1080" />
</state>
<state x="303" y="50" key="CommitChangelistDialog2/0.0.1440.900@0.0.1440.900" timestamp="1592388297859" />
<state x="404" y="60" key="CommitChangelistDialog2/0.0.1920.1080@0.0.1920.1080" timestamp="1592881815834" />
<state x="191" y="94" width="1536" height="864" key="DiffContextDialog" timestamp="1592881996931">
<state x="404" y="60" key="CommitChangelistDialog2/0.0.1920.1080@0.0.1920.1080" timestamp="1592882002208" />
<state x="191" y="94" width="1536" height="864" key="DiffContextDialog" timestamp="1592882219151">
<screen x="0" y="0" width="1920" height="1080" />
</state>
<state x="143" y="78" width="1152" height="720" key="DiffContextDialog/0.0.1440.900@0.0.1440.900" timestamp="1592386883631" />
<state x="191" y="94" width="1536" height="864" key="DiffContextDialog/0.0.1920.1080@0.0.1920.1080" timestamp="1592881996931" />
<state x="191" y="94" width="1536" height="864" key="DiffContextDialog/0.0.1920.1080@0.0.1920.1080" timestamp="1592882219151" />
<state x="143" y="78" width="1152" height="720" key="DiffContextDialog/0.23.1440.797@0.23.1440.797" timestamp="1588303139733" />
<state width="2151" height="333" key="GridCell.Tab.0.bottom" timestamp="1592301525961">
<screen x="0" y="0" width="2194" height="1194" />
@ -792,11 +792,11 @@
<screen x="0" y="0" width="1440" height="900" />
</state>
<state x="221" y="63" key="SettingsEditor/0.0.1440.900@0.0.1440.900" timestamp="1585223890241" />
<state x="427" y="228" key="Vcs.Push.Dialog.v2" timestamp="1592881816879">
<state x="427" y="228" key="Vcs.Push.Dialog.v2" timestamp="1592882003601">
<screen x="0" y="0" width="1920" height="1080" />
</state>
<state x="320" y="190" key="Vcs.Push.Dialog.v2/0.0.1440.900@0.0.1440.900" timestamp="1592388299499" />
<state x="427" y="228" key="Vcs.Push.Dialog.v2/0.0.1920.1080@0.0.1920.1080" timestamp="1592881816879" />
<state x="427" y="228" key="Vcs.Push.Dialog.v2/0.0.1920.1080@0.0.1920.1080" timestamp="1592882003601" />
<state x="488" y="252" key="Vcs.Push.Dialog.v2/0.0.2194.1194@0.0.2194.1194" timestamp="1591717170083" />
<state x="100" y="100" width="1240" height="700" key="com.intellij.history.integration.ui.views.FileHistoryDialog" timestamp="1587219014962">
<screen x="0" y="23" width="1440" height="797" />

@ -2,7 +2,7 @@
## ZooKeeper
### CAP定理
一个分布式系统不可能在满足分区容错性P的情况下同时满足一致性C和可用性A:。在此ZooKeeper保证的是CPZooKeeper不能保证每次服务请求的可用性在极端环境下ZooKeeper可能会丢弃一些请求消费者程序需要重新请求才能获得结果。另外在进行leader选举时集群都是不可用所以说ZooKeeper不能保证服务可用性。
一个分布式系统不可能在满足分区容错性P的情况下同时满足一致性C和可用性A。在此ZooKeeper保证的是CPZooKeeper不能保证每次服务请求的可用性在极端环境下ZooKeeper可能会丢弃一些请求消费者程序需要重新请求才能获得结果。另外在进行leader选举时集群都是不可用所以说ZooKeeper不能保证服务可用性。
### BASE理论
@ -743,6 +743,29 @@ Kafka最初考虑的问题是customer应该从brokes拉取消息还是brokers
4. 信号量:不能传递复杂消息,只能用来同步。
5. 共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存。
### 内存管理有哪几种方式
1. 块式管理把主存分为一大块、一大块的当所需的程序片断不在主存时就分配一块主存空间把程序片断load入主存就算所需的程序片度只有几个字节也只能把这一块分配给它。这样会造成很大的浪费平均浪费了50的内存空间但是易于管理。
2. 页式管理:把主存分为一页一页的,每一页的空间要比一块一块的空间小很多,显然这种方法的空间利用率要比块式管理高很多。
3. 段式管理:把主存分为一段一段的,每一段的空间又要比一页一页的空间小很多,这种方法在空间利用率上又比页式管理高很多,但是也有另外一个缺点。一个程序片断可能会被分为几十段,这样很多时间就会被浪费在计算每一段的物理地址上。
4. 段页式管理结合了段式管理和页式管理的优点。将程序分成若干段每个段分成若干页。段页式管理每取一数据要访问3次内存。
### 页面置换算法
1. 最佳置换算法OPT只具有理论意义的算法用来评价其他页面置换算法。置换策略是将当前页面中在未来最长时间内不会被访问的页置换出去。
2. 先进先出置换算法FIFO简单粗暴的一种置换算法没有考虑页面访问频率信息。每次淘汰最早调入的页面。
3. 最近最久未使用算法LRU算法赋予每个页面一个访问字段用来记录上次页面被访问到现在所经历的时间t每次置换的时候把t值最大的页面置换出去(实现方面可以采用寄存器或者栈的方式实现)。
4. 时钟算法clock(也被称为是最近未使用算法NRU)页面设置一个访问位并将页面链接为一个环形队列页面被访问的时候访问位设置为1。页面置换的时候如果当前指针所指页面访问为为0那么置换否则将其置为0循环直到遇到一个访问为位0的页面。
5. 改进型Clock算法在Clock算法的基础上添加一个修改位替换时根究访问位和修改位综合判断。优先替换访问位和修改位都是0的页面其次是访问位为0修改位为1的页面。
6. LFU最少使用算法LFU设置寄存器记录页面被访问次数每次置换的时候置换当前访问次数最少的。
### 操作系统中进程调度策略有哪几种
1. 先来先服务调度算法FCFS队列实现非抢占先请求CPU的进程先分配到CPU可以作为作业调度算法也可以作为进程调度算法按作业或者进程到达的先后顺序依次调度对于长作业比较有利.
2. 最短作业优先调度算法SJF作业调度算法算法从就绪队列中选择估计时间最短的作业进行处理直到得出结果或者无法继续执行平均等待时间最短但难以知道下一个CPU区间长度缺点不利于长作业未考虑作业的重要性运行时间是预估的并不靠谱.
3. 优先级调度算法(可以是抢占的,也可以是非抢占的)优先级越高越先分配到CPU相同优先级先到先服务存在的主要问题是低优先级进程无穷等待CPU会导致无穷阻塞或饥饿.
4. 时间片轮转调度算法(可抢占的)按到达的先后对进程放入队列中然后给队首进程分配CPU时间片时间片用完之后计时器发出中断暂停当前进程并将其放到队列尾部循环 ;队列中没有进程被分配超过一个时间片的CPU时间除非它是唯一可运行的进程。如果进程的CPU区间超过了一个时间片那么该进程就被抢占并放回就绪队列。
### 死锁的4个必要条件
1. 互斥条件:一个资源每次只能被一个线程使用;

Loading…
Cancel
Save