数据的表示
字,字节,单字,双字一个 bit 是1个二进制位,一个 byte (字节)是八个二进制位,也就是两个十六进制数,例如一个全是1的字节可以表示为 0xFF 一个字在32位的机器上是两个个字节,即十六位,而双字是四个字节,三十二位 小端方式和大端方式小端方式是低有效字节存放在低地址,高有效字节存放在高地址,大段方式相反。 注意,在机器码反汇编的时候,从左到右依次是低地址到高地址,不用反过来,而且在每一个字节,即两个十六进制数表示一个数的时候,也不用在字节内进行翻转,例如,在一个小端机器的反汇编中,一个数是 b8 01 00 00它对应的数学真值是 0x01B8 即是十进制下的 440 整形无符号数无符号数直接按照二进制表示,没有歧义,其每一位都是有效位,乘以对应的权值即可转换成对应的数学真值 有符号数有符号数一般按照补码表示,其特征是最高位为符号位,如果是 0...
并查集
并查集简介并查集是为了解决图联通的问题而发明的算法,它可以实现$O(1)$时间复杂度的插入和平均$O(log(n))$时间的查询,从而快速处理判断两个元素是否属于同一个部分 并查集支持的操作 寻找根节点(find) 判断任意两个节点是否联通(is_connected) 将两个节点合并(join) 返回一个节点的联通个数(count) 并查集的实现find无路径压缩版本1234567int find(int x) { if(parent[x] == x) { return x; } else { return find(parent[x]); }} 有路径压缩版本123456789int find(int x) { if(parent[x] == x) { return x; } else { int p = find(parent[x]); parent[x] = p; ...
数学分析总结
积分总结常用且记不到的公式 定积分的常用技巧保向性若可积,且,则保向性被用于证明积分相关的不等式,如教材P186的A组第14题 微分中值定理描述若在上连续,定号(不变号),则使得该定理常用于证明存在某些特殊点使得某个等式成立,如教材P186B组第3题 证明首先我们通过达布上和和达布下和,得到式子2.2.1是由于我们在每个区间里面分别选取最小值和最大值,这是上界和下界。再由的连续性,由介值定理,得到 特殊不等式证明柯西不等式的积分形式设在区间上连续,有 证明对任意,,所以对于方程没有两个根,使用判别式,有整理可得 牛顿-莱布尼茨公式描述 证明使用差分和拉格朗日中值定理的技巧,详情见教材P187 微积分第一基本定理(可变上限的积分)描述设 证明连续函数版本$$\begin{split}\varPhi’(x_0) &=\lim_{t \to 0} \frac{\varPhi(x_0 +t) - \varPhi(x_0)}{t}\&= \lim_{t \to 0} \frac{\int {a}^{x_0 + t}f(x)\mathrm{d}x - \int...
部署frp服务器发布内网服务并获取免费ssl证书
部署frp服务器发布内网服务并获取免费ssl证书本文适用对象 不想花冤枉钱搭建一个自己的服务器 能够在本地搭建好服务并且能够通过 localhost 访问 有一台可以访问互联网的服务器 (例如腾讯云、阿里云)(如果没有建议花点小钱买一个) 有一个自己的域名(必需品,可以在各种云上买到,记得备案哦) 云端搭建frps服务基础配置这里建议云服务器安装linux系统,操作更简单 到frp github发布页找到对应的架构,右键复制链接地址 在云服务器上执行(这里以amd64为例) 1wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz 下载完成后解压 1tar -zxvf frp_0.51.3_linux_amd64.tar.gz 然后进入解压后的文件夹,修改配置文件 frps.ini ,在里面输入一下内容: 12345678910111213141516[common]bind_port = 7000vhost_http_port =...
如何进行gitlab-ci发布软件包
如何使用Gitlab CI发布软件包前言本文参考官网,给出一个在powershell下能够发布软件包的例子以及一些坑,供大家参考。 Step 1. 安装release-cli123New-Item -Path 'C:\GitLab\Release-CLI\bin' -ItemType DirectoryInvoke-WebRequest -Uri "https://gitlab.com/api/v4/projects/gitlab-org%2Frelease-cli/packages/generic/release-cli/latest/release-cli-windows-amd64.exe" -OutFile "C:\GitLab\Release-CLI\bin\release-cli.exe"$env:PATH +=...
本地搭建gitlab
如何使用docker在ubuntu22.04中搭建Gitlab(无坑版)[TOC] 安装docker这里推荐使用官方教程docker官方安装教程安装 更新源 12sudo apt-get updatesudo apt-get install ca-certificates curl gnupg 添加GPGkey 123sudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgsudo chmod a+r /etc/apt/keyrings/docker.gpg 建立仓库 1234echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg]...
在wsl上安装texlive
如何使用WSL+VScode+Texlive+git+SSH搭建LaTeX环境前言:为什么要大费周章在WSL里面使用LaTeX?一句话,Windows下编译LaTeX太慢了,仅此而已 安装WSL 在开始菜单搜索“启用或关闭Windows功能” 勾选“适用于 Linux 的 Windows 子系统” 安装wsl,可选择一下两种方法 在Microsoft Store中搜索Ubuntu,安装Ubuntu 22.04 LTS 在命令行中输入 1wsl --list --online 查看可用分支,再输入1wsl --install -d <分支名称> 安装完成后,点击启动,等待安装完成 设置用户名和密码 git&SSHgit配置 输入1vi ~/.gitconfig 在文件中黏贴以下内容(这样最快)1234567891011121314151617181920212223242526272829303132333435[user] name = YOUR_NAME email = YOUR_EMAIL[alias] ...
termux配置
如何在华为matepad11上安装termux+Debian+code-server 并运行机器学习Python程序在华为matepad11上安装termux先到termux app github网页下载对应的app,在右边有个release,进去找到对应自己设备的cpu的安装包下载,然后点击安装就可以了,后面问你权限的时候点击是 在termux里面安装Debian Linux更新源进入termux, 照例先更新一下,执行 1pkg update 出现对应的可升级的包之后输入 1pkg upgrade XXX 升级对应的包(注意这里是pkg,虽然用apt也可以,但是版本有细微区别) 访问外部储存输入 1termux-setup-storage 输入这一行命令以后可以访问外部储存 安装Linux发行版下载 proot 和 proot-distro 1pkg install proot proot-distro 就可以安装对应的程序了 安装结束后,输入 1proot-distro...
如何配置git
如何配置git本文给出一种更改git配置文件快速配置git的方法,以及一些常用的配置。 配置文件使用方法:- 在目录下新建.gitconfig文件(Windows下就是C:\Users\用户名,Linux下就是)- 在~目录下新建.gitignore文件- 复制一下内容到对应文件中.gitconfig文件内容123456789101112131415161718192021222324252627282930313233343536[user] name = YOUR_NAME email = YOUR_EMAIL[alias] co = commit st = status logl = log --graph --all --oneline ch = checkout cp = cherry-pick[core] quotepath = false editor = code --wait --new-window excludesfile = ~/.gitignore[filter "lfs"] process = git-lfs...