c++学习路线
自己编程基础太差,痛定思痛,决定深入学习一门语言,这里选择学习C++,因此从知乎上找到一个C++学习路线。
c++基础
《C++ Primer》
《STL源码剖析(侯捷 译)》
《深度探索C++对象模型(侯捷 译)》
《Efective C++(侯捷 译)》
Linux
《鸟哥的Linux私房菜》
UNIX环境高级编程
Linux/UNIX系统编程手册(上下册)
内核
《Linux内核设计与实现》
《深入理解Linux内核》
数据库
《数据库系统概念》
《mysql必知必会》
《mysql 45讲》
接下来的计划
前言现在已经9月19了,这半年来一直忙着春招、实习和秋招,一直没有写博客,到今天为止,爷的秋招也算结束了,后续八九不离十去美团。今年的秋招是真难啊,本来以为熬过去最艰难的春招就行了,没想到大环境越来越差,秋招相比春招更难了,只要是好点的算法岗位,一堆手里有顶会的人来竞争。而我的大秋招也成功在拒了拼多多、网易和华为的面试,挂了字节和快手,没投阿里、腾讯和百度后结束了。也借现在喘息的机会,好好思考后续的路该怎么走。
从2016年开始上大学到现在,已经6年过去了。在这六年里,荒废了很多时间,也养成了很多不好的习惯,如果给这6年的自己打个分,只能给个及格分吧。最近也一直在思考,后续要成为一个什么样的人?要走什么样的道路?要过什么样的生活?希望自己接下来的几年时间里,能够吸取过去六年的经验和教训,改正坏习惯,培养一个长期的爱好,对自己的生活、工作和成长都有益处。
首先反思自己性格上的缺点:
做事总想着速成,沉溺在即时快感中,导致无法坚持长远有益的事情。
做事只有三分钟热度,即便指定长远计划,也只坚持开始的一两个月,甚至无法超过半年。
好大喜功,取得一点成就或者优势就到处宣传,心里很难藏住秘密, ...
LeetCode题型整理-买卖股票的最佳时机
参考/优秀博客
一道解法团灭买卖股票问题
图示借用上面博客的一张图,来表题型的状态转移方程:
该问题的不同情况分类状态集合表示如下
dp[i][k][0]: 第i天结束时刻,允许的最大操作次数:k,手中不持有股票时,最大的收益
dp[i][k][1]: 第i天结束时刻,允许的最大操作次数:k,手中持有股票时,最大的收益
股票买卖考虑下面四种情况
第i天结束时手中持有股票
第i-1天结束时手中持有股票
第i-1天结束时手中没有持有股票 (说明第i天买入了股票)
第i天结束时手中没有持有股票
第i-1天结束时手中持有股票 (说明第i天卖出了股票)
第i-1天结束时手中没有持有股票
根据上面四种情况写转移方程初始状态12dp[0][i][0] = 0dp[0][i][1] = -price[0] #因为这个表示,允许的最大操作次数是k,而不是实际操作次数,所以会出现dp[0][2][1]=1的情况
转移方程12dp[i][k][1] = max{dp[i-1][k][1], dp[i-1][k-1][0]-price[i]} # 这里为什么 ...
LeetCode题型整理-背包问题
参考/优秀博客
一篇文章吃透背包问题!(细致引入+解题模板+例题分析+代码呈现)
动态规划/背包问题】运用分组背包进行求解
定义给定一个背包容量为target,给一个数组nums,按一定方式,选取nums中的元素得到target。 根据定义,我们可以将问题分成不同类型。
类型
基本型:
0/1背包:每个物品最多选择一次
多重背包:每个物品最多选择k次(可以看做k个0/1背包,这里不单列出来说了)
完全背包:每个物品不限制选择次数
组合型:考虑拿取物品的顺序,相同物品,不同拿取顺序表示不同的结果
组合背包+0/1背包
组合背包+多重背包 ==> 组合背包+0/1背包
组合背包+完全背包
分组型:不止一个背包,这里只有一倒例题,可以直接去看例题
模板基础模板对于所有的背包问题,先看原始背包的解题思路和代码:
123456789101112131415weight = [None]*nvalues = [None]*n# dp[i][j]: 从索引为0-i的物品中选择不超过j重的物品的最大价值dp = [[0]*n for _ in range(target)] # 初 ...
随笔1-火焰会熄灭
大海会干涸,火焰会熄灭,少年的心会被戳的满目苍夷,美丽的少女,你为何哭泣?远方游吟的诗人,你为何低语?为那麻木的心?为那脸颊上的泪?为那错开的脚步?为那渐行渐远的背影?游吟的诗人微微摇头,我为那世间最美好遗憾的事情,“何事?”“曾经拥有”
'TypeError: Object of type 'xxx' is not JSON serializable'解决方法
报错原因json在使用json.dumps()存储字典的时候,如果遇到json无法编码的类型时会报错。我们打开json的源码,找到 encoder.py --> _make_iterencode() -->_iterencode(),如下:
我们可以发现json能够处理的类型有str,None,True,False,int,float,list,tuple,dict。其他的类型,会调用_default()函数进行处理。
我们找到这个_default()函数,其实就是JSONEncoder --> default()。如下:
可以看出来对于其他类型,JSON就会跑出上面的TypeError.
解决方法知道了报错原因,解决方法也就知道了。
解决方法就是重写JSONEncoder --> default()这个方法,对于json不能处理的类型,我们自定义处理方法然后使用就行了。
123456789101. 自定义encoderclass OurEncoder(json.JSONEncoder): def default(self, obj): i ...
vscode学习系列(1) - 快速入门
快速入门1. 设置
三种设置范围
user settings: 全局设置
workspace setting: 只在相应的工作区生效
folder setting: 只在某个文件夹下生效
两种设置方式(便于不同的人使用)
GUI
Json
使用方法: Ctrl + Shift +P调出控制面板,然后输入setting
支持特定语言的设置
使用方法: Ctrl + Shift +P,然后输入Configure Language Specific Setting
git.path和terminal有关的一些只能在using setting中设置,不能再workspace setting中设置
2. 用户界面
命令面板
可以在命令面板中找到所有命令
使用方法:Ctrl+Shift+P
命令面板的几种模式(控制面板最左边的符号):
? : 列出可以执行的操作
! : 显示 Errors 或者 Warnings,等价 ==> Ctrl + Shift +M
: : 跳转到行数,等价 ==> Ctrl + G
@ : 用于当前文件搜索函数或者变量,等价 ==> ...
VsCode快捷键
常用快捷键通用快捷键
Ctrl + Shift + P: 打开命令面板
Ctrl + Shift + N: 新疆一个vscode窗口
Ctrl + W: 关闭当前窗口
Ctrl + ,: 打开用户设置
跳转
Ctrl + P: 文件跳转
Ctrl + Shift + Tab: 在所有打开的文件中跳转
Ctrl + Shift + O: 跳转到文件中的 Symbol(符号)
Ctrl + T: 搜索所有的Symbol
Ctrl + G: 跳转到某一行
Alt + Left/Right: 向前/向后跳转到某一打开页
基本编辑
Ctrl + X: 剪切当前行(当没有选定任何文本时)
Ctrl + C: 复制当前行(当没有选定任何文本时)
Alt + Up/Down: 把当前行的内容向上/下复制
Ctrl + Shift + K: 删除当前行
Ctrl + /: 添加或删除当前行的注释
Home/End: 光标移动到当前行的起始/末尾
编程语言编辑
Ctrl + Shift + I: 格式化文档
Ctrl +K Ctrl + F: 格式化选定内容
F12: 跳转到定义
Alt+F12: ...
解决Anaconda安装pytorch慢的问题
问题在使用pytorch官网的指令安装pytorch时,发现安装的速度很慢,官网的安装指令如下(以1.1.0为例):
1conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=10.0 -c pytorch
解决方案这是因为下载的时候使用的是pytorch官网的源,我们修改源就行了(这里使用的清华源)。执行下面代码修改源:
12345678conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/conda config --add channels https://mirr ...
ubuntu查看cuda版本
cuda一般安装在 /usr/local/cuda/ 路径下,该路径下有一个version.txt文档,里面记录了cuda的版本信息
1cat /usr/local/cuda/version.txt
使用nvcc指令
1nvcc -V