1, MySQL生成随机数的函数 RAND()select RAND();
0.10994928061026081
2, 获取上面那个随机数以后,便可以通过 CEILING() 向上取整 或 FLOOR() 向下取整,以获取随机整数。CEILING向上取整:SELECT CEILING(RAND() * 10);
RAND() 函数生成 0 到 1 之间的随机小数,乘以 10 后得到 0 到 10 之间的随机小数,然后使用 CEILING() 函数向上取整为整数,得到 1 到 10 之间的随机整数。FLOOR向下取整:SELECT FLOOR(RAND() * 10) + 1;
RAND(
介绍一个 Koa.js 的 SESSION 的中间件安装npm install koa-session
例子const session = require('koa-session');
const Koa = require('koa');
const app = new Koa();
app.keys = ['some secret hurr'];
const CONFIG = {
key: 'koa:sess', //cookie key (default is koa:sess)
maxAge: 86400000, // cookie的过期时间 maxA
介绍koa-body 是一个可以帮助解析 http 中 body 的部分的中间件,包括 json、表单、文本、文件等。还有一个常用的类似扩展 koa-bodyparser对比其中,koa-bodyparser 不可以直接处理文件,需要上传文件的时候,还需要引用另外一个中间件 koa-multer,项目地址和使用数量如下:koa-body Used by 31.6khttps://github.com/dlau/koa-bodykoa-bodyparser Used by 73.1k https://github.com/koajs/bodyparser代码示例// 初始化
const koa
简介
Node.js 的 JSON Web Token 模块有很多,我选择使用 jsonwebtoken。
项目地址: https://www.npmjs.com/package/jsonwebtoken
安装
npm install jsonwebtoken --save
用法
const jwt = require("jsonwebtoken")
const secret = "some word";
let payload = {};
payload.data = data || {}; //token 中包含的数据
payload.ctime = (new Date(
一,Fetch API 介绍
Fetch API提供了一个 JavaScript 接口,用于访问和操纵HTTP的请求和响应等。提供了一个全局 fetch()方法来跨网络异步获取资源。
fetch()是 XMLHttpRequest 的升级版,用于在 JavaScript 脚本里面发出 HTTP 请求。
二,基本用法:
fetch('https://test.com/api/info')
.then(response = response.json())
.then(json = console.log(json))
.catch(err = console.log('Reque
简介
Nodemailer 是一个简单易用的 Node.JS 邮件发送模块(通过 SMTP,sendmail,或者 Amazon SES),支持 unicode,你可以使用任何你喜欢的字符集。
安装
npm install nodemailer --save
代码示例:
const nodemailer = require('nodemailer');
const config = {
smtp: {
host: "smtp.163.com",
username: "123123123@163.com",
password: "123123123"
}
};
常用的Node.js图片处理模块,有node-image、sharp和jimp。node-image很轻量,但是处理gif有点问题,更新还有点慢了。sharp跨操作系统部署的时,常常还需要编译一下。所以,jimp也是一个很好的选择。介绍:An image processing library for Node written entirely in JavaScript, with zero native dependencies.看这个官方介绍也说了,完全使用Node写的的库,无原生依赖。 支持图片类型bmp、gif、jpeg、png和tiff。安装:npm install --save j
简介:cheerio 是一个HTML解析器,cheerio实现了核心jQuery的子集。常用来解析采集来的HTML数据。安装:npm install cheerio
基础使用:const cheerio = require('cheerio');
var htmlString = ` ul id="fruits"
li class="apple" 苹果 /li
li class="orange" 橙子 /li
li class="pear" 梨 /li
/ul `;
$ = cheerio.load(htmlString);
$('.apple', '#fruits'
ctx.request.ip请求远程地址。 当 app.proxy 设置为 true 时,支持 X-Forwarded-Host。1, 在 Nginx 反向代理配置 proxy_pass 的部分添加这样一行。 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;2, 在 Koa 应用里设置 app.proxy 为 true。X-Forwarded-For 定义X-Forwarded-For (XFF) 在客户端访问服务器的过程中如果需要经过HTTP代理或者负载均衡服务器,可以被用来获取最初发起请求的客户端的IP地址,这个消息首
npm install sharp --unsafe-perm
sharp@0.28.1 install /space/www/cn_restfulapi/node_modules/sharp
(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
sharp: Downloading https://github.com/lovell/sharp-libv
SELECT id,title FROM tb_item GROUP BY id
SELECT id,title,count(*) AS counter FROM tb_item GROUP BY id
counter 实际上是每组的计数统计分组后的数据,应该使用这样的子查询:select count(*) from (select count(*) FROM service GROUP BY name,service) t
实例:var replacements = {tags:"11,12,13"}
var sql = `
SELECT id,tags,title,r.*
一、concat()函数concat(str1, str2,...)
将多个字符串连接成一个字符串。返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。例子:select concat (id, title, counter) as info from tb_user;
select concat (id, ',', title, ',', counter) as info from tb_user;
二、concat_ws()函数concat_ws(separator, str1, str2, ...)
和concat()一样,将多个字符串连接成一个字符
MySQL手册中find_in_set函数的语法:FIND_IN_SET(str,strlist)
str 要查询的字符串strlist 字段名 参数以”,”分隔 如 (1,2,6,8)查询字段(strlist)中包含(str)的结果,返回结果为null或记录假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND_IN_SET() 函数被优化,使用比特计算。 如果str不在strlist 或strlist
1,cheerio 获取一个文本节点,该节点没有html标签,比如想获取html中的“猪突猛进” a href="#"
猪突猛进
span 2021年3月12日 /span
/a
var text = $("#itemInfo").contents().filter(function () {
return this.nodeType === 3;
}).text();
2,Node.js 获取 IP V6 内容出现超时问题的解决方法本地是IP V4,获取IP V6内容的时候,提示:Error: connect ETIMEDOUT 172.67.21
显示所有重复数据分组SELECT
origin_id
FROM
topk88_product
GROUP BY origin_id
HAVING count(*) 1
删除所有重复DELETE FROM topk88_product
WHERE origin_id IN (
SELECT
origin_id
FROM
topk88_product
GROUP BY origin_id
HAVING count(*) 1
);
提示:You can't specify tar
项目需要采集日文网站,该日文网站编码是 EUC-JP。
原采集函数是:
// 下载指定页面 HTML
function getHtml(url) {
var hp = http;
if(url.substr(0,5) == "https"){
hp = https;
}
return new Promise(function (resolve, reject) {
hp.get(url, function (res) {
var html = '';
res.on('data', function (data) {
h
一、ASCII 码所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。「加ascii图」 二、ASCII 编码的缺点英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。 比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0--127表示的符号是一样的,不一样的只是128--255的这一段。 至于亚洲国家的文字,使用的符号就更多了,
通用HTTP身份验证有几种身份验证模式,每种模式在安全强度不同,在客户机或服务器软件中的可用性方面可能有所不同。最常见的认证方案是“基本”认证方案,下面将详细介绍它。参考:https://javascript.net.cn/article?id=628IANA维护着一个认证方案列表,但是主机服务也提供了其他的认证方案,比如Amazon AWS。常见的认证方案包括:BasicSee RFC 7617, base64-encoded credentials. More information below.https://tools.ietf.org/html/rfc7617BearerSee RF
Content-Disposition 通常作用于两种情况中,“作为消息主体中的消息头”或“作为multipart body中的消息头”作为消息主体中的消息头一般情况下,Content-Disposition 响应头指示返回的内容,是以内联的形式(即网页或者页面的一部分),还是以附件的形式下载并保存到本地。Content-Disposition: inline默认值,表示回复中的消息体会以页面的一部分或者整个页面的形式展示Content-Disposition: attachment表示消息体应该被下载到本地;Content-Disposition: attachment; filename=
最初是 TJ 2013年写的模块。可以使用redis或者内存模式。当一定的时间内请求次数超过阀值,返回429错误。可以参考 API Rate Limiting 限速 https://javascript.net.cn/article?id=623,这个是基于IP的。在nginx做代理的情况下,还可以基于IP或者请求再次限流 https://javascript.net.cn/article?id=753Installation 安装# npm
$ npm install koa-ratelimit
# yarn
$ yarn add koa-ratelimit
Example 例子Wi
所有标签