set
作用域
-U or –universal
所有shell实例共享,立马生效,重启后仍然有效
Command Substitutions
用( )
来执行子命令
set os (uname)
其他
更新补全数据
fish_update_completions
实例
设置变量,并执行命令
env PORT=7000
-U or –universal
所有shell实例共享,立马生效,重启后仍然有效
用( )
来执行子命令
set os (uname)
更新补全数据
fish_update_completions
设置变量,并执行命令
env PORT=7000
1 | # Example of job definition: |
| 特殊字符 | 代表意义 |
|———-+————————————————————————-|
| *
| 代表任何时刻都接受的意思! |
| ,
| 0 3,6 command代表几个时段的意思。这个例子就是3:00和6:00 |
| -
| 代表一段时间范围内,与逗号一样,只不过是连续的几个点,是’,’的特殊情况 |
| `/n` | /5 command那个n代表数字,亦即是每隔n单位间隔,该位要用’‘先填补 |
特殊时间控制:
1 | @reboot <COMMAND> |
周与日和月不能同时存在,因为两个点指向的天不一定是同一天,指定了周,日和月都要置成,指定了月或日,周就要置成;
%
需要转义,默认用来表示后续字符作为命令的标准输入!
date --date='-1 day' +"\%Y-\%m-\%d"
指定shell
SHELL=/bin/bash
命令中不能使用sudo
,除非修改/etc/sudoers
中配置Defaults requiretty
=>Defaults !requiretty
重定向标准输出和出错到文件
* * * * * <COMMAND> >>/tmp/crond.log 2>&1
安装
mklink /d E:\Soft\Vim\setting\.vim\bundle\gocode E:\Soft\go\gopath\src\github.com\nsf\gocode\vim
修改配置文件
sudo vim /etc/my.cnf
general_log=1
general_log_file=/var/log/mysql/mysql.log
创建相应文件
mkdir -p /var/log/mysql/
touch /var/log/mysql/mysql.log
chmod 666 /var/log/mysql/mysql.log
重启mysql
sudo systemctl restart mysqld
查看
tail -F /var/log/mysql/mysql.log
数据类型
所有可能值的抽象,一种类型支持一组特定的操作
内存大小
存储该值所需要的存储空间大小
变量名(可选)
对变量进行引用的标识符
值
变量存储的内容
作用域
对齐
存储期
生命期(跟存储期相关或临时)
变量定义指定了变量的类型和标识符,同时可以指定初始值。
指定了初始值的对象称为是已初始化的。
两种初始化方式:
复制初始化,语法上用=
表达,如int i = 1;
直接初始化,语法上用()
表达,如int i(1);
主要为了保持与C的兼容
初始化是指创建变量,并设置初始值的过程,是在变量定义语句中完成的,对一个变量来说,只会发生一次!
而赋值是在变量初始化之后,进行值改写的过程,可以多次操作!
相比直接初始化,不能使用explicit
修饰的构造函数和类型转换函数
复制初始化会先根据重载决定机制,调用相应的构造函数创建一个该类型临时对象,然后再调用复制构造函数来初始化该对象,最后临时对象析构函数被调用。
但C++标准运行复制省略(copy elision),GCC默认开启该功能,可通过(-fno-elide-constructors
)来关闭该功能。
如果复制构造函数有副作用时(执行次数影响了程序状态),复制省略会影响程序正确性!
直接根据重载决定机制调用相应的构造函数,或相应的类型转换函数
修饰class,阻止该class再被继承
修饰virtual method,阻止该method再被重写
修饰virtual method,说明该method是重写的
能够更好地使用编译器检查出错误,以免定义出新method,而不是重写,从而导致非预期行为
这两个关键字,都是非必需,但是都很有用!可以让开发者更准确地表达,同时编译器可以在编译阶段就发现该错误!
最早起源于CPL
语言(1960s)。
是表达式的二个属性(类型,值类别)之一!
左值:可以寻址(Locate)的对象,根据是否可修改属性,分为可修改左值,不可修改左值
右值:不是左值的对象(C/C++中,临时对象属于右值)
字符串常量是左值(不可修改的)!因为该数据存放在文本段,是有地址的!
在C中,prefix increment(++)/decrement(–), assignment(=), compound assignment(+=…), comma(,), ternary conditional(? :)是右值!而在C++中却是左值!!!
实现移动语义(Move Sementics),减少不必要的临时对象的创建、拷贝、销毁(内存管理费时),极大地提升语言效率
完美转发(Perfect Forwarding),可以简洁地定义泛型函数
右值引用除了拥有左值引用的功能,还可以绑定到临时对象(rvalue),而(non const)左值引用不可以!
1 | A& a_ref3 = A(); // Error! |
右值引用类型既可以被当作左值也可以被当作右值,判断的标准是,如果它有名字,那就是左值,否则就是右值。
为了确保move之后,不会被再次引用到。所以,有名字的变量是左值。
std::move
可以将一个有名变量(左值)转换为右值引用
该功能的意图是,该变量作为其他变量的值来源后,便不再使用该值,只用来被赋值或弃用。
典型用途:
1 | template<class T> |
注:若该类型不支持移动操作,则仍执行对应的拷贝或赋值操作。
慢速或快速是从操作系统角度,来判断一个系统调用执行所需要的时间。
这个时间并无固定标准(非实时操作系统),而是取决于该调用执行的具体情况。
若该调用等待事件(TCP连接建立)或其他执行体操作(相对OS来说,比较耗时,如磁盘IO),则属于慢速系统调用。
反之,则属于快速系统调用,如getpid
,gettimeofday
。
因为慢速系统调用,需依赖外部,则可以将其放入等待队列,无需调度。这样便提高了资源(CPU)利用率。
O_NONBLOCK
)会出错返回(-1),errno=EINTR