确定正在使用文件/文件夹的程序
在删除文件/文件夹的某些时时候,资源管理器会提示“操作无法完成,因为其中的文件夹或文件已在另一程序中打开”
比较好的方法是确定这个正在占用文件/文件夹的进程到底是什么。
进入 任务管理器-性能-…-资源监视器-CPU-关联的句柄
输入 被占用的文件/文件夹的名称
即可确定是哪些进程占用了文件/文件夹,如果没有GUI可以关闭该程序,可以使用taskkill /pid processid /t /f
vscode的配置文件
写完上一条后顺手整理了一下配置文件,顺便记录一下。
vscode像一个瑞士军刀的壳,全新的vscode只有编辑器的功能。
当PC上存在编译器/解释器时,vscode就有了编辑器+编译器/解释器的功能
vscode的Debug功能,也就是大名鼎鼎的F5
(如图),它的配置位于launch.json
文件中,写好它就可以用gdb(minGW自带的debugger)去debug了。
但是很多人就只会F5
,这个是使用g++ -> gdb。但是正常写程序都是g++ -> 直接运行,所以要用到Tasks功能。
vscode的Tasks功能,Ctrl+Shift+B
也较广为人知(如图),它的配置位于tasks.json
文件中,写好它就可以真正地“编译+运行程序”,而不是“编译+调试程序”了。
编译、运行是两个任务,所以要有两条配置(两个{}
),每条Tasks配置里其实只有两三行是关键配置。
编译任务负责编译,所以要用command
运行g++,再args
向g++传入参数。
运行任务负责编译加运行,所以要先用dependsOn
调用编译任务生成exe,再用command
运行该exe。
最后因为“运行任务”(“测试任务”)没有快捷键,所以可以给它添加一个快捷键F4(我三年的习惯)。
最后附上我用的配置文件。
launch.json
1 | { |
tasks.json
1 | { |
vscode中c++的相对路径问题
之前写过python的相对路径问题,当时是在执行python解释器前,利用命令行的cd调整vscode的默认目录。
今天发现可以这样改。(tmd大四了才发现)
1 | { |
顺便调整了一下vscode的配置文件,见下一条。
Google Translate修复:添加proxy规则
2022年9月29日,google translate退出大陆,translate.googleapis.cn关闭,访问translate.googleapis.com将绑定至境外IP地址。
但我挂了Clash还是用不了,因为浏览器内置API不支持扩展配置的socks5代理,所以在网页上通过右键翻译时等同于你没挂Clash访问境外IP。
那么我们可以添加一条规则,让该API被Clash代理。
Profiles-你的订阅-Edit rules
Add-输入Content为translate.googleapis.com-Type选DOMAIN(相当于全字匹配)
Proxy选切换节点时的选项,我最近用的SakuraCat叫“节点选择”-Add-Save
当出现这行时添加成功
可以继续学习了
markdown全部标题快速降级
使用正则表达式,例如将二级标题全部换为三级标题
正则表达式:^##
,^
与
用于限制边界,以只匹配二级标题
主机与服务器进行文件交互
全称Secure CoPy,就是cp命令加了个SSH的s
Vscode中python的相对路径问题
vscode的默认路径是项目根目录,我们实际上想让默认路径为py文件所在的目录,针对不同情况,有三种方法:
run运行(右上角三角号)
修改
setting.json
,加入"python.terminal.executeInFileDir": true
或
在python插件中把这项打开
F5运行
修改
launch.json
,加入"cwd": "${fileDirname}"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: 当前文件",
"type": "python",
"request": "launch",
"program": "${file}",
"stopOnEntry": true, // 让调试器在自动在程序开始时停在第一行
"cwd": "${fileDirname}", // run用的,F5应该搜terminal-python-Execute In File Dir
"console": "integratedTerminal"
}
]
}F4运行(自定义运行)
可能很少有人自定义运行,但是我一直用的F4,很好用,就写一下吧
修改
task.json
文件,在"command"
的值中添加:cd ${fileDirname};
然后再python ${file}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "run",
"command": "cd ${fileDirname}; python ${file}",
"type": "shell",
"group": {
"kind": "test",
"isDefault": true
},
"presentation": {
"reveal": "always",
"panel": "new",
"focus": true
}
}
]
}
命令行算MD5
一个思考:为什么bool类型不用1bit而用1byte表示?
答:bit无法直接寻址,byte可以。
一个ERROR
内存开太大导致地址值超过了int上界。
关于…
可见...
是一个ellipsis
对象。
如果某个函数体中只有...
,意思也就是创造了一个ellipsis
对象但没有使用,那自然跟函数体中只有pass
差不多,代表这个函数目前还没有实现。
在numpy中的使用方法
这个实际上是numpy中的array多维切片
首先,多维切片的形式是
1 | array[slice, slice, etc] |
其中,每个slice对象的形式为start:stop:step
与python内置list的切片
1 | list[slice][slice]etc |
差不多一个意思
第0个slice代表对dim-0切片
第1个slice代表对dim-1切片
那么上述语句的意思即为
d[1,...]
:取d的dim-0
中下标为1的元素
d[...,1]
:取d的dim-(-1)
(最后一个维度)中所有下标为1的元素
d[1,...,1]
:取d的dim-0
中下标1的元素,再取其dim-(-1)
中所有下标为1的元素
numpy官方文档中对…的说明及复现
快速发博客
灵光一闪写了个批处理,所以我为什么手敲了一个学期这三段东西啊!!
python拆包
做线性回归的时候碰到了一个少见的用法
查了一下这个语法叫拆包,其实在函数定义时就学过,可变参数就是这个原理。
在PEP 448
中找到了提出者的一个奇妙用法:
1 | new_list=my_list+list(my_tuple)+list(my_range) |
简直是太太太太pythonnic了!
ipynb文件的优雅打开方式
其一 将某个终端加入右键菜单
其二 单行powershell
资源管理器的地址栏可以视作一个单行powershell,你可以在这里输入命令。
eg. cmd
jupyter notebook
jupyter lab
其三 设置默认程序
jupyter notebook
其实是一个python程序
使用where
命令查找它的位置
复制前面的路径设置默认程序即可
成功后
python @jit
python可以使用@jit
装饰器达到媲美C++的运行速度。
1 | from numba import jit |
1 | 1.5333094596862793 |
JIT使用懒编译(Lazy Compilation)技术,在执行到@jit
代码块时才将其编译,而纯编译型语言C会在程序运行前整个编译好。
因为被@jit
修饰的代码块已经编译过了,$总时间 = 编译时间 + 运行时间$,所以第二次运行时$编译时间=0$,又因为循环体内为pass,所以,故
另外,原生python慢的原因还有一点在于解释器需要推断变量类型,@jit
可以使用Eager Compilation
技术,指定变量类型,这样可以提高编译速度。
C初始化列表
翻看C98、C99标准时偶然发现了从没见过的初始化方式。可以在初始化块中忽略对象直接指定初始化成员。
另外,C++官方提供了在线编译环境,支持到C++14。