nermif 发布的文章

由于typeof只能判断5中基本类型:即 “number”,”string”,”undefined”,”boolean”,”object”

对于数组、函数、对象来说并不能详细的检测出类型, 这里使用的是对象的一个原生扩展函数,用来更精确的区分数据类型。
详细的判断类型给出如下:

console.log(Object.prototype.toString.call("jerry"));//[object String]
console.log(Object.prototype.toString.call(12));//[object Number]
console.log(Object.prototype.toString.call(true));//[object Boolean]
console.log(Object.prototype.toString.call(undefined));//[object Undefined]
console.log(Object.prototype.toString.call(null));//[object Null]
console.log(Object.prototype.toString.call({name: "jerry"}));//[object Object]
console.log(Object.prototype.toString.call(function(){}));//[object Function]
console.log(Object.prototype.toString.call([]));//[object Array]
console.log(Object.prototype.toString.call(new Date));//[object Date]
console.log(Object.prototype.toString.call(/\d/));//[object RegExp]
console.log(Object.prototype.toString.call(new Person));//[object Object]

由此可进一步封装成自己需要的方法,需要时调用。

getType: function(j){
    let type = Object.prototype.toString.call(j) , ret;
    switch(type){
        case '[object Function]':
            ret = 'function';
        break;
        case '[object String]':
            ret = 'string';
        break;
        case '[object Number]':
            ret = 'number';
        break;
            case '[object Object]':
        ret = 'object';
            break;
        case '[object Array]':
            ret = 'array';
        break;
        default:
            ret = false;
    }
    return ret;
},

测试类型

let data = ['xx','aa'];
console.log(this.getType(data))
// array

如何获取在单表中把两个字段运算后统计行数据

以往的字段间统计,查询使用sum函数求出两个字段运算的结构,再赋予新的别名作为新列

SELECT SUM(`market_price` - `shop_price`) AS 'price_amount' FROM `tp_goods` GROUP BY `goods_id`;

然后统计单个字段列最大值是这样的

SELECT MAX(`price_amount`) FROM (xxx) b;

由于第一条查询语句查询出来的数据相当是新表;再由得出组合语句

SELECT MAX(`price_amount`) FROM (SELECT SUM(`market_price` - `shop_price`) AS 'price_amount' FROM `tp_goods` GROUP BY `goods_id`) b;
查询花费 0.0006 秒

为查询中内嵌查询
更为高级的写法,在大数据量中查询时间更短,下面执行时间花费 0.0004 秒

SELECT
  `a`.`market_price` - `a`.`shop_price` AS 'discount'
FROM
  `tp_goods` a
    INNER JOIN `tp_goods_zh` AS b ON `a`.`goods_id` = `b`.`goods_id`
    INNER JOIN `tp_auction` AS c ON `a`.`goods_id` = `c`.`goods_id`
WHERE
  `sale_type` = 5 AND `start_time` BETWEEN 1551196800 AND 1551283200
LIMIT 1

ThinkPHP版本多写法为

$goods
   ->alias('a')
   ->join("$lang AS b ON a.goods_id=b.goods_id")
   ->join('__AUCTION__ AS c ON a.goods_id = c.goods_id')
   ->where(array('sale_type' => 5, 'start_time' => array('between', array($today, $todayEnd))))
   ->field('a.market_price - a.shop_price as discount')
   ->find();

FAVE API 接口说明

目前为随机数据集中文、英文格式,此接口仅作学习讨论用!

接口示例 @https://api.fave.top

请求方式:GET
请求域名:api.fave.top
请求地址:https://api.fave.top/api.php
请求参数:

参数名类型参数值
acstringgetImg
typestringjson

ac参数详见:https://api.fave.top/api.php

返回类型:JSON

参数名描述
imagesurl图片链接
copyright图片作者版权声明
savepath备用链接
{
  "status": 1,
  "msg": "获取成功",
  "result": {
    "imagesurl": "https://cn.bing.com/th?id=OHR.AurovilleIndia_ZH-CN4983141175_1920x1080.jpg",
    "copyright": "曙光村,印度 (© Vikram Ramakrishnan/Shutterstock)",
    "savepath": "public/image/AurovilleIndia_ZH-CN4983141175_1920x1080.jpg"
  }
}

API更新

  1. 不在使用mysqli方式链接
  2. 后台数据增加curl方式
  3. Bing Image大部分图片已被302跳转处理,导致之前的图片链接失效,替代方法:请求域名+{savepath}

2019.6`3以来更新

删除不必要的数据和参数
增加皮皮虾视频无水印解析接口,一句话接口
常规安全更新 统计请求详细信息
增加数据统计
部分逻辑重构
使用性能函数

2019.2

调用次数统计,图片302跳转savepath备用方式

2018.10

第一版代码重构

source.list Try to write shell

其实这也是自己懒得的动手修改Ubuntu的源列表,而Ubuntu又不像centos那样可以只用一行就可以更新源文件
这个脚本写来其实也就是把自己原本要输入的命令让脚本自己去执行,解放双手

  1. 备份源
  2. 写源

主要的就是实现这两个操作

下面就是实现的代码的步骤,都有详细的注释


- 阅读剩余部分 -

最先的目的只是做一个谷歌浏览器的自定义的HTML单页和每日美图背景,bai那个一点背景也没有真的油腻
使用方法:浏览器>设置>自定义启动页

演示站点:https://api.fave.top
WindCaveBison_EN-US7790107398_1920x1080.jpg

该站点使用接口获取随机美图,具体接口文档地址:FAVE API接口