奇技淫巧第二期

这个系利的初衷是回顾琐碎知识点,但后来发现更实用的地方在于,csdn的blink不能进行检索。汇总后,发在文章里,知识点可以被检索到。

C++

1
C++中cout的使用, iomanip库可以控制C++的输出
https://blog.csdn.net/qq_35481167/article/details/82792103
c++ i++和++i的区别
i++:先引用,后增加
++i:先增加,后引用
所以cout< cout<<++i< 上面链接里有一个很好的例子
2
自动初始化局部变量和全局变量
奇技淫巧第二期_第1张图片
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 
#include
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
奇技淫巧第二期_第2张图片

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
奇技淫巧第二期_第3张图片
9
python二维列表,索引单个元素只能类似C语言那样,整两个[ ]
把二维列表转化为ndarray类型的变量以后,可以用一个[ ]进行索引
因为列表数据结构一直是一维的,只能先用[ ]索引一次,再用[ ]索引一次
而经过array转化以后变成了二维的数据结构,可以直接索引
奇技淫巧第二期_第4张图片
10
训练神经网络,loss接连为空,可能的原因是输入数据有空、梯度爆炸、数据未归一化、网络结构不合理
奇技淫巧第二期_第5张图片
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创建软链接
奇技淫巧第二期_第6张图片
15
python glob.glob使用
返回满足要求的文件
奇技淫巧第二期_第7张图片
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运算符
奇技淫巧第二期_第8张图片
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
左右操作数、目标数
奇技淫巧第二期_第9张图片
4
windows系统下文件命名是有限制的,最多255个字符(算上上级目录)
奇技淫巧第二期_第10张图片
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

你可能感兴趣的:(python,c++,linux)