Mac OS X与Windows双系统产生“时差”的原因和解决办法

电脑内部都有一个记录时间的RTC,这个实时时钟系统会自动运转,即使你已经关闭电源。 IBM PC兼容机大多采用DS12887这个芯片,内部存储时间,包括年,月,日,时,分。。,还包括世纪,解决了千年虫的问题,但是这个系统没有关于时区的记录,时区的处理由操作系统才完成。

从这里已经可以引申出,产生双系统时间不一致的原因,Mac OS X采用UTC,就是说在电脑RTC系统中保存时间,Mac认为时UTC时间,OS X再根据系统的时区转换成本地时间给你看。
Windows使用Local time,就是说Windows系统认为RTC系统内保存的时间就是本地时间,不再根据时区作相应的转换了。Windows为什么不使用UTC,这个问题微软官方也做过说明,因为早在DOS时代,就是使用本地时间,一直为了兼容性保留下来(历史的包袱)
从上面的说明可以看出,如果是北京时间东8区,就会相差8个小时了。

PS: 很多其他的Unix Like的系统可以设置采用UTC还是Local Time

windows虽然为了兼容性,一直沿用本地时间,但是在注册表中有一个设置可以让它使用UTC,这个正是我们需要的,修改注册表就好了

让windows也使用Universal Time,这样即使在不联网的情况下,时钟仍然是正确的
特别注意的是:取消Boot Camp的Apple时间服务, 不然时不时Apple时间服务会
把时间调正回去.
1)开始菜单,运行regedit
2)打开TimeZoneInformation,位置
HKEY_LOCAL_MACHINE – SYSTEM – CurrentControlSet – Control – TimeZoneInformation
3)右击->创建一个新的DWORD. 数值名称 RealTimeIsUniversal 数值数据 1 (十
六进制) 注意大小写,修改完成确定并且把regedit关了.
4)打开时间设置, 取消 “自动与Internet时间服务器同步”
5)取消Apple时间服务. 控制面板->管理工具->服务. 里面有个”Apple时间服务”, 右
击它然后选择属性.启动类型选择禁用, 停止.

DuiLib编译时提示“ 无法打开文件“Riched20.lib””

1.首先移除项目中包含的Riched20.lib静态库,在linker中。

2.找到RichEditUI.cpp中的如下代码:

// Create Text Services component
if(FAILED(CreateTextServices(NULL, this, &pUnk)))
    goto err;
3.用下面的代码替换上面的两行代码:
typedef HRESULT(_stdcall *CTSFunc)(IUnknown *punkOuter, ITextHost *pITextHost, IUnknown **ppUnk);
CTSFunc ctsFunc = NULL;
m_hRiched20 = LoadLibrary(_T("Riched20.dll"));

if (NULL == m_hRiched20)
    goto err;
else
{
    ctsFunc = (CTSFunc)GetProcAddress(m_hRiched20, "CreateTextServices");

    if (NULL == ctsFunc)
        goto err;
}

if (FAILED(ctsFunc(NULL, this, &pUnk)))
    goto err;
4.在这个类中的析构函数中释放掉Riched20.dll动态库
FreeLibrary(m_hRiched20);

Laravel 安装

1.Install Composer:
下载安装:
https://getcomposer.org/download/
or
https://developer.aliyun.com/composer

设置镜像地址:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

sudo mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer
2.Install Laravel:
composer global require laravel/installer

sudo yum install unzip

composer create-project --prefer-dist laravel/laravel blog "6.*"

cd /usr/share/nginx/html/blog
chmod -R 755 ../blog/
chmod -R 777 storage/
chmod -R 777 bootstrap/cache/

php artisan key:generate
3.Web Server Setting:
vi /etc/nginx/conf.d/default.conf
root   /usr/share/nginx/html/blog/public;
location / {
    try_files $uri $uri/ /index.php?$query_string;
}

vi /etc/php.ini
disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus     ,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinf     o,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,exec,passthru,chroot,shell_exec,system,chgrp,chown,dl,set_time_limit     ,show_source,highlight_file,gzinflate,str_rot13,pfsockopen,syslog,readlink,symlink,stream_socket_server,leak,popepassthru,escapeshellcmd     ,max_execution_time,ini_alter,ini_restore,popen,pclose,proc_open,proc_close,proc_get_status,phpinfo,escapeshellarg,chmod
;,rename,assert,mkdir,copy,delete,rmdir,chdir,dir,ini_set,putenv,getcwd
;,file,fopen,fwrite,unlink,file_get_contents,fputs,opendir,readdir,scandir
4.Test Laravel:
http://localhost/

MySQL 主从复制配置

主从分别创建相同用户:
mysql> grant all on *.* to 'li'@'192.168.1.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)


设置server-id:
vi /etc/my.cnf
[mysqld]节点
主服务器添加:(MySQL 8不允许server-id=0)
server-id=1
从服务器添加:
server-id=2
read-only

设置read-only的话无"super(管理)权限"的用户将无权写入数据


主从服务器开启二进制日志:
mysql> show variables like '%log_bin%';
vi /etc/my.cnf
[mysqld]节点
log-bin=mysql-bin
service mysqld restart


主服务器查看binlog信息:
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      106 |              |                  |
+------------------+----------+--------------+------------------+


slave服务器更改设置:
mysql> change master to 
master_host='192.168.10.130', 
master_user='user', 
master_password='password', 
master_port=3306, 
master_log_file='上面查到的file', 
master_log_pos=上面查到的Position;


