安装MySQL

  • 安装MySQL8

    #Select and download the release package for your platform.
    sudo rpm -Uvh mysql80-community-release-el8-1.noarch.rpm
    #enable the subrepository for the 8.0 series and disable the one for the 5.7 series;
    sudo yum-config-manager --enable mysql80-community
    sudo yum-config-manager --disable mysql57-community
    #Verify that the correct subrepositories have been enabled and disabled by running the following command
    yum repolist enabled | grep mysql
    #Installing MySQL
    sudo yum install mysql-community-server
  • 启动mysql并设置开机自启

    systemctl start mysqld
    systemctl enable mysqld
  • 安全初始化,设置Root密码和进行安全设置

    mysql_secure_installation

基本介绍:
Enter current password for root (enter for none):
解释:输入当前 root 用户密码,默认为空,直接回车。
Set root password? [Y/n] y > > 解释:要设置 root 密码吗?输入 y 表示愿意。
Remove anonymous users? [Y/n] y
解释:要移除掉匿名用户吗?输入 y 表示愿意。
Disallow root login remotely? [Y/n] y
解释:不想让 root 远程登陆吗?输入 y 表示愿意。
Remove test database and access to it? [Y/n] n
解释:要去掉 test 数据库吗?输入 y 表示愿意。
Reload privilege tables now? [Y/n] y
解释:想要重新加载权限吗?输入 y 表示愿意。

  • ps: 在centos8中安全机制可能会不让设置123456的简单密码,解决方法:

    #登陆数据库
    mysql -uroot -p 
    set global validate_password.policy=0;
    set global validate_password.length=4;
    #重置密码为123456
    mysql_secure_installation

开放3306端口

  • 安装iptables,关闭自带的firewalld

    #安装iptables
    yum install iptables-services
    #设置开机自启
    systemctl enable iptables
    #启动服务
    systemctl start iptables
    #关闭firewalld
    systemctl stop firewalld  
    systemctl mask firewalld
    #开放3306端口
    iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
    #保存上述规则
    service iptables save
    #开启服务
    systemctl restart iptables.service

修改访问MySQL的用户权限

#登陆数据库
mysql -uroot -p
use mysql;
#'%'表示所有电脑都可以访问连接,'root'为用户名
update user set host = '%' where user = 'root';
#立即生效
FLUSH PRIVILEGES;
exit;

使用Navicat连接

  • 新建MySQL连接

连接名:随便起

主机:填在虚拟机中ip addr查到的ip

端口:3306

用户名:root

密码:*****

参考链接:
A Quick Guide to Using the MySQL Yum Repository

我想要一支笔,一盏灯

一个破旧的木书桌

能在心爱的白纸上

写下故事里的青窗

写下所有的期许

考上心目中的名校

可是我,只有,我

一双看着黑夜发呆的眼睛

一个没有星辰陪伴的愿望

日复一日三点一线的日常

庆幸的是

肖秀荣、汤家凤、何凯文

诸位名师和好朋友常伴在我的左右

一颗永远执着的心

写完纸上的潦草

执迷的过完我这清醒的一生

在我的蓝牙耳机送去维修后,就总想着入手一个线控耳机,终于在618的时候剁了手。

预览图-开箱图

因为我懒得拍,偷了几张网友的
[tabs]

[tab title="图一"]
-1487832275.png
[/tab]

[tab title="图二"]
-92097396.png
[/tab]

[/tabs]
包装盒子里包含了一副耳机、备用耳塞(大中小)、一个收纳盒、一根充电线和一些手册。
[tip type="info"]
包装盒要保存完整,以方便保修
[/tip]

使用体验

在没开降噪的时候,音质与我的蓝牙耳机差别不大,也可能我是木耳听不出什么差距。在拨开降噪开关的时候整个世界就都安静了。用张图总结就是。。。
282372958.png
[tabs]

[tab title="降噪"]
但是它的降噪不是完全隔绝,实测在图书馆中能完全屏蔽空调和风扇的声音,不能完全隔绝人声。在开了降噪播放音乐时会好许多,加上音乐本身的音量,世界就完全就是我的了。戴了qc20一段时间后再摘下来,感觉世界都雨我无瓜,我只觉得他们吵闹。一句话总结就是:戴上我聋了,摘下他们好吵。
[/tab]

