blueyi's notes

Follow Excellence,Success will chase you!

0%

系统为ubuntu 16.04.1 x64,具体参数如下:

1
2
3
4
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"

系统为Ubuntu 64位服务器版的最小化系统
安装Nvidia官网最新版本的CUDA 8(2016.12.19)
下面分别使用Nvidia官方手册中使用deb源的方式安装,和根据Nvidia提供的二进制包配合双显卡技术的方式安装。前者更新更方便,后者针对双显卡最方便。服务器系统推荐使用第一种方式安装,笔记本建议使用第二种方式,因为可以实现双显卡,集显更省电。
如果只是为了玩游戏需要配置Ubuntu下的Nvidia和intel双显卡,也可以直接跳到双显卡切换的配置部分

Read more »

UFW,即Uncomplicated Firewall,是基于iptables实现的防火墙管理工具,所以实际上UFW修改的是iptables的规则。之所以不直接使用iptables,而要通过UFW进行管理是因为iptables的规则对于新手入门来说有点难,UFW做了很好的包装。

Read more »

依然是首先给出参考网站,感觉还是让看到的人,直接去看原作会更快,以免疏漏不是我所关注的重要内容:
CMake官网:https://cmake.org/,官网有个tutorial
另一个CMake Turorial:https://www.johnlamp.net/cmake-tutorial.html
CMake by Example:http://mirkokiefer.com/blog/2013/03/cmake-by-example/
CMake官方WIKI:https://cmake.org/Wiki/CMake

首先要搞清楚出cmake是一个跨平台的项目管理工具,用来生成其他项目构建工具所需要的规则文件。例如gnu的make可以根据makefile文件中定义的规则来对C/C++项目进行编译、链接等(较多地用于c/c++项目),qmake可以根据pro文件中定义的规则对qt项目进行构建,而VS则可以根据VS的项目属性文件对其管理项目调用自身的编译器进行编译。那么这些编译文件就可以用cmake来生成,cmake可以根据CMakeLists.txt中定义的规则来生成相应的项目构建平台所需要的规则文件。以make来举例,make可以通过makefile中定义的规则调用c++编译器对项目进行编译并链接并生成可执行文件,相当于项目的编译等构建工作依然由各编译器来完成,而具体如何编译(例如使用的头文件在哪,链接的库去哪找等)则由make根据makefile中定义的规则来调用g++进行编译,而项目构建工具make所需要的makefile则由cmake来生成。makefile可以手动来写,但当项目非常大时,makefile可能会很复杂,此时就可以通过cmake根据MakeLists.txt来自动生成makefile。而假如该项目还要转移到win平台下,又需要使用VS来进行对该项目编译,则CMake可以根据MakeLists.txt来生成VS的项目属性文件(通常后缀是解决方案.suo、项目.vcxproj),然后即可使用VS直接打开解决方案文件

Read more »

本文不会像其他笔记那样详细讲解每一个步骤和问题,最近太忙,没有太多时间,突击学习一下,记录下遇到的一些问题,但依然会像其他笔记一样授之以渔。仅针对C++,OpenCV2,假如你没学习过官方提供详细支持的编程语言,例如C/C++/python,建议还是先学一门编程语言再来学习OpenCV吧。看到网上有教程竟然讲OpenCV时还讲起了C语言。
强烈推荐参考官方手册,官方的doc简直太棒了:http://opencv.org/documentation.html,即能下载PDF,又能在线查看,还有详细的tutorial,以下多数问题的解决来源于查看官方的Reference Manual:http://docs.opencv.org/2.4/opencv2refman.pdf

Read more »

关于环境配置

网上有一大堆这样那样的方法,官方有详细且简单的教程,为什么要舍近求远呢,甚至有些书上还义正言辞地认为自己的配置方法非常好,其实他自己都不清楚为什么需要那些步骤,官方教程的windows配置方法:http://docs.opencv.org/3.0-last-rst/doc/tutorials/introduction/windows_install/windows_install.html

Read more »

网上关于KVM的简单使用教程有很多,但通常都是通过桌面的方式进行管理和使用,而且大部分教程中都忽略了很多重要的细节,且应用场景都较为简单。本文提供的教程主要用于有多人需要大量的虚拟机使用需求,要能够让大家非常方便地随时创建和删除虚拟机,支持通过SSH进行连接,同时支持通过VNC进行远程虚拟机桌面的连接(安装虚拟机系统时肯定需要,当然服务器带桌面例外)。当然如果使用OpenStack会方便很多,但毕竟Openstack配置非常复杂,其实采用KVM的初衷就是为了将来迁移到Openstack做个过度。

Read more »

虽然现在都流行TL;DR,但还是一如继往地授之以渔,虽然看似很长,其实非常简单,更多的内容是在讲原因。不仅适用于ubuntu系的系统,手动安装方式同样可类似地用于其他系统。无法就两步:下载并解决JDK,配置环境变量。

Read more »

超大整数的表示及四则运算,大家的多数方法是采用字符串表示超大整数,然后再根据竖式计算的原理进行计算。例如12345678 + 87654321,就是两个字符串,然后将这两个字符串中的各个位取出来右对齐后进行一位位相加,如果有进位就考虑进位的问题,例如这里至少需要相加8次,如果最高位有进位,就是9次。
这里采用的方法相当于采用10^n进制来存储超大整数,例如12345678,如果按10000进制来存的话(因为这样的两个最大数相乘刚好不会超过10^9,可用用int32存),就是存成[1234,5678],两个整数,这样的话,只需要相加2次就可以了,而且进位的计算也最多只需要2次。相比字符串,当整数超大时,时间复杂度会降低很多。下面的实现中采用的是vector来存储的,由于加入了时间统计及DEBUG,所以看上去代码略多。
由于最近太忙,只实现了加、减和乘,除等以后有时间了再,下面是完整的代码,也不整理了,注释比较少,优化空间也很大,等以后有时间了再整,留个备注

Read more »