日积月累 - 一些小知识
日积月累 - 一些小知识
这里准备放一些日积月累的小知识,排版等也可能会在后期不断调整归类。
About Github/Git
CHANGELOG.md
更新日志文件,格式可参考:https://www.bestyii.com/topic/75
如何只clone git仓库的一个分支
1 |
|
一些命令(学Git)
版本回退
- 当前版本:
HEAD
- 上个版本:
HEAD^
- 上上个版本:
HEAD^^
- 上100个版本:
HEAD~100
1 |
|
其中--hard
会回退到上个版本的已提交状态,--soft
会回退到上个版本的未提交状态,--mixed
会回退到上个版本已添加但未提交的状态。
查看日志/commit记录
git log查看commit记录
1 |
|
会显示历史commit信息,每个commit会显示Author、Date、Message、Merge等很多信息(很多行)。
1 |
|
一个commit只显示一行,会显示(其他分支和)commit信息。
1 |
|
以图的形式显示分支及合并记录。
git reflog查看引用日志。
假如我使用了git reset
回到了历史版本,我如何回来呢?可以git reflog
查看回退前的commit id,然后git reset --hard COMMIT_ID
。
丢弃工作区/暂存区更改
丢弃工作区更改:
1 |
|
丢弃filename在工作区的更改。如果暂存区有此文件的版本则回到暂存区的版本,否则回到版本库的版本。
丢弃暂存区更改:
1 |
|
会把filename文件的更改从暂存区回退到工作区。
切换分支
- 创建并切换分支:
git checkout -b NEW_BRANCH
或git switch -c NEW_BRANCH
- 切换分支:
git checkout BRANCH
或git switch NEW_BRANCH
本来切换分支也是git checkout
,但是由于checkout
和丢弃工作区文件太像了,所以新版本git支持了switch命令
分支合并
TODO: https://liaoxuefeng.com/books/git/branch/policy/index.html#0
About HTML
空白字符
这是一个空白字符:“ㅤ”
WebView2
(实为Edge内核?)编写的程序可以借助webview2实现网页的访问与浏览。相当于是浏览器。若电脑上安装有WebView2,则程序可以直接借助WebView2实现网页的浏览。
见到一个B站UP主打包WebView2的视频。
About Linux
Ubuntu防火墙
查看当前防火墙状态:
1 |
|
1 |
|
开启某个端口并且仅允许单个ip访问:
1 |
|
SheBang
shell脚本文件开头的#!
,也叫Sha-bang
(Sharp bang
的缩写),无正式中文名,有时被翻译为释伴
(解释伴随行
的简称)。
位于文件开头,指定解释器(若无对应解释器则使用默认shell执行)
代码示例
1 |
|
运行结果
1 |
|
Linux登录欢迎语motd
使用ssh
登录Linux时会显示Linux欢迎语,据不完全测试,修改/etc/motd
为你想要显示的内容即可。(比如看板娘)
Linux列出所有中文字体
1 |
|
删除一个文件夹中的100万个文件(除了几个特殊文件不删)
假设当前文件夹下有100万个toDel-*
文件和4个其他文件。这100万个文件是想要删除的,这4个文件是想要保留的。怎么做?rm toDel-*
会提示-bash: /usr/bin/rm: 参数列表过长
。
怎么办?借助一个空文件夹使用rsync
命令来进行吧:
先创建一个空文件夹mkdir ../tmp
,再创建一个文件../toKeep.txt
用来写不想要被删除的文件列表。
生成../toKeep.txt
的方法之一
可以先将所有文件名排序后导入到一个文件里:ls -lf | sort > ../fileList.txt
,
查看文件并将头尾要保留的文件导出到../toKeep.txt
中:cat ../fileList.txt | head -4 > ../toKeep.txt
、cat ../fileList.txt | tail -2 >> ../toKeep.txt
。
最后,使用以下命令即可。
1 |
|
命令的含义是:删除./
中不在../tmp
中的文件,../toKeep.txt
中的文件除外。
Linux拷贝文件并显示进度
1 |
|
或
1 |
|
一行命令在远程Linux服务器上执行命令
其实在ssh登录命令后面加上要执行的命令就可以了。
1 |
|
例如我在Linux服务器上有一个具有执行权限的timer.sh
,其中内容是:
1 |
|
那么我就可以执行以下命令:
1 |
|
然后你就可以看到一个进度条,5秒后进度达到100%。
About Windows
Windows应用商店安装的应用
Windows应用商店安装的应用似乎不一定能找到.exe文件。那么这些应用到底安装到了哪里呢?
1 |
|
例如胡桃工具箱1.4.1.0_x64_Test的安装位置是:C:\Program Files\WindowsApps\7f0db578-026f-4e0b-a75b-d5d06bb0a74d_1.4.1.0_x64__7jfyf5536hdrr
Windows沙盒复制文件时发生错误的原因
有时候在Windows Sandbox中下载了一个4G的学习资料,将其复制到主机时,可能会遇到复制了一半突然
1 |
|
然后如果文件复制时不干其他事情,只让系统进行复制操作,基本上每次都能复制完成且不出错(我没遇到过这样还报错的)
某天(应该是2023.2.24),突然就发现了这“未知错误”的原因
如果我们在主机和沙盒间通过复制粘贴的方式传输文件时,在文件传输过程中,我们又复制了其他东西,那么这时候文件传输就会出现上述错误!只要我们不更新剪贴板,随意操作其他东西,我是没见过复制错误发生未知错误的情况。
我想,也许其原理是通过剪贴板的看不见的“文件链路”进行传输的?
autohotkey
记录一下autohotkey,它是一款是一款免费的、Windows平台下开放源代码的热键脚本语言
官网:https://www.autohotkey.com/
Bat中获取bat文件所在目录
在.bat文件中,%~dp0
代表所执行bat所在的路径。
我们在C:\BatDir\test.bat
中写入以下代码:
1 |
|
然后在F:\CWD
目录下使用cmd执行上述bat文件:
1 |
|
则会echo "%~dp0"
会显示C:\BatDir\
;explorer "%~dp0"
会打开资源管理器,且位置是C:\BatDir\
;cd /d "%~dp0"
则会使CMD的工作路径变成C:\BatDir\
Windows安装或卸载程序失败时的修复程序
安装外星人AWCC(Alienware Command Center)后暴力删除残留文件了,导致卸载和重装AWCC时都失败。
因此发现了一款微软官方的修复程序:修复阻止程序安装或删除的问题,可下载MicrosoftProgram_Install_and_Uninstall.meta.diagcab并运行。(自解压程序)
Windows禁用某些Win开头的快捷键
今日按快捷键Ctrl+C
,不小心按成了Win+C
,弹出了Cortana
,还告诉我说“你的语言不可用”。???
想要禁用快捷键Win+C
,需要在注册表HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced
下新建一个“字符串值”,名为DisabledHotkeys
,值为C
。(若想禁用Win+C
和Win+S
,则值为CS
)
重启计算机或重启资源管理器即可生效。
UPX加壳减小可执行文件体积
UPX官网upx.github.io,主要目的是将可执行文件和共享库(通常是二进制文件)压缩为更小的尺寸,从而减少磁盘占用空间和下载时间。
Pyinstaller打包可执行文件时若系统变量里有upx,则打包出来的体积也会小一些。
Win10右下角托盘区时间显示到秒
Win + R
-> regedit
-> 回车
,定位到计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced
并新建DWORD (32位)值(D)
,名为ShowSecondsInSystemClock
值为1
,重启explorer.exe
。
About Phone
Phone APP 如视VR
记录一款软件,使用智能手机拍摄就能三维建模。智能手机拍摄将信息传到服务器上,云计算后返回,可在线浏览。免费,但不可下载模型。
其视频讲解可见:科技宅小明的视频科技还是魔法?!2分钟重建我的家!
早点有的话就能多建模两个地方喽~
About Python
Python chain
连接两个iterable的东西为一个iterable的东西
1 |
|
执行结果:
1 |
|
Python bisect
python二分查找用。
bisect.bisect_right(list, val)
类似于C++的upper_bound(list.begin(), lise.end(), val) - list.begin()
同理,bisect_left
类似于lower_bound
Python json.dumps
格式化输出json(实质是将python字典转化为格式化后的字符串)
1 |
|
运行结果:
1 |
|
其中ensure_ascii
默认为True
,这时会以ASCII码的形式输出(中文你好就变成了”\u4f60\u597d”)
More:json.dumps是将字典转为字符串,json.loads是将字符串转为字典。假如从爬虫得到的返回值是json格式的字符串,想将其格式化后输出,那么就可以:
1 |
|
运行结果:
1 |
|
Python sortedcontainers.SortedSet
Python有序集合,类似C++的set
但缺点是需要手动安装,非Python自带
1 |
|
1 |
|
Python enumerate
python的enumerate可以将可迭代的“iterable”,打包成(index, value)
的tuple:
1 |
|
运行结果:
1 |
|
Python双端队列 deque
1 |
|
Python优先队列 heapq
Python优先队列小元素先出队(小根堆)。
1 |
|
Python有序集合SortedList
类似于C++
的multiset
。
1 |
|
Python selenium踩坑记录
Python的selenium
可以控制浏览器对网站进行模拟操作,但需要注意的地方有且不仅仅有如下二:
- 执行js脚本时:
1
2
3
4
5
6
7function ha() {console.log("666")}
ha()
报错 未定义
ha = function() {console.log("666")}
ha()
正常执行 - selenium4.0之后移除了find_element(s)_by_xx的方法(#2),需要使用find_element(s)_by方法。
Python 依赖分析工具
写了一个Python项目准备发布,那不得写一个requirements.txt
来告诉使用者都需要安装哪些第三方库?
手动添加是一种方法。另外一种方法就是使用依赖分析工具pipreqs
。
1 |
|
About C++
C++原地建堆make_heap
1 |
|
About Website
ip扫描工具censys
很多网站为了防止DDos等都使用CDN等将自己的真实ip隐藏起来。但是如果直接访问真实ip的话,还是有可能会返回SSL证书(例如浏览器提示的“证书无效/不匹配”
censys扫描全球所有IP并记录ip于域名直接的关系,并且扫描速度快得惊人(>_<)
网址:censys.io
域名收集工具/SSL证书查询工具crt.sh
网址:crt.sh,传说所有的SSL证书都能在上面查到(好像是)
并且,输入一个域名,它的所有子域名甚至都能被查到(似乎前提是开了https)。
hexo部署到子路径上
在_config.yml
中令url
的值为/x.com/sub/path
。
否则不这么配置的话很多链接会链接到/x.com/
ngxin获取cloudflare后的真实ip
使用cloudflare获取网站流量后打到网站的ip都是cloudflare的。若是使用nginx分发的这些请求,则可以通过下面两步获取真实ip。
- 判断nginx是否支持real_ip功能(若无则此教程无效,似乎要重新编译nginx):
nginx -V 2>&1 | grep -i http_realip_module
。若有(可能被标记为红色)则进入下一步。 - 编辑conf文件,在
http
下添加几行:其中1
2
3
4
5
6http {
set_real_ip_from 173.245.48.0/20;
set_real_ip_from ......;
real_ip_header X-Forwarded-For;
}set_real_ip_from
的数据可以由https://www.cloudflare.com/ips-v4
和v6版本获得。
参考链接:dmesg.app、blog.gezi.men、CSDN
About API
bilibili API
bilibili数据查询API:能得到JSON格式的某个BV视频的播放点赞等数据
1 |
|
例如
1 |
|
About AI
About PyTorch
torch.cuda.empty_cache()
使用torch.cuda.empty_cache()
命令可以清除nvidia
显卡中一些已经不使用的显存。在我的一个实验中,它能将显存降个十几个G。
为什么nviDia要使用这么多的额外空间呢?D君这么做一定有他的道理。
以下是来自ChatGPT的解释:
1 |
|
About ChatGPT
让ChatGPT模拟派蒙
1 |
|
About Office
Word公式 - 部分居右
Word中经常需要插入一些公式,但是很多时候需要在公式的最右边标注(1-1)类似的内容。这就涉及到了公式的部分居右显示。
怎么实现呢?首先是编写一个公式(插入 -> 公式),接着编写完成后,在后面输入#(1-1)
并回车
,就可以看到#
后面的(1-1)
已经居右显示啦。
Word查找缺失字体
前几周写本子的时候,打开Word一看,这表格咋这么怪呢?非得在下一页多一行。后来才知道原来是缺少字体的原因。
查看所缺少的字体的方法:文件
-选项
-高级
-字体替换
,所列出的字体都是“因没有这种字体所以Word找了一个类似的字体用来替换”。
依次从网上下载所有缺失的字体并安装到系统上。
下载完所有缺失的字体,重新打开Word,显示就正常了。
About Technology
非视域成像
以墙为镜,利用激光在墙面上的漫反射,推算出不可直接看到的区域的图像。
About Latex
Ubuntu上安装Latex(免安装版)
我想使用sudo aptitude install texlive-full
命令安装xelatex
但是失败了。于是想到了直接下载可执行文件并添加到环境变量的方法。
首先下载TeX Live 安装脚本,然后解压并安装。
1 |
|
根据提示直接安装(不用修改配置)就行。
最终输出(提示)
1 |
|
根据它的提示将三个内容分别添加到三个环境变量中,并重启终端即可。
1 |
|
End
同步发文于CSDN,原创不易,转载请附上原文链接哦~
https://blog.letmefly.xyz/2023/02/21/Other-Accumulation-SomeTips