<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>专业课 on My New Hugo Project</title><link>https://scqwq.github.io/categories/%E4%B8%93%E4%B8%9A%E8%AF%BE/</link><description>Recent content from My New Hugo Project</description><generator>Hugo</generator><language>en</language><managingEditor>xxx@example.com (scqwq)</managingEditor><webMaster>xxx@example.com (scqwq)</webMaster><copyright>All articles on this blog are licensed under the BY-NC-SA license agreement unless otherwise stated. Please indicate the source when reprinting!</copyright><lastBuildDate>Sun, 03 May 2026 11:00:00 +0800</lastBuildDate><atom:link href="https://scqwq.github.io/categories/%E4%B8%93%E4%B8%9A%E8%AF%BE/index.xml" rel="self" type="application/rss+xml"/><item><title>计网</title><link>https://scqwq.github.io/post/web/</link><pubDate>Sun, 03 May 2026 11:00:00 +0800</pubDate><author>xxx@example.com (scqwq)</author><guid>https://scqwq.github.io/post/web/</guid><description>
<![CDATA[<h1>计网</h1><p>Author: scqwq(xxx@example.com)</p>
        
          <h1 id="计网">
<a class="header-anchor" href="#%e8%ae%a1%e7%bd%91"></a>
计网
</h1><p><img src="C:%5CUsers%5C56955%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20260201165102084.png" alt="image-20260201165102084"></p>
<p>Socket其实就是一个门面模式，它把复杂的TCP/IP协议族隐藏在Socket后面，对用户来说只需要调用Socket规定的相关函数，让Socket去组织符合指定的协议数据然后进行通信。</p>
<p>Socket可以理解为TCP/IP网络的API，它定义了许多函数或例程，程序员可以用它们来开发TCP/IP网络上的应用程序。</p>
<p><img src="C:%5CUsers%5C56955%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20260201181725112.png" alt="image-20260201181725112"></p>
<p>WebSocket是一种在单个TCP连接上进行全双工通信的协议
WebSocket使得客户端和服务器之间的数据交换变得更加简单，允许服务端主动向客户端推送数据
在WebSocket API中，浏览器和服务器只需要完成一次握手，两者之间就直接可以创建持久性的连接，并进行双向数据传输
需要安装第三方包：
cmd中：go get -u -v github.com/gorilla/websocket</p>
<p><img src="C:%5CUsers%5C56955%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20260203171023483.png" alt="image-20260203171023483"></p>
<p>URL:统一资源定位符
http://   -&gt; 是个协议
可以多个域名对应一个IP地址</p>
<p><img src="C:%5CUsers%5C56955%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20260203171518429.png" alt="image-20260203171518429"></p>
<p>服务：指一层向它的上一层提供的一种操作</p>
<p><img src="C:%5CUsers%5C56955%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20260211121353801.png" alt="image-20260211121353801"></p>
<p><img src="C:%5CUsers%5C56955%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20260212120032880.png" alt="image-20260212120032880"></p>
<h1 id="网络层部分">
<a class="header-anchor" href="#%e7%bd%91%e7%bb%9c%e5%b1%82%e9%83%a8%e5%88%86"></a>
网络层部分
</h1><h4 id="icmp协议">
<a class="header-anchor" href="#icmp%e5%8d%8f%e8%ae%ae"></a>
ICMP协议：
</h4><p>当路由器处理数据包有意外发生时，通过ICMP向发送方报告
例如：
目标主机不可达
TTL（time to time live）(生存周期)超时:在网络环路当中陷入无限转发
路径探测</p>
<p>ping:发送echo(回显)到目的地址，判断目的设备是否活着，或者判断自身是否连接
traceroute:给目标发送一系列数据包，分别将TTTL = 1、2、3、……TTL归零时返回超时信息，由此可以确定沿途路由器的地址</p>
<p><img src="C:%5CUsers%5C56955%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20260212115930787.png" alt="image-20260212115930787"></p>
<h4 id="dhcp协议动态主机配置协议如何给新设备分配地址">
<a class="header-anchor" href="#dhcp%e5%8d%8f%e8%ae%ae%e5%8a%a8%e6%80%81%e4%b8%bb%e6%9c%ba%e9%85%8d%e7%bd%ae%e5%8d%8f%e8%ae%ae%e5%a6%82%e4%bd%95%e7%bb%99%e6%96%b0%e8%ae%be%e5%a4%87%e5%88%86%e9%85%8d%e5%9c%b0%e5%9d%80"></a>
DHCP协议:动态主机配置协议(如何给新设备分配地址)
</h4><p>新设备 -&gt;进行广播，先到交换机 -&gt; 广播 找到局域网DHCP服务器(如果没有局域网服务器，则通过路由广播到外网的DHCP服务器) -&gt; 返回一个DHCP offer -&gt; 拿到新地址</p>
<h4 id="arp协议地址解析协议">
<a class="header-anchor" href="#arp%e5%8d%8f%e8%ae%ae%e5%9c%b0%e5%9d%80%e8%a7%a3%e6%9e%90%e5%8d%8f%e8%ae%ae"></a>
ARP协议:地址解析协议
</h4><p>背景:链路层需要MAC地址才能发送成帧
作用:通过ARP将基于目的IP地址找到对应的MAC地址</p>
<p>在同一局域网内，通过ARP将基于目的IP地址找到对应的MAC地址
广播寻找IP -&gt; 目标设备发送MAC地址返回</p>
<h5 id="默认网关">
<a class="header-anchor" href="#%e9%bb%98%e8%ae%a4%e7%bd%91%e5%85%b3"></a>
默认网关:
</h5><p>网关:连接不同网络、负责转发数据包的网络设备或者<strong>路由器接口</strong>，他是网络边境的出入口
访问的地址在不同局域网时，通过IP查询到网关，而路由（默认网关）将他的MAC地址返回，
然后发送到路由器时，路由器对比IP和MAC地址，发现IP不是它的而MAC是它的时，路由器会再次使用ARP协议，基于C6的IP获取MAC</p>
<h4 id="nat网络地址转换">
<a class="header-anchor" href="#nat%e7%bd%91%e7%bb%9c%e5%9c%b0%e5%9d%80%e8%bd%ac%e6%8d%a2"></a>
NAT:网络地址转换
</h4><p>工位IPV4地址有限，而内部网络设备却日益增多，导致IPV4地址枯竭
NAT在数据包经过路由器时，修改其源（或目的）的IP地址/端口号，并维护一个映射表</p>
        
        <hr><p>Published on 2026-05-03 at <a href='https://scqwq.github.io/'>My New Hugo Project</a>, last modified on 2026-05-03</p>]]></description><category>专业课</category></item><item><title>计组</title><link>https://scqwq.github.io/post/%E8%AE%A1%E7%BB%84/</link><pubDate>Sun, 03 May 2026 11:00:00 +0800</pubDate><author>xxx@example.com (scqwq)</author><guid>https://scqwq.github.io/post/%E8%AE%A1%E7%BB%84/</guid><description>
