重置MySQL的root密码

如果世界上存在忘记密码的后悔药,我觉得销量一定会很高. 现在忘记了MySQL的root密码就有后悔药卖了. 首先停下MySQL服务:service mysqld stop,然后用安全模式启动:mysqld_safe –skip-grant-tables –skip-networking &,此时用root账户连接数据库已经无需使用密码了,接着重设密码: use mysql; update user set password=PASSWORD(“NewPassword”) where User=’root’; flush privileges; quit; 最后重启MySQL服务就万事大吉了.

Read More

C的结构体不定参

在C语言中通常使用内建宏__VA_ARGS__来实现不定参,因此可以也可以使用它实现结构体参数的不定参. 实现如下: #include <stdio.h> #define func(…) func_vars((struct vars_stu){__VA_ARGS__}) struct vars_stu { int x; int y; int z; }; void func_vars(struct vars_stu vs) { printf(“x:%d,y:%d,z:%d\n”, vs.x, vs.y, vs.z); } int main(){ func(1); func(1,2); func(1,2,3); func(.x=1); func(.y=2); … “C的结构体不定参”

Read More

C++11之enum

C++11加强了enum类型,推出了强类型的enum,语法格式为 enum class E : T { __VA_ARGS__, }; 在此之前C++的enum继承自C,只能说是弱鸡,比如: 1. 同作用域下,两个不同枚举空间中的值如果取相同的名称将会冲突. 2. 存在隐式转换,通常情况下两种不同枚举是没有比较的意义的,但由于默认C风格底层为int型enum,则可以相互比较. 3. C中的枚举如果数值越界,也不会报错,转换之后存在数据丢失的风险. 而使用C++11中强化了的enum,其改变有: 1. 强化了作用域,使用时必须指定enum的名称,因此不用担心枚举中值名称重复. enum class cycle{red,black,white}; enum class car{red,black,white}; 不可隐式转换.即不同的枚举空间的值不可相互比较. 可以指定底层类型,因此既可以节约空间,又可以指定符号. enum class cycle:char{red=0,black=3,white}; enum class car:short{red=-2,black,white};

Read More