[tab title="耳塞"]
它的耳塞用了鲨鱼鳍硅胶,佩戴稳定还算舒适,但是对比我的AKG Y100好像又没它舒服。长时间佩戴,耳朵会有些胀感。包装盒里提供了大中小三组耳塞选择,换成了小耳塞感觉大小还可以
[/tab]

[tab title="电池"]
它的降噪模块里面是有锂电池的,官方给的数据是充电2小时,可使用约16小时。这里指的就是可以用降噪的时间,如果没电依然可以当普通耳机使用。在续航方面还是可以,具体时间没有算过,基本上是充一次电用几天,直到绿色指示灯闪烁就说明要充电了。
[/tab]

[/tabs]

关于兼容性方面

因为android版的没货了,所以我买了ios版的。客服说对不同的系统,降噪依然可以用,但是不能用线控和麦。经过实测,在我的ipad上功能都正常,Mi8上暂停键可用通话可用调节音量不可用,在电脑上线控和麦都不可用。

说说优缺点

[tabs]

[tab title="优点"]

  • 降噪方面确实牛逼
  • 续航时间长
  • 有环境音
  • 按键操控还算方便

[/tab]

[tab title="不足"]

  • 走路时听诊器效应严重,再加上多出来的一块降噪模块,不太适合走路时听歌
  • 价格太他妈贵了吧
  • 耳机对系统的兼容性不好

[/tab]

[/tabs]


8月29号更新

我以为耳机可以用一段时间,但还是拿去返修了。原因就是那个降噪模块的连接线处的片片太容易掉了,我直接掉掉了一个不知道掉到了哪里,另一个也快掉了,虽然不影响使用,外观上不仔细看也看不出来,但是挺难受的。
联系了客服后突然发现我超过了15天换货时间。但是意外的是客服很nice,因为刚刚超过15天给我提供换新服务。然后询问我配件是否齐全(这点真的太重要了,几乎所有耳机的售后都需要配件齐全)。接着给了我寄回的地址,告诉我邮费需要我垫付再他们检测完产品质量问题后会将邮费退回到我的支付宝。于是我果断选择顺丰加保价一共30块左右的邮费。10号我寄了顺丰,13号就顺丰寄回来了,换新速度还是杠杠的,对比akg换新大概用了一个月的时间(真是无力吐槽)。最后,邮费直接退到了支付宝,他们也没让我拍快递单子,基本上就是我说多少钱就是多少了,这可能就是对客户的信任吧。虽然网上对bose的售后吐槽不少,但是这次换新的经历让我感觉bose的服务还是可以的。
遗憾的是换新的耳机在不久后出现了同样的问题,因为省得麻烦就没有再联系客服,后面还是打算用502之类的粘一下,那个贴片的胶水本身不怎么粘我猜测可能是为了方便他们检测维修吧。
接着说一下那个开了降噪的时候的爆音,在坐去上海的大巴上遇到过,高铁和绿皮上无。

工作室要在迎新期间推广要做一个二维码,我就在想能不能做多码合一

[title]原理[/title]

原理非常简单,用正则判断UserAgent,然后根据UserAgent重定向跳转到相应的页面

[title]准备工作[/title]

  • 一个服务器
  • 用在线工具将二维码解码成网址

[title]代码[/title]

使用时只需将location:后面的???替换成你的二维码解码出来的网址即可

<?php
$ua = $_SERVER['HTTP_USER_AGENT'];
if (preg_match("/QQ\//i", $ua)) {
    //QQ扫描二维码
    header("location:???");
} elseif (preg_match("/weibo/i", $ua)) {
    //微博扫描二维码
    header("location:???");
} elseif (preg_match("/MicroMessenger\//i", $ua)) {
    //微信扫描二维码
    header("location:???");
} else {
    //普通浏览器扫描二维码
    header("location:???");
}

[title]需要注意的问题[/title]

