想更新物品数量,本来是9,需要减5,并且更新时间 SQL写成这样 UPDATE user_borrow_goods SET num=num-5 AND update_time=1535363307 WHERE id=133; 结果 num成了0,update_time没变 原因在于更新多个字段应该有逗号分隔 正确的写法是 UPDATE user_borrow_goods SET num=num-5 AND update_time=1535363307 WHERE id=133; num为什么变成0了呢? SQL执行的时候把等号右边部分当作整体了,即 UPDATE user_borrow_goods SET num=(num-5 AND update_time=1535363307) WHERE id=133; (num-5 AND update_time=1535363307)的值是多少呢? num原值是9,update_time原值是0,表达式就变为 (9-5 AND 0=1535363307) (4 AND 0) 0 结果是0 补充:AND是逻辑与,结果只有0或1;=号在这里是判断是否相等,不是赋值符号
docker学习笔记
docker run ubuntu echo hello docker docker pull nginx #本地的8080端口映射到容器的80端口 docker run -p 8080:80 -d nginx curl 127.0.0.1:8080 docker ps #文件拷贝到容器 vi index.html docker ps docker cp index.html 05f67f3f819d://usr/share/nginx/html docker stop 05f67f3f819d docker run -p 8080:80 -d nginx curl http://localhost:8080 docker commit -m 'fun' 24dc41701283 nginx-fun docker images 删除镜像 docker rmi 9f139d4af874 docker stop 24dc41701283 docker ps -a docker rm 2cbeef6445dc
基础镜像,类比基本类 vi Dockerfile FROM alpine:latest MAINTAINER xhs CMD echo "Hello Docker!" docker pull alpine docker build -t hello_docker . docker images docker run hello_docker
#建Dockerfile 自己创建镜像 vi Dockerfile FROM ubuntu MAINTAINER xhs RUN apt-get update RUN apt-get install -y nginx COPY index.html /var/www/html ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"] EXPOSE 80 docker build -t xhs/hello-nginx . docker images docker run -d -p 80:80 xhs/hello-nginx curl localhost FROM 基础镜像 RUN 执行命令 ADD 包括网络文件 COPY 拷贝文件或目录 CMD 执行入口 ENTRYPOINT 没有指定ENTRYPOINT,就用CMD,指定了,CMD后字符串成为ENTRYPOINT的参数 WORKDIR 路径 ENV 环境变量 USER VOLUME 挂载卷 EXPOSE 暴露端口
Dockerfile每一行都产生一个新层 容器层可读可写 镜像层只读 相同层可以共享
volume 独立容器之外的持久化存储 docker run -d --name nginx -v /usr/share/nginx/html nginx docker inspect nginx ls /var/lib/docker/volumes/e1b94b6addbba7267594c8dbbc6c83534da02d292090e3781f49447fc4e02727/_data cd /var/lib/docker/volumes/e1b94b6addbba7267594c8dbbc6c83534da02d292090e3781f49447fc4e02727/_data cat index.html [root@localhost _data]# echo "it's 2018" > index.html [root@localhost ~]# docker exec -it nginx /bin/bash root@88840db4e4c2:/# cd /usr/share/nginx/html/ root@88840db4e4c2:/usr/share/nginx/html# cat index.html it's 2018 root@88840db4e4c2:/usr/share/nginx/html# #本地的目录挂载到容器里 docker run -p 80:80 -d -v $PWD/html:/usr/share/nginx/html nginx mkdir vol3 cd vol3/ mkdir data docker create -v $PWD/data:/var/mydata --name data_container ubuntu docker run -it --volumes-from data_container ubuntu /bin/bash root@775022803f20:/# mount | grep mydata /dev/mapper/centos-root on /var/mydata type xfs (rw,relatime,seclabel,attr2,inode64,noquota) root@775022803f20:/# cd /var/mydata/ root@775022803f20:/var/mydata# ls ls: cannot open directory '.': Permission denied root@775022803f20:/var/mydata# cd data bash: cd: data: No such file or directory root@775022803f20:/var/mydata# touch whatever.txt touch: cannot touch 'whatever.txt': Permission denied 解决Permission denied su -c "setenforce 0" chcon -Rt svirt_sandbox_file_t /path/to/volume https://stackoverflow.com/questions/24288616/permission-denied-on-accessing-host-directory-in-docker
Registry 镜像库 host 宿主机 registry 仓库 docker search docker pull docker push #国内的库 daocloud 时速云 阿里云 [root@localhost ~]# docker search whalesay INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/docker/whalesay An image for use in the Docker demo tutorial 632 docker.io docker.io/mendlik/docker-whalesay Docker whalesay image from training materi... 7 [OK] docker.io docker.io/caibar/whalesay Builds automatizados. 1 [OK] docker.io docker.io/milanfort/whalesay Modified docker/whalesay image that output... 1 docker.io docker.io/nikovirtala/whalesay Tiny Go web service to print Moby Dock ASC... 1 [OK] docker.io docker.io/ojenge/whalesay from docker/whalesay 1 docker.io docker.io/sabs1117/whalesay Whalesay with fortune phrases. 1 docker run docker.io/docker/whalesay cowsay 上午好 docker tag docker.io/docker/whalesay xhs/whalesay docker images docker push xhs/whalesay #登录 docker login
git命令
#从mastercheckout git checkout master common/xxx.txt #显示log树 git log --pretty=format:"%h %s" --graph #删除文件远程分支没生效, add时加 --all 参数 git add --all delete_log_indices.sh es.sh #在一个未上线的需求分支commit了另一个需求的代码 #先找到上次的commit id, 用 soft 参数 reset git reset --soft 5b10152 文件变成未commit状态,然后再checkout 到master建新分支提交 1.git 未 commit 前三种状态, Untracked files, 用 git add 将文件包含到待提交清单中,会在暂存区域生成快照, Chanes to be commited Changes not staged for commit, 修改了但未暂存,未暂存部分不会被提交 2.git commit 那个框, 选择文件点 revert 可以回退到未修改的状态 3.git stash 把修改存到暂存区 git stash pop 取出来 4.git pull 新建分支先拉dev 的代码 不要在 dev 上写代码 5.把错误的代码提到远程dev了,回退到上个版本 选择要回退的版本,右键 回退后 git push origin dev --force 不要再拉了 6. git diff meeting-room-bug dev --stat 对比分支的差别 7.以后如果你们的git 报错了 就是 unlink file '.git/..... 然后输入什么都不管用的情况 试着输入这个命令试试 git gc --auto 是释放本地的被占用的文件资源 8.删除tag git tag | grep -- 'to8tooa-2\.[0-9]\.[0-9]\.[0-9]\w*' | xargs git tag -d git tag | grep -- 'to8tooa-3\.[0-9]\.[0-9]\.[0-9]\w*' | xargs git tag -d git tag -d ] git tag -d oaflow-1.5.4.7-201606011100-liya git tag -d to8tooa-201702130925-liya git fetch --tag 9. 删除远程分支: git push origin :reson-local 批量删除远程的tag: git tag | grep -- 'to8tooa-3\.[0-8]\.[0-9]\.[0-9]*' | xargs git push origin --delete tag 批量删除本地的tag: git tag | grep -- 'to8tooa-1\.[0-9]\.[0-9]\.[0-9]\w*' | xargs git tag -d 删除本地所有的tag: rm -rf .git/refs/tags/* 拉取远程的tag: git fetch --tag 10.删除本地分支 git branch | grep 'watson-a' | xargs git branch -d git branch | grep 'watson-a' | xargs git branch -D D是强制删除,不要轻易用 -D,避免误删! 11.删除远程分支 (1)用 grep 命令 筛选要删除的分支,重定向到文件里 git branch -a | grep "remotes/origin" | cut -nb 18-50 > branch.txt (2)手动打开branch.txt,剔除不用删除的分支,把行首替换为git push origin : 保存,构造好命令类似这样: git push origin :seven-local git push origin :seven-optimize git push origin :watson-company-finance (3)把构造好的命令粘贴到控制台 12.不小心 add 了很多不要的文件 git status > reset.txt 手动修改reset.txt,只保留文件名 cat reset.txt |xargs git reset HEAD 把oa 目录下的 reset.txt 删除 13.还原master 问题:git pull 没带分支名,结果把其他分支的东西都拉过来了。 还原:master 不能reset,因为master是保护分支。 只能复制最新的代码覆盖旧的,再提到master上。 14.git reset origin/dev --hard 强制用远程的分支覆盖本地的 15.不小心在master分支修改了代码,而且切不回本地分支 可以先暂存到master,然后切回本地分支,合master代码,然后再回master释放,然后切就可以了 16.没打base就merge了代码,可以让其他人帮忙打base再上master 17.根目录下的exclude /index.php 18.撤销 merge 到master的代码,未push git reset origin/master --hard 19.查修改记录 git blame E:\oa\basic\modules\flow\models\flow\Leave.php 20.重置到master git reset origin/master --hard git push origin dev --force 21.把master重置要某个tag git push origin master --force 22.删除远程tag git push origin --delete tag to8tooa-4.9.2.5-2017121121942-crispan git push origin --delete tag v2.98-2.0.1.8.0.7.3.1.1.0.4.6-201807311704-watson 23.本地分支重置到某个 commit 重置前先备份 git checkout -b watson-vr-interface.bak commit 是按时间排序的,所以中间有了别人的代码的话,要重置到之前的commit git bash git log 查记录,可以看到中文 然后 24.比对两个tag区别 git diff to8tooa-5.1.5.7-201802010954-watson to8tooa-5.1.5.8-201802010958-watson --stat 25.clone 时设置代理 git clone -c http.proxy=http://192.168.1.142:3128/ https://github.com/domnikl/DesignPatternsPHP.git git clone -c http.proxy=http://192.168.1.142:3128/ https://github.com/NoNeil/ProxySetting.git git clone -c http.proxy=http://192.168.1.142:3128/ https://github.com/symfony/demo.git 26. git symbolic-ref --short -q HEAD 27. git tag | tail -1 28. git merge 和 git merge --no-ff 29.从远处分支新建分支 查看远程分支 git branch -a git checkout -b watson-a remotes/origin/watson-a 30. #删除 git push origin --delete tag v2.98-2.0.1.8.0.7.3.1.1.0.4.6-201807311704-watson 31. #误删的文件,杀毒软件 git status > file.txt 编辑file,只剩下一行行的文件名 cat file.txt |xargs git checkout -- 32.查看关联的远程仓库 git remote -v git remote add origin ssh://git@192.168.1.1/home/git/test.git git remote remove origin 33.生成公钥 ssh-keygen
centos7安装docker
看Linux内核版本,Docker 要求 CentOS 系统的内核版本高于 3.10 uname -r yum -y install docker-io systemctl restart docker 运行hello-world docker run hello-world
docker常用命令
版本 docker version 查看镜像 docker images 拉取镜像 docker pull 创建镜像 docker build 运行镜像 docker run hello-world 查看进程 docker ps docker ps -a 拷贝 docker cp index.html 17addaweri58c://usr/share/nginx/html 启动nginx docker run -p 8080:80 -d daocloud.io/nginx 停止 docker stop 17addaweri58c 保存更改 docker commit -m 'fun' docker commit -m 'fun' easfieir nginx-fun 删除 docker rmi asdfieirwiwqri docker rm asfdiewiirrwei 搜索镜像 docker search --filter=stars=3 lnmp
配置加速器
[root@localhost ~]# vi /etc/docker/daemon.json { "registry-mirrors": ["https://e2dszuyu.mirror.aliyuncs.com"] } [root@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl restart docker [root@localhost ~]#
常用vim命令
# 如果是想把光标所在行置于屏幕中央,是 zz。它不移动光标,而是重绘屏幕,以使光标所在行位于屏幕中间位置。 # 水平和垂直分割打开多个文件 vim -o vim -O // 垂直 # 模式匹配 :%s/\(\w\{1,}\)/metadata.\1 = fileInfo.\1/gc #去重 :sort :g/^\(.\+\)$\n\1/d #粘贴格式问题 :set paste #不要折行显示 :set nowrap 有利于竖向编辑 1. 复制到缓存器 "ayy 表示复制一行到 "a 缓存 2.正则表达式后向引用 () 表示要后向引用,第一个括号的是 \1 ,但在 vim 里要注意 () 要转义,例如,给某些单词加上 “” :%s/\(\w\{4,10}\)/”\1”/gc 表示 \w\{4,10} 的结果加上 “” \w\{8} vim 里表示 匹配数量是 \{m,n} ,光写 {m,n} 是不行的 正则帮助 :help pattern.txt 总结,如果正常的正则表达式不起作用,考虑加转义 \ 3.纵向编辑 Ctrl + v 4.命令行模式 复制 202 co 209 复制第 202 行到 209 行 10,20 co 209 10到20行复制到209行 标签 移到起始行,输入 ma 移到结束行,输入 mb 移到粘贴行,输入 mc 然后 :’a, ‘b co ‘c m 是剪切,de 是删除 5.精确匹配查找单词 如果你输入 "/the",你也可能找到 "there"。要找到以 "the" 结尾的单词,可以用: /the\> "\>" 是一个特殊的记号,表示只匹配单词末尾。类似地,"\<" 只匹配单词的开头。 这样,要匹配一个完整的单词 "the",只需:/\6.匹配空格 \s\+ 行尾空格 \s\+$ 数据库表-》映射 %s/\s\+$//gc %s/^/”/gc %s/$/”,/gc %s/\s\+/”=>”/gc 7.两个空格以上 \s\{2,\}/’/gc 8.利用反向引用构造键值对 初始状态 visitDate, visitCompany, visitContact, visitType, visitContent, visitAttach, sendUid, 替换表达式 :’<,’>s/\(\w\{2,\}\)/\1:\1/gc visitDate:visitDate, visitCompany:visitCompany, visitContact:visitContact, visitType:visitType, visitContent:visitContent, visitAttach:visitAttach, sendUid:sendUid, 9. 每行前面插入行号如下 :%s/^/\=line(".")/ 可视区域插入从1开始的编号 :'<,'>s/^/\=line('.') - line("'<") + 1/ 10.删除相同行 :sort :g/^\(.\+\)$\n\1/d :g/^\(.\+\)$\n\1/d 11.删除空行 :g/^\s*$/d 11、匹配 10.10.10.29 \(\d\+\.\)\+\d\+ 先在fehelper(chrome浏览器插件)上写 12、搜索不区分大小写 末尾加上 \c 比如搜Process, 输入 /process\c 13、默认情况下mapleader不设置,特殊字符串" "表示\ 比如使用 nerdtree commenter 注释 先按 ESC, 再按下 1\cc 就注释一行 14、显示隐藏行号 set nonu
科目三视频
替换Unicode字符,LS
//把LS \x2028 去掉 $sjs['yeji'] = preg_replace("/[\x{2028}]+/u",'',$sjs['yeji']);
debian安装openrestry
apt-get install libpcre3-dev libssl-dev perl make build-essential curl cd /root/openresty-1.13.6.2 ./configure make make install
curl 127.0.0.1
有以下信息说明安装成功
Welcome to OpenResty! If you see this page, the OpenResty web platform is successfully installed and working. Further configuration is required. For online documentation and support please refer to openresty.org. Commercial support is available at openresty.com. Thank you for flying OpenResty.
学车之s弯道
s弯道
-
调整车身,大部分在车道内,从中间入,注意回正
-
车头左角压线的时候向左一圈,保持车头左角压着线走,出外面了就加90度调回来,然后松开。如果90度没什么变化就打死
-
左角压左侧线的时候回正
-
右角1/3处压线的时候向右一圈,保持那个点压线,不够就向右加90或打死
-
看不见线了回到向右一圈的位置
注意点:
-
不能中途停车
-
右角1/3处,如果提前了后轮可能压线,如果过了就打死
学车之侧方停车
侧方停车,车位在车右边
流程343
3
-
开始前进,人在中间车走直,前方横虚线中间那根正对人
-
车头盖接近横虚线的时候身子往前探,看到直角后在后视镜下方就停车
-
向车位方向打一圈,挂倒车档
4
-
看左边后视镜,第一个直角出来后身子往左往前看
-
看到第二个直角出来后回正,眼睛依然看着后视镜,
-
左后轮底端靠近车库黄线的时候向左边打死
-
车轮底端进线后看车头左端凹处,进线内后停车,
3
-
拨转向灯,挂前进档,出车位
-
看到竖线出现在车头中间的时候回正加一圈
-
走直后回正
注意点,4的2,3点很紧凑,不要看方向盘,连贯做回正和向左打死的动作
控制好车速,因为方向变换的时候车速也会因阻力变化而变化
时间,90秒,倒车开始算,出车位过感应线停止计算,一般不会超