关于Mariadb启动报错Job for mariadb.service failed because the control process exited

MariaDB重启后,执行 systemctl start mariadb 启动报错

Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.

根据官方提示执行 systemctl status mariadb.service 或者 journalctl -xe 并不能看出真正原因,此时可以查看mariadb的日志文件,查看错误原因。

cd /var/log/mariadb/

tail -n 100 mariadb.log

发现 Fatal error: cannot allocate memory for the buffer pool。

内存不够了

vim /etc/my.cnf将 innodb_buffer_pool_size = 专用的DB服务器,改为内存的50%,非专用改为内存的15-20%。

重启即可

php数组排序

目前遇到二位数组的排序,会用到array_multisort函数。

比如:

$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
// 对volume降序,edition升序

$volumeList = [];
$editionList = [];
foreach ($data as $item) {
   $volumeList[] = $item['volume'];
   $editionList[] = $item['edition'];
}

array_multisort($volumeList, SORT_DESC, $editionList, SORT_ASC, $data);

print_r($data);

// out
Array
(
    [0] => Array
        (
            [volume] => 98
            [edition] => 2
        )

    [1] => Array
        (
            [volume] => 86
            [edition] => 1
        )

    [2] => Array
        (
            [volume] => 86
            [edition] => 6
        )

    [3] => Array
        (
            [volume] => 85
            [edition] => 6
        )

    [4] => Array
        (
            [volume] => 67
            [edition] => 2
        )

    [5] => Array
        (
            [volume] => 67
            [edition] => 7
        )

)

php xdebug配置

zend_extension=xdebug.so
xdebug.remote_enable=on
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.cli_color = 2

debian安装postgresql

  1. 新建  /etc/apt/sources.list.d/pgdg.list 文件,在里边添加
# debian 9
deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main

##如果是debian8,改为
 
deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main 

## 如果是debian7 
 
deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main 

2. 执行命令

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
sudo apt install postgresql

3. 使用

pgsql默认会创建一个名为postgres的用户,无密码,但必须用sudo切换,否则报错。

sudo su postgres ## 切换到postgres 用户 。此用户无密码

psql ## 执行此命令,进入postgresql命令行

CREATE USER dbuser WITH PASSWORD ‘password’; ## 创建用户dbuser

CREATE DATABASE exampledb OWNER dbuser; ## 创建数据库

GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser; ## 给dbuser赋予数据库的权限。

\q ## 退出

\l ## 列出数据库

\d ## 列出表

psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432 ## 登录数据库

windows powershell支持git命令自动补全

  1. 执行命令` $PSVersionTable.PSVersion ` ,确定powershell版本2.0或更高

2. 命令 ` Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Confirm `

3. 确认是否安装git , 未安装请先安装,执行`git –version` 确认

4. 执行命令 ` PowerShellGet\Install-Module posh-git -Scope CurrentUser ` 执行过程中会有询问,问就Y。

5. 进入一个有git init 的工作目录 ,执行命令 ` Import-Module posh-git ` ,会发现 cmd 提示发生变化,表示成功

6. enjoy

mysql 实现首字母A-Z排序

两种方案:

  1. 语句
select * from user ORDER BY CONVERT(name USING GBK) ASC;

// 这样可以实现中文排序,但是有个问题,英文字母没有排序,而且在中文上边

2. 自定义函数

“`mysql

DELIMITER $$    
CREATE FUNCTION `fristPinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE V_RETURN VARCHAR(255);
DECLARE V_BOOL INT DEFAULT 0;
DECLARE FIRST_VARCHAR VARCHAR(1);
SET FIRST_VARCHAR = left(CONVERT(P_NAME USING gbk),1); SELECT FIRST_VARCHAR REGEXP '[a-zA-Z]' INTO V_BOOL;
IF V_BOOL = 1 THEN
SET V_RETURN = FIRST_VARCHAR;
ELSE
SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P_NAME USING gbk),1)),16,10),0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7, 0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,0xC8F6, 0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1), 'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z');
END IF;
RETURN V_RETURN;
END$$
DELIMITER;



select * from app_user ORDER BY fristPinyin(name) ASC ;
// 即可实现英文也按中文排序

php编写swagger注释信息

  1. 需要写title,不用每个文件都写,只要有一个就行。
/**
 * @OA\Info(
 *     title="My Test API",
 *     version="1.0.0"
 * )
 */

2. 写注释信息

/**
	 * @OA\Post(
	 *     path="路径,比如:/test/push",
	 *     tags={"标签"},
	 *     summary="描述信息",
	 *     @OA\RequestBody(
	 *         @OA\MediaType(
	 *             mediaType="application/json  请求格式",
	 *             @OA\Schema(
         *                 required={"id"},
	 *                 @OA\Property(
	 *                     property="id",
	 *                     type="int",
	 *                     description="id 参数"
	 *                 ),
	 *                 @OA\Property(
	 *                     property="sess",
	 *                     type="string",
	 *                     description="session 参数"
	 *                 ),
	 *                 example={"id": 1, "sess": "wdff"}
	 *             )
	 *         )
	 *     ),
	 *     @OA\Response(
	 *         response=200,
	 *         description="successful",
	 *         @OA\JsonContent(
	 *          type="array|object|string",
	 *          @OA\Items(
	 *          	@OA\Property(property="seminarName", type="string", description="主会名"),
	 *          	@OA\Property(property="seminarId", type="int", description="主会id"),
	 *          	@OA\Property(
	 *              	property="items",
	 *              	type="object",
	 *                  	@OA\Property(property="subSeminarId", type="int", description="分会id"),
	 *                  	@OA\Property(property="subName", type="string", description="分会名")
	 *              	
	 *          	)
	 * 			)
	 *         )
	 *
	 *     )
	 * )
	 */

3. 生成swagger文件

# 首选需要composer require
composer require zircote/swagger-php
# 命令
vendor/bin/openapi -o openapi.json test/
# -o 输出后的文件
# test/  目录名,swagger会从此目录scan

OpenVPN多个vpn连接

首先win+R键,输入
C:\Program Files\TAP-Windows\bin

然后一定要用管理员打开 addtap.bat 这个文件,右键,管理员模式打开,会弹出命令框,注意,查看时success 还是failed,一定要是success。这样就创建一个tap

创建成功后, 可以进入opevpn 所在目录,执行 openvpn.exe –show-adapters ,查看当前的TAP。这一步不是必须的。

接下来,一定要重启openvpn,或者退出重新进入。就可以同时连接两个了,如果要三个,再按上述步骤添加就行。