const

MySQL 执行计划中Extra(Using where,Using index,Using index condition,Using index,Using where)的浅析

北战南征 提交于 2020-02-26 06:49:57
关于如何理解MySQL执行计划中Extra列的Using where、Using Index、Using index condition,Using index,Using where这四者的区别。首先,我们来看看官方文档关于三者的简单介绍(官方文档并没有介绍Using index,Using where这种情况): Using index (JSON property: using_index) The column information is retrieved from the table using only information in the index tree without having to do an additional seek to read the actual row. This strategy can be used when the query uses only columns that are part of a single index. For InnoDB tables that have a user-defined clustered index, that index can be used even when Using index is absent from the Extra column. This is the

用js徒手写一个中间键

天大地大妈咪最大 提交于 2020-02-26 06:22:29
什么是中间键? 下图中 C和D 的部分就是中间键 创建一个js文件 middleware.js 内容如下 const App = () => { const req = { type: 'request', params: [] } const res = { type: 'response' } const middlewares = [] const use = fn => middlewares.push(fn) const runMiddlewares = index => { const count = middlewares.length if (index < count) middlewares[index].apply(null, [req, res, () => runMiddlewares(index + 1)]) } const get = (path, fn) => { runMiddlewares(0) fn.apply(null, [res, res]) } return { get, use } } const app = App() app.use((req, res, next) => { req.params.id = 5; console.log(req, 'request object accessed from middleware 1'

rxjs6 控制虚线长度

那年仲夏 提交于 2020-02-26 03:21:21
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="./rxjs.umd.js"></script> <style> .box { } </style> </head> <body> <input type="checkbox" id="check"> <div class="box" id="box"> </div> <script> const {range, interval, fromEvent} = rxjs; const {map,tap, mergeMap, mapTo, filter, throttleTime, debounceTime, repeat, switchMap, takeUntil} = rxjs.operators; const box = document.getElementById('box') const check = document.getElementById('check') const change$ = fromEvent(check, 'change').pipe( // map(x => x.target.checked), // filter(x => x === true) )

ES6教程:let和const命令的用法

左心房为你撑大大i 提交于 2020-02-26 03:05:47
ES6中新增了let和const命令,分别用于声明变量和常量。 1. 使用let命令取代var命令 在ES6之前的版本中,使用 var 声明变量,在ES6中新增了 let 来声明变量。 let 完全可以取代 var ,因为二者的语义相同,而且 let 没有“副作用”。 我们先来看一下 let 命令有哪些特点: 不存在变量提升:变量只有在声明之后才能使用; 不允许重复声明:在相同的作用域下,一个变量名只能使用一次,不能重复声明; 具有块级作用域:在代码块中声明的变量,只对当前代码块和其内部嵌套代码块有效,如果嵌套代码块中声明了同名变量时,则对该嵌套代码块无效; 存在暂时性死区:当全局变量与代码块中变量同名时,代码块中的变量就有了块级作用域,其变量声明前不能使用。 JavaScript是弱类型的编程语言,在ES6之前使用 var 关键字声明变量,会发生变量提升的现象。简单来说,就是在声明变量之前就对该变量进行调用,程序不会报错,而且打印出来的值为 undefined 。如果是有Java或C++编程经验的小伙伴,肯定对这种现象是无法忍受的。我们用一段代码来演示一下这种现象: function test(){ console.log(i); var i = 1; } test(); 运行结果: undefined 上面代码中,变量 i 是使用 var 命令声明的

求最大三角形——poj2079

白昼怎懂夜的黑 提交于 2020-02-26 01:07:42
用旋转卡壳的思想,固定住一点,然后剩下两点通过单峰函数的性质进行移动 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<vector> #include<algorithm> using namespace std; typedef double db; const db eps=1e-8; const db pi=acos(-1.0); int sign(db k){ if (k>eps) return 1; else if (k<-eps) return -1; return 0; } int cmp(db k1,db k2){return sign(k1-k2);} int inmid(db k1,db k2,db k3){return sign(k1-k3)*sign(k2-k3)<=0;}// k3 在 [k1,k2] 内 struct point{ db x,y; point(){} point(db x,db y):x(x),y(y){} point operator + (const point &k1) const{return point(k1.x+x,k1.y+y);} point operator - (const point &k1) const

vue+stringboot实现下载

拜拜、爱过 提交于 2020-02-26 00:51:18
java @GetMapping("download") public void downloadPhylo(@PathVariable String uuid, HttpServletRequest request, HttpServletResponse response) { try (InputStream inputStream = new FileInputStream("E:\\zhy\\zhy.txt"); ServletOutputStream servletOutputStream = response.getOutputStream()) { response.setContentType("application/octet-stream"); response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate"); response.addHeader("Pragma", "no-cache"); IOUtils.copy(inputStream, servletOutputStream); response.flushBuffer(); } catch (Exception e) { e.printStackTrace(); } } vue zhyDownload() {

Koa2源码精读

别等时光非礼了梦想. 提交于 2020-02-26 00:49:58
看了那么多文章,是时候也来回馈一下掘金这个让我等小白获益匪浅的社区了(●’◡’●),这篇文章主要面对的是在阅读网上其他讲解Koa2源码文章后仍有疑惑的同学,因为我也花了两天的时间来彻底搞清它的源码机制,所以这算是刚出新手村就来回馈了~ 这篇文章可能显得有些啰嗦,因为大部分文章的作者是有一定开发经验的带哥,所以有些新手向的东西直接一笔带过,这也正是为什么网上有那么多讲解好文我还要再写一篇(而且我就是个还没毕业的弟弟):我把你们的坑踩了,你们就可以把省下来的时间做些更有意义的事情,比如把react的源码看了。 文章目录 文中所使用的Koa版本为2.11.0,新鲜的! 带注释的热乎源代码已经上传至GitHub 如果需要更好的阅读体验,可以移步俺的博客 四大护法 new一个Koa(),发生了什么? 好兄弟,我给你看个宝贝! 这个‘洋葱’切起来咋会让人笑呢(/▽\) 错误处理,妥妥的! 四大护法 Koa的源码分为以下四个部分, application.js,主干部分,在这里进行了中间件合并、上下文封装、处理请求&响应、错误监听等操作。 context.js,上下文封装的逻辑,deligate库就是在这里进行代理属性。 request.js,封装ctx.request的逻辑,注意,ctx.req才是Node原生属性,后面会讲。 response.js, ctx.response,同上。

Codeforces Round #624 (Div. 3)

ぐ巨炮叔叔 提交于 2020-02-26 00:34:29
A.题意:通过加奇数减偶数的操作从a到b最少需要几步 签到题 #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <vector> #include <cmath> #include <queue> #include <deque> #include <map> using namespace std; typedef long long ll; const double inf=1e20; const int maxn=100005; int main(){ int n; scanf("%d",&n); for(int i=0;i<n;i++){ ll a,b; scanf("%lld%lld",&a,&b); ll c=b-a; if(c==0){ printf("0\n"); }else if(c>0&&c%2==0){ printf("2\n"); }else if(c<0&&c%2!=0){ printf("2\n"); } else printf("1\n"); } return 0; } B.题意:有一个数组p,你可以任意次交换a[p i ]和a[p i +1],问能不能把数组变成一个非严格上升的子序列。 解:很明显,如果p数组中有连续的一段

webpack4+react 多页面打包

白昼怎懂夜的黑 提交于 2020-02-26 00:04:50
目录结构(先创建好) 简单说明一下 下面有代码的直接粘贴复制 有些没有代码的 这里先解释一下 1.node_modules 这个文件夹没什么好说的 2.src 这个文件夹里面就是我们需要写的 (1).src/component 这里一般都是方组件的 我没有写组件 所以这里空空如也 (2).src/pages 这里放的就是打包的页面了 (3).src/pages 里面pageinfo.json 这个文件是配置单独页面的一些seo之类的配置 不写的 生成模板是会有默认的 代码很简单 稍微看一下就明白 (4).关于.scss文件 因为我现在就在用scss 所有这里就用scss 没有用 css上面的 有需要的可以自己配置下百度一下很简单 下面就是一些主要代码 希望能对在看此篇文章的你起到帮助作用 一、生成模板文件 //create-html.js const fs = require("fs"); const HtmlWebpackPlugin = require("html-webpack-plugin"); //生成html文件 const getPath = require("./get-path"); let htmlArr = []; function createHtml(page_path) { getPath(page_path).map((item) => { let

存储持续性、作用域和链接性

北城以北 提交于 2020-02-26 00:00:01
例子: 头文件:state.h 源文件:state.cpp 其它源文件:t1.cpp t2.cpp t3.cpp, 这些源文件都包含头文件state.h。 需要定义一个全局变量供这些源文件中使用:方法如下 1、在 state.h声明全局变量: extern inta; 2、在state.cpp中定义该全局变量:int a =10; 这样其它源文件就可以使用该变量啦 这里需要的是“声明”,不是“定义”!根据C++标准的规定,一个变量声明必须同时满足两个条件,否则就是定义: (1)声明必须使用extern关键字;(2)不能给变量赋初值 extern int a; //声明 int a; //定义 int a = 0; //定义 extern int a =0; //定义 头文件中应使用extern关键字声明全局变量(不定义),如果这个变量有多个文件用到,可以新建一个cpp,在其中定义,把这个cpp加入工程即可。 头文件请不要定义任何变量,那是非常业余的行为…… 一般在头文件中申明,用extern,在cpp中定义。 如果在头文件中定义,如果这个头文件被多个cpp引用,会造成重复定义的链接错误。 头文件只能申明全局变量(extern),不可定义(不推荐使用) .cpp里,在最外层定义即可(int gi),直接引用 如果在.cpp里使用static定义,则该变量只在当前cpp文件中有效