MySQL:mysql索引优化, mysql全文检索, mysql 不等于 优化, 全值匹配, 最佳左前缀法则

  Explain优化查询检测 所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找,而用的最多,并且是mysql默认的就是二叉树算法 BTREE,通过BTREE算法建立索引的字段,比如扫描20行就能得到未使用BTREE前扫描了2^20行的结果,具体的实现方式后续本博客会出一个算法专题里面会有具体的分析讨论; EXPLAIN可以帮助开发人员分析SQL问题,explain显示了mysql如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上Explain就可以了: Explain select * from blog where false; mysql在执行一条查询之前,会对发出的每条SQL进行分析,决定是否使用索引或全表扫描如果发送一条select * from blog where falseMysql是不会执行查询操作的,因为经过SQL分析器的分析后MySQL已经清楚不会有任何语句符合操作;   Example mysql> EXPLAIN SELECT `birday` FROM `user` WHERE `birthday` < "1990/2/2"; -- 结果: id: 1 select_type: SIMPLE -- 查询类型(简单查询,联合查询,子查询) table:… Read More

解决Mysql错误:Too many connections的方法, mysql_connect(): Too many connections

  通过sql语句参看你的最大连接数: SHOW VARIABLES LIKE "max_connections"   修复的方法,以下任选其一:  为了防止DDoS攻击,添加一个不修改任何配置,只是在代码中添加一个 sleep(1);  通过sql语句增加链接数: SET GLOBAL max_connections = 1024; 或者通过修改 my.cnf (/etc/my.cnf 或者你自定义的~/.my.cnf)配置文件,在 [mysqld] 下面添加一行 max_connections=1024; 非使用mysqld脚本自动启动的用户。 修改$MYSQL_HOME/bin/mysqld_safe文件 例如:/usr/local/mysql/bin/mysqld_safe这个文件 grep -n ‘max_connection’ $MYSQL_HOME/bin/mysqld_safe 修改对应行号的max_connections参数值   本文:解决Mysql错误:Too many connections的方法, mysql_connect(): Too many connections… Read More

javascript: 数字格式化, 数字处理, formatting numbers, manipulating ,Numeral.js

  项目地址:https://github.com/adamwdraper/Numeral-js Use it In the Browser <script src="numeral.min.js"></script> 或者使用CDN文件 <script src="//cdnjs.cloudflare.com/ajax/libs/numeral.js/2.0.6/numeral.min.js"></script> In Node.js npm install numeral var numeral = require('numeral'); 创建 创建数字的实例。数字采用它转换为数字的数字或字符串。 var myNumeral = numeral(1000); var value = myNumeral.value(); // 1000 var myNumeral2 = numeral('1,000'); var value2 =… Read More

压力测试和评测工具 Siege

压力测试和评测工具 Siege 目录 Web性能压力测试工具之Siege详解: http://www.ha97.com/4663.html 系统吞吐量(TPS)、用户并发量、性能测试概念和公式:http://www.ha97.com/5095.html Siege官网:http://www.joedog.org/ 下载地址 siege: http://www.joedog.org/pub/siege/ Sproxy: http://www.joedog.org/pub/sproxy/ 压力测试工具siege的用法:http://buzheng.org/blog/usage-of-siege.html Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力。可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。siege可以从您选择的预置列表中请求随机的URL。所以siege可用于仿真用户请求负载,而ab则不能。但不要使用siege来执行最高性能基准调校测试,这方面ab就准确很多。 Sproxy做为一个代理侦听9001端口,可用于搜集正常访问的GET/POST请求、生成siege适用的Urls.txt文件格式。 安装 # siege tar zxvf siege-3.0.6.tar.gz cd siege-3.0.6/ ./configure make make install # sproxy yum -y install perl-devel openssl-devel tar zxvf sproxy-1.02.tar.gz cd sproxy-1.02/ ./configure… Read More