<![CDATA[<h1>计组</h1><p>Author: scqwq(xxx@example.com)</p>
        
          <h1 id="计组">
<a class="header-anchor" href="#%e8%ae%a1%e7%bb%84"></a>
计组
</h1><h3 id="三总线">
<a class="header-anchor" href="#%e4%b8%89%e6%80%bb%e7%ba%bf"></a>
三总线
</h3><p>1.数据总线</p>
<p>双线传输 -&gt; 位数即为数据总线概念宽度，即机器位数，与储存器字长相关</p>
<p>2.地址总线</p>
<p>表示主存或I/O设备上存储单元的位置，且<strong>单向总线</strong>，总是又CPU发出地址指向存储器</p>
<p>地址总线的位数与存储单元的个数有关，与存储单元的二进制位长度无关-&gt;即存东西的地方的大小和地址大小无关,32位地址可以指向8位数据类型</p>
<p>3.控制总线</p>
<p>发出各种控制信号，单一控制通常单向，控制总线总体双向</p>
<!-- raw HTML omitted -->
<p>CPU平时就是不断从主存中去取指令，然后执行指令，不断反复</p>
<p>主存总线：具有三总线的结构</p>
<p>DMA:直接存储器访问,在DMA控制器的控制下进行工作的</p>
<h5 id="主存部分在后面">
<a class="header-anchor" href="#%e4%b8%bb%e5%ad%98%e9%83%a8%e5%88%86%e5%9c%a8%e5%90%8e%e9%9d%a2"></a>
主存部分在后面
</h5><h4 id="总线控制">
<a class="header-anchor" href="#%e6%80%bb%e7%ba%bf%e6%8e%a7%e5%88%b6"></a>
总线控制:
</h4><p>总线事务、主设备、从设备:</p>
<!-- raw HTML omitted -->
<h5 id="总线判优">
<a class="header-anchor" href="#%e6%80%bb%e7%ba%bf%e5%88%a4%e4%bc%98"></a>
总线判优：
</h5><!-- raw HTML omitted -->
<h5 id="集中式">
<a class="header-anchor" href="#%e9%9b%86%e4%b8%ad%e5%bc%8f"></a>
集中式
</h5><h6 id="1链式查询">
<a class="header-anchor" href="#1%e9%93%be%e5%bc%8f%e6%9f%a5%e8%af%a2"></a>
1.链式查询:
</h6><!-- raw HTML omitted -->
<p>BS、BR、BG都是与控制总线的范畴</p>
<p>BS有信号表示总线已经被使用</p>
<p>缺点：对电路故障敏感</p>
<h6 id="2计数器定时查询方式">
<a class="header-anchor" href="#2%e8%ae%a1%e6%95%b0%e5%99%a8%e5%ae%9a%e6%97%b6%e6%9f%a5%e8%af%a2%e6%96%b9%e5%bc%8f"></a>
2.计数器定时查询方式
</h6><!-- raw HTML omitted -->
<p>某个接口发生故障对其他接口使用不敏感，缺点是新增设备地址，控制变复杂,计时器通过设备地址线广播正在寻找的设备地址。</p>
<h6 id="3独立请求方式">
<a class="header-anchor" href="#3%e7%8b%ac%e7%ab%8b%e8%af%b7%e6%b1%82%e6%96%b9%e5%bc%8f"></a>
3.独立请求方式:
</h6><!-- raw HTML omitted -->
<p>无BS和设备地址线</p>
<p>主要部件：排队器,同时使用则排队，选择优先权高的</p>
<p>响应速度快，优先次序控制灵活。但是控制线数目多，总线控制逻辑更加复杂</p>
<h3 id="存储器">
<a class="header-anchor" href="#%e5%ad%98%e5%82%a8%e5%99%a8"></a>
存储器
</h3><p>主存 = 内存 -&gt;掉电丢失</p>
        
        <hr><p>Published on 2026-05-03 at <a href='https://scqwq.github.io/'>My New Hugo Project</a>, last modified on 2026-05-03</p>]]></description><category>专业课</category></item><item><title>SQL</title><link>https://scqwq.github.io/post/sql/</link><pubDate>Sun, 03 May 2026 11:00:00 +0800</pubDate><author>xxx@example.com (scqwq)</author><guid>https://scqwq.github.io/post/sql/</guid><description>
