<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[myeye520的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/myeye520</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; myeye520]]></copyright><item><title><![CDATA[vue2+Element表格实现跨页多选功能]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/130055859</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/130055859</guid><author>myeye520</author><pubDate>Mon, 10 Apr 2023 11:22:38 +0800</pubDate><description><![CDATA[在使用 reserve-selection 功能与显示树形数据时，该属性是必填的。注意此处很重要，用你每行数据的唯一值，此处我用的activityId，一般数据的唯一值应该是id。错误原因就是未能保证表格dom彻底加载后再使用toggleRowSelection方法，当然这种一般只在弹窗内表格这种场景才会出现，上述《三：数据回显》已经处理了这种问题。仅对 type=selection 的列有效，类型为 Boolean，为 true则会在数据更新之后保留之前选中的数据（需指定 row-key）]]></description><category></category></item><item><title><![CDATA[php简洁版雪花算法Snowflake]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/122243057</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/122243057</guid><author>myeye520</author><pubDate>Thu, 30 Dec 2021 18:29:06 +0800</pubDate><description><![CDATA[原理介绍：

Snowflake的核心思想是将64bit的二进制数字分成若干部分，每一部分都存储有特定含义的数据，比如说时间戳、机房ID、机器ID、序列号等等，最终生成全局唯一的有序ID。它的标准算法是这样的：


0       0000000000000000000000000000000000000000  0000000000   000000000000
符号位  41位时间戳，大约够69年                    10位(机房+机器ID)  12位序列号   


具体位数怎么分配]]></description><category></category></item><item><title><![CDATA[sql优化]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/121828205</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/121828205</guid><author>myeye520</author><pubDate>Thu, 09 Dec 2021 16:02:15 +0800</pubDate><description><![CDATA[### 优化顺序
首先定位系统的瓶颈，判断引起数据库瓶颈的原因

---
1. 业务优化（定位瓶颈后，判断能否从业务上进行优化，减小对数据库的压力）
2. 设计、程序优化（根据应用访问特点，从设计和实现上优化对数据库的访问）
3. DB、SYSTEM优化（对数据库处理能力进行升级：io，cpu，mem）
4. SQL优化（调整索引，优化sql）
---
结果：从下往上优化，见效快；从上往下优化，更加彻底

### 拆分
1. 绝大多数的应用不需要分库分表
1. 保持简单应用架构
1. 先优化，在考虑拆分
1]]></description><category></category></item><item><title><![CDATA[rsa2加解密及签名校验]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/118514919</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/118514919</guid><author>myeye520</author><pubDate>Tue, 06 Jul 2021 10:18:28 +0800</pubDate><description><![CDATA[非对称加解密：

第一种用法：私钥签名，公钥验签。---用于签名

第二种用法：公钥加密，私钥解密。---用于加解密


class Rsa2Controller extends Controller
{
    /****
     * 第一种应用：验签（私钥加密，公钥验签）
     * @return string
     */
    public function verifySign()
    {
        $rsa2 = new Rsa2();
        $data = [
 ]]></description><category></category></item><item><title><![CDATA[laravel多种方式切换用户执行php artisan命令(其他框架也适用)]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/117365650</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/117365650</guid><author>myeye520</author><pubDate>Fri, 28 May 2021 16:00:22 +0800</pubDate><description><![CDATA[背景:

在我们多种方式执行php artisan 命令的时候，总是会遇到执行用户为root的可能

问题：

因为是root执行，所以产生的各种日志文件全部为 root所有，这样在php后续对其操作的时候，就会出现权限不足的情况

解决方案:

1,正常linux系统切换执行用户


]# su www-data    //www-data是我的php执行用户名
]# php artisan 命令名称


2,定时任务crontab中切换执行用户


一：正常情况
/app # crontab -u ww]]></description><category></category></item><item><title><![CDATA[mysql关于json查询及laravel使用json查询]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/117287396</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/117287396</guid><author>myeye520</author><pubDate>Wed, 26 May 2021 12:28:40 +0800</pubDate><description><![CDATA[### 正常json字段查询
#### 1，插入数据

```
CREATE TABLE `posts` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `user_id` int(11) DEFAULT NULL,
 `content` json DEFAULT NULL,
 `created_at` datetime DEFAULT NULL,
 `updated_at` datetime DEFAULT NULL,
 PRIMARY K...]]></description><category></category></item><item><title><![CDATA[mysql5.7主从同步/复制]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/115540300</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/115540300</guid><author>myeye520</author><pubDate>Fri, 09 Apr 2021 10:40:55 +0800</pubDate><description><![CDATA[1,安装两个mysql（我是直接在本地用docker安装了两个）
[root@VM_179_192_centos app]# docker pull mysql:5.7
[root@VM_179_192_centos app]# docker create --name mysql573307 -v F:/mysql/mysql57/3307:/var/lib/mysql -v F:/conf/mysql57/3307:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123]]></description><category></category></item><item><title><![CDATA[Laravel 使用数组条件查询时 in和or 的用法]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/108874846</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/108874846</guid><author>myeye520</author><pubDate>Tue, 29 Sep 2020 20:10:06 +0800</pubDate><description><![CDATA[laravel给出了whereIn的用法：


$users = DB::table('users')
                    -&gt;whereIn('id', [1, 2, 3])
                    -&gt;get();


或者在闭包中使用whereIn：


$ids = [1,2];
$list = User::where(function($query) use ($ids){
    $query-&gt;whereIn('id', $ids);
})]]></description><category></category></item><item><title><![CDATA[laravel+swagger运用]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/108622351</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/108622351</guid><author>myeye520</author><pubDate>Wed, 16 Sep 2020 14:59:33 +0800</pubDate><description><![CDATA[第一步：安装swagger-php依赖包;


composer require 'zircote/swagger-php:2.*'


注意:这里要求用2.*版本好兼容下面的swagger语句，如果用3.*版本，不保证兼容代码

第二步：生成swagger-json文档;

建立swaggerController控制器，用于生成json文档


&lt;?php

namespace App\Http\Controllers;

class SwaggerController extends Contro]]></description><category></category></item><item><title><![CDATA[Easyswoole笔记 第一章：部署]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/108534738</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/108534738</guid><author>myeye520</author><pubDate>Fri, 11 Sep 2020 15:02:50 +0800</pubDate><description><![CDATA[本地环境：

window10系统，安装了docker for window，内部运行了php和nginx两个服务容器，php容器已经事先映射了9501端口供easyswoole使用；

部署代码：

1，进入php容器内工作目录(我的容器内映射工作目录为/app)，新建项目目录easyswoole，进入/app/easyswoole目录；

2，使用composer安装


composer require easyswoole/easyswoole=3.x
php vendor/easyswoole/e]]></description><category></category></item><item><title><![CDATA[详解nginx解析语句]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/108475584</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/108475584</guid><author>myeye520</author><pubDate>Tue, 08 Sep 2020 19:42:52 +0800</pubDate><description><![CDATA[server {

    ###项目所用端口（如果是要配置项目域名访问，最好用80，如果要ip地址访问，可以使用自定义的端口号，例如：8080）
  listen    80;
  ###项目域名（如果是要本地ip访问，则用location或者127.0.0.1皆可）
  server_name www.tp51.com;
  ####ssl加密证书（443端口时使用）
  ##ssl on; ###开启ssl
  ...]]></description><category></category></item><item><title><![CDATA[chrome超过80版本后默认禁用第三方cookie，本地无法跨域调试]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/108382469</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/108382469</guid><author>myeye520</author><pubDate>Thu, 03 Sep 2020 14:54:48 +0800</pubDate><description><![CDATA[现象：本地（http）请求线上接口（https）的时候，session无法通过cookie带给后端，造成后端无法和前端完成session用户认证；通过多浏览器测试，只有谷歌80版本以上有这种问题，火狐，IE等都没这个问题；

原因：因为谷歌浏览器大于80的版本使用了 cookie的新属性Samesite，由于没有指明SameSite的取值，chrome默认将其设置为了Lax；

一：尝试方法：我的laravel框架内加入：$response-&gt;headers-&gt;add(['Set-Cookie']]></description><category></category></item><item><title><![CDATA[Tcpdf操作html转pdf带页眉和页脚]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/108100047</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/108100047</guid><author>myeye520</author><pubDate>Wed, 19 Aug 2020 14:33:42 +0800</pubDate><description><![CDATA[一：安装Tcpdf依赖


composer  install   tecnickcom/tcpdf

二：编写htmlToPdf方法


/******
     * html生成pdf文件
     * tag: 合约生成
     * $params['author']  作者
     * $params['title'] 标题
     * $params['subject'] 主题
     * $params['keywords'] 关键词
     * $params['signDate']]]></description><category></category></item><item><title><![CDATA[docker内给php安装扩展的三种方式]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/106718921</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/106718921</guid><author>myeye520</author><pubDate>Fri, 12 Jun 2020 16:32:34 +0800</pubDate><description><![CDATA[最近做了个php-fpm-alpine的dockerfile文件，基于php7.4.6和alpine3.11；初始文件还是从官方拿的，但是我们日常使用php会用到很多初始镜像内不存在的扩展，所以就总结了一下在docker内为php安装扩展的三种方式，供大家参考，当然也可以直接看我的dockerfile文件：https://github.com/myeye520/dockerfile/tree/master/php/php-fpm7.4.6-alpine3.11。

一：docker已经打包好的扩展（例如gd]]></description><category></category></item><item><title><![CDATA[composer 简单使用]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/106023951</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/106023951</guid><author>myeye520</author><pubDate>Sat, 09 May 2020 17:23:21 +0800</pubDate><description><![CDATA[1，局部安装

在网站根目录 放入 composer.phar 执行文件，以及composer.json文件（内容依赖包名称和版本）

例：


"require": {
    "php": "&gt;=5.4.0",
    "topthink/framework": "~5.0.0",
    "jpush/jpush": "^3.5"
},

ps:在require依赖前，先确定已经install过依赖，只需要install一次后，就不需要再install依赖了

命令：php composer.p]]></description><category></category></item><item><title><![CDATA[Thinkphp5钩子与行为小实例]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/106000440</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/106000440</guid><author>myeye520</author><pubDate>Fri, 08 May 2020 16:39:09 +0800</pubDate><description><![CDATA[主要分为三个功能点：

一：行为定义

方法1，一般写在behaviour文件夹，例如 app\index\behavior\Actionlist 类


/*
* 测试行为类
*/

namespace app\index\behavior;

/**
* Description of Actionlist
* Date 2018年2月8日 18:16:32
* @author Carter
*...]]></description><category></category></item><item><title><![CDATA[nginx反向代理之后服务端HTTP_X_FORWARDED_FOR和HTTP_X_REAL_IP获取不到客户端ip地址]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/105660022</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/105660022</guid><author>myeye520</author><pubDate>Tue, 21 Apr 2020 15:52:37 +0800</pubDate><description><![CDATA[进过nginx的反向代理之后，我们在服务端获取$_SERVER['HTTP_X_FORWARDED_FOR']或者$_SERVER['HTTP_X_REAL_IP']时，往往获取不到客户端的外网ip地址，此时需要在做反向代理时设置：


location / {

    proxy_pass http://172.18.184.145:10383;

    proxy_set_header H...]]></description><category></category></item><item><title><![CDATA[跨域session不一致问题解决方案]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/104263858</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/104263858</guid><author>myeye520</author><pubDate>Tue, 11 Feb 2020 15:28:28 +0800</pubDate><description><![CDATA[原理：代码允许携带cookie操作：
  A.后端代码加header
  


header("Access-Control-Allow-Origin:www.aaa.com"); //允许跨域地址（*，域名，ip）
header('Access-Control-Allow-Credentials:true'); //允许客户端携带cookie，注意在此处为true时，上面一行...]]></description><category></category></item><item><title><![CDATA[PHP跨域问题解决方案]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/104263498</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/104263498</guid><author>myeye520</author><pubDate>Tue, 11 Feb 2020 15:11:02 +0800</pubDate><description><![CDATA[首先，我们要明白什么是跨域：
跨域，指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的，是浏览器施加的安全限制。

浏览器的同源策略：
同源是指，域名，协议，端口均相同，有任一不相同皆将造成跨域

明白了这些，我们来说说解决跨域问题的两种方案1，header设置允许跨域（推荐）
  后端代码设置：
   


// 指定允许其他域名访问
header('Acce...]]></description><category></category></item><item><title><![CDATA[蜘蛛程序抓取页面内容并按格式插入数据库]]></title><link>https://blog.youkuaiyun.com/myeye520/article/details/104048499</link><guid>https://blog.youkuaiyun.com/myeye520/article/details/104048499</guid><author>myeye520</author><pubDate>Mon, 20 Jan 2020 10:22:45 +0800</pubDate><description><![CDATA[&lt;?php
namespace app\api\controller;
use think\Db;

/**
 * 策略业绩报表蜘蛛程序
 * Description of Spiderreport
 * Date 2017-11-14 14:31
 * @author Carter
 */
class Spiderreport {
    /**
     * 单策略业绩报表蜘蛛
   ...]]></description><category></category></item></channel></rss>