qbqbqbqb

qbqbqbqb

V2EX 第 143992 号会员,加入于 2015-10-23 12:47:57 +08:00
根据 qbqbqbqb 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
qbqbqbqb 最近回复了
3 天前
回复了 jim9606 创建的主题 Linux APT 2.3.12 禁止交互式卸载必须的软件包
@tanghongkai 看不懂英文也没关系,有中文
![中文版]( https://img-ask.csdn.net/upload/202006/29/1593399776_617526.png)
3 天前
回复了 jim9606 创建的主题 Linux APT 2.3.12 禁止交互式卸载必须的软件包
@tanghongkai 其实这个提示有中文版,系统语言配置中文的话 apt 大部分提示中文,而且卸载 essential 包的时候会要求输入“是,按我说的做”
3 天前
回复了 yangman 创建的主题 Linux Ubuntu 软路由拨号问题
有配置禁用不支持的认证协议吗? Linux 里的 ppp 客户端默认是开启 eap 协议的,这个一般拨号都不支持,/etc/ppp/options 里得加 refuse-eap 选项禁用 eap 认证。还是不行就再试试 refuse-mschap, refuse-mschap-v2, refuse-chap 这几个选项(国内宽带拨号一般都是 pap 明文认证协议)
用 GVIM ,粘贴命令是"+p
GVIM (纯命令行版不行,需要安装带 GUI 的版本,然后运行 GUI gvim 或者命令行 vim 均可)可以使用 vim 内置的复制粘贴操作( yank )来访问系统剪贴板,映射到 vim 的+和*两个寄存器,其中+代表 ctrl+c,ctrl+v 的剪贴板,*代表 X11 里特有的“选中复制,鼠标中键粘贴”的剪贴板
如果是 NVIDIA 显卡用户又没装闭源驱动,卡顿有可能是系统自带的开源驱动导致的,这个问题好解决。

Linux 自带的 nouveau 驱动基本上不支持目前所有新显卡的 3d 加速,必须加 nouveau.modeset=0 这个内核参数关闭相应的功能,否则必出问题(包括但不限于:黑屏;开不了机;卡死;其它 PCIe 设备连带异常,例如网卡不能用,或者 NVMe SSD 读写异常慢,只有个位数 MB/s )

这里最容易出现问题的就是笔记本双显卡用户,不加这个参数的话,默认用核显启动系统好像没问题,但是 nouveau 驱动在后台搞事,很容易出上述各种毛病。

总之就是:
电脑上有 NVIDIA 显卡的,启动 Linux 安装盘必须手动加 nouveau.modeset=0 这个内核参数;
安装好系统后,如果不需要 3D 加速的,或者笔记本双显卡用户只用核显不用 N 卡的,必须配置引导器每次启动时添加 nouveau.modeset=0 内核参数;
安装好系统后,如果需要正常使用 NVIDIA 显卡,必须安装闭源驱动(安装好闭源驱动以后 nouveau 被屏蔽,就不用加内核参数了)

(网上有些教程加参数 nomodeset ,不建议,尤其是笔记本双显卡用户,这个参数同时会影响核显 3D 加速功能)
7 天前
回复了 amiwrong123 创建的主题 程序员 TCP 检验和原理不太懂?求大佬指点
@amiwrong123 实际计算中确实是全 1 ,因为计算的过程中不会故意对 2^w-1 取模。
7 天前
回复了 amiwrong123 创建的主题 程序员 TCP 检验和原理不太懂?求大佬指点
@amiwrong123 反码里全 0 表示“+0”,全 1 表示“-0”,数学上可以认为是等价的,是 0 这个数的不同的表示方法。
8 天前
回复了 amiwrong123 创建的主题 程序员 TCP 检验和原理不太懂?求大佬指点
@qbqbqbqb 这里唯一一个有问题的地方就是,当校验和为 0 的时候不同的算法可能算出 0 或者 0xffff 两种不同的结果。这两个数字在反码运算里是等价的,但是网络协议上可能有特殊的规定。网络协议里 TCP 没有特别的要求,而 UDP 要求校验和字段算出 0 的时候必须填入 0xffff (全 0 校验和在 UDP 里表示发送端没有计算校验和)。
8 天前
回复了 amiwrong123 创建的主题 程序员 TCP 检验和原理不太懂?求大佬指点
@qbqbqbqb 知道了上面这些之后,不难发现为什么先取反和后取反都是正确的:
如果已知其它数字要求校验和,假设其它数字为 x1,x2,...xn ,校验和为 c ,则根据规则应该满足:
x1+x2+...+xn+c=0 (注意这里加号"+"表示反码加法,不是普通加法!)
计算校验和 c 就有两种方式:
c=-x1-x2-...-xn (相当于每个数先取反) 或者 c=-(x1+x2+...+xn) (相当于最后取反)
这里关键点就是:“反码运算” 中 “取反”相当于“加负号”

同时也可以发现,接收端其实是没必要取反的。
8 天前
回复了 amiwrong123 创建的主题 程序员 TCP 检验和原理不太懂?求大佬指点
所谓的“反码”(英文名是 ones' complement )是一种负数的表示方式,定义上是这样的:
-x = [11..11]2-x = “x 取反”
其中[11..11]2 表示二进制数“w 个 1”

根据上面的定义,不难发现反码加法实际上就是关于 2^w-1 取模的加法。
这样就不难理解为什么计算反码加法要“溢出高位叠加到低位”了:因为平常编程里的普通整数加法溢出时是关于 2^w 取模的,而反码加法是关于 2^w-1 取模,普通加法里低位每向高位溢出一次两者的差值就增加 1 ,所以这样叠加一下算出来的数值恰好是正确的。
原则上应该每加一次就叠加一次,但是因为 IP 头和 TCP 头的字节数不是太长,溢出总数不可能达到 2^16 ,所以说无论先加再叠加还是每加一次就叠加一次,得到的结果没有什么差别。

理解了反码的原理以后,校验和算法就可以一句话描述:每 16 比特当成一个整数,全部相加(包括校验和本身),再除以 65535 (即 2^16-1 )余数应该为 0.
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2260 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 9ms · UTC 03:13 · PVG 11:13 · LAX 19:13 · JFK 22:13
♥ Do have faith in what you're doing.