<![CDATA[<h1>SQL</h1><p>Author: scqwq(xxx@example.com)</p>
        
          <h1 id="sql">
<a class="header-anchor" href="#sql"></a>
SQL
</h1><h1 id="postgre-sql">
<a class="header-anchor" href="#postgre-sql"></a>
postgre SQL
</h1><h2 id="cmd">
<a class="header-anchor" href="#cmd"></a>
cmd
</h2><p>docker ps   查看容器列表
docker exec -it p1 bash</p>
<p>如果用postgres用户连接数据库，则不用输入密码
即psql -U postgres  即可</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-postgresql" data-lang="postgresql"><span style="display:flex;"><span>psql <span style="color:#f92672">-</span>U <span style="color:#66d9ef">user</span> <span style="color:#f92672">-</span>d db_name <span style="color:#f92672">-</span>h <span style="color:#ae81ff">127.0.0.1</span> <span style="color:#f92672">-</span>p <span style="color:#ae81ff">5432</span>
</span></span></code></pre></div><h4 id="数据库操作">
<a class="header-anchor" href="#%e6%95%b0%e6%8d%ae%e5%ba%93%e6%93%8d%e4%bd%9c"></a>
数据库操作:
</h4><p>\l 查看数据库列表
\c 切换数据库
create database db1  建库
drop database db1  删除数据库
createdb -U postgres mydb  在shell直接建库</p>
<h3 id="sql-1">
<a class="header-anchor" href="#sql-1"></a>
SQL
</h3><p>按照功能不同可以分为以下几类</p>
<p><img src="C:%5CUsers%5C56955%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20260311201204430.png" alt="image-20260311201204430"></p>
<ul>
<li>
<p>DDL:用于定义数据库对象，例如数据库、表、列</p>
</li>
<li>
<p>DML:对数据库中的记录进行增删改</p>
</li>
<li>
<p>DQL:查询数据库中的记录</p>
</li>
<li>
<p>DCL:定义数据库的访问权限和安全级别</p>
</li>
<li>
<p><strong>常用关键字如上图所示</strong></p>
</li>
</ul>
<p>注意，MySQL对大小写不敏感，即不区分大小写，但是变量一般大写以便于区分
左上角的《新建查询》后我们可以在窗口输出各种SQL语句（就像在Mysqlshell一样）</p>
<h2 id="mysql">
<a class="header-anchor" href="#mysql"></a>
MYSQL
</h2><h6 id="mysqlsh进入mysql-shell工具">
<a class="header-anchor" href="#mysqlsh%e8%bf%9b%e5%85%a5mysql-shell%e5%b7%a5%e5%85%b7"></a>
mysqlsh进入mySQL-shell工具
</h6><p>此工具的命令都是以****开头的</p>
<p>bash中输入<code>mysqlsh</code>启动,也可以在VScode中找到mysqlsh
在输入<code>\connect root@localhost</code>连接</p>
<p><img src="C:%5CUsers%5C56955%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20260311181701033.png" alt="image-20260311181701033"></p>
<p>出现MySQL与JS代表进入成功</p>
<p>出现图片所示灰色部分表示连接到本地的mysql服务器了</p>
<p><code>use name</code>来使用一个数据库,</p>
<p><strong>JS</strong>表示当前语言,M-S支持JS、py、和SQL三种语言,切换语言<code>\dialect</code></p>
<h3 id="语法">
<a class="header-anchor" href="#%e8%af%ad%e6%b3%95"></a>
语法:
</h3><h5 id="1数据库">
<a class="header-anchor" href="#1%e6%95%b0%e6%8d%ae%e5%ba%93"></a>
1.数据库
</h5><p><em><strong>注意：可以使用navicat等图形化GUI工具，这样不用手动输入指令创建数据库</strong></em></p>
        
        <hr><p>Published on 2026-05-03 at <a href='https://scqwq.github.io/'>My New Hugo Project</a>, last modified on 2026-05-03</p>]]></description><category>专业课</category></item><item><title>OS</title><link>https://scqwq.github.io/post/os/</link><pubDate>Sun, 03 May 2026 11:00:00 +0800</pubDate><author>xxx@example.com (scqwq)</author><guid>https://scqwq.github.io/post/os/</guid><description>
