MySQL/面试题:如何设计一个关系型数据库

MySQL/面试题:如何设计一个关系型数据库

咋一看这个题目有点空,其实能够考研我们对数据库设计的整体把控。首先数据库系统可以分为两层: - Server 层(也就是程序实例),提供获取以及管理数据的方式,还要必要的问题追踪机制。Server 层又可以细分为: - 存储管理:将数据的逻辑关系转换为物理关系 - 缓存机制:优化执行效率 - SQL 解析:

阅读更多
Papers/EV-SegNet Semantic Segmentation for Event-based Cameras-笔记
找工作的最佳时期

找工作的最佳时期

为什么会出现金三银四的说法

跳槽中出现的金三银四的说法绝非偶然,这和大多数公司的政策相关 - 许多互联网公司一般会在年初发放年终奖,同时调薪等情况也会在年初确定,对于在原公司发展不顺利的人来说,此时跳槽成本较小 - 而另一方面,公司会增加员工名额,弥补劳动力缺口。此时招聘市场便迎来了高峰。

阅读更多
Linux/虚拟机 Centos 配置 IP 地址
Linux/Linux 后台运行脚本

Linux/Linux 后台运行脚本

我们经常需要在 Linux 服务器上执行一些耗时比较长的操作,比如深度学习的模型训练。但是我们平时在 Linux 上运行的程序可能需要和用户进行交互,例如允许让用户输入,然后输出结果也打印到交互命令行上。这种方式比较适合运行一些简单的命令。但这种模式的缺点是,一旦当前的交互命令行退出,程序就停止运行了。这就要求我们在与服务器断开连接之后,依然能够在 Linux 后台运行脚本。这里先给出一个比较完美的写法。

假设你的脚本是 train.py,你想保存的输出文件为 train.log,那么使用如下语句:

1
nohup python -u train.py > train.log 2>&1 &

nohup命令的意思是 no hang up(不挂起),也就是说,当前交互命令行退出的时候,程序还会执行。

python -u 中的 -u参数是使得python不启用缓冲。默认情况下代码中的输出语句的内容不会立刻被写入 train.log,而是先会存储在缓冲区中,等到一定时机再写入train.log。使用-u参数会关闭缓冲,输出立刻被写入文件。

> train.log 表示把标准输出 (STDOUT) 重定向到train.log中。这样,在代码中使用print打印的字符都会保存在train.log中。

2>&1 中,1表示文件描述符 1,表示标准输出,2表示文件描述符 2,意思是标准错误输出,2>&1表示标准输出和错误输出合并了,将错误输出重定向到标准输出。因为标准错误输出 (STDERR) 没有缓冲区,而标准输出有。这就会导致STDOUT > train.logSTDERR > train.log 分别执行,train.log文件被两次打开写入,而标准输出和错误输出将会竞争覆盖,会出现不可控的问题。

最后的&是指后台运行。但当用户退出的时候,也就是挂起了。脚本也会停止执行。所以使用 nohub就是在当前交互命令行退出的时候,程序还会执行。

参考

linux 下后台运行python脚本