php数据查询之基础查询
---恢复内容开始---
数据查询语言(Data Query Language)
基本查询
- 语法形式:
select [all | distinct ] 字段或者表达式列表 [from子句] [where子句] [group by 子句] [having 子句] [order by 子句] [limit 子句]
- 解释说明
- select 从“数据源”中,找出(取出)数据。
- “数据源通常指“表”,也可以是“直接数据”或者函数返回结果。示例:
mysql> select 5, 8*9, now();
+---+-----+---------------------+
| 5 | 8*9 | now() |
+---+-----+---------------------+
| 5 | 72 | 2018-10-24 15:36:07 |
+---+-----+---------------------+
1 row in set (0.00 sec)
- “数据源通常指“表”,也可以是“直接数据”或者函数返回结果。示例:
- select 从“数据源”中,找出(取出)数据。
- 也可以加字段(别)名:
mysql> select 5 as num, 8*9 as multi, now() as time;
+-----+-------+---------------------+
| num | multi | time |
+-----+-------+---------------------+
| 5 | 72 | 2018-10-24 15:40:35 |
+-----+-------+---------------------+
1 row in set (0.00 sec)
- 也可以加字段(别)名:
- 不能使用“表”的字段而没有from 子句
mysql> select id;
ERROR 1054 (42S22): Unknown column 'id' in 'field list'
- 不能使用“表”的字段而没有from 子句
- [all | distinct]
- 用于设定所select的数据是否允许出现重复行
- all:允许出现
- distinct:不允许出现---就是所谓的“消除重复行”
- from 子句
- 指定数据的来源,其实就是“表”。可以是单个“表”,也可以是多个“表”,用逗号隔开。
mysql> select id, title, NO, context from sqltest, set_test;
+----+--------+----+---------+
| id | title | NO | context |
+----+--------+----+---------+
| 1 | 第一个 | 1 | aa |
| 1 | 第一个 | 2 | aa,cc |
| 2 | 第二个 | 1 | aa |
| 2 | 第二个 | 2 | aa,cc |
| 3 | 第三个 | 1 | aa |
| 3 | 第三个 | 2 | aa,cc |
+----+--------+----+---------+
6 rows in set (0.00 sec) mysql> select * from sqltest;
+----+--------+----------------------------------------------------------+
| id | title | content |
+----+--------+----------------------------------------------------------+
| 1 | 第一个 | 这是ID=1的数据
1111111111111111111111111111111111111111 |
| 2 | 第二个 | 这是ID=2的数据
2222222222222222222222222222222222222222 |
| 3 | 第三个 | 这是ID=3的数据
3333333333333333333333333333333333333333 |
+----+--------+----------------------------------------------------------+
3 rows in set (0.00 sec) mysql> select * from set_test;
+----+---------+
| NO | context |
+----+---------+
| 1 | aa |
| 2 | aa,cc |
+----+---------+
2 rows in set (0.00 sec)
- 指定数据的来源,其实就是“表”。可以是单个“表”,也可以是多个“表”,用逗号隔开。
- where 子句
- 相当于php或者js中的if语句-条件判断语句,最终结果为布尔值(true/false)。
- 常用运算符
- 算术运算符:+ - * / %
- 比较运算符:
- > >= < <= =(等于) <>(不等于)-标准的sql语言
- ==(等于) !=(不等于)--mysql扩展
- 逻辑运算符:and(与) or(或) no(非)
mysql> select * from production where pro_id<5 and price-300<3000;
+--------+-----------------------------------+------+-------+-------+--------+
| pro_id | name | type | price | brand | origin |
+--------+-----------------------------------+------+-------+-------+--------+
| 1 | 康佳(KONKA)42英寸全高清液晶电视 | 1 | 1999 | 康佳 | 深圳 |
| 2 | 索尼(SONY)4G手机(黑色) | 2 | 3238 | 索尼 | 深圳 |
+--------+-----------------------------------+------+-------+-------+--------+
2 rows in set (0.00 sec) mysql> select * from production;
+--------+-----------------------------------+------+-------+-------+--------+
| pro_id | name | type | price | brand | origin |
+--------+-----------------------------------+------+-------+-------+--------+
| 1 | 康佳(KONKA)42英寸全高清液晶电视 | 1 | 1999 | 康佳 | 深圳 |
| 2 | 索尼(SONY)4G手机(黑色) | 2 | 3238 | 索尼 | 深圳 |
| 3 | 海信(Hisense)55英寸智能电视 | 1 | 4199 | 海信 | 青岛 |
| 4 | 联想(Lenovo)14.0英寸笔记本电脑 | 3 | 5499 | 联想 | 北京 |
| 5 | 索尼(SONY)13.3英寸触控超极本 | 3 | 11499 | 索尼 | 天津 |
| 6 | 索尼(SONY)60英寸全高清液晶电视 | 1 | 6999 | 索尼 | 北京 |
| 7 | 联想(Lenovo)12.0英寸笔记本电脑 | 3 | 2999 | 联想 | 北京 |
| 8 | 联想 双卡双待3G手机 | 2 | 988 | 联想 | 北京 |
| 9 | 惠普(HP)黑白激光打印机 | 3 | 1169 | 惠普 | 天津 |
+--------+-----------------------------------+------+-------+-------+--------+
9 rows in set (0.00 sec)
- 布尔值和空值判断
- 布尔值(true/false):范围,整数。实际就是tinyint(1)的数字,0为true,非零为false
- xx is true
- xx is false
- 空值(null)
- xx is null
- xx is not null
- 布尔值(true/false):范围,整数。实际就是tinyint(1)的数字,0为true,非零为false
- 常用语法
- between 语法
- xx between 值1 and 值2
- xx 值介于值1和值2之间(包含值1和值2),相当于 值1<=xx and xx <=值2
- in 语法
- xx in(值1 , 值2, ...)
- 字段值xx等于其中任何一个都成立,相当于 xx=值1 or xx=值2 ...
- like 语法(模糊查找)
- 形式: like '要查找的字符'---范围为字符型字段
- 说明
- like语法用于多字符类型的字段进行字符匹配
- %--代表任意多个任意字符
- '_'代表单个的任意字符
要查找的字符中有2个特殊的字符%、_
- 要使用字符'%'和'_',需要使用转义字符'\'
- between 语法
- group by 分组子句
mysql> select * from production;
+--------+-----------------------------------+------+-------+-------+--------+
| pro_id | name | type | price | brand | origin |
+--------+-----------------------------------+------+-------+-------+--------+
| 1 | 康佳(KONKA)42英寸全高清液晶电视 | 1 | 1999 | 康佳 | 深圳 |
| 2 | 索尼(SONY)4G手机(黑色) | 2 | 3238 | 索尼 | 深圳 |
| 3 | 海信(Hisense)55英寸智能电视 | 1 | 4199 | 海信 | 青岛 |
| 4 | 联想(Lenovo)14.0英寸笔记本电脑 | 3 | 5499 | 联想 | 北京 |
| 5 | 索尼(SONY)13.3英寸触控超极本 | 3 | 11499 | 索尼 | 天津 |
| 6 | 索尼(SONY)60英寸全高清液晶电视 | 1 | 6999 | 索尼 | 北京 |
| 7 | 联想(Lenovo)12.0英寸笔记本电脑 | 3 | 2999 | 联想 | 北京 |
| 8 | 联想 双卡双待3G手机 | 2 | 988 | 联想 | 北京 |
| 9 | 惠普(HP)黑白激光打印机 | 3 | 1169 | 惠普 | 天津 |
+--------+-----------------------------------+------+-------+-------+--------+
9 rows in set (0.01 sec)mysql> select * from production group by brand;
+--------+-----------------------------------+------+-------+-------+--------+
| pro_id | name | type | price | brand | origin |
+--------+-----------------------------------+------+-------+-------+--------+
| 1 | 康佳(KONKA)42英寸全高清液晶电视 | 1 | 1999 | 康佳 | 深圳 |
| 9 | 惠普(HP)黑白激光打印机 | 3 | 1169 | 惠普 | 天津 |
| 3 | 海信(Hisense)55英寸智能电视 | 1 | 4199 | 海信 | 青岛 |
| 2 | 索尼(SONY)4G手机(黑色) | 2 | 3238 | 索尼 | 深圳 |
| 4 | 联想(Lenovo)14.0英寸笔记本电脑 | 3 | 5499 | 联想 | 北京 |
+--------+-----------------------------------+------+-------+-------+--------+
5 rows in set (0.00 sec)- 形式:group by 字段1 排序方式1, 字段2 排序方式 2 ...
- 通常只进行一个字段的分组
- 含义
- 分组?以某个字段的值为“依据”,分到不同的“类别”中。
- 结果
- 分组结果只能是“组”---没有数据本身的个性
- 分组结果很“可能”死去很多特性,比如:序号,名字等等
- 实际上,分组结果中通常只剩下以“组”为单位的整体信息,如:分组依据本身,成员个数,总和,最大值,最小值,平均值
- 上述结果反映在select 语句中为“字段或者表达式部分”
mysql> select brand, count(*) as counts, sum(price) as amount, avg(price) as avg
Price, max(price) as maxPrice from production group by brand;
+-------+--------+--------+-------------------+----------+
| brand | counts | amount | avgPrice | maxPrice |
+-------+--------+--------+-------------------+----------+
| 康佳 | 1 | 1999 | 1999 | 1999 |
| 惠普 | 1 | 1169 | 1169 | 1169 |
| 海信 | 1 | 4199 | 4199 | 4199 |
| 索尼 | 3 | 21736 | 7245.333333333333 | 11499 |
| 联想 | 3 | 9486 | 3162 | 5499 |
+-------+--------+--------+-------------------+----------+
5 rows in set (0.00 sec) - 在分组查询中,基本上依赖于一下几个函数(聚合函数,统计函数)
- sum(字段x)--分组后字段x的总和
- max(字段x)--分组后字段x中的最大值
- min(字段x)--分组后字段x中的最小值
- avg(字段x)--分组后字段x中的平均值
- count(*)--分组内成员数
- 默认分组查询结果正序显示,想要倒序显示,需在分组依据后加关键字“desc”
mysql> select brand, count(*) as counts, sum(price) as amount, avg(price) as avg
Price, max(price) as maxPrice from production group by brand desc;
+-------+--------+--------+-------------------+----------+
| brand | counts | amount | avgPrice | maxPrice |
+-------+--------+--------+-------------------+----------+
| 联想 | 3 | 9486 | 3162 | 5499 |
| 索尼 | 3 | 21736 | 7245.333333333333 | 11499 |
| 海信 | 1 | 4199 | 4199 | 4199 |
| 惠普 | 1 | 1169 | 1169 | 1169 |
| 康佳 | 1 | 1999 | 1999 | 1999 |
+-------+--------+--------+-------------------+----------+
5 rows in set (0.00 sec) 如果是2个字段或者以上的分组,其实是在前一分组组内,在依据后一分组依据进行分组。
mysql> select brand, origin, count(*) as counts from production group by brand,
origin;
+-------+--------+--------+
| brand | origin | counts |
+-------+--------+--------+
| 康佳 | 深圳 | 1 |
| 惠普 | 天津 | 1 |
| 海信 | 青岛 | 1 |
| 索尼 | 北京 | 1 |
| 索尼 | 天津 | 1 |
| 索尼 | 深圳 | 1 |
| 联想 | 北京 | 3 |
+-------+--------+--------+
7 rows in set (0.00 sec)
- 形式:group by 字段1 排序方式1, 字段2 排序方式 2 ...
- having 子句
- having 子句和where 子句概念相同,不同之处在于:
- where 子句是以字段为“判断条件”
- having 子句是以group by 后“组”数据为“判断条件”
- 既having 后 不能跟字段,如:having priice >3000.但是可以跟“组”数据或者“组”数据别名,包含分组依据本身,如:having avg(price) > 3000。
- having 子句和where 子句概念相同,不同之处在于:
- oder by 子句
- 形式:
- oder by 字段1 排序方式1, 字段2 排序方式2, ...
- 说明:
- 是对前面数据(where 子句,from 子句, group by 子句, having 子句等)按照某个字段进行大小排序,有
- 2中排序方式:
- 正序:ASC(默认值)
- 倒叙:DESC
- 多种方式排序指在前一排序的相同字段内按照后一字段大小在进行排序
mysql> select name,origin,price from production order by origin,price desc;
+-----------------------------------+--------+-------+
| name | origin | price |
+-----------------------------------+--------+-------+
| 索尼(SONY)60英寸全高清液晶电视 | 北京 | 6999 |
| 联想(Lenovo)14.0英寸笔记本电脑 | 北京 | 5499 |
| 联想(Lenovo)12.0英寸笔记本电脑 | 北京 | 2999 |
| 联想 双卡双待3G手机 | 北京 | 988 |
| 索尼(SONY)13.3英寸触控超极本 | 天津 | 11499 |
| 惠普(HP)黑白激光打印机 | 天津 | 1169 |
| 索尼(SONY)4G手机(黑色) | 深圳 | 3238 |
| 康佳(KONKA)42英寸全高清液晶电视 | 深圳 | 1999 |
| 海信(Hisense)55英寸智能电视 | 青岛 | 4199 |
+-----------------------------------+--------+-------+
9 rows in set (0.00 sec) mysql> select name,origin,price from production order by origin,price;
+-----------------------------------+--------+-------+
| name | origin | price |
+-----------------------------------+--------+-------+
| 联想 双卡双待3G手机 | 北京 | 988 |
| 联想(Lenovo)12.0英寸笔记本电脑 | 北京 | 2999 |
| 联想(Lenovo)14.0英寸笔记本电脑 | 北京 | 5499 |
| 索尼(SONY)60英寸全高清液晶电视 | 北京 | 6999 |
| 惠普(HP)黑白激光打印机 | 天津 | 1169 |
| 索尼(SONY)13.3英寸触控超极本 | 天津 | 11499 |
| 康佳(KONKA)42英寸全高清液晶电视 | 深圳 | 1999 |
| 索尼(SONY)4G手机(黑色) | 深圳 | 3238 |
| 海信(Hisense)55英寸智能电视 | 青岛 | 4199 |
+-----------------------------------+--------+-------+
9 rows in set (0.00 sec)
- 形式:
- limit 子句
- 形式:
- limit [起始行号]start, [要取出的行数]rows;
- 说明:
- 前面所取得的数据,对之取“局部若干数据”。
- 起始行号:start 第一行为0,默认值,省略则取默认值
- 要取出的行数:如果数据记录不足,则取出当前数据行
- 此子句很常用。比如:网页中很常见的需求---分页
- 形式:
- 实用示例:
- delete-- 删除指定行
- limit-----分页显示
- php代码:
<?php
/*定义表
create table user_list(
id int(10) not null primary key auto_increment,
user_name varchar(30) not null,
user_pass char(32) not null,
user_age tinyint(1) unsigned,
user_edu enum('小学', '初中', '高中' , '大专', '本科', '本科以上'),
use_interest set('篮球', '足球', '跑步', '读书', '画画', '旅游'),
user_nativePlac e enum('华北', '华中', '华南', '东北', '西北', '华东')
);*/
$conn = mysqli_connect("localhost", "root", "root", "test1");
if (!$conn)
{
die("连接错误: " . mysqli_connect_error());
} if($_POST){ $user_name = $_POST['user_name'];
$user_pass = $_POST['user_pass'];
$user_age = $_POST['user_age'];
$user_edu = $_POST['user_edu'];//注意user_edu数组
$user_interest = $_POST['user_interest'];
$user_nativePlace = $_POST['user_nativePlace']; if(empty($user_name)||empty($user_pass)){
$errMsg = "发生错误:用户名/密码不能为空!";
}else {
//对爱好/$user_interest[]做求和出来
$user_interest_sum = array_sum($user_interest);
$sql_add = "insert into user_list(user_name, user_pass, user_age, user_edu, user_interest, user_nativePlace, reg_time)values";
$sql_add .= "('$user_name', '$user_pass', $user_age, $user_edu, $user_interest_sum, $user_nativePlace, now());";
echo $sql_add."<br />";
$result_add = mysqli_query($conn, $sql_add);
if($result_add){
$errMsg = "插入成功<hr />";
}else {
$errMsg = "插入失败<hr />";
}
}
}else { if(($_GET)){
if(!empty($_GET['ID'])){
$id = $_GET['ID'];
$sql_delrec = "select * from user_list where id = $id";
$sql_del = "delete from user_list where id = $id";
echo "<hr />";
$result_delrec = mysqli_query($conn, $sql_delrec);
echo "记录:";
$out_del = mysqli_fetch_array($result_delrec);
echo $out_del['id']." ".$out_del['user_name']." ".$out_del['user_pass']." ".$out_del['user_age']." ".$out_del['user_edu']." ".$out_del['user_interest']." ".$out_del['user_nativePlace']." ".$out_del['reg_time']."<br />"; $result_del = mysqli_query($conn, $sql_del);
if($result_del){
echo "删除成功<hr />";
}else{
echo "删除失败<hr />";
}
}
if(!empty($_GET['page'])){
$page = $_GET['page'];
}else {
$page = 0;
} }
else { }
}
?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf8" />
<title>Apache、PHP、MySQL可运行测试</title>
<meta name="keywords" content="关键字列表" />
<meta name="description" content="网页描述" />
<link rel="stylesheet" type="text/css" href="" />
<style type="text/css">
.special {
color: red;
} span {
font: 700 13px/13px "microsoft yahei";
margin-right: 5px;
}
</style>
<script type="text/javascript"></script>
</head>
<body>
<div>
<?php
if(!empty($errMsg)){
echo $errMsg;
}
?>
</div>
<form action="" method="post">
<span>用户名:</span><input type="text" name="user_name" /><br />
<span>密码 :</span> <input type="password" name="user_pass" /><br />
<span>年龄 :</span> <input type="text" name="user_age" /><br />
<span>学历 :</span> <select name="user_edu" id="">
<option value="1">小学</option>
<option value="2">初中</option>
<option value="3">高中</option>
<option value="4">大专</option>
<option value="5">本科</option>
<option value="6">本科以上</option>
</select><br />
<span>爱好 :</span>
<input type="checkbox" name="user_interest[]" value="1="/>篮球
<input type="checkbox" name="user_interest[]" value="2" />足球
<input type="checkbox" name="user_interest[]" value="4" />跑步
<input type="checkbox" name="user_interest[]" value="8" />读书
<input type="checkbox" name="user_interest[]" value="16" />画画
<input type="checkbox" name="user_interest[]" value="32" />旅游<br />
<span>籍贯 :</span> <input type="radio" name="user_nativePlace" value="1" />华北
<input type="radio" name="user_nativePlace" value="2" />华中
<input type="radio" name="user_nativePlace" value="3" />华南
<input type="radio" name="user_nativePlace" value="4" />华西
<input type="radio" name="user_nativePlace" value="5" />东北
<input type="radio" name="user_nativePlace" value="6" />西北<br />
<input type="submit" value="提交" /><br />
</form> <?php echo "<hr />";
$pageRecords = 3; $start = $page*$pageRecords;
$sql_dis ="select * from user_list limit $start,$pageRecords";
$result_dis = mysqli_query($conn ,$sql_dis);
$filename = $_SERVER['SCRIPT_NAME']; echo "<table border = 1 >";
echo "<tr>";
echo "<th>"."id"."</th>";
echo "<th>"."user_name"."</th>";
echo "<th>"."user_pass"."</th>";
echo "<th>"."user_age"."</th>";
echo "<th>"."user_edu"."</th>";
echo "<th>"."user_interest"."</th>";
echo "<th>"."user_nativePlace"."</th>";
echo "<th>"."reg_time"."</th>";
echo "<th>"."action"."</th>";
echo "</tr>"; while ($res = mysqli_fetch_array($result_dis)) {
echo "<tr>";
echo "<td>".$res['id']."</td>";
echo "<td>".$res['user_name']."</td>";
echo "<td>".$res['user_pass']."</td>";
echo "<td style='color:red;'>".$res['user_age']."</td>";
echo "<td>".$res['user_edu']."</td>";
echo "<td>".$res['user_interest']."</td>";
echo "<td>".$res['user_nativePlace']."</td>";
echo "<td>".$res['reg_time']."</td>";
echo "<td>";
echo "[<a href='$filename?ID={$res['id']}'>删除</a>]";
echo "</td>";
echo "</tr>";
}
echo "</table><br />"; for($i = 0; $i <=10; $i++){
echo "<a href='$filename?page=$i'>".($i+1)."</a> ";
}
echo "<br />";
?>
</body>
</html> - 网页效果:
- 第一页
- 第二页
- having 子句
连接查询
子查询
联合查询
---恢复内容结束---
php数据查询之基础查询的更多相关文章
- SQL语句(一)基础查询与过滤数据
目录 一.数据库测试表 二.基础查询 1. 获得需要的记录的特定字段 2. 查询常量值 3. 查询表达式 4. 查询函数 5. 起别名 6. 去重 7. CONCAT函数的简单使用 三.过滤数据 大纲 ...
- MYSQL基础操作之数据约束与关联查询
一.MYSQL约束 1.默认值约束,当字段没有插入值的时候,mysql自动给该字段分配默认值. 默认值的字段允许为空. 对默认值字段也可以插入null. CREATE TABLE STUDENT( I ...
- mysql常用基础操作语法(四)--对数据的简单无条件查询及库和表查询【命令行模式】
1.mysql简单的查询:select 字段1,字段2... from tablename; 如果字段那里写一个*,代表查询所有的字段,等同于指定出所有的字段名,因此如果要查询所有字段的数据,一般都 ...
- 学习笔记:oracle学习三:SQL语言基础之检索数据:简单查询、筛选查询
目录 1. 检索数据 1.1 简单查询 1.1.1 检索所有列 1.1.2 检索指定的列 1.1.3 查询日期列 1.1.4 带有表达式的select语句 1.1.5 为列指定别名 1.1.6 显示不 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(81)-数据筛选(万能查询)
系列目录 前言 听标题的名字似乎是一个非常牛X复杂的功能,但是实际上它确实是非常复杂的,我们本节将演示如何实现对数据,进行组合查询(数据筛选) 我们都知道Excel中是如何筛选数据的.就像下面一样 他 ...
- 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表
前言 接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL ...
- HQL基础查询语句
HQL基础查询语句 1.使用hql语句检索出Student表中的所有列 //核心代码 @Test public void oneTest() { Query query=session.createQ ...
- 基于EF的数据外键关联查询
现在很多ORM不自带外键关联的实体查询,比如我查询用户,用时将关联的角色信息查询出来,那么就要进行2次查询,很麻烦.而我现在要做的就是基于EF的外键关联查询.很方便的. 首先,创建基础查询的BaseS ...
- Oracle笔记(1) 简单查询、限定查询、数据的排序
Oracle笔记(四) 简单查询.限定查询.数据的排序 一.简单查询 SQL(Structured Query Language) 结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及 ...
随机推荐
- log日志中不打印异常栈的具体信息
问题与分析 最近在查项目的log时发现报了大量的NPE(NullPointerException),诡异的是只log了Exception的类名,却没有具体的堆栈信息,以致于无法对该NPE异常进行准确定 ...
- js字符串与正则匹配
这里就说一下具体的使用方法,不做过多的解释. 字符串匹配正则的方法:str.方法(reg) 1.str.search() 参数是正则,将会从开始查找字符串中与正则匹配的字符,并返回该字符的第一次出现的 ...
- Metasploits之Adobe阅读器漏洞
实验环境:Kali 2.0+Windows XP+Adobe Reader 9.3.0 类别:缓冲区溢出 描述:这个漏洞针对Adobe阅读器9.3.4之前的版本,一个名为SING表对象中一个名为uni ...
- 利用Common-Fileupload上传文件图片
一,介绍 common-fileupload是appache的开源组件,基于该组件可以轻松实现文件上传的功能,strust框架的文件上传功能也是基于该组件. 二,使用 1,导入两个jar包:commo ...
- 打包google浏览器插件到本地
依次打开‘更多工具’--->'扩展程序',或者在google浏览器输入chrome://extensions/网址就可以打开已安装插件页面,在顶部选中‘开发者模式’后就会出现每个插件的ID,这个 ...
- web移动端滑动插件
1.slip只有6.3k可以说是非常小了,主要是通过css3里面的transform来改变的位置,控制的是父容器,使用也非常简单,具体信息移步slip.js.一个简单的demo如下 <!DOCT ...
- R 语言中 data table 的相关,内存高效的 增量式 data frame
面对的是这样一个问题,不断读入一行一行数据,append到data frame上,如果用dataframe, rbind() ,可以发现数据大的时候效率明显变低. 原因是 每次bind 都是一次重新 ...
- JavaScript单元测试框架:Jasmine
摘抄:http://blog.csdn.net/GuoJiangweigege/article/details/52130589 互联网的快速发展,给web开发人员带来了前所未有的挑战.对于前端开发, ...
- prerender-spa-plugin预处理vue项目实践
由于公司想要把商城做由之前的php和前端混合开发改版为前后端分离,所以拿现在手上的vue项目来实践一下 https://github.com/chrisvfritz/prerender-spa-plu ...
- 【转】HashMap,ArrayMap,SparseArray源码分析及性能对比
HashMap,ArrayMap,SparseArray源码分析及性能对比 jjlanbupt 关注 2016.06.03 20:19* 字数 2165 阅读 7967评论 13喜欢 43 Array ...