November 9, 2016
使用supervisord监控php脚本
"\u003cp\u003e官网: \u003ca href=\"http://www.supervisord.org\"\u003ehttp://www.supervisord.org\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e一、安装supervisord\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$brew install supervisord\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e在mac下安装要比linux下安装方便的多。\u003c/p\u003e\n\u003cp\u003e二、配置\u003c/p\u003e\n\u003cp\u003e修改/usr/local/etc/supervisord.ini文件,取消以下几行注释\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e[inet_http_server] ; inet (TCP) server disabled by default\nport=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface)\nusername=user ; (default is no username (open server))\npassword=123 ; (default is no password (open server))\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e这样就可以通过浏览器对进行管理了。\u003c/p\u003e\n\u003cp\u003e三、添加一个新应用\u003c/p\u003e\n\u003cp\u003e创建一个a.php文件,内容如下:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ewhile(true){\necho \u0026#39;a\u0026#39; . time() . \u0026#34;\\r\\n\u0026#34;;\nsleep(1);\n}\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e …\u003c/p\u003e"
November 4, 2016
在linux下,解决修改文件权限引起的git出现的文件变化问题
"\u003cp\u003e有时候,我们将服务器上的web文件夹的权限进行了修改,但git默认是也会记录权限状态的,这个时间用git status会发现所有的文件都处于被修改的状,这显示不是我们想要的。这时我们只要让git把文件权限忽略掉就可以了。\u003c/p\u003e\n\u003cp\u003e在操作前首先我们确认一下当前配置项core.filemode,默认为true,(也可以使用cat .git/config查看)\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ git config --list\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e然后执行\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ git config core.filemode false\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e这样就设置了忽略文件权限。查看下配置:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ cat .git/config\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e[\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/git%E5%BF%BD%E7%95%A5%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90%E7%9A%84%E9%85%8D%E7%BD%AE.png\" alt=\"git%e5%bf%bd%e7%95%a5%e6%96%87%e4%bb%b6%e6%9d%83%e9%99%90%e7%9a%84%e9%85%8d%e7%bd%ae\"\u003e]\ngit忽略文件权限的配置\u003c/p\u003e"
November 1, 2016
按位与、或、异或等运算方法
"\u003cp\u003e\u003cstrong\u003e常见位运算\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e异或^:相同为0,不同为1。如:0^0=0; 0^1=1; 1^0=1; 1^1=0\n按位与\u0026amp;: 都为1则为1,否则为0。如:1\u0026amp;1=1; 1\u0026amp;0=0; 0\u0026amp;1=0; 0\u0026amp;0=0\n按位或|:有1则为1,否则为0。如:1|1=1; 1|0=1; 0|1=1; 0|0=0\n按位非(按位取反)~:取反操作。如:1-\u0026gt;0; 0-\u0026gt;1\u003c/p\u003e\n\u003cp\u003e——–\u003c/p\u003e\n\u003ch3\u003e\u003c/h3\u003e\n\u003ch3 id=\"按位与运算符参加运算的两个数据按二进制位进行与运算运算规则000-010-100-111即两位同时为1结果才为1否则为0例如35-即-0000-0011--0000-0101--0000-0001-因此35的值得1另负数按补码形式参加按位与运算与运算的特殊用途1清零如果想将一个单元清零即使其全部二进制位为0只要与一个各位都为零的数值相与结果为零2取一个数中指定位方法找一个数对应x要取的位该数的对应位为1其余位为零此数与x进行与运算可以得到x中的指定位例设x10101110-取x的低4位用-x--0000-1111--0000-1110即可得到-还可用来取x的246位\"\u003e**按位与运算符(\u0026amp;)**参加运算的两个数据,按二进制位进行“与”运算。运算规则:0\u0026amp;0=0; 0\u0026amp;1=0; 1\u0026amp;0=0; 1\u0026amp;1=1;即:两位同时为“1”,结果才为“1”,否则为0例如:3\u0026amp;5 即 0000 0011 \u0026amp; 0000 0101 = 0000 0001 因此,3\u0026amp;5的值得1。另,负数按补码形式参加按位与运算。“与运算”的特殊用途:(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。(2)取一个数中指定位方法:找一个数,对应X要取的位,该数的对应位为1,其余位 …\u003c/h3\u003e"
October 31, 2016
解决git clone时报错:The requested URL returned error: 401 Unauthorized while accessing的问题
"\u003cp\u003e版本问题,最直接的解决办法就是重新编辑安装git吧:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e下载:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ewget -O git.zip https://github.com/git/git/archive/master.zip\n\u003c/code\u003e\u003c/pre\u003e\u003col start=\"2\"\u003e\n\u003cli\u003e解压:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eunzip git.zip\n\u003c/code\u003e\u003c/pre\u003e\u003col start=\"3\"\u003e\n\u003cli\u003e进入git目录:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ecd git-master\n\u003c/code\u003e\u003c/pre\u003e\u003col start=\"4\"\u003e\n\u003cli\u003e编译安装:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eautoconf\n./configure --prefix=/usr/local\nmake \u0026amp;\u0026amp; make install\n\u003c/code\u003e\u003c/pre\u003e\u003col start=\"5\"\u003e\n\u003cli\u003e最后别忘了删掉旧的git,并把新版本的git建立软链接到/usr/bin/git\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003erm /usr/bin/git\nln -s /usr/local/bin/git /usr/bin/git\n\u003c/code\u003e\u003c/pre\u003e"
October 25, 2016
git提示“Pull is not possible because you have unmerged files.”的解决办法(转)
"\u003cp\u003e在git pull的过程中,如果有冲突,那么除了冲突的文件之外,其它的文件都会做为staged区的文件保存起来。\u003c/p\u003e\n\u003cp\u003e重现:\u003c/p\u003e\n\u003cp\u003e$ git pull\u003c/p\u003e\n\u003cp\u003eA Applications/Commerce/BookingAnalysis.java\nA Applications/Commerce/ClickSummaryFormatter.java\nM Applications/CommerceForecasting/forecast/Forecast.java\nA Applications/CommerceForecasting/forecast/ForecastCurveProviderCategory.java\nM Applications/CommerceForecasting/forecast/ForecastProvider.java\nM Applications/CommerceForecasting/forecast/InputPropertyItem.java\n……\u003c/p\u003e\n\u003cp\u003eA …\u003c/p\u003e"
October 8, 2016
一张图让你彻底理解聚簇索引与普通索引的区别[经典]
"\u003cp\u003e[\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/mysq_index.png\" alt=\"mysq_index\"\u003e][1]\u003c/p\u003e\n\u003cp\u003e下面分析下索引和锁的关系。\n1)delete from msg where id=2;\u003c/p\u003e\n\u003cp\u003e由于id是主键,因此直接锁住整行记录即可。\n\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/2f67547e0caa0d1ea9bc7cb53966eedf70d49db3.png\" alt=\"\"\u003e 图5\n2)delete from msg where token=’ cvs’;\u003c/p\u003e\n\u003cp\u003e由于token是二级索引,因此首先锁住二级索引(两行),接着会锁住相应主键所对应的记录;\n\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/e0ac34fd99404ccdee4ab1ec4889f47754ffcd82.png\" alt=\"\"\u003e 图6\n3)delete from msg where message=订单号是多少’;\u003c/p\u003e\n\u003cp\u003emessage没有索引,所以走的是全表扫描过滤。这时表上的各个记录都将添加上X锁。\n\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/aa9a94c735ec35cfe92cd5eca1015893aad8de58.png\" alt=\"\"\u003e 图7\u003c/p\u003e\n\u003cp\u003e强烈推荐阅读: …\u003c/p\u003e"
October 7, 2016
mysql配置变量介绍
"\u003cp\u003e\u003cstrong\u003ekey_buffer_size\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e设置这个变量给键缓冲区(或者说键缓存)分配指定大小的空间。但是操作系统只有在实际用到这些空间的时候才会进行分配。例如,将键缓冲区大小设置为1GB,并不意味着服务器就会真正地给它分配1GB空间。\u003c/p\u003e\n\u003cp\u003e对一个已有的缓存设置非零值将会冲洗缓存,从技术上来说,这是一个在线操作,但是它会阻止所有访问该缓存的动作,直到缓存冲洗完成。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003etable_cache_size\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e设置这个变量是不会立即生效,要等到下一个线程打开表的时候才会生效。当它生效的时候,MYSQL会检查变量的值。如果值大于缓存中表的数量,线程就可以把新打开的表插入到缓存中。如果值小于缓存中表的数量,MySQL就会从缓存中删除掉没有使用的表。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ethread_cache_size\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e设置这个变量不会立即生效,生效被延时到了下一次线程关闭的时候。在那时,MySQL检查缓存中是否有空间存储线程。如果是,它会把线程缓存起来,供另外一个连接使用。如果不是,它会直接结束掉线程。在这种情况下,缓存中线程的数量,以及线程缓存使用的内存数量不会立即就下降。只有当新连接为了使用线程把它从缓存中移走的时候才会看到下降。(MySQL只有 …\u003c/p\u003e"
October 6, 2016
MySQL实战系列:大字段如何优化
"\u003cp\u003e\u003ca href=\"https://yq.aliyun.com/articles/59256\"\u003ehttps://yq.aliyun.com/articles/59256\u003c/a\u003e\u003c/p\u003e"
September 18, 2016
如何用十条命令在一分钟内检查Linux服务器性能
"\u003cp\u003e如果你的Linux服务器突然负载暴增,报警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。\u003cstrong\u003e概述\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003euptime\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edmesg | tail\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003evmstat 1\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003empstat -P ALL 1\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003epidstat 1\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eiostat -xz 1\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efree -m\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esar -n DEV 1\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esar -n TCP,ETCP 1\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etop\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003egtop\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003epstree 查看进程树之间派生的关系\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etrap 捕捉进行接收到的信号标识,如 SIGKILL/SIGTERM\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/nicolargo/glances\"\u003eGlances\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e其中一些命令需要安装sysstat包,有一些由procps包提供。这些命令的输出,有助于快速定位性能瓶颈,检查出所有资源(CPU、内存、磁盘IO等)的利用率(utilization)、饱和度(saturation)和错误(error)度量,也就是所谓的USE方法。\u003c/p\u003e\n\u003cp\u003e下面我们来逐一介绍下这些命令,有关这些命 …\u003c/p\u003e"
September 11, 2016
Visual Studio Code之常备快捷键
"\u003cp\u003e推荐:\u003ca href=\"http://www.cnblogs.com/summit7ca/p/5225494.html\"\u003eVisual Studio Code 添加设置代码段(snippet)\u003c/a\u003e{#cb_post_title_url.postTitle2}\u003c/p\u003e\n\u003cp\u003e官方快捷键大全: \u003ca href=\"https://code.visualstudio.com/docs/customization/keybindings\"\u003ehttps://code.visualstudio.com/docs/customization/keybindings\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eVisual Studio Code是个牛逼的编辑器,启动非常快,完全可以用来代替其他文本文件编辑工具。又可以用来做开发,支持各种语言,相比其他IDE,轻量级完全可配置还集成Git感觉非常的适合前端开发。 所以我仔细研究了一下文档未来可能会作为主力工具使用。\u003c/p\u003e\n\u003ch1 id=\"主命令框_Command_Palette\"\u003e主命令框\u003c/h1\u003e\n\u003cp\u003e最重要的功能就是\u003ccode\u003eF1\u003c/code\u003e或\u003ccode\u003eCtrl+Shift+P\u003c/code\u003e打开的命令面板了,在这个命令框里可以执行VSCode的任何一条命令,甚至关闭这个编辑器。\n按一下\u003ccode\u003eBackspace\u003c/code\u003e会进入到\u003ccode\u003eCtrl+P\u003c/code\u003e模式里\n在\u003ccode\u003eCtrl+P\u003c/code\u003e下输入\u003ccode\u003e\u0026gt;\u003c/code\u003e又可以回到\u003ccode\u003eCtrl+Shift+P\u003c/code\u003e模式。\n在\u003ccode\u003eCtrl+P\u003c/code\u003e窗口下还可以\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e直接输入文件名,跳转到文件\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e?\u003c/code\u003e 列出当前可执行的动作\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e!\u003c/code\u003e 显示Errors或Warnings,也可以`Ctrl+Shift+M\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e:\u003c/code\u003e 跳转到行数,也可以\u003ccode\u003eCtrl+G\u003c/code\u003e …\u003c/li\u003e\u003c/ul\u003e"
August 30, 2016
让终端走代理的几种方法
"\u003ch4 id=\"方法1:\"\u003e\u003cstrong\u003e方法1\u003c/strong\u003e\u003c/h4\u003e\n\u003cp\u003e在终端中直接运行命令\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eexport http_proxy=http://proxyAddress:port\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e这个办法的好处是简单直接,并且影响面很小(只对当前终端有效)。\u003c/p\u003e\n\u003ch4 id=\"方法2:\"\u003e\u003cstrong\u003e方法2\u003c/strong\u003e\u003c/h4\u003e\n\u003cp\u003e把代理服务器地址写入shell配置文件\u003ccode\u003e.bashrc\u003c/code\u003e或者\u003ccode\u003e.zshrc\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e直接在\u003ccode\u003e.bashrc\u003c/code\u003e或者\u003ccode\u003e.zshrc\u003c/code\u003e添加下面内容\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eexport http_proxy=\u0026#34;http://localhost:port\u0026#34;\nexport https_proxy=\u0026#34;http://localhost:port\u0026#34;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e以使用shadowsocks代理为例,ss的代理端口为\u003ccode\u003e1080\u003c/code\u003e,那么应该设置为\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eexport http_proxy=\u0026#34;http://127.0.0.1:1080\u0026#34;\nexport https_proxy=\u0026#34;http://127.0.0.1:1080\u0026#34;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003ccode\u003elocalhost\u003c/code\u003e就是一个域名,域名默认指向 \u003ccode\u003e127.0.0.1\u003c/code\u003e,两者是一样的。\u003c/p\u003e\n\u003cp\u003e然后\u003ccode\u003eESC\u003c/code\u003e后\u003ccode\u003e:wq\u003c/code\u003e保存文件,接着在终端中执行\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003esource ~/.bashrc\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e或者退出当前终端再起一个终端。 这个办法的好处 …\u003c/p\u003e"
August 15, 2016
highcharts中对”另存为”进行汉化
"\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$(function () {\n var chart = new Highcharts.Chart({\n chart: {\n renderTo: \u0026#39;container\u0026#39;\n },\n lang{\n printChart:\u0026#34;打印图表\u0026#34;,\n downloadJPEG: \u0026#34;下载JPEG 图片\u0026#34;\n downloadPDF: \u0026#34;下载PDF文档\u0026#34;\n downloadPNG: \u0026#34;下载PNG 图片\u0026#34;\n downloadSVG: \u0026#34;下载SVG 矢量图\u0026#34;\n exportButtonTitle: \u0026#34;导出图片\u0026#34;\n },\n .....\n })\n})\n\u003c/code\u003e\u003c/pre\u003e"
August 13, 2016
windows下备份mysql数据库dos脚本
"\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e@echo off \u0026amp; setlocal ENABLEEXTENSIONS\n:: ---------- 配置项 ----------\n:: 备份放置的路径,加\nset BACKUP_PATH=D:\\Backup\n:: 要备份的数据库名称,多个用空格分隔\nset DATABASES=1688 abc ceshi\n:: MySQL 用户名\nset USERNAME=root\n:: MySQL 密码\nset PASSWORD=root\n:: MySQL Bin 目录,加\n:: 如果可以直接使用 dump(安装时添加 MySQL Bin 目录到了环境变量),此处留空即可\nset MYSQL=D:\\Progra~1\\phpStudy\\MySQL\\bin\\\n:: WinRAR 自带命令行工具的可执行文件路径,长文件名注意用 Dos 长文件名书写方式\nset WINRAR=D:\\Progra~1\\WinRAR\\Rar.exe\n:: ---------- 以下请勿修改 ----------\nset YEAR=%date:~0,4%\nset MONTH=%date:~5,2%\nset …\u003c/code\u003e\u003c/pre\u003e"
June 7, 2016
gitlab安装-设置1-修改仓库(repositories)的位置
"\u003cp\u003e安装好gitlab后,要将仓库(repositories)放在一个大硬盘上,在ubuntu服务器上安装的默认位置为 /var/opt/gitlab/git-data/ 目录,需要修改仓库对应的目录\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e操作步骤:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e1:新建新仓库目录\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003emkdir -p /mnt/application/gitlab/git-data\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e2:修改配置文件 sudo vi /etc/gitlab/gitlab.rb\n搜索:git_data_dir 修改成:git_data_dir “新目录”\n如:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003egit_data_dir \u0026#34;/mnt/application/gitlab/git-data\u0026#34;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e保存\n3:重新生成gitlab\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003esudo gitlab-ctl reconfigure\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e生成不报错,而且在新建仓库目录可以看到从下的目录,即修改成功。\u003c/p\u003e"
May 28, 2016
利用tcpdump抓取MySQL执行的SQL
"\u003cp\u003e\u003ca href=\"http://ourmysql.com/archives/1358\"\u003ehttp://ourmysql.com/archives/1358\u003c/a\u003e\n编写脚本文件dumpsql.sh,内容如下:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e#!/bin/bash\n#this script used montor mysql network traffic.echo sql\ntcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | perl -e \u0026#39;\nwhile(\u0026lt;\u0026gt;) { chomp; next if /^[^ ]+[ ]*$/;\n if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL)/i)\n {\n if (defined $q) { print \u0026#34;$q\\n\u0026#34;; }\n $q=$_;\n } else {\n $_ =~ s/^[ \\t]+//; $q.=\u0026#34; $_\u0026#34;;\n }\n}\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e运行并抓去sql的执行。\u003c/p\u003e\n\u003cp\u003e抓取后在当前目录出现out.log文件,执 …\u003c/p\u003e"