November 18, 2016
Laravel框架数据库CURD操作、连贯操作使用方法
"Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。\n一、Selects\n检索表中的所有行\n$users = DB::table(\u0026#39;users\u0026#39;)-\u0026gt;get(); foreach ($users as $user) { var_dump($user-\u0026gt;name); } 从表检索单个行\n$user = DB::table(\u0026#39;users\u0026#39;)-\u0026gt;where(\u0026#39;name\u0026#39;, \u0026#39;John\u0026#39;)-\u0026gt;first(); var_dump($user-\u0026gt;name); 检索单个列的行\n$name = DB::table(\u0026#39;users\u0026#39;)-\u0026gt;where(\u0026#39;name\u0026#39;, \u0026#39;John\u0026#39;)-\u0026gt;pluck(\u0026#39;name\u0026#39;); 检索一个列值列表\n$roles = …"
November 13, 2016
PHP中的max_input_vars指令
"今天接到客服部工作人员反馈的一个问题,客户使用产品系统是允许用户添加产品属性的,而每个属性是由多个表单域组成 ,这样当每添加一个属性就等于添加了n个表单域,这个客户添加的非常的多,发现在提交保存的时候总是失败,提示其中一个表单元素的索引值不存在,经测试是发现服务端接收的一些表单域丢失了一部分。起初分析的是服务器接收的数据超出了php设置的max_post_size(其实当时已经设置了8M,足够使用了),修改了测试发现此问题仍然存在。后来将用户原来的一些添加的表单元素进行删除,再重新添加同样数据库表单域可以成功,但一旦超出一定数量的表单域就会发生丢失的情况,这个时候首先怀疑的是apache是否有类似限制接收隐藏域的指令,找了没有找到,紧接着在php中批到一个max_input_vars这个指令,意思就是说php中允许接收的最大表单域数据,到目前为止基本上是确定这个原因引起的了,奖其修改为2000,重启Apache,发现一切正常。\n总结:提起php中的max_input_vars 估计很少人知道这个这个指令,因为他的使用场景实在是太少了,在php.ini中这个指令的定义是指服务端最大可以接 …"
November 9, 2016
使用supervisord监控php脚本
"官网: http://www.supervisord.org\n一、安装supervisord\n$brew install supervisord 在mac下安装要比linux下安装方便的多。\n二、配置\n修改/usr/local/etc/supervisord.ini文件,取消以下几行注释\n[inet_http_server] ; inet (TCP) server disabled by default port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) username=user ; (default is no username (open server)) password=123 ; (default is no password (open server)) 这样就可以通过浏览器对进行管理了。\n三、添加一个新应用\n创建一个a.php文件,内容如下:\nwhile(true){ echo \u0026#39;a\u0026#39; . time() . \u0026#34;\\r\\n\u0026#34;; sleep(1); } …"
November 4, 2016
在linux下,解决修改文件权限引起的git出现的文件变化问题
"有时候,我们将服务器上的web文件夹的权限进行了修改,但git默认是也会记录权限状态的,这个时间用git status会发现所有的文件都处于被修改的状,这显示不是我们想要的。这时我们只要让git把文件权限忽略掉就可以了。\n在操作前首先我们确认一下当前配置项core.filemode,默认为true,(也可以使用cat .git/config查看)\n$ git config --list 然后执行\n$ git config core.filemode false 这样就设置了忽略文件权限。查看下配置:\n$ cat .git/config [] git忽略文件权限的配置"
November 1, 2016
按位与、或、异或等运算方法
"常见位运算\n异或^:相同为0,不同为1。如:0^0=0; 0^1=1; 1^0=1; 1^1=0 按位与\u0026amp;: 都为1则为1,否则为0。如:1\u0026amp;1=1; 1\u0026amp;0=0; 0\u0026amp;1=0; 0\u0026amp;0=0 按位或|:有1则为1,否则为0。如:1|1=1; 1|0=1; 0|1=1; 0|0=0 按位非(按位取反)~:取反操作。如:1-\u0026gt;0; 0-\u0026gt;1\n——–\n**按位与运算符(\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,其余位为零,此数 …"
October 31, 2016
解决git clone时报错:The requested URL returned error: 401 Unauthorized while accessing的问题
"版本问题,最直接的解决办法就是重新编辑安装git吧:\n下载: wget -O git.zip https://github.com/git/git/archive/master.zip 解压: unzip git.zip 进入git目录: cd git-master 编译安装: autoconf ./configure --prefix=/usr/local make \u0026amp;\u0026amp; make install 最后别忘了删掉旧的git,并把新版本的git建立软链接到/usr/bin/git rm /usr/bin/git ln -s /usr/local/bin/git /usr/bin/git "
October 25, 2016
git提示“Pull is not possible because you have unmerged files.”的解决办法(转)
"在git pull的过程中,如果有冲突,那么除了冲突的文件之外,其它的文件都会做为staged区的文件保存起来。\n重现:\n$ git pull\nA Applications/Commerce/BookingAnalysis.java A Applications/Commerce/ClickSummaryFormatter.java M Applications/CommerceForecasting/forecast/Forecast.java A Applications/CommerceForecasting/forecast/ForecastCurveProviderCategory.java M Applications/CommerceForecasting/forecast/ForecastProvider.java M Applications/CommerceForecasting/forecast/InputPropertyItem.java ……\nA …"
October 8, 2016
一张图让你彻底理解聚簇索引与普通索引的区别[经典]
"[][1]\n下面分析下索引和锁的关系。 1)delete from msg where id=2;\n由于id是主键,因此直接锁住整行记录即可。 图5 2)delete from msg where token=’ cvs’;\n由于token是二级索引,因此首先锁住二级索引(两行),接着会锁住相应主键所对应的记录; 图6 3)delete from msg where message=订单号是多少’;\nmessage没有索引,所以走的是全表扫描过滤。这时表上的各个记录都将添加上X锁。 图7\n强烈推荐阅读: https://yq.aliyun.com/articles/5533"
October 7, 2016
mysql配置变量介绍
"key_buffer_size\n设置这个变量给键缓冲区(或者说键缓存)分配指定大小的空间。但是操作系统只有在实际用到这些空间的时候才会进行分配。例如,将键缓冲区大小设置为1GB,并不意味着服务器就会真正地给它分配1GB空间。\n对一个已有的缓存设置非零值将会冲洗缓存,从技术上来说,这是一个在线操作,但是它会阻止所有访问该缓存的动作,直到缓存冲洗完成。\ntable_cache_size\n设置这个变量是不会立即生效,要等到下一个线程打开表的时候才会生效。当它生效的时候,MYSQL会检查变量的值。如果值大于缓存中表的数量,线程就可以把新打开的表插入到缓存中。如果值小于缓存中表的数量,MySQL就会从缓存中删除掉没有使用的表。\nthread_cache_size\n设置这个变量不会立即生效,生效被延时到了下一次线程关闭的时候。在那时,MySQL检查缓存中是否有空间存储线程。如果是,它会把线程缓存起来,供另外一个连接使用。如果不是,它会直接结束掉线程。在这种情况下,缓存中线程的数量,以及线程缓存使用的内存数量不会立即就下降。只有当新连接为了使用线程把它从缓存中移走的时候才会看到下降。(MySQL只有 …"