Linux 操作
对于linux的学习会是一个很漫长、很有趣的过程。对于 Linux 命令的学习、日积月累,推荐 竹子-每日一个linux命令、工具参考篇
首先,你要知道哪些命令大概什么功能,能完成什么操作(这个重在积累,如果不知道只能 Google 之了),简单入门推荐 最常用的20条命令。然后,关于命令的具体用法可以 Google 之,也可以使用 --help
man
等帮助。
对于linux的学习会是一个很漫长、很有趣的过程。对于 Linux 命令的学习、日积月累,推荐 竹子-每日一个linux命令、工具参考篇
首先,你要知道哪些命令大概什么功能,能完成什么操作(这个重在积累,如果不知道只能 Google 之了),简单入门推荐 最常用的20条命令。然后,关于命令的具体用法可以 Google 之,也可以使用 --help
man
等帮助。
2016/4/11 9:33:05 昨天晚上重装了系统,将CentOS 6 换成了Debian 8。以下记录在Debian 上的配置修改、安装用具等操作。
2016/8/1 14:32:28 大概在两个月前,我又重新将 Debian 8 的系统还原回了 Bandwagon 官方推荐的 CentOS 6,因为翻墙是刚需,当时不单单需要 ShadowSocks,还需要 OpenVPN(使用 Google 的 Music Play 上传音乐用,生活在墙内,/(ㄒoㄒ)/~~)。另外,服务器毕竟是入门级配置,实际操作不太流畅。更换 CentOS 6 之后只配了 SS 服务器,再也没折腾过。
虽然在网上参考了很多,尤其是 服务器操作系统应该选择 Debian/Ubuntu 还是 CentOS? - 袁昊洋 的回答,作为服务器第一优选 RHEL/CentOS。我为什么还非得要更换成 Debian 系统呢?其实只是喜欢,也因为是个人的机器,目前除了科学上网就是熟悉系统、练习开发,折腾坏了宕机都是没有影响的,写这篇备忘录也是为了重装系统时更轻松快捷。
2016/5/27 13:13:10
gcc 版本:
1 | cts@SuSe-CTS2:~> gcc --version |
在 Linux 终端下用 Vim 编辑程序时,不能按 Ctrl + S!
对于大多数终端,可以用
Ctrl + S
禁用“回显”,然后用Ctrl + Q
启用“回显”。引用来源
打印了一份《Vim基本操作思维导图.pdf》,放在桌子上,用到的时候随时查看。其中有不足之处,例如,关于替换的操作让我困惑了好几次,后来在网上重新搜索 Vim查找替换及正则表达式的使用 之后,才明白过来 g
参数并非全局,而是整行。
所以,系统性的学习还是很有必要的。参考 Vim命令合集,其中也有瑕疵,多看评论。在实践中慢慢掌握才是王道,再如何花费时间去查阅,随手敲敲命令看看效果都是浪费时间,刻意地进行反复练习,效果有,但是意义呢?
2015年12月7日 16:55:34
说说 CString 的几个函数。
GetLength()
获取字符串长度并不是动态计算的,而是在赋值操作后计算并保存在一个 int 变量内的。MSDN 对这个函数描述。Example:
1 | // crt_sscanf_s.c |
sscanf_s 取值的时候,需要在每个取值后面指定取值的最大大小。
1 | #include "stdafx.h" |
完全没想到安装 mysql 会消耗掉将近一天的时间。从上午十一点,没吃饭没睡觉一直折腾到下午四点半,网上已经有了很详细的安装指导,却依旧卡在某个问题上两三个小时。文中会详细叙述。
我们可以在不同的平台以“不同的姿势”搭建 mysql 环境。
通过 官方指导手册 的章节标题我们就能感受到“姿势”的多种多样了。因为我使用的 Debian8,其官方软件库中 mysql-server-5.5,所以在此贴的链接也是 5.5 版本的。
Installing MySQL on Unix/Linux Using Generic Binaries
Installing MySQL on Linux
- Installing MySQL on Linux Using Debian Packages
- Installing MySQL on Linux Using Native Package Managers
- Installing MySQL from Source
如果你有管理员权限,很明显使用 Debian 原生的 apt-get 包管理器进行安装是最方便的。我也是敲入以下命令直接装的:
1 | apt-get update |
关于 mysql-server 和 mysql-client 的区别:
来一段引用或者 链接
打算使用 windows 上的 Navicat 访问、管理数据库的。但是在虚拟机使用 NAT 模式前提下,windows 主机无法访问安装在 Debian 虚拟机中的 mysql 数据库。从网上查找资料了解到,修改为“Bridge”模式可以让宿主机、虚拟机彼此访问,但是涉及笔记本双网卡、气象局网络环境等,还要了解虚拟机三种网络模式,不想背离初衷(上午十点我只是打算写段访问数据库的 C++11 代码)太远,所以选择放弃!以后碰到了,再回来接续这些技能。
在 Debian8Light 上卸载 mysql-server-5.5,保留了 mysql-client-5.5。
windows 下是“姿势”多多。既然是在 windos 上安装,就使用最新的 5.7 版本了。
- Installing MySQL on Microsoft Windows Using MySQL Installer
- Installing MySQL on Microsoft Windows Using a noinstall Zip Archive
使用 MySQL Installer 安装包安装很简单,需要花费精力的是“尽可能的安装最小集,只安装那些你需要的”。对于这次的使用场景来说,我是练习写 C++ 代码用,而且已经有了 Navicat 工具。所以,我只需要安装 MySQL Server 和开发时所用的 Connector,其他的任何 GUI 工具和 Java、Python 连接器我都不需要。
剔除那些根本就不会用到的功能花费了一些时间,除此之外,整个安装过程很顺利,装完之后连接成功直接使用。
在好奇心和心理洁癖的驱使下,我尝试搭建了 解压版 MySQL。就是在这个过程中遇到了意外,花费了两个小时才解决。
解压版本重点在于配置,根据网上的示范(5.5版本、5.6版本)搭建完毕,可是启动服务时老是失败,报错“本地计算机上的mysql服务启动后停止,……”。我当时脑袋也是不清醒,下意识地以为是配置文件的问题,或者是一台电脑安装两个实例带来的冲突。配置文件,我是把安装版的 my.ini 稍作修改直接拿过来用的,担心漏掉了某条配置没有改,造成冲突。可是校对之后仍没能解决问题;然后将安装版本卸载之后,还是出现这个错误,才反应过来直接 Google 这句错误信息。网上搜到的信息不多,但很有效。
这是一个在 5.7.7 版本之后才有的现象,新的版本需要 Initializing the Data Directory。如果英文水平不高,可以直接参考 MySQL 5.7.9 ZIP 免安装版本配置过程。
而现在 2016/7/16 18:56:44 ,我要开始码代码了。
在 windows 上安装 msi 版本后,查看在其 /Data/ 目录下的 my.ini 配置文件。
整个配置文件分为两部分: Client Section 和 Server Section。强调 mysql 和 mysqld 是不同的两个功能,尤其是用 mysql、mysqladmin等客户端工具连接数据库时(默认)使用 Client Section 区域的 port,mysqld 启动数据库服务时监听 Server Section 区域的 port 指定的端口。仔细阅读配置文件中的注释!
很很重要的一部分!但目前没有深入了解的必要,参考 MySQL 数据库赋予用户权限操作表 只学习以下几点:
查看权限:查看自己的权限,查看其他用户的权限
1 | mysql> show grants for dba; |
GRANT语句的主要用途是来给帐户授权的,但也可用来建立新帐户并同时授权。
创建 testdb 数据库,在其基础上创建 common_user developer dba 用户并授权
1 | GRANT SELECT, INSERT, UPDATE, DELETE ON `testdb`.* TO 'common_user'@'%' IDENTIFIED BY 'common_user'; |
参考 MySQL之权限管理 了解更多的,记得去官网哦。
jack@’localhost’ 表示jack用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。注意:这里%有的版本不包括本地,以前碰到过给某个用户设置了%允许任何地方登录,但是在本地登录不了,这个和版本有关系,遇到这个问题再加一个localhost的用户就可以了。
WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。
MySQL Connector/C++ Developer Guide
在 C++ 中使用 MySQL 数据库,包含上述方法在内一共有 3 种:
1 | 文件夹 PATH 列表 |
2016年1月12日 18:14:37
本节转自 bool BOOL 和 _Bool辨析
BOOL
类型在头文件 <windef.h> 中定义为 typedef int BOOL
;在头文件 <wtypes.h> 中定义为 typedef long BOOL
。
BOOL
类型,即 int 类型的长度视实际环境来定,一般可认为是 4 个字节。
BOOL
是微软定义的表达布尔逻辑的类型。与 C++ 中的 bool 类型不同是,它是一个三值逻辑:TRUE、FALSE 和 ERROR。当返回值为大于 0 的整数时为 TRUE,返回值为 0 时为 FALSE,返回值为 -1 时为 ERROR。
bool
类型在 C++ 中以关键字的形式被支持,表示布尔类型,其对应变量的值只有真(true)和假(false)两种值。bool
在 C++ 里占用 1 字节。
_Bool
是 C99 标准中定义的一个新关键字,以提供布尔类型。C2008 草案中只规定了 _Bool
类型的大小至少应能够存放 0 和 1 这两个值。而并没有规定具体的大小。这交给编译器自由发挥了。
以上,足够读者区别彼此的使用场景了。