四月工作日志
关于日志
有些事情单独开一篇博客太浪费,但是确实不得不记录一下,所以有了这个日志。目前打算是按月开。
VSCode 远程连接到服务器上开发卡死
不要连接到东西太多的目录,有些插件会扫目录,消耗巨大多内存。
建议是单独开一个 workspace 来干活。
另外远程服务器起码有 4GB 内存,2GB 内存纯属冤大头。
Python slots
Python 的 __slots__
机制,可以限制实例的属性,只允许在创建实例时定义的属性,不允许动态添加属性。
如果尝试为没有在 slots 中声明的变量赋值,会引发 AttributeError。
git 拉取远端其它分支并与本地关联
1 | git checkout -b feature-branch origin/feature-branch |
git 删除分支
删除本地分支:
1 | git branch -d feature-branch |
删除远端分支:
1 | git push origin --delete feature-branch |
Python lambda 闭包问题
lambda 做函数绑定的时候变量是绑定到域上的变量的,而不是绑定到值上的。
例如下面循环的例子:
1 | funcs = [] |
输出是 19,而不是 10,因为查找到的 i 是循环结束后域里面的 9。
正确的做法是:
1 | funcs = [] |
C++ 全局变量的声明和定义
全局变量的声明和定义是分开的,声明是在 .h
中使用
extern
关键字,定义是 .cpp
中使用
=
赋值。
另外就算是用了 #ifdef XXX_H
,也不能在 .h
里面定义。不然多个 .cpp
都包含了
.h
,还是分开编译的,就会报重定义的错误。
类的静态成员变量是不允许在声明的时候初始化的,只能定义的时候初始化。
Python 线程独立资源
有时候每个线程需要一些独立的资源来执行一些操作,这个可以用
threading.local()
来实现。
一般需要配合 concurrent.futures
的线程池来使用。
1 |
|
Python 异步任务、线程任务
这两个任务一般来说只要开始阻塞执行后,都没办法强制中止的。
后台多线程任务可以设置成
daemon=True
,关闭主程序的时候自动关闭后台任务。
异步任务一般要避免出现阻塞,否则主线程会卡死。
另外如果一定要强行中止线程,可以考虑 concurrent.futures
的 ThreadPoolExecutor._threads.clear
方法。
Python Queue
线程安全的 Queue.get
在使用的时候不管是不是保证有东西,最好都加点 timeout。
nullptr 和 iterator::end()
处理指针类型一定要想好有没有可能是 nullptr
。
处理迭代器的时候一定要想好有没有可能是 end()
。
C++ 容器
迭代的时候别TM的做删除操作,会漏内存。
git 设置代理
有时候 git 走不了系统代理,可以配置一个全局的代理设置:
1 | git config --global http.proxy http://127.0.0.1:7890 |
C++ iostream
istream
和 ostream
是两个抽象类,不能直接实例化,用的时候应该把一个 ifstream
或者 ostream
的子类实例化,然后绑定到 istream
或者 ostream
上。
cerr
, cout
这些都是 ostream
的子类,所以有时候
1 | ifstream fin("in.txt"); |
C++ Fsanitize
不要开 O2 优化,开了就定位不了错误。
VMWARE 无法打开内核设备
对应虚拟机 .vmx 文件中,将 vmci0.present
改为
"FALSE"
Win11 自定义快捷键反应慢
就是开始菜单 (建议 Win+Q 搜索 设置
)找到 "设置", 点击
"应用设置", 把 "后台组件权限" 改为 "从不" 即可。