<![CDATA[<h1>OS</h1><p>Author: scqwq(xxx@example.com)</p>
        
          <h1 id="os">
<a class="header-anchor" href="#os"></a>
OS
</h1><!-- raw HTML omitted -->
<h1 id="第三部分内存管理">
<a class="header-anchor" href="#%e7%ac%ac%e4%b8%89%e9%83%a8%e5%88%86%e5%86%85%e5%ad%98%e7%ae%a1%e7%90%86"></a>
第三部分:内存管理
</h1><p><img src="C:%5CUsers%5C56955%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20260422163029624.png" alt="image-20260422163029624"></p>
<p><img src="C:%5CUsers%5C56955%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20260422165512291.png" alt="image-20260422165512291"></p>
<p><img src="C:%5CUsers%5C56955%5CDesktop%5C333.png" alt="333"></p>
<h3 id="31内存的基本概念">
<a class="header-anchor" href="#31%e5%86%85%e5%ad%98%e7%9a%84%e5%9f%ba%e6%9c%ac%e6%a6%82%e5%bf%b5"></a>
3.1:内存的基本概念
</h3><h2 id="一内存的分配和回收">
<a class="header-anchor" href="#%e4%b8%80%e5%86%85%e5%ad%98%e7%9a%84%e5%88%86%e9%85%8d%e5%92%8c%e5%9b%9e%e6%94%b6"></a>
一、内存的分配和回收
</h2><h3 id="32连续分配方式">
<a class="header-anchor" href="#32%e8%bf%9e%e7%bb%ad%e5%88%86%e9%85%8d%e6%96%b9%e5%bc%8f"></a>
3.2：连续分配方式
</h3><p>指为一个用户程序分配一个连续的内存空间。</p>
<h5 id="1单一连续分配">
<a class="header-anchor" href="#1%e5%8d%95%e4%b8%80%e8%bf%9e%e7%bb%ad%e5%88%86%e9%85%8d"></a>
1.单一连续分配
</h5><ul>
<li>内存分为系统区和用户区。用户区只装入一道用户程序。</li>
<li><strong>优点</strong>：简单，无外部碎片。</li>
<li><strong>缺点</strong>：只能用于单用户单任务系统；存在内部碎片（如果程序小于用户区大小）。</li>
</ul>
<h5 id="2固定分区分配">
<a class="header-anchor" href="#2%e5%9b%ba%e5%ae%9a%e5%88%86%e5%8c%ba%e5%88%86%e9%85%8d"></a>
2.固定分区分配
</h5><p>将用户内存空间划分为若干个固定大小的分区。每个分区装入一道作业。</p>
<ul>
<li>
<p><strong>分区大小相等</strong>：简单，但缺乏灵活性。</p>
</li>
<li>
<p><strong>分区大小不等</strong>：可以满足不同大小作业的需求。</p>
<p>当作业到来时，选择一个能容纳它且尚未分配的分区。</p>
</li>
<li>
<p><strong>优点</strong>：实现简单，可用于多道程序系统。</p>
</li>
<li>
<p><strong>缺点</strong>：</p>
<ul>
<li><strong>内部碎片</strong>：分配给作业的分区可能大于作业实际需求，多余部分无法利用。</li>
<li>分区总数固定，限制了并发执行的作业数量。</li>
</ul>
</li>
</ul>
<h5 id="3动态分区分配">
<a class="header-anchor" href="#3%e5%8a%a8%e6%80%81%e5%88%86%e5%8c%ba%e5%88%86%e9%85%8d"></a>
3.动态分区分配
</h5><ul>
<li>不预先划分分区，在作业装入时，根据作业的实际需求动态地从可用内存中划分一块连续空间。</li>
<li><strong>优点</strong>：没有内部碎片（理论上，如果按需分配）。</li>
<li>缺点：
<ul>
<li><strong>外部碎片</strong>：随着内存分配和回收，会产生许多不连续的小空闲区，这些空闲区总和可能很大，但无法满足较大作业的需求。</li>
<li>需要复杂的分配算法和空闲区管理。</li>
</ul>
</li>
</ul>
<h3 id="33动态分区分配的算法">
<a class="header-anchor" href="#33%e5%8a%a8%e6%80%81%e5%88%86%e5%8c%ba%e5%88%86%e9%85%8d%e7%9a%84%e7%ae%97%e6%b3%95"></a>
3.3：动态分区分配的算法
</h3><p><strong>动态分区分配算法 (如何从空闲分区链/表中选择一个分区)</strong>：</p>
<ul>
<li>
<h5 id="1首次适应算法">
<a class="header-anchor" href="#1%e9%a6%96%e6%ac%a1%e9%80%82%e5%ba%94%e7%ae%97%e6%b3%95"></a>
1.首次适应算法
</h5><p>从空闲分区链首开始查找，选择第一个能满足大小要求的空闲分区。</p>
<ul>
<li><strong>优点</strong>：算法开销小，倾向于保留高地址的大空闲区。</li>
<li><strong>缺点</strong>：低地址部分不断被划分，产生较多小碎片。</li>
</ul>
</li>
<li>
<h5 id="2最佳适应算法">
<a class="header-anchor" href="#2%e6%9c%80%e4%bd%b3%e9%80%82%e5%ba%94%e7%ae%97%e6%b3%95"></a>
2.最佳适应算法
</h5><p>遍历整个空闲分区链，选择能满足要求且大小最小的空闲分区。</p>
<ul>
<li><strong>优点</strong>：能最好地满足当前请求，尽量保留大块空闲区。</li>
<li><strong>缺点</strong>：算法开销大；容易产生许多难以利用的非常小的碎片。</li>
</ul>
</li>
<li>
<h5 id="3最坏适应算法">
<a class="header-anchor" href="#3%e6%9c%80%e5%9d%8f%e9%80%82%e5%ba%94%e7%ae%97%e6%b3%95"></a>
3.最坏适应算法
</h5><p>遍历整个空闲分区链，选择能满足要求且最大的空闲分区，从中分割一部分给作业，剩余部分作为新的空闲分区。</p>
<ul>
<li><strong>优点</strong>：减少小碎片的产生，剩余的空闲区较大。</li>
<li><strong>缺点</strong>：算法开销大；如果大空闲区被分割后，剩余部分不足以容纳大作业，则大作业难以分配。</li>
</ul>
</li>
<li>
<h5 id="4下次适应算法">
<a class="header-anchor" href="#4%e4%b8%8b%e6%ac%a1%e9%80%82%e5%ba%94%e7%ae%97%e6%b3%95"></a>
4.下次适应算法
</h5><p>从上次查找结束的位置开始查找（而不是每次都从头开始），选择第一个能满足大小要求的空闲分区。</p>
<ul>
<li><strong>优点</strong>：算法开销介于首次适应和最佳/最坏适应之间；空闲区分布更均匀。</li>
<li><strong>缺点</strong>：可能导致高地址的大空闲区也被分割。</li>
</ul>
</li>
</ul>
<p><strong>碎片整理</strong>： 为了解决外部碎片问题，可以将内存中的所有作业移动到一端，使所有小空闲区合并成一个大空闲区。</p>
<ul>
<li><strong>优点</strong>：可以利用外部碎片。</li>
<li><strong>缺点</strong>：开销大，需要动态重定位支持，且在整理期间系统性能会下降。</li>
</ul>
<h3 id="34基本分页存储管理">
<a class="header-anchor" href="#34%e5%9f%ba%e6%9c%ac%e5%88%86%e9%a1%b5%e5%ad%98%e5%82%a8%e7%ae%a1%e7%90%86"></a>
3.4：基本分页存储管理
</h3><h5 id="页页框">
<a class="header-anchor" href="#%e9%a1%b5%e9%a1%b5%e6%a1%86"></a>
页、页框:
</h5><p>将用户程序的逻辑地址空间和内存的物理地址空间都划分为大小相同的、固定大小的<strong>块</strong>。</p>
        
        <hr><p>Published on 2026-05-03 at <a href='https://scqwq.github.io/'>My New Hugo Project</a>, last modified on 2026-05-03</p>]]></description><category>专业课</category></item></channel></rss>