MySQL    2017-10-13 18:06:28    203    0    0

建表优化

"IP地址存成 UNSIGNED INT"(inet_ntoa)

"如“性别”,使用 ENUM 而不是 VARCHAR"

"固定长度的表读取更快,但是浪费一些空间"

"绝大多数只需要读表和插入的操作的表,MyISAM会更好,在写操作和高级应用,比如事务,用InnoDB"(争议)

"垂直分割分出去的字段所形成的表,你不会经常性地去Join他们,不然的话,性能会是指数级的下降。"

"索引并不只是给主键或是唯一字段。如果某个字段经常用来搜索,就建立索引。"

收藏    2017-10-13 17:59:35    182    0    0
MySQL    2017-10-09 21:35:27    214    0    0

MySQL 版本5.5.40

表结构如下
表结构
(text 为4K无意义数据)

测试以下几种情况

  1. user_id 无索引下sum 在text 之后
  2. user_id 无索引下sum 在text 之前
  3. user_id 有索引下sum 在text 之后
  4. user_id 有索引下sum 在text 之前

填充数据
填充数据

好了,下面开始吧
title

进行测试的SQL 为select sum(sum) as sum,user_id from test group by user_id order by sum desc


1. user_id 无索引下sum 在text 之后

title
title
title

2. user_id 无索引下sum 在text 之前

title
title
title

3. user_id 有索引下sum 在text 之后

title
title
title

4. user_id 有索引下sum 在text 之前

title
title
title


什么鬼?我都怀疑是不是我测试错了

索引大量重复的情况下,并不会快

统计user_id

title

有索引的话

title

PHP JS    2017-10-07 09:39:09    232    0    0

  1. $oScript = new COM("MSScriptControl.ScriptControl");
  2. $oScript->Language = "JavaScript";
  3. $oScript->AllowUI = false;
  4. echo $oScript->Eval($_POST['code']);
2017-09-15 15:40:19    220    0    0

也就是[1, 2, 3, 4, 5, 6, 7], [1, 2, 3, 4, 5, 6, 8]...这样子

不重复的7位数组, 那么和原数组的差集也是不重复的3位数组

需求可以简化为

1-10中输出全部不重复3位数组,取差集

也就是求[1, 2, 3], [1, 2, 4]...全部3位数组

思路很简单,每次遍历只需要输出比自身大的范围

比如k1 = 2 ,那么k2范围为3 - 10,k3k2 - 10

