mirror of
https://github.com/zhwei820/learn.lianglianglee.com.git
synced 2025-09-23 03:36:41 +08:00
220 lines
17 KiB
HTML
220 lines
17 KiB
HTML
<!DOCTYPE html>
|
||
<!-- saved from url=(0046)https://kaiiiz.github.io/hexo-theme-book-demo/ -->
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
|
||
<link rel="icon" href="/static/favicon.png">
|
||
<title>note-submit</title>
|
||
<!-- Spectre.css framework -->
|
||
<link rel="stylesheet" href="/static/index.css">
|
||
<!-- theme css & js -->
|
||
<meta name="generator" content="Hexo 4.2.0">
|
||
</head>
|
||
<body>
|
||
<div class="book-container">
|
||
<div class="book-sidebar">
|
||
<div class="book-brand">
|
||
<a href="/">
|
||
<img src="/static/favicon.png">
|
||
<span>技术文章摘抄</span>
|
||
</a>
|
||
</div>
|
||
<div class="book-menu uncollapsible">
|
||
<ul class="uncollapsible">
|
||
<li><a href="/" class="current-tab">首页</a></li>
|
||
</ul>
|
||
<ul class="uncollapsible">
|
||
<li><a href="../">上一级</a></li>
|
||
</ul>
|
||
<ul class="uncollapsible">
|
||
<li>
|
||
<a href="/PDF">PDF</a>
|
||
</li>
|
||
<li>
|
||
<a href="/专栏">专栏</a>
|
||
</li>
|
||
<li>
|
||
<a href="/恋爱必修课">恋爱必修课</a>
|
||
</li>
|
||
<li>
|
||
<a href="/文章">文章</a>
|
||
</li>
|
||
<li>
|
||
<a href="/极客时间">极客时间</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="sidebar-toggle" onclick="sidebar_toggle()" onmouseover="add_inner()" onmouseleave="remove_inner()">
|
||
<div class="sidebar-toggle-inner"></div>
|
||
</div>
|
||
<script>
|
||
function add_inner() {
|
||
let inner = document.querySelector('.sidebar-toggle-inner')
|
||
inner.classList.add('show')
|
||
}
|
||
|
||
function remove_inner() {
|
||
let inner = document.querySelector('.sidebar-toggle-inner')
|
||
inner.classList.remove('show')
|
||
}
|
||
|
||
function sidebar_toggle() {
|
||
let sidebar_toggle = document.querySelector('.sidebar-toggle')
|
||
let sidebar = document.querySelector('.book-sidebar')
|
||
let content = document.querySelector('.off-canvas-content')
|
||
if (sidebar_toggle.classList.contains('extend')) { // show
|
||
sidebar_toggle.classList.remove('extend')
|
||
sidebar.classList.remove('hide')
|
||
content.classList.remove('extend')
|
||
} else { // hide
|
||
sidebar_toggle.classList.add('extend')
|
||
sidebar.classList.add('hide')
|
||
content.classList.add('extend')
|
||
}
|
||
}
|
||
|
||
function open_sidebar() {
|
||
let sidebar = document.querySelector('.book-sidebar')
|
||
let overlay = document.querySelector('.off-canvas-overlay')
|
||
sidebar.classList.add('show')
|
||
overlay.classList.add('show')
|
||
}
|
||
|
||
function hide_canvas() {
|
||
let sidebar = document.querySelector('.book-sidebar')
|
||
let overlay = document.querySelector('.off-canvas-overlay')
|
||
sidebar.classList.remove('show')
|
||
overlay.classList.remove('show')
|
||
}
|
||
</script>
|
||
<div class="off-canvas-content">
|
||
<div class="columns">
|
||
<div class="column col-12 col-lg-12">
|
||
<div class="book-navbar">
|
||
<!-- For Responsive Layout -->
|
||
<header class="navbar">
|
||
<section class="navbar-section">
|
||
<a onclick="open_sidebar()">
|
||
<i class="icon icon-menu"></i>
|
||
</a>
|
||
</section>
|
||
</header>
|
||
</div>
|
||
<div class="book-content"
|
||
style="max-width: 960px; margin: 0 auto; overflow-x: auto; overflow-y: hidden;">
|
||
<div class="book-post">
|
||
<p id="tip" align="center"></p>
|
||
<div><!--add content-->
|
||
<h1>重学操作系统-完</h1>
|
||
<ul>
|
||
<li><a href = '\专栏\重学操作系统-完\00 开篇词 为什么大厂面试必考操作系统?.md.html'>00 开篇词 为什么大厂面试必考操作系统?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\00 课前必读 构建知识体系,可以这样做!.md.html'>00 课前必读 构建知识体系,可以这样做!</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\01 计算机是什么:“如何把程序写好”这个问题是可计算的吗?.md.html'>01 计算机是什么:“如何把程序写好”这个问题是可计算的吗?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\02 程序的执行:相比 32 位,64 位的优势是什么?(上).md.html'>02 程序的执行:相比 32 位,64 位的优势是什么?(上)</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\03 程序的执行:相比 32 位,64 位的优势是什么?(下).md.html'>03 程序的执行:相比 32 位,64 位的优势是什么?(下)</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\04 构造复杂的程序:将一个递归函数转成非递归函数的通用方法.md.html'>04 构造复杂的程序:将一个递归函数转成非递归函数的通用方法</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\05 存储器分级:L1 Cache 比内存和 SSD 快多少倍?.md.html'>05 存储器分级:L1 Cache 比内存和 SSD 快多少倍?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\05 (1) 加餐 练习题详解(一).md.html'>05 (1) 加餐 练习题详解(一)</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\06 目录结构和文件管理指令:rm -rf 指令的作用是?.md.html'>06 目录结构和文件管理指令:rm -rf 指令的作用是?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\07 进程、重定向和管道指令:xargs 指令的作用是?.md.html'>07 进程、重定向和管道指令:xargs 指令的作用是?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\08 用户和权限管理指令: 请简述 Linux 权限划分的原则?.md.html'>08 用户和权限管理指令: 请简述 Linux 权限划分的原则?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\09 Linux 中的网络指令:如何查看一个域名有哪些 NS 记录?.md.html'>09 Linux 中的网络指令:如何查看一个域名有哪些 NS 记录?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\10 软件的安装: 编译安装和包管理器安装有什么优势和劣势?.md.html'>10 软件的安装: 编译安装和包管理器安装有什么优势和劣势?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\11 高级技巧之日志分析:利用 Linux 指令分析 Web 日志.md.html'>11 高级技巧之日志分析:利用 Linux 指令分析 Web 日志</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\12 高级技巧之集群部署:利用 Linux 指令同时在多台机器部署程序.md.html'>12 高级技巧之集群部署:利用 Linux 指令同时在多台机器部署程序</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\12 (1)加餐 练习题详解(二).md.html'>12 (1)加餐 练习题详解(二)</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\13 操作系统内核:Linux 内核和 Windows 内核有什么区别?.md.html'>13 操作系统内核:Linux 内核和 Windows 内核有什么区别?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\14 用户态和内核态:用户态线程和内核态线程有什么区别?.md.html'>14 用户态和内核态:用户态线程和内核态线程有什么区别?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\15 中断和中断向量:Javajs 等语言为什么可以捕获到键盘输入?.md.html'>15 中断和中断向量:Javajs 等语言为什么可以捕获到键盘输入?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\16 WinMacUnixLinux 的区别和联系:为什么 Debian 漏洞排名第一还这么多人用?.md.html'>16 WinMacUnixLinux 的区别和联系:为什么 Debian 漏洞排名第一还这么多人用?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\16 (1)加餐 练习题详解(三).md.html'>16 (1)加餐 练习题详解(三)</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\17 进程和线程:进程的开销比线程大在了哪里?.md.html'>17 进程和线程:进程的开销比线程大在了哪里?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\18 锁、信号量和分布式锁:如何控制同一时间只有 2 个线程运行?.md.html'>18 锁、信号量和分布式锁:如何控制同一时间只有 2 个线程运行?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\19 乐观锁、区块链:除了上锁还有哪些并发控制方法?.md.html'>19 乐观锁、区块链:除了上锁还有哪些并发控制方法?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\20 线程的调度:线程调度都有哪些方法?.md.html'>20 线程的调度:线程调度都有哪些方法?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\21 哲学家就餐问题:什么情况下会触发饥饿和死锁?.md.html'>21 哲学家就餐问题:什么情况下会触发饥饿和死锁?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\22 进程间通信: 进程间通信都有哪些方法?.md.html'>22 进程间通信: 进程间通信都有哪些方法?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\23 分析服务的特性:我的服务应该开多少个进程、多少个线程?.md.html'>23 分析服务的特性:我的服务应该开多少个进程、多少个线程?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\23 (1)加餐 练习题详解(四).md.html'>23 (1)加餐 练习题详解(四)</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\24 虚拟内存 :一个程序最多能使用多少内存?.md.html'>24 虚拟内存 :一个程序最多能使用多少内存?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\25 内存管理单元: 什么情况下使用大内存分页?.md.html'>25 内存管理单元: 什么情况下使用大内存分页?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\26 缓存置换算法: LRU 用什么数据结构实现更合理?.md.html'>26 缓存置换算法: LRU 用什么数据结构实现更合理?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\27 内存回收上篇:如何解决内存的循环引用问题?.md.html'>27 内存回收上篇:如何解决内存的循环引用问题?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\28 内存回收下篇:三色标记-清除算法是怎么回事?.md.html'>28 内存回收下篇:三色标记-清除算法是怎么回事?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\28 (1)加餐 练习题详解(五).md.html'>28 (1)加餐 练习题详解(五)</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\29 Linux 下的各个目录有什么作用?.md.html'>29 Linux 下的各个目录有什么作用?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\30 文件系统的底层实现:FAT、NTFS 和 Ext3 有什么区别?.md.html'>30 文件系统的底层实现:FAT、NTFS 和 Ext3 有什么区别?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\32 HDFS 介绍:分布式文件系统是怎么回事?.md.html'>32 HDFS 介绍:分布式文件系统是怎么回事?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\32 (1)加餐 练习题详解(六).md.html'>32 (1)加餐 练习题详解(六)</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\33 互联网协议群(TCPIP):多路复用是怎么回事?.md.html'>33 互联网协议群(TCPIP):多路复用是怎么回事?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\34 UDP 协议:UDP 和 TCP 相比快在哪里?.md.html'>34 UDP 协议:UDP 和 TCP 相比快在哪里?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\35 Linux 的 IO 模式:selectpollepoll 有什么区别?.md.html'>35 Linux 的 IO 模式:selectpollepoll 有什么区别?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\36 公私钥体系和网络安全:什么是中间人攻击?.md.html'>36 公私钥体系和网络安全:什么是中间人攻击?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\36 (1)加餐 练习题详解(七).md.html'>36 (1)加餐 练习题详解(七)</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\37 虚拟化技术介绍:VMware 和 Docker 的区别?.md.html'>37 虚拟化技术介绍:VMware 和 Docker 的区别?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\38 容器编排技术:如何利用 K8s 和 Docker Swarm 管理微服务?.md.html'>38 容器编排技术:如何利用 K8s 和 Docker Swarm 管理微服务?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\39 Linux 架构优秀在哪里.md.html'>39 Linux 架构优秀在哪里</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\40 商业操作系统:电商操作系统是不是一个噱头?.md.html'>40 商业操作系统:电商操作系统是不是一个噱头?</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\40 (1)加餐 练习题详解(八).md.html'>40 (1)加餐 练习题详解(八)</a></li>
|
||
<li><a href = '\专栏\重学操作系统-完\41 结束语 论程序员的发展——信仰、选择和博弈.md.html'>41 结束语 论程序员的发展——信仰、选择和博弈</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<a class="off-canvas-overlay" onclick="hide_canvas()"></a>
|
||
</div>
|
||
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194"
|
||
integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw=="
|
||
data-cf-beacon='{"rayId":"70996b2f083d3d60","version":"2021.12.0","r":1,"token":"1f5d475227ce4f0089a7cff1ab17c0f5","si":100}'
|
||
crossorigin="anonymous"></script>
|
||
</body>
|
||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NPSEEVD756"></script>
|
||
<script>
|
||
window.dataLayer = window.dataLayer || [];
|
||
|
||
function gtag() {
|
||
dataLayer.push(arguments);
|
||
}
|
||
|
||
gtag('js', new Date());
|
||
gtag('config', 'G-NPSEEVD756');
|
||
var path = window.location.pathname
|
||
var cookie = getCookie("lastPath");
|
||
console.log(path)
|
||
if (path.replace("/", "") === "") {
|
||
if (cookie.replace("/", "") !== "") {
|
||
console.log(cookie)
|
||
document.getElementById("tip").innerHTML = "<a href='" + cookie + "'>跳转到上次进度</a>"
|
||
}
|
||
} else {
|
||
setCookie("lastPath", path)
|
||
}
|
||
|
||
function setCookie(cname, cvalue) {
|
||
var d = new Date();
|
||
d.setTime(d.getTime() + (180 * 24 * 60 * 60 * 1000));
|
||
var expires = "expires=" + d.toGMTString();
|
||
document.cookie = cname + "=" + cvalue + "; " + expires + ";path = /";
|
||
}
|
||
|
||
function getCookie(cname) {
|
||
var name = cname + "=";
|
||
var ca = document.cookie.split(';');
|
||
for (var i = 0; i < ca.length; i++) {
|
||
var c = ca[i].trim();
|
||
if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
|
||
}
|
||
return "";
|
||
}
|
||
</script>
|
||
</html>
|