Hot For Coding
MySQL存储引擎MyISAM与InnoDB如何选择?

虽然MySQL里的存储引擎不只是MyISAM与InnoDB这两个,但常用的就是它俩了。可能有站长并未注意过MySQL的存储引擎,其实存储引擎也是数据库设计里的一大重要点,那么博客系统应该使用哪种存储引擎呢?下面我们分别来看两种存储引擎的区别。

  • InnoDB支持事务,MyISAM不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了
  • MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及设计到安全性就高的应用
  • InnoDB支持外键,MyISAM不支持
  • MyISAM是默认引擎,InnoDB需要指定
  • InnoDB不支持FULLTEXT类型的索引
  • InnoDB中不保存表的行数,如select count(*) from table时,InnoDB需要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含where条件时MyISAM也需要扫描整个表
  • 对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立联合索引
  • 清空整个表时,InnoDB是一行一行的删除,效率非常慢。MyISAM则会重建表
  • InnoDB支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like '%qttc%'

...

READ ALL

JavaScript中isNaN判断非数字

isNaN的全称是Not-a-Number,意思就是:不是一个数字

使用也简单,只需要传入一个值,返回true/false,看看这个例子

语法

isNaN(value)

isNaN(123) //false
isNaN(-1.23) //false
isNaN(5-2) //false
isNaN(0) //false
isNaN('123') //false
isNaN('Hello') //true
isNaN('2005/12/12') //true
isNaN('') //false
isNaN(true) //false
isNaN(undefined) //true
isNaN('NaN') //true
isNaN(NaN) //true
isNaN(0 / 0) //true

...

READ ALL

JavaScript的Math对象常用方法

JavaScript的Math对象有很多常用的数学计算方法,我们来看看常用的有哪些

ceil

向上取整

console.log(Math.ceil(1.2)) // Output: 2
console.log(Math.ceil(1.8)) // Output: 2
console.log(Math.ceil(2.0)) // Output: 2
console.log(Math.ceil(2))   // Output: 2

floor

Math.ceil()相反

console.log(Math.floor(1.2)) // Output: 1
console.log(Math.floor(1.8)) // Output: 1
console.log(Math.floor(2.0)) // Output: 2
console.log(Math.floor(2))   // Output: 2

...

READ ALL

MySQL中TEXT与BLOB类型的区别

在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程序的博主不知道该为自己的博客正文字段选择TEXT还是BLOB类型。

下面给出几点区别

主要差别

TEXT与BLOB的主要差别就是

  • BLOB 保存二进制数据
  • TEXT 保存字符数据

目前几乎所有博客内容里的图片都不是以二进制存储在数据库的,而是把图片上传到服务器然后正文里使用<img>标签引用,这样的博客就可以使用TEXT类型。而BLOB就可以把图片换算成二进制保存到数据库中。

类型区别

BLOB有4种类型

  • TINYBLOB
  • BLOB
  • MEDIUMBLOB
  • LONGBLOB

...

READ ALL

个人博客站点最担心的那些事!

由于开源框架,博客系统的铺天盖地,白菜价的域名与空间让许多个人建立了博客站点,在z-blog、WordPress这种几乎只要靠鼠标点点立刻就诞生一个个人博客站点。那么个人博客在建站的过程中最担心什么呢?

域名代理商联系不上

许多第一次注册域名的博主差不多都喜欢在淘宝上直接找一家代理注册,我当时也是一样在淘宝上找代理注册了域名。通过代理最容易引起的问题就是代理商联系不上了,联系不上你就不能续费,甚至管理密码忘记了更不能登录面板做解析。当然,也有一些代理做的不错,甚至会主动提醒你续费。但是大部分域名代理商都是几个人或者一个人在管理,很容易就突然人间蒸发了。因此建议大家直接到新网或者万网注册域名,这样保证点。

...

READ ALL

JavaScript字符串拼接concat

在JavaScript中字符串拼接非常简单

let str1 = 'Hello'
let str2 = 'World'

let str3 = str1 + ' ' + str2

console.log(str3) // Output: Hello World

当然,字符串对象也提供了一个拼接API concat,就类似数组对象一样

语法

string.concat(string1, string2, ..., stringX)

let str1 = 'Hello'
let str2 = 'World'

let str3 = str1.concat(' ', str2)

console.log(str1) // Output: Hello
console.log(str2) // Output: World
console.log(str3) // Output: Hello World

...

READ ALL

MySQL中datetime类型与timestamp类型的区别

在平常中,我们总会有这样的需求,在插入或者修改时插入当前系统时间,有些童鞋的做法是把时间字段类型设置为datetime,然后在PHP端用date函数拼接SQL语句,或者使用NOW()函数。其实在MySQL中,datetime只是表示数据类型为YYYY-mm-dd HH:ii:ss格式,而timestamp类型则表示当前系统时间,无需写值。

我们创建一个b表,字段t1类型为datetime,t2类型为timestamp

mysql> create table b(t1 datetime,t2 timestamp);                   
Query OK, 0 rows affected (0.01 sec)
mysql> desc b;
+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type      | Null | Key | Default           | Extra                       |
+-------+-----------+------+-----+-------------------+-----------------------------+
| t1    | datetime  | YES  |     | NULL              |                             |
| t2    | timestamp | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+-----------+------+-----+-------------------+-----------------------------+
2 rows in set (0.00 sec)

...

READ ALL

JavaScript数组拼接concat

在JavaScript要拼接两个数组可以使用concat API

语法

array1.concat(array2, array3, ..., arrayX)

参数可以接收多个数组,不限制

let arr1 = ['Hello']
let arr2 = ['World']

let arr3 = arr1.concat(arr2)

console.log(arr1) // Output: ["Hello"]
console.log(arr2) // Output: ["World"]
console.log(arr3) // Output: ["Hello", "World"]

...

READ ALL

一步步教你使用SyntaxHighlighter高亮插件

SyntaxHighlighter是一款众多网站首选使用的高亮插件,网上有许多教程由于是讲到了跟编辑器的搭配使得原本简单易用的插件变成非常复杂,其实这款插件使用方法非常的简单,只需跟着教程一步步即可实现高亮。

下载插件

下载地址

https://github.com/syntaxhighlighter/syntaxhighlighter

解压提取高亮JS文件与CSS样式文件

选中scripts目录与styles目录

full

复制到桌面syntax文件夹中

...

READ ALL

JavaScript获取自定义范围随机数

在JavaScript中,并没有直接提供自定义范围内获取随机数的方法,但通过Math.random()函数的利用稍加处理即可实现此功能。

在JavaScript中Math.random()方法返回介于0至1之间的一个随机小数,不包括0和1。显然,这个功能不能直接满足我们的需求,我们需要的是从n到m之间的随机整数。

我们先来看第一个需求的实现:获取1到10之间的随机数

/**
 * JS获取1到10随机数
 * Nicholas Lee www.qttc.net
 */
 
function rd(){
  return Math.floor(Math.random()*10+1);
}
 
console.log(rd()); // Output: 8

...

READ ALL