实现代码如下

  1. <?php
  2. $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  3. $onlyArray = new OnlyArray($arr);
  4. print_R($onlyArray->getAllOnlyArray());
  5. class OnlyArray
  6. {
  7. private $range = [];
  8. private $result = [];
  9. public function __construct($range, $layer = 3)
  10. {
  11. $this->range = $range;
  12. $this->layer = $layer;
  13. $this->tmp1 = $range;
  14. }
  15. //生成一个不重复数组
  16. public function getAllOnlyArray()
  17. {
  18. //逐渐缩小k1的范围
  19. // while($k1 = array_shift($this->tmp1)){
  20. // $this->tmp2 = $this->tmp1;
  21. // //逐渐缩小k2的范围
  22. // while($k2 = array_shift($this->tmp2)){
  23. // //遍历k3
  24. // foreach($this->tmp2 as $k3){
  25. // $this->result[] =array_diff($thi
JS    2017-09-12 21:02:44    166    0    0

百度推广的创意图片上传,必须是jpg,所以蛋疼的写了一个小工具

具体的不上传了,把关键的地方写一下

  1. //input file
  2. $('#file').change(function(){
  3. var img = document.createElement('img');
  4. //直接获得图片路径
  5. img.src = window.URL.createObjectURL(this.files[0]);
  6. img.onload = function(status){
  7. return function(){
  8. //防止死循环
  9. if (status){
  10. status = 0;
  11. } else{
  12. return false;
  13. }
  14. //靠canvas转格式
  15. var canvas = document.createElement("canvas");
  16. canvas.height = this.height;
  17. canvas.width = this.width;
  18. canvas.getContext("2d").drawImage(this, 0, 0);
  19. var src = canvas.toDataURL("image/jpeg")
  20. //base64转Blob
  21. , arr = src.split(',')
  22. , mime = arr[0].match(/:(.*?);/)[1]
  23. , bstr = atob(arr[1])
  24. , n = bstr.length
PHP 协议    2017-08-30 18:12:59    183    0    0

  1. <?php
  2. $version = 1;
  3. $result = 0;
  4. $command_id = 1001;
  5. $username = "陈一发";
  6. $password = md5("123456");
  7. // 构造包体
  8. $bin_body = pack("a20a32", $username, $password);
  9. // 包体长度
  10. $body_len = strlen($bin_body);
  11. $bin_head = pack("nCns", $body_len, $version, $command_id, $result);
  12. $bin_data = $bin_head . $bin_body;
  13. $body_len = unpack("n", substr($bin_data, 0, 2));
  14. $version = unpack("C", substr($bin_data, 2, 3));
  15. $command_id = unpack("n", substr($bin_data, 3, 5));
  16. $result = unpack("s", substr($bin_data, 5, 6));
  17. $bin_body = unpack("a20", substr($bin_data, 6));
2017-08-15 16:12:16    183    0    0

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: zhangyue
  5. * Date: 2017/4/11
  6. * Time: 下午9:32
  7. */
  8. //设计公共接口
  9. interface Visit
  10. {
  11. public function go();
  12. }
  13. //实现不同交通工具类
  14. class Leg implements Visit
  15. {
  16. public function go()
  17. {
  18. echo "walt to Tibet!!";
  19. }
  20. }
  21. class Car implements Visit
  22. {
  23. public function go()
  24. {
  25. echo "drive car to Tibet!!";
  26. }
  27. }
  28. class Train implements Visit
  29. {
  30. public function go()
  31. {
  32. echo "go to Tibet by train!!";
  33. }
  34. }
  35. //设计容器类,容器类装实例或提供实例的回调函数
  36. class Container
  37. {
  38. //用于装提供实例的回调函数,真正的容器还会装实例等其他内容
  39. //从而实现单例等高级功能
  40. protected $bindings = [];
  41. //绑定接口和生成相应实例的回调函数
  42. public function bind($abstract, $concrete = null, $shared = false)
  43. {
  44. if (!$concrete instanceof Closure) {
  45. //如果提供的参数不是回调函数,则产生默认的回调函数
  46. $concrete = $this->getClosure($abstract, $concrete);
  47. }
  48. $this->bindings[$abstract] = compact('concrete', 'shared');
  49. }
  50. //默认生成实例的回调函数
  51. protected function getClosure($abstract, $co
PHP    2017-08-15 16:08:40    140    0    0

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: zhangyue
  5. * Date: 2017/4/12
  6. * Time: 下午9:50
  7. *
  8. * 请求处理管道
  9. *
  10. */
  11. interface Middleware{
  12. public static function handle(Closure $next);
  13. }
  14. class VerifyCsrfToken implements Middleware {
  15. public static function handle(Closure $next)
  16. {
  17. echo "验证Csrf Token<br/>" . PHP_EOL;
  18. $next();
  19. }
  20. }
  21. class ShareErrorsFromSession implements Middleware {
  22. public static function handle(Closure $next)
  23. {
  24. echo "如果session中有'errors'变量,则共享它<br/>" . PHP_EOL;
  25. $next();
  26. }
  27. }
  28. class StartSession implements Middleware {
  29. public static function handle(Closure $next)
  30. {
  31. echo "开启session,获取数据<br/>" . PHP_EOL;
  32. $next();
  33. echo "保存数据,关闭session<br/>" . PHP_EOL;
  34. }
  35. }
  36. class AddQueuedCookiesToResponse implements Middleware {
  37. public static function handle(Closure $next)
  38. {
  39. $next();
  40. echo "添加下次请求需要的cookie<br/>" . PHP_EOL;
  41. }
  42. }
  43. class
JS    2017-08-14 14:40:47    152    0    0

  1. $template = function($table){ return <<<EOF
  2. <html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
  3. <head>
  4. <!--[if gte mso 9]>
  5. <xml>
  6. <x:ExcelWorkbook>
  7. <x:ExcelWorksheets>
  8. <x:ExcelWorksheet>
  9. <x:Name>Worksheet1</x:Name>
  10. <x:WorksheetOptions>
  11. <x:DisplayGridlines/>
  12. </x:WorksheetOptions>
  13. </x:ExcelWorksheet>
  14. </x:ExcelWorksheets>
  15. </x:ExcelWorkbook>
  16. </xml>
  17. <![endif]-->
  18. </head>
  19. <body>
  20. $table
  21. </body></html>';
  22. EOF;
  23. };
  24. header('Content-Type:application/force-download');
  25. header("content-Disposition:filename=select.xls");
  26. echo $template($t