这个系利的初衷是回顾琐碎知识点,但后来发现更实用的地方在于,csdn的blink不能进行检索。汇总后,发在文章里,知识点可以被检索到。
C++
1
C++中cout的使用, iomanip库可以控制C++的输出
https://blog.csdn.net/qq_35481167/article/details/82792103
c++ i++和++i的区别
i++:先引用,后增加
++i:先增加,后引用
所以cout<<i++<<endl,是输出i的引用,之后i的值+1
cout<<++i<<endl,输出的是i+1的值
上面链接里有一个很好的例子
2
自动初始化局部变量和全局变量
3
1、打开与VS2013相关的文件,然后选择需要批量注释的代码。 2、同时按住键盘上的“ Ctrl + K + C”以实现快速批处理注释。 3、返回主界面,发现快速批注操作已在vs2013中完成。 [此外,您可以通过“ Ctrl + K + U”组合键快速批量取消注释]
4
使用Cmake编译文件
第一步:安装gcc,配置环境变量:https://blog.csdn.net/LinusZhao1018/article/details/82152960
第二步:执行cmake命令:https://zhuanlan.zhihu.com/p/59161370
期间遇到了没有生成Makefile的问题,更换编译器为gnu即可解决:https://blog.csdn.net/weixin_42660446/article/details/119650036
5
关于C++ vector的一些程序:
#include <iostream>
#include<vector>
int main()
{
std::cout << "Hello World!\n";
std::vector<int> name;
for (int i = 1; i <= 5; i++)
{
name.push_back(i);
}
name.insert(name.begin(), -1);
name.pop_back();
name.erase(name.end() - 2, name.end());
for (int i = 0; i < name.size(); i++)
{
std::cout << name[i] << std::endl;
}
}
6
cout不换行输出:
for (int i = 0; i < name.size(); i++)
{
std::cout << name[i] << ' ';
}
换行输出:
for (int i = 0; i < name.size(); i++)
{
std::cout << name[i] << std::endl;
}
7
c++ for each循环
https://www.bilibili.com/read/cv8039359/
8
C++构造二维数组快捷方法:
int m[2][2] = { 1,1,2,2 };
9
【C++】cmdline —— 轻量级的C++命令行解析库
https://blog.csdn.net/xiaohui_hubei/article/details/40479811
Linux
1
linux 添加环境变量
export xxx
比如:
KMP_DUPLICATE_LIB_OK=TRUE
Python
1
from glob import glob
print(glob(r’I:\dummy_test_folder*’))
glob类似os.listdir()
2
yield使用策略:①放在for循环里②使用时当做列表
3
两种创建task_work_folder的方式
for item in os.listdir(path_raw_xyz_):
addon_list_str = item.split(’.’)[0]
lazy_mkdir(os.path.join(path_cooked_xyz_, addon_list_str))
这种方式顺序读取原文件夹的每一个文件,以该文件的名称命名。
for idx, item in enumerate(os.listdir(path_raw_xyz_)):
lazy_mkdir(os.path.join(path_cooked_xyz_, str(idx)))
这种方式使用enumerate函数,无法保证新建文件夹的名称和里面xyz文件的名称相同。
因为os.listdir产生的顺序是先比较第一位,再比较第二位,并且没有很好的解决办法。
4
pycharm实用技巧:
选中代码行
alt+ctrl+l
自动调节代码间距,十分方便!!!!!!!!!
5
dpdispatcher中的几个path
一种简易的,可行的方式是把
local_root, work_base设为相同的
task_work_path是该文件夹下面的各个子文件夹
remote_root是在线运行的文件夹,可以为空,存放临时文件
6
https://www.cnblogs.com/qi-yuan-008/p/12708901.html
python异常处理语句try…except…
原链接中提到,通用异常可以和特定异常混用,经过测试,异常符合特定异常标准时,通用异常不再启用
num = [9,7,0,1,4,'16']
for x in num:
try:
print (1/x)
except ZeroDivisionError:
print('error:0做除数!') #特定异常和Exception混合使用
except Exception as e:
print('the Exception is:',e)
print(' ---finished!!--- ')
7
装包的时候报错
Traceback (most recent call last):
File “setup.py”, line 16, in
readme = f.read()
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x8b in position 241: illegal multibyte sequence
这种问题可以通过修改setup.py里面的一句话解决
8
raise和raise…from的区别
python在处理异常的时候引入了raise…from,可以显示异常间的上下文关系,方便后续debug。这种语法的限制是,raise xxx from yyy需要保证yyy异常从属与xxx异常。两个异常都将显示。
此外可以用raise…from None只显示粗放的异常(虽然不明白这样做有什么意义)
https://www.cnblogs.com/qixidi/p/10160614.html
9
python二维列表,索引单个元素只能类似C语言那样,整两个[ ]
把二维列表转化为ndarray类型的变量以后,可以用一个[ ]进行索引
因为列表数据结构一直是一维的,只能先用[ ]索引一次,再用[ ]索引一次
而经过array转化以后变成了二维的数据结构,可以直接索引
10
训练神经网络,loss接连为空,可能的原因是输入数据有空、梯度爆炸、数据未归一化、网络结构不合理
11
https://www.cnblogs.com/changbaishan/p/8454511.html
python自动输出百分数,安装下面范式即可
print(f'{a:%}')
12
使用cmd命令打开Jupiter文件夹
https://jingyan.baidu.com/article/7f41ecec78b8cb593d095ca8.html
13
使用df.to_excel(‘xxx.xlsx’)可将pandas里的DataFrame对象存进Excel里
https://blog.csdn.net/weixin_43952650/article/details/89296710
保存python列表数据到Excel
①列表和列表名构成字典{‘列表名’:列表变量}
②字典转为DataFrame
③利用pandas预处理一下数据(这一步可以不用要)
④df.to_excel即可
14
使用os.symlink创建软链接
15
python glob.glob使用
返回满足要求的文件
16
https://zhuanlan.zhihu.com/p/264331630
python argparser.Argumentparser()模块
首先建立一个parser对象,然后确定该对象从命令行读取哪些参数
执行:从命令行读取参数,赋值给实例化的parser对象
调用该对象。
17
列表的内置函数extend()可以实现两个列表的拼接
注:python列表都是零维的,不用担心维度的问题
+=也可以实现同样的功能
18
python中的int型可表示的数字理论上是无限大的(只要电脑内存够大),不用担心溢出
https://www.zhihu.com/question/65014572
原因如下:
https://segmentfault.com/a/1190000015284473
简单说就是大整数被切块储存在数组里面,因此长度是动态的
19
10进制转任意(小于36)进制方法
def baseN(num, b):
return ((num == 0) and “0”) or (baseN(num // b, b).lstrip(“0”) + “0123456789abcdefghijklmnopqrstuvwxyz”[num % b])
20
and or运算符
21
dataframe添加数据,可以向列表一样简单
https://zhuanlan.zhihu.com/p/257083060
22
os.path.isdir()和os.path.isfile()使用时一定要注意,参数应该是绝对路径!!!!!!不能是相对路径。
错了,可以是相对路径,但二者要在同一目录里
if os.path.isfile(r'\vasp\123.txt'):
print('1')
#不可以
if os.path.isfile(r'vasp\123.txt'):
print('1')
#可以
if os.path.isfile(r'..\123.txt'):
print('1')
#可以
if os.path.isfile(r'\..\123.txt'):
print('1')
#可以
源码修改纪录
1
修改dpdata源码记录:
把’orig’键删掉即可正常运行
multisystem里面有’orig’,需要删掉
2
dpdispatcher修改实录
run_submission脚本修改
增加了两个try…except…语句
ssh_context脚本中的download函数
修改check_exists为Ture
mark_failure为False
3
monty
serialization.py
修改实录:
为了保证正常编解码,79行插入encoding=‘UTF-8’
SQL
1
SQL四种语言:DDL,DML,DCL,TCL
https://www.cnblogs.com/henryhappier/archive/2010/07/05/1771295.html
杂
1
内存基础知识:
位 bit B是数据传输的基本单位,是最小一级的信息单位
1字节(Byte)=8位(bit)
1KB( Kilobyte,千字节)=1024B
1MB( Megabyte,兆字节)=1024KB
1GB( Gigabyte,吉字节,千兆)=1024MB
1TB( Trillionbyte,万亿字节,太字节)=1024GB
1PB( Petabyte,千万亿字节,拍字节)=1024TB
C语言中:
char 1个字节
int 4个字节
long 8个字节
float 4个字节 6~7位有效数字(默认显示6位)
double 8个字节 15~16位有效数字(默认显示6位)
字长由计算机系统决定,以位为单位,常见的有32位和64位
指计算机一次性可以处理的位数
2
python各类型变量所占内存
import sys
print(sys.getsizeof(1))
print(sys.getsizeof(1.00000000))
print(sys.getsizeof(“111111”))
print(sys.getsizeof(“1”))
print(isinstance(1,int))
输出:28,24,50,55,True
3
左右操作数、目标数
4
windows系统下文件命名是有限制的,最多255个字符(算上上级目录)
5
Typora没有公式自动补全功能,可以方便地打公式
6
体心立方 body-centered cubic (bcc)
面心立方 face-centered cubic (fcc)
密排六方 hexagonal closepacked structure (hcp)
简单立方 simple cubic (sc)
金刚石结构 金刚石立方晶体结构 (diamond cubic lattice structure) (diamond) (四面体)
7
json文件编写时注意事项
记录一下json文件编写时遇到的bug
json.decoder.JSONDecodeError: Expecting value: line 69 column 25 (char 2657)
本来接收数字的地方,给了字符串
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 15 column 5 (char 557)
键值和键都要用双引号括起来
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x9c in position 1206: illegal multibyte sequence
load json文件时要注意unicode
latex
自动编译有问题,手动编译可以解决问题。
π输入时要加包,和公式符号美元
关键词不区分大小写
中文编译用xelatex
纯英文:pdflatex biblatex pdflatex pdflatex
含中文:xelatex biblatex xelatex xelatex