在代码第8行的地址中,如果你填写的是微信名片的url,那么微信扫码显示的结果会是微信安装包。而我这里的地址是微信公众号的历史消息页面,因此没有影响。解决方式:如果用微信扫码显示一个含有微信二维码的页面,然后在这个页面长按二维码识别。

[title]最后处理[/title]

将php文件保存并放到服务器上,将php文件的url找在线工具转化成二维码

整体的一个思路是用curl函数抓取整个页面的信息,然后用正则对数据进行清洗

<?php
header("Content-Type: text/html;charset=utf-8");
/**
 * 自动抓取html代码并返回
 * @author chunlai
 * @date        2018-08-16
 * @anotherdate 2018-08-16T17:17:37+080
 * @Email       kk@yaochunlai.xin
 * 你放心我不是什么好人
 * @param       string                  $url        url地址
 * @param       boolean                 $proxy_flag 是否开启代理
 * @param       array                   $proxy      代理的一些参数
 */
 function setCurl($url, $proxy_flag=false, $proxy=array())
 {
     $ch = curl_init($url);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
     curl_setopt($ch, CURLOPT_HEADER, false);
     curl_setopt($ch, CURLOPT_TIMEOUT, 120);
     if ('https' == substr($url, 0, 5)) {
         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
     }
     if ($proxy_flag) {
         curl_setopt($ch, CURLOPT_PROXY, $proxy['name'].':'.$proxy['pass'].'@'.$proxy['host']);
         curl_setopt($ch, CURLOPT_PROXYPORT, $proxy['port']);
     }
     $result = curl_exec($ch);
     curl_close($ch);
     return $result;
 }
 function handleBaikeInfo($baike_info)
 {
     $basic_info = array();
     preg_match('/出品公司(.*)\<\/dd\>/U', $baike_info, $match);
     $basic_info['chupin'] = $match[1];
     preg_match('/导演(.*)\<\/dd\>/U', $baike_info, $match);
     $basic_info['director'] = $match[1];
     preg_match('/主演\<\/dt\>(.*)\<\/dd\>/U', $baike_info, $match);
     $basic_info['actor'] = $match[1];
     foreach ($basic_info as $key => $value) {
         $basic_info[$key] = strip_tags($value);
     }
     var_dump($basic_info);
 }
 function trimAll($str)
 {
     $pattern = array('',' ','  ',"\t","\n","\r","&nbsp;");
     $str = str_replace($pattern, '', $str);
     $str = preg_replace('/\x{00a0}/u', '', $str);
     return $str;
 }

  $url = 'https://baike.baidu.com/item/%E6%88%98%E7%8B%BC%E2%85%A1/20794668?fr=aladdin&fromid=17196087&fromtitle=%E6%88%98%E7%8B%BC2';
  $html = setCurl($url);
  $html = trimAll($html);
  $html = handleBaikeInfo($html);
  echo $html;

[title]CURL访问接口API[/title]

什么是API?

类似于一个远程可访问的函数

有接收值、有访问值

应用

第三方API应用

跨语言通信

  function api($url,$params=array(),$method='GET',$header=array()){
    $opts = array(
      CURLOPT_TIMEOUT => 30,
      CURLOPT_RETURNTRANSFER => TRUE,
      CURLOPT_SSL_VERIFYHOST => FALSE,
      CURLOPT_SSL_VERIFYPEER => FALSE,
      CURLOPT_HTTPHEADER => $header,
      CURLOPT_HEADER => FALSE
    );
    switch(strtoupper($method)){
      case 'GET':
        $opts[CURLOPT_URL] = $url.'?'.http_build_query($params);
        break;
      case 'POST':
        $opts[CURLOPT_URL] = $url;
        $opts[CURLOPT_POST] = TRUE;
        $opts[CURLOPT_POSTFIELDS] = $params;
        break;
    }
    $ch = curl_init();
    curl_setopt_array($ch,$opts);
    $result = curl_exec($ch);
    $error = curl_error($ch);
    curl_close($ch);
    if($error){
      echo 'curl执行出错';
    }
     return $result;
  }

  $url = 'http://localhost/get_member_name.php';
  $params = array('id'=>2);
  $ret = api($url,$params);
  echo $ret;