layer 通用相册弹出

JS代码

body.on('click', '[layer-pid]', function () {
        let currentId = $(this).attr('layer-pid');
        let photosList = $(this).closest('.photos-list');
        let data = {
            "title": "", //相册标题
            "id": photosList.attr('class'), //相册id
            "start": currentId, //初始显示的图片序号,默认0
            "data": [   //相册包含的图片,数组格式
            ]
        };
        console.log(data);
        photosList.find('img').each(function () {
            let pid = $(this).attr('layer-pid');
            let src = $(this).attr('src');
            data.data.push({
                alt: '图片预览',
                pid: pid,
                src: src,
                thumb: src
            });
        });

        layer.photos({
            photos: data
            , anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机(请注意,3.0之前的版本用shift参数)
        });
    });

HTML

<div id="upload-photo" class="flex upload-have-bottom-description  flex photos-list">
  {% for key,img in item.images %}
   <div class="sharing-icons c-img-list list_imahe">
    <img layer-pid="{{ key }}" class="" src="{{ img }}">
     </div>
    {% endfor %}
  </div>

git 关联远程仓库

当使用Git进行代码push提交时,出现报错信息“fatal: 'origin' does not appear to be a git repository...”,

$ git push -u origin master
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.

是因为远程不存在origin这个仓库名称,可以使用如下操作方法,查看远程仓库名称以及路径相关信息,可以删除错误的远程仓库名称,重新添加新的远程仓库;

git remote -v: 查看远程仓库详细信息,可以看到仓库名称

git remote remove orign: 删除orign仓库(如果把origin拼写成orign,删除错误名称仓库)

git remote add origin 仓库地址: 重新添加远程仓库地址

gti push -u origin master: 提交到远程仓库的master主干

curl 查看请求header

curl_setopt($ch, CURLOPT_HEADER, true);//true 显示请求的header 信息
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_exec($ch);
curl_getinfo($ch, CURLINFO_HEADER_OUT);//该代码需要在curl_exec之后执行

递归菜单分组

public function getTree($list,$pid = 0,$level = 1)
    {
        $data = [];
        foreach ($list as $k => $v) {

            if ($v['pid'] == $pid) {
                $v['level'] = $level;
                $v['children'] = $this->getTree($list,$v['id'],($level + 1));
                $data[] = $v;
            }
            
        }

        return $data;
    }

sublime text3 安装FTPSync插件

一、打开 Preferences-> Package Control 输入 Install Package 按 ENTER 再输入 FTPSync 按 ENTER 安裝

二、安装完成后在文件栏中选中项目目录 -> 右键->FTPsync -> Setup FTPSync in this folder 在项目中安生成ftp的配置文件 ftpsync.settings

如同:
屏幕截图 2021-05-09 102608.png

三、点击生成的 ftpsync.settings 文件 在 default 中配置 你的ftp账号密码

"default": {
    "host": "location",
    "username": "username",  // or null for anonymous login
    "password": "password",
    "path": "/",
    "upload_on_save": false, // set *false* if you do not want to upload on save!
    "port": 21,
    // "tls": false,
    // "timeout": 30, // [seconds]
    "passive": false,//被动模式
}

四、配置完成。

NOTE:
最好打开 passive:false 参数

tp5命令行 添加守护进程方法

    protected function configure()
    {
        $this->setName('pull_mqtt')
        ->setDescription('Mqtt Subscribe Workerman Service')
        ->addArgument('commands')
        ->addOption('daemon','d',null,'-d');
    }

运行

php think pull_mqtt start -d

正则

//身份证号码
$str = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/";
//护照  
$str = "/^1[45][0-9]{7}|([P|p|S|s]\d{7})|([S|s|G|g]\d{8})|([Gg|Tt|Ss|Ll|Qq|Dd|Aa|Ff]\d{8})|([H|h|M|m]\d{8,10})$/";
//回乡证号码       
$str = "/(H|M)(\d{10})$/";

挂载磁盘

将磁盘挂载到data目录下
前提是需要给数据盘分好区先,然后在执行下面命令

//分区
fdisk -l   # 查找所有磁盘
fdisk /dev/sdb  # 选择要分区的磁盘 根据命令提示创建好分区
mkfs.extd /dev/sdb1  # 格式化磁盘  sdb1 是上面命令根据提示创建的分区
mkfs.xfs -f /dev/sdb1 # 强制格式化分区


mount /dev/sdb1  /data   # 挂载 到/data目录 ,/data 目录需要提前创建好

JavaWeb的Cookie和Session

package study.web.cookie;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;

@WebServlet("/cookie/demo01")
public class demo01 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    /**
     * 客户端会话技术:Cookie
     * 实现原理:
     *      基于响应头set-cookie和请求头cookie实现
     * Cookie的特点和作用:
     *      cookie存储数据在客户端浏览器
     *      浏览器对于单个 cookie 的大小有限制在 4kb 以内, 对同一个域名下的总cookie数量也有限制(20个)
     * Cookie默认关闭客户端后失效
     * @param request
     * @param response
     */
    public static void CookieDemo(HttpServletRequest request, HttpServletResponse response) {
        //创建Cookie对象
        Cookie c = new Cookie("msg", "hello Cookie");

        //设置Cookie作用域范围(将作用域设置为根路径,同一个服务器的多个项目可以共享cookie)
        //该设置项默认为当前项目的作用域
        c.setPath("/");
        //设置Cookie过期时间
        //设置正数 表示x秒后过期
        //设置0,表示立即过期
        c.setMaxAge(300);
        //设置cookie的域名作用域(将作用域设置为域名,多个子域名可以共享cookie)
        //c.setDomain();
        //发送Cookie
        response.addCookie(c);

        //获取Cookie
        Cookie[] cook = request.getCookies();
        //获取数据,遍历Cookies
        if(cook != null){
            for (Cookie cs : cook) {
                String name = cs.getName();
                String value = cs.getValue();
                System.out.println(name+":"+value);
            }
        }
    }

    /**
     * 服务器端会话技术:Session
     * 实现原理:
     *      Session的实现是依赖于Cookie的。
     *  问题:
     *      当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
     *          默认情况下。不是。
     *          如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。
     *
     *  当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
     *             默认情况下。不是。
     *             如果需要相同,可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存
     *
     *  Session什么时候失效:
     *      服务器关闭
     *      调用session.invalidate()方法
     *      默认30分钟失效
     * @param request
     * @param response
     */
    public static void SessionDemo(HttpServletRequest request, HttpServletResponse response) {
        //使用Session共享数据

        //获取session
        HttpSession session = request.getSession();
        //存储数据
        session.setAttribute("msg","hello Session");

        //获取数据
        session.getAttribute("msg");

        //删除数据
        session.removeAttribute("msg");

        //期望客户端关闭后 session也能相同(持久化)
        Cookie c = new Cookie("JSESSINOID", session.getId());
        c.setMaxAge(60 * 60);//一小时
        //发送cookie
        response.addCookie(c);



    }
}