Hot For Coding
JavaScript简单模拟HTTP请求比Ajax方便

在JavaScript中,我们发起请求一个URL地址,就算不需要获得请求结果,但是用Ajax请求是最普遍的了。然而,Ajax在跨域上不太方便,但本文不讨论JavaScript跨域问题,只是结合经验给一个技能模拟HTTP请求又不会导致跨域问题的技巧。

原型需求

  • 假设我们访问a.com/index.html
  • 点击页面中的触发按钮会异步请求b.com一个index.php文件并且GET一个值
  • 然后index.php获取这个值并写到t.txt文件中

步骤:

a.com/index.html -> 点击按钮 -> 请求 b.com/index.php?do=hello -> b.com/index.php文件把do的值hello获取写入t.txt文件

...

READ ALL

JavaScript作用域安全构造函数

通常我们定义的构造函数需要new操作符实例调用构造函数,因为只有使用new的时候构造函数内用到的this对象会指向新创建的对象实例,如代码:

/**
 * 作用域安全构造函数
 * Nicholas Lee www.qttc.net
 */
 
// 定义构造函数
function cus (name,age) {
  this.name = name;
  this.age = age;
}
 
var obj = new cus('Nicholas Lee', 2);
 
console.log(obj.name); // Output: Nicholas Lee
console.log(obj.age);  // Output: 2

...

READ ALL

MySQL开启慢查询日志log-slow-queries

一个普通Web站点的页面常常需要查询N条SQL语句后才能得出页面结果,当网站访问速度慢而前端做了大量优化工作以后,数据库瓶颈的查找也是Web优化的一个重要部分。

MySQL中提供了一个慢查询的日志记录功能,可以把查询SQL语句时间大于多少秒的语句写入慢查询日志,日常维护中可以通过慢查询日志的记录信息快速准确地判断问题所在。

开启慢查询功能

  • log-slow-queries 慢查询日志文件路径
  • long_query_time 超过多少秒的查询就写入日志

打开my.cnf配置文件,加入以下代码:

log-slow-queries = /tmp/mysql-slow.log
long_query_time = 2

...

READ ALL

Nginx负载均衡设置实例

Nginx最大的亮点就是反向代理、负载均衡这一块了,本文将详细讲解Nginx负载均衡的配置。

负载均衡

先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。那么负载均衡的前提就是要有多台服务器才能实现,也就是两台以上即可。

测试环境

由于没有服务器,所以本次测试直接host指定域名,然后在VMware里安装了三台CentOS。

A服务器IP: 192.168.5.149 (主)
B服务器IP: 192.168.5.27
C服务器IP: 192.168.5.126

...

READ ALL

JavaScript中stopPropagation函数停止事件传播

JavaScript中的事件默认是冒泡方式,逐层往上传播,可以通过stopPropagation()函数停止事件在DOM层次中的传播

HTML代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>stopPropagation()使用 - Nicholas Lee</title>
  </head>
  <body>
    <button>button</button>
  </body>
</html>

没有加stopPropagation()

var button = document.getElementsByTagName('button')[0];
button.onclick=function(event){
  console.log('button clicked');
};
 
document.body.onclick=function(event){
  console.log('body clicked');
}

// Output:
//  button clicked
//  body clicked

...

READ ALL

如何找出PHP配置文件php.ini的路径?

近来,有不博友问php.ini存在哪个目录下?或者修改php.ini以后为何没有生效?基于以上两个问题,我觉得有必要教一下刚接触PHP的博友们如何找到PHP调用php.ini的路径目录。

一般安装PHP环境无非有两种平台,Linux环境下与Win平台下。而WIN平台居多,因为现在套装安装包非常方便,如appserv、wamp一件安装包等等。而Linux下也有LNMP一键安装包,非常方便。由于这些安装做了简化,所以自然的许多博友就不太清楚环境安装好了以后php.ini放在哪个目录下,或者在某个目录下找到了php.ini文件但不知是否是PHP程序调用的那个。

...

READ ALL

MySQL存储引擎MyISAM特性

MySQL的默认存储引擎MyISAM一直都是MySQL非事务存储引擎的最佳选择。它在性能和可用特征之间,提供一种良好的均衡性,如全文索引、压缩、空间函数。MyISAM仅支持表锁,不支持行级锁。

加锁与并发

MyISAM对整张表加锁,而不是行。读取程序在需要读取数据时,在所有表上都可以获得共享锁(读锁),而写入程序可以获得排它锁(写锁)。用户在执行查询select语句时,可以同时在一张表内插入新数据,这也称读写并发,这是一个非常有用的特性。

数据加密

这个还是有点用的,特别是敏感数据

B-tree索引

由于B-Tree的特性,在B-Tree中按key检索数据的算法非常直观, 首先从根节点进行二分查找,如果找到则返回对应节点的data,否则对相应区间的指针指向的节点递归进行查找,直到找到节点或找到null指针,前者查找成功,后者查找失败

...

READ ALL

8条命案持枪嫌犯周克华域名被抢注!

名人的姓名全拼域名被抢注已是煮米高手的必备一招,但前两天重庆银行持枪抢劫犯周克华的全拼域名也被人抢注了。

full

从whois查询结果看到域名在8月10日,也就是重庆银行发生抢劫案当天,警方公布通缉犯周克华姓名后即被抢注。

full

从注册信息可以看到是温州市(wen zhou shi),诶!看来周克华确切成了名人,风范一点也不比当年的马加爵差。可惜,当年马加爵犯案的时候,姓名全拼域名没有被重视。

不过我还是有点想不通,抢注名人的姓名全拼域名可能有被高额收购的可能,但不知道煮一个通缉犯的姓名全拼域名想做什么站?难不成专题报道犯罪嫌疑人的相关信息,可惜我估计马克华是没有本钱赎回自己的全拼域名了。

...

READ ALL

CSS display属性

在CSS中可以通过display属性来快速隐藏一个Element,display就是告诉浏览器如何来显示Element,如果你给none值的话就是不显示

div {
  display: none;
}

最长见的另外一种用法就是让行级标签变成块级标签,值是block

span {
  display: span;
}

以上代码就是让span标签从行级变块级,当然也可以反过来块级变行级inline-block

h1 {
  display: inline-block
}

display的可用属性其实还有很多,如flexgridtableinherit等等,如果你不想设置任何模式,可以给默认值initial

...

READ ALL

MySQL事务autocommit自动提交

MySQL默认操作模式就是autocommit自动提交模式。这就表示除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执行。我们可以通过设置autocommit的值改变是否是自动提交autocommit模式。

通过以下命令可以查看当前autocommit模式

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set (0.04 sec)

...

READ ALL