mongodb 联表查询方法, PHP操作远程mongodb数据库

  本篇是 PHP操作远程mongodb数据库, MongoDB PHP Library, php connects with remote MongoDB 的延伸:   这里只对同库联表查询做介绍,跨库联表查询可能在之后也会介绍(因为公司架构变动,之后可能会联表查询) 我用到的联表查询有两种,一种是mongoose的populate,一种是$lookup populate populate是使用外键关联子表 例如现在有一张订单表结构(动态外键): var orderSchema = new mongoose.Schema({ uid: { type: String, required: true }, // 用户id amount: { type: Number, required: true }, oType:… Read More

安装不同版本的PHP, 更换PHP默认版本, PHP多版本安装, How to Install Different PHP (5.6, 7.0 and 7.1) Versions in Ubuntu

  PHP(PHP的递归缩写:Hypertext Preprocessor)是一种开源的,流行的通用脚本语言,广泛使用并且最适合开发网站和基于Web的应用程序。它是一种可以嵌入HTML的服务器端脚本语言。 目前,有三种受支持版本的PHP,即PHP 5.6,7.0和7.1。含义PHP 5.3,5.4和5.5都达到了生命的尽头; 安全更新不再支持它们。 在本文中,我们将解释如何使用OndřejSurýPPA在Ubuntu及其衍生产品中安装所有受支持的PHP版本,以及Apache和Nginx Web服务器的大多数请求的PHP扩展。我们还将解释如何设置要在Ubuntu系统上使用的PHP的默认版本。 请注意,PHP 7.x是Ubuntu软件存储库中支持的稳定版本,您可以通过运行下面的apt命令来确认。 $sudo apt show php #OR $ sudo apt show php -a Show PHP Version Information Package: php Version: 1:7.0+35ubuntu6 Priority: optional Section: php Source: php-defaults (35ubuntu6) Origin: Ubuntu Maintainer:… Read More

jQuery插件:带遮罩无限循环loading加载动画插件, jQuery LoadingOverlay

官网:https://gasparesganga.com/labs/jquery-loading-overlay/ 项目:https://github.com/gasparesganga/jquery-loading-overlay Get it 获取 GitHub View project on GitHub or download the latest release. npm npm install gasparesganga-jquery-loading-overlay Bower bower install gasparesganga-jquery-loading-overlay CDN https://cdn.jsdelivr.net/npm/gasparesganga-jquery-loading-overlay@2.1.5/dist/loadingoverlay.min.js 这篇介绍一个jQuery的插件(plugin),功能是在下载文件或资料时,在萤幕或区块中显示遮罩(overlay);遮罩中可以有动画或讯息,告诉使用者流览器正在进行下载,电脑没有挂掉,也没有在偷懒。网路上有很多类似功能的插件,个人觉得这个最简单,用起来也方便;但这个插件只能用在有支援CSS3的流览器上。插件的下载点和详细说明可以gasparesganga.com/labs/jquery-loading-overlay/网址中找到。 这个插件的遮罩可以遮蔽整个流览器的萤幕,或只遮蔽指定的元件;在遮蔽元件时,萤幕上可以有多个遮罩同时存在。当遮蔽的元件改变尺寸时,遮罩也会跟着改变尺寸。显示的动画可以替换或自订,或使用Font Awesome里的图像,如果要使用Font Awesome里的图像,要记得在网页中包含Font Awesome的样式表。插件只有三个函式,但函式名称并没有遵照一般的命名规范,第一个字母小写,后继再用驼峰式(camel case),这点要留意:   Methods 方法 $.LoadingOverlaySetup(options) 这个函式用来设定遮罩整体的各项属性,透过这个函式设定的属性会适用于所有后继产生的遮罩。在随后有各项属性作用的介绍。 $.LoadingOverlay(action [,options]) 设定全萤幕遮罩。action 参数有两个字串值:… Read More

PHP: 控制循环执行次数, do…while与while , goto 跳转位置, if not repeat running

do-while (PHP 4, PHP 5, PHP 7) do-while 循环和 while 循环非常相似,区别在于表达式的值是在每次循环结束时检查而不是开始时。和一般的 while 循环主要的区别是 do-while的循环语句保证会执行一次(表达式的真值在每次循环结束后检查),然而在一般的 while 循环中就不一定了(表达式真值在循环开始时检查,如果一开始就为 FALSE 则整个循环立即终止)。 do-while 循环只有一种语法: <?php $i = 0; do { echo $i; } while ($i > 0); ?> 以上循环将正好运行一次,因为经过第一次循环后,当检查表达式的真值时,其值为 FALSE($i 不大于 0)而导致循环终止。 do…while与while的语法结构基本一样,也是一个布尔型循环,功能也基本一样。 基本语法规定如下:… Read More

jquery.serializeJSON: 包含未勾选的checkboxes, Problem with checkbox checked,

  jquery.serializeJSON 是什么? 怎么用? 请参看:JQuery: 提交表单数据,转换表单数据为json,values of Form to Json (jquery.serializeJSON)   当我们使用: <input type="checkbox" name="show" value="true" checked> 的时候, 当这个input没有被选中的话,那么默认将不会传值,也就是说,没有被选中(unchecked)的话,这个input的数据将不会被提交。 如果有需要想要提交的话,那么有以下三种方法:  默认的方法:写一个hidden输入框,并且name标签取一样的值,如下: <input type="hidden" name="show" value="false"> <input type="checkbox" name="show" value="true" checked> 当取消选中的时候,那么将会提交一个false  如果上面的代码不够简洁的话,也可以直接这么写: <input type="checkbox" name="show" value="true" data-unchecked-value="false" checked> 效果是一样的… Read More

ssh 登录报错 packet_write_wait: Connection to x.x.x.x port 22: Broken pipe

问题现象 用 ssh 命令连接服务器之后,如果一段时间不操作,再次进入 Terminal 时会有一段时间没有响应,然后就出现错误提示: packet_write_wait: Connection to x.x.x.x port 22: Broken pipe 只能重新用 ssh 命令进行连接。   解决方法 方法一:如果您有多台服务器,不想在每台服务器上设置,只需在客户端的 ~/.ssh/ 文件夹中添加 config 文件,并添加下面的配置: ServerAliveInterval 60   方法二:如果您有多台个人管理服务器,不想在每个客户端进行设置,只需在服务器的 /etc/ssh/sshd_config 中添加如下的配置: ClientAliveInterval 60   方法三:如果您只想让当前的 ssh 保持连接,可以使用以下的命令: $ ssh -o ServerAliveInterval=60… Read More

报错:CodeIgniter Disallowed Key Characters, disallowed key characters

改用一下的正则表达式 !preg_match("/^[a-z0-9\x{4e00}-\x{9fa5}\:\;\.\,\?\!\@\#\$%\^\*\"\~\'+=\\\ &_\/\.\[\]-\}\{]+$/iu", $str) 修改 Input.php 或者创建自己的 MY_Input.php , 如下: <?php class MY_Input extends CI_Input { /** * Clean Keys * * This is a helper function. To prevent malicious users * from trying to exploit keys we make sure… Read More

Linux 开发的五大必备工具, Linux容器, 版本控制, 文本编辑, IDE, 文本比较

Linux 已经成为工作、娱乐和个人生活等多个领域的支柱,人们已经越来越离不开它。在 Linux 的帮助下,技术的变革速度超出了人们的想象,Linux 开发的速度也以指数规模增长。因此,越来越多的开发者也不断地加入开源和学习 Linux 开发地潮流当中。在这个过程之中,合适的工具是必不可少的,可喜的是,随着 Linux 的发展,大量适用于 Linux 的开发工具也不断成熟。甚至可以说,这样的工具已经多得有点惊人。 为了选择更合适自己的开发工具,缩小选择范围是很必要的。但是这篇文章并不会要求你必须使用某个工具,而只是缩小到五个工具类别,然后对每个类别提供一个例子。然而,对于大多数类别,都会有不止一种选择。下面我们来看一下。 容器 放眼于现实,现在已经是容器的时代了。容器既及其容易部署,又可以方便地构建开发环境。如果你针对的是特定的平台的开发,将开发流程所需要的各种工具都创建到容器映像中是一种很好的方法,只要使用这一个容器映像,就能够快速启动大量运行所需服务的实例。 一个使用容器的最佳范例是使用 Docker ,使用容器(或 Docker)有这些好处: 开发环境保持一致 部署后即可运行 易于跨平台部署 Docker 映像适用于多种开发环境和语言 部署单个容器或容器集群都并不繁琐 通过 Docker Hub ,几乎可以找到适用于任何平台、任何开发环境、任何服务器、任何服务的映像,几乎可以满足任何一种需求。使用 Docker Hub 中的映像,就相当于免除了搭建开发环境的步骤,可以直接开始开发应用程序、服务器、API 或服务。 Docker 在所有 Linux 平台上都很容易安装,例如可以通过终端输入以下命令在 Ubuntu 上安装 Docker: sudo… Read More