计组 | 数字在计算机中的编码
课程链接B 站
数的表示整数的表示对无符号数,没必要讨论,直接按照每位的权重加起来就好了。
如何高效表示有符号数,是一个漫长的旅程。
先阐明一下设计的思路,然后再具体讲解编码的规则。
直觉上讲,如果要表示整数,如何来标记符号位呢?不妨单独开辟一个位置,来表示符号,比如 1 表示负数,0 表示正数,低位表示绝对值。这就是原码的道理所在。
不过原码有一个问题,在于 0 的表达有二义性,低位为全 0,符号位不论是 1 还是 0,都表示 0。再一个,原码的编码会让有符号数的加法运算无法利用既有的无符号数的加法电路,还要单独设计一套新的电路,不好。
因此,想要设计一个新的编码体系,让有符号数也能利用无符号数的运算电路。这样,反码诞生了。
它的规则是,正数编码不变,负数的编码是它的绝对值的编码按位取反。这样,最高位仍然是符号位,1 负 0 正。而且确实可以实现用无符号数的加法器来进行加法运算。我列了一个 3 位数的表格,读者可以加加看:
反码
真值
000
0
001
1
010
2
011
3
100
-3
101
-2
110
-1
111
-0
比 ...
主定理应试策略
序主定理是用来分析递归算法复杂度的高效工具。不深究原理,只应试,下面给出应试策略。
策略主定理形如:
$$T(n) = aT(\frac{n}{b}) + f(n)$$
主定理的核心是比较,到底递归到叶子结点的每个基本操作 ($log_b{a}$) 增长更快,还是减小问题规模 ($f(n)$) 的过程增长更快。
根据二者复杂度的强弱关系,分成三种情况:
基本操作增长(严格)更快, 则最终 $T(n) \in \Theta(n^{log_b{a}})$;
降低规模增长(严格)更快, 则最终 $T(n) \in \Theta(f(n))$, 但是需要满足一些条件, 否则进入情形 3;
二者速度相当, 则最终 $T(n) \in \Theta(n^{log_b{a}}log^{\varepsilon+1}{n})$, 注意有个 $+1$ 的存在.
其中第 2 点不能一步来判别,还需要验证一个式子 $af(\frac{n}{b}) \leq cf(n)$(即递归调用的贡献足够小)
不过没关系,既然分成了三个 case,不妨用排除法,把剩下两种可能都排除掉,就只剩下第 2 种 ...
Ubuntu 重装系统到 Windows
需求Ubuntu 作为日常的系统还是不习惯,比如在文件的操作上、在软件生态上,以及 Windows Hello 等认证方式上。因此,要把一台装了 Ubuntu 系统的机器重装回 Windows 11。
系统版本:Ubuntu 24.04 LTS机器型号:Lenovo X390 Yoga
步骤
下载 Windows 11 镜像(.iso),不妨从 software.tongji.edu.cn 上下载
准备一个容量 >= 8GB 的 U 盘,准备制作 Bootable Device
下载 Rufus,插入准备好的 U 盘,启动应用。在应用中,选择 U 盘作为介质,选择下载好的 .iso 作为镜像文件,剩下的设置基本不用变,开始制作 Bootable Device
打开要重装系统的机器,中断正常启动,即按下 Enter,进入 BIOS 设置
设置启用 UEFI。如果无法启动,根据提示关闭 Secure Boot 和 Kernel DMA protection,应该是在 Secure 面板下
保存设置,重新启动。插入 U 盘,仍然按下 Enter 中断正常启动,只不过这里选择 ...
CS50AI - 第 0 章 - 搜索
0. 序搜索是人工智能领域很重要的内容,例如如何导航到目标地点,如何在游戏中获得胜利等等,都需要进行最优方法的选择。哈佛大学的 CS50 AI 课程把它作为了课程的第一课。听完后醍醐灌顶,赶紧趁热写一篇文章,把大意整理下来,供未来自己复习。
1. 单机游戏1.1 一般的搜索给定一张有向图,从某个节点寻找前往另一个节点的道路,这很简单。关键在于维护一个 Frontier 列表,然后重复进行如下的操作:
1234561. 如果 `Frontier` 列表为空 * 则中止,无解。2. 从中选取一个结点,作为要考虑的结点。3. 如果这个结点就是目标 * 则返回解,停止。4. 否则,考察这个结点的邻居,把邻居添加到 `Frontier` 中
当然这样的选取有一些问题,不妨考虑这样的一个有向图,其中 A、B 两个结点之间有双向的箭头。把 A 作为起点。
这样的问题是,Frontier 中一开始只有 A,A 不是终点,所以考虑和 A 连接的节点,假设只有 B,所以把 B 放到 Frontier 中。现在从 Frontier 中取 B,B 也不是终点,考虑 B 能连接的节点,假如有 A ...
哆啦校圈 API 分析
免责声明:本文仅供技术研究和学习交流之用。请勿将文中所述技术用于非法用途,作者不对任何滥用行为承担责任。
需求哆啦校圈是一个同济学生比较活跃的校内交流平台,然而里面鱼龙混杂,时不时乌烟瘴气。对获取校内资讯造成了很大障碍。目前来看,有一个恶心的问题,便是拉黑系统。
拉黑操作是这样的,找到一个帖子,点击发帖人的头像。如果发帖人是非匿名发帖,则出现一个拉黑按钮,点击后便可以把对方拉黑 1个月。
如果是匿名发帖,您还真就拿对方没办法了,因为如上操作对匿名发帖无效,并不会有拉黑按钮的出现。那么就只能看着对方宣泄情绪、带节奏而无可奈何。
这样不好!
因此,本文章要完成的主要任务是提供一些背景知识,使得如下目的能够但不一定便捷实现:
得以拉黑匿名发帖;
实现永久拉黑
我们的美好期望能够实现吗?可能会遇到一些问题吧?比如说,如果定位不到匿名发帖人,怎么办?如果拉黑了发帖人,只能屏蔽正常发帖,仍然无法屏蔽匿名发帖,怎么办…
谢谢这个草台班子一样的世界,这些问题都能够得到攻克。
太长不看版问题 1 的初步解决注意到在帖子详情页,如果在发帖人部分出现了 关注 按钮,点击关注,然后在 我的 -& ...
【已解决】HP 打印机无法休眠
问题现象描述HP Color LaserJet Pro MFP M281fdw 打印机无法休眠。在 60s 无操作后触摸屏自动关闭,然后等待几秒钟后屏幕再次亮起。如此反复。同时伴随着细微的咔咔声,很烦人。
解决方案发现打印机的 USB 口和电脑的连接在了一起,同时笔记本电脑处在关闭的状态。这一连接是没有必要的,因为打印机已经连接无线网了。因此,把 USB 线拔掉就好了。问题解决。
参考https://h30434.www3.hp.com/t5/LaserJet-Printing/Problem-with-sleep-mode-on-my-printer-MFP-M278-M281/td-p/7534286
走的弯路检索到了同型号的打印机一直开机关机的问题,通过文中的方法进行 Permanent Storage Init,但发现解决不了问题。这也是我两三年前尝试过解决的方案。当时认为这一问题无解,所以止步于此。
之后今天早上又被这一声音整的烦躁,才再次检索。发现是 USB 线的问题。あああー,困扰我许久的问题终于解决了。看来学了计算机两年,解决问题的能力 upupup 呢。
对问题的准确 ...
未来的工作是?
需求总结一下未来的求职方向,梳理当前的职位需求。
大概目前感兴趣的方向有 3 个:前端、后端、运维。又以后两者为重点。总结一下这些岗位需要的技术,寒假和下学期会着重学习一些。
前端工程师实习先看实习。从几个感兴趣的大厂入手。
小米:React Native、javascript
小米:js、vscode、linux 环境、react 框架
小红书:React / Vue、三件套
Bilibili:React、ant-design、三件套、页面布局、模块化
全职小红书:js、css、React / Vue
小红书:ts、css、React / Vue
TikTok:三件套、DOM、HTTP 协议,React / Vue
Bilibili:React、Vite、Webpack、Rollup
字节飞书:React / Vue / Angular,三件套、Grunt、Gulp、Webpack、NodeJS
分割线前面这些是在 BOSS 直聘上看到的。大概概括来说,React、三件套是重点,要熟悉掌握。还有一些是在网站上扒下来的:
网站 ...
爬虫+Web | 同济大学 1 系统通知公告备份与提醒
缘起
同济大学 1 系统 是同济大学的教学信息管理平台,发布教务教学的通知公告。发布的通知较为重要,但是过了一段时间便会下架,不给人回看的可能。
在计科导的网站大作业编写的网站没有用户的登录注册等功能,如果因为作业时间仓促而明文存储密码,没什么意义。因此在寒假编写一个生产上较为安全的用户系统。
文章将按模块来展开,梳理网站实现的大部分细节。文章比较长,读者可以选感兴趣的部分阅读。
网站在:同济大学通知公告备份站。
Github 仓库在:Github
爬虫——数据获取统一身份认证
获取数据需要通过的第一道关卡是统一身份认证,因为如果不登录,是获取不了任何内容的,会返回 401 错误。上图是老的身份认证系统,现在不需要手动点击验证码、只需要点击登录按钮,相对还容易些,不然,如何通过验证码也是个问题。
在用户输入了用户名和密码后,发生了什么事情呢?
初步认识在 Network 面板中,注意到 1 系统会向 https://iam.tongji.edu.cn/idp/authcenter/ActionAuthChain?... 发送 URL编码后的 如下内容:
1234567j_userna ...
同济统一身份认证登录 1 系统
需求为 1 系统的通知公告内容存档。参见 Github 项目。然而,请求内容需要 Cookies,列表如下
1234{ "JSESSIONID": "xxx", "sessionid": "yyy",}
否则会提示 session 不存在。那么,如何获取这两个 Cookies 就是我们这篇文章的主线。
过程访问: https://1.tongji.edu.cn首先,访问 https://1.tongji.edu.cn,因为之前没有登录过,因此会被重定向到登录界面 https://iam.tongji.edu.cn。
然而,这其中更细节的过程是什么?
使用 curl 进行测试。
12345678# -i 的意思是展示请求头curl -i https://1.tongji.edu.cn/ssologin# 得到HTTP/1.1 200 OKDate: Sat, 18 Jan 2025 05:50:45 GMTContent-Type: text/htmlContent-Leng ...
同济的 IP 范围
需求想要让我的网站限制只有同济范围内才能访问,如何实现呢?
分析需要知道同济的 IP 段,有几种方法:
学校官网等资料
ping foo.tongji.edu.cn,一个一个排查
nslookup 等其他工具
在线工具
方案最终发现,ipinfo.io 有很好的查询方案。
首先,已经确定了同济的 IP 范围在 202.120.0.0/16,然而,真的同济能这么阔绰,有这么多 IP 拿在手中吗?
不是的。
经过排查,https://ipinfo.io/ips/202.120.0.0/16,发现同济的 IP 范围是:
202.120.163.0/24
202.120.164.0/24
202.120.166.0/24
202.120.188.0/24
202.120.189.0/24
202.120.190.0/24
202.120.191.0/24
这些是同济域名对应的 IP 段,可能不全。
但是要注意,使用学校的 VPN 之后,IP 块是 111.187.0.0/17,虽然也是上海教育网,但是和学校网站的 I ...