启动slave同步进程:
mysql> start slave;
 

slave服务器状态检查:
mysql> show slave status \G;
其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。

如果出现:
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log
可能是msater_log配置错误


同步错误之后跳过错误:
1.跳过指定数量的事务:
mysql> slave stop;
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;        #跳过一个事务
mysql> slave start;
2.修改mysql的配置文件,通过slave_skip_errors参数来跳所有错误或指定类型的错误
vi /etc/my.cnf
[mysqld]
#slave-skip-errors=1062,1053,1146 #跳过指定error no类型的错误
#slave-skip-errors=all #跳过所有错误


在主服务器库中增加数据,检查从服务器是否正常同步。

MYSQL命令参数详解

Usage:mysql [OPTIONS] [database]

         下面为各选项的详细说明:

-?, –help 显示帮助信息并退出
-I, –help 显示帮助信息并退出
–auto-rehash 自动补全功能,就像linux里面,按Tab键出提示差不多
-A, –no-auto-rehash 默认状态是没有自动补全功能的。-A就是不要自动补全功能
-B, –batch mysql不使用历史文件,禁用交互
–character-sets-dir=name 字体集的安装目录
–default-character-set=name 设置数据库的默认字符集
–column-type-info 结果集返回时,同时显示字段的类型等相关信息
-c, –comments Preserve comments. Send comments to the server. The

default is –skip-comments (discard comments), enable

with –comments

-C, –compress 在客户端和服务器端传递信息时使用压缩
-#, –debug[=#] bug调用功能
-D, –database=name 使用哪个数据库
–default-character-set=name 设置默认的字符集
–delimiter=name 设置默认命令结束符
-e, –execute=name 执行mysql的sql语句
-E, –vertical 垂直打印查询输出
-f, –force 如果有错误跳过去,继续执行下面的
-G, –named-commands Enable named commands. Named commands mean this program’s

internal commands; see mysql> help . When enabled, the

named commands can be used from any line of the query,

otherwise only from the first line, before an enter.

Disable with –disable-named-commands. This option is

disabled by default.

-g, –no-named-commands Named commands are disabled. Use * form only, or use

named commands only in the beginning of a line ending

with a semicolon (;) Since version 10.9 the client now

starts with this option ENABLED by default! Disable with

‘-G’. Long format commands still work from the first

line. WARNING: option deprecated; use

–disable-named-commands instead.

-i, –ignore-spaces 忽视函数名后面的空格.
–local-infile 启动/禁用LOAD DATA LOCAL INFILE.
-b, –no-beep sql错误时,禁止嘟的一声
-h, –host=name 设置连接的服务器名或者Ip
-H, –html 以html的方式输出
-X, –xml 以xml的方式输出
–line-numbers 显示错误的行号
-L, –skip-line-numbers 忽略错误的行号
-n, –unbuffered 每执行一次sql后,刷新缓存
–column-names 查寻时显示列信息,默认是加上的
-N, –skip-column-names 不显示列信息
-O, –set-variable=name 设置变量用法是–set-variable=var_name=var_value
–sigint-ignore 忽视SIGINT符号(登录退出时Control-C的结果)
-o, –one-database 忽视除了为命令行中命名的默认数据库的语句。可以帮跳过日志中的其它数据库的更新。
–pager[=name] 使用分页器来显示查询输出,这个要在linux可以用more,less等。
–no-pager 不使用分页器来显示查询输出。
-p, –password[=name] 输入密码
-W, –pipe Use named pipes to connect to server.
-P, –port=# 设置端口
–prompt=name 设置mysql提示符
–protocol=name 设置使用的协议
-q, –quick 不缓存查询的结果,顺序打印每一行。如果输出被挂起,服务器会慢下来,mysql不使用历史文件。
-r, –raw 写列的值而不转义转换。通常结合–batch选项使用。
–reconnect 如果与服务器之间的连接断开,自动尝试重新连接。禁止重新连接,使用–disable-reconnect。
-s, –silent 一行一行输出,中间有tab分隔
-S, –socket=name 连接服务器的sockey文件
–ssl 激活ssl连接,不激活–skip-ssl
–ssl-ca=name CA file in PEM format (check OpenSSL docs, implies

–ssl).

–ssl-capath=name CA directory (check OpenSSL docs, implies –ssl).
–ssl-cert=name X509 cert in PEM format (implies –ssl).
–ssl-cipher=name SSL cipher to use (implies –ssl).
–ssl-key=name X509 key in PEM format (implies –ssl).
–ssl-verify-server-cert 连接时审核服务器的证书
-t, –table 以表格的形式输出
–tee=name 将输出拷贝添加到给定的文件中,禁时用–disable-tee
–no-tee 根–disable-tee功能一样
-u, –user=name 用户名
-U, –safe-updates Only allow UPDATE and DELETE that uses keys.
-U, –i-am-a-dummy Synonym for option –safe-updates, -U.
-v, –verbose 输出mysql执行的语句
-V, –version 版本信息
-w, –wait 服务器down后,等待到重起的时间
–connect_timeout=# 连接前要等待的时间
–max_allowed_packet=# 服务器接收/发送包的最大长度
–net_buffer_length=# TCP/IP和套接字通信缓冲区大小。
–select_limit=# 使用–safe-updates时SELECT语句的自动限制
–max_join_size=# 使用–safe-updates时联接中的行的自动限制
–secure-auth 拒绝用(pre-4.1.1)的方式连接到数据库
–server-arg=name Sendembeddedserverthisasaparameter.
–show-warnings 显示警告