Python 中 deepcopy, copy, 赋值的区别
Python 中数据对象分为三类,一类是不可变对象,如元组、字符串、数值;一类为单层可变对象,如列表 L = [1, 2, 3],字典 D = {‘x’: 1, ‘y’: 2};最后一类是多层可变对象,即可变对象中嵌套有可变对象,如列表 L = [1, [1, 2], 3],字典 D = {‘x’: [1, 2], ‘y’ = 3}。
Python 中拷贝也分为三类, 一类是赋值 ‘=’; 一类是浅层拷贝 copy.copy(); 一类是深层拷贝 copy.deepcopy(),它们表现了对数据操作的不同程度。赋值’=’是对数据对象“打上标签”, 而不对具体的数值操作,是一种指向操作。深层拷贝是真正意义上的拷贝一份,创造出两个完全意义的数据对象,在内存中开辟一个空间来存储数值。浅层拷贝对于对于不可变对象和单层可变对象开辟一个内存空间来存储数值,但是只存储“一层”,对于多层可变对象数据,不能够嵌套拷贝,因为嵌套的可变对象在多层可变对象中是以索引或标签的形式存储的。
举一些例子:
对于固定值的不可变对象,三者一样 ...
计算机视觉方向顶级会议和顶级期刊
计算机视觉(Computer Vision,简称 CV)方向是一个非常热门的方向,有关 CV 的会议和期刊因此也有很多,这里我介绍 CV 方向的三个顶级会议和两个顶级期刊。
三大顶会
CV 方向的顶级会议包括国际计算机视觉大会(IEEE International Conference on Computer Vision,简称 ICCV)、欧洲计算机视觉会议(European Conference on Computer Vision,简称 ECCV)、国际计算机视觉与模式识别会议(Conference on Computer Vision and Pattern Recognition,简称 CVPR),下面分别介绍它们。
ICCV
ICCV 是由电气电子工程师学会(Institute of Electrical and Electronics Engineers,简称 IEEE)于 1987 年发起和主办,隔一年举行一次,因此都是在奇数年举行。会议通常需要 4-5 天,最近有延长的趋势,举办地不固定,今年(2019 年)ICCV 将于 10 月 27 日(星期日)到 11 月 ...
深度学习的 GPU 环境的配置
本篇介绍如何在 Linux 服务器上安装 NVIDIA Driver(NVIDIA GPU 显卡驱动),CUDA Toolkit(GPU 通用并行计算架构),CUDA Deep Neural Network (cuDNN,CUDA 深度神经网络库),NVIDIA Collective Communications Library (NCCL,NVIDIA 集合通信库) 和 apex (NVIDIA/apex: A PyTorch Extension). 以 Ubuntu 18.04.6 LTS 为例进行介绍。
安装 NVIDIA Driver 和 CUDA Toolkit 需要考虑版本兼容问题,查看官方网站获取版本兼容对应关系。
NVIDIA Driver该模块就是安装显卡驱动。
ubuntu18.04-nvidia drivers 10.2
其实该步骤安装可以省略,在下一节安装 CUDA-TOOLKIT 时可同时选择安装驱动 NVIDIA-DRIVERS
1234567891011121314# 安装前需退出 X-SERVER,如 xorg 等,保证 `lsmod ...
LaTeX 中文模版
$\LaTeX$ - 中文(模板)
有些初使用 $\LaTeX$ 进行中文写作的作者,总是会遇到不能正确利用 $\LaTeX$ 编译中文文档的问题,这里总结出一个模板,来帮助这些作者方便进行 $\LaTeX$ 中文写作,具体步骤如下:
添加如下代码
XeLaTeX编译执行
(注意:生成目录需要编译两次)
具体 $\LaTeX$ 代码如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657\documentclass[a4paper, 12pt]{article}\usepackage{geometry}%\usepackage[UTF8, heading = false, scheme = plain]{ctex}%格式\usepackage{ctex}%\usepackage{authblk} %添加机构,需要安装pr ...
查看内存消耗排序情况
在终端运行如下命令
1ps -aux | sort -k4nr | head -n 25
查看占用内存从大到小的25个进程
Linux端口占用情况查询与释放端口
查询特定端口占用情况:
1root@ip-172-26-1-96:/# netstat -ntulp | grep 8080
1tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 5759/filebrowser
结果最后一位分别是进程id/进程名,使用如下方法杀死进程:
1root@ip-172-26-1-96:/# kill 5759
再次查看端口得到释放
1root@ip-172-26-1-96:/# netstat -ntulp | grep 8080
更多方法,请参考:[Linux 端口占用与释放](
123456title: Linux端口占用情况查询与释放端口date: 2019.12.21tags:- linux- portcategories: technology
查询特定端口占用情况:
12root@ip-172-26-1-96:/# netstat -ntulp | grep 8080tcp 0 0 127. ...
Mac Book Pro 更改 bash 为 zsh
zsh 相较于 bash 有更多的方便,如更强大的命令补全、支持更方便的历史命令搜索等。本篇介绍如何从 bash 切换为 zsh.
切换 zsh1234chsh -s /bin/zsh# 有时 Centos 上没有自动安装工具 chsh,可使用如下方法安装sudo yum install util-linux-user
安装 oh-my-zsh1sh -c "$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
使用主题12345678910vim ~/.zshrc# 指定主题,如好用的 ys:ZSH_THEME="ys"# 终端动态更新提示符PS1时间TMOUT=1TRAPALRM() { zle reset-prompt}
在服务器上搭建个人网盘
本篇通过 filebrowser 在服务器上搭建个人网盘。本篇以 Ubuntu 为例,以普通用户身份允许命令。
安装 filebrowserfilebrowser 官网上推荐的安装方法如下:
1curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
也可以直接到 Github上地址:https://github.com/filebrowser/filebrowser 下载最新版安装。
1234567cdFILEBROWSERVERSION=$(curl -fsSL https://api.github.com/repos/filebrowser/filebrowser/releases | grep tag_name | sed -E 's/.*"(.*)".*/\1/'| head -n1)wget https://github.com/filebrowser/filebrowser/releases/download/$FILEB ...
如何求解方程$\sin(x)=2$
MathJax.Hub.Config({
tex2jax: {
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'],
inlineMath: [['$','$']]
}
});
如何求解方程$$\sin(x)=2$$该方程有多少个解?
Ubuntu 包管理工具 snap
在 Ubuntu 系统上,命令行利用 apt 作为包管理工具已经是非常不错的,但是,有些包,比如 youtube-dl 却不能很好的安装和更新,但是,通过 snap 我们可以非常完美的解决这类包的安装与管理。
利用 apt 安装 snap,命令如下
1sudo apt install snapd
查找需要安装的包
1snap find search_text
安装包
1sudo snap install package
查看安装了哪些包
1snap list
查看安装的包的历史
1snap changes
更新安装的包
1sudo snap refresh package
也可以查看更新列表
1sudo snap refresh --list
返回包的更新到上一个版本
1sudo snap revert package
卸载包
1sudo snap remove package
通过 snap下载离线 app
1snap download package_name
安装app
12snap ack package_namesnap install package ...
Debian or Ubuntu 修改主机名
首先,运行命令查看主机名
1hostnamectl
Static hostname: debian-virtualbox Icon name: computer-vm Chassis: vm Machine ID: aaaaaaaaaaaaaaaaaaaaaaaa Boot ID: bbbbbbbbbbbbbbbbbbbb Virtualization: oracle Operating System: Debian GNU/Linux 10 (buster) Kernel: Linux 4.19.0-6-amd64 Architecture: x86-64
其次,运行如下命令修改主机名
1hostnamectl set-hostname debian
1vim /etc/hosts
修改 /etc/hosts 中的 debian-virtualbox 主机名为 debian,重启一个 terminal,发现已经修改成功。













