es6
文章平均质量分 78
回到未来望过去
oracle性能20年研究(saa批量自动优化分析,job、expdp的undo、temp内部运行机制等)
自行开发设计ssi平台(支持vpd)
自行开发设计pythonQT管理平台(系统监控、导出xls、常用字典、常用sql,日常运维sql(支持参数化))应用formysql,fororacle,fordm
python工具应用:工作量化监控mail日报,ogg监控日报(让领导发现问题),pyforweblogic监控自动重启
pyformysql数据外挂(降低mysql华为云性能峰值),py推荐算法落地社保
E-mail:li_tao@neusoft.com
展开
-
npm install如何知道使用nodejs太低
PS D:\xuexi\cms-vue-iView\cms_web> npm installnpm WARN EBADENGINE Unsupported engine {npm WARN EBADENGINE package: 'nanoid@3.3.4',npm WARN EBADENGINE required: { node: '^10 || ^12 || ^13.7 || ^14 || >=15.0.1' },npm WARN EBADENGINE current: { node原创 2022-11-03 16:57:38 · 1276 阅读 · 0 评论 -
ECMAScript 6 入门:装饰器
装饰器(Decorator)用来增强 JavaScript 类(class)的功能,许多面向对象的语言都有这种语法,目前有一个提案将其引入了 ECMAScript。装饰器是一种函数,写成@ + 函数名,可以用来装饰四种类型的值。类类的属性类的方法属性存取器(accessor)下面的例子是装饰器放在类名和类方法名之前,大家可以感受一下写法。}转载 2022-10-24 17:53:37 · 180 阅读 · 0 评论 -
ECMAScript 6 入门:ArrayBuffer
对象代表储存二进制数据的一段内存,它不能直接读写,只能通过视图(TypedArray视图和DataView视图)来读写,视图的作用是以指定格式解读二进制数据。也是一个构造函数,可以分配一段可以存放数据的连续内存区域。上面代码生成了一段 32 字节的内存区域,每个字节的值默认都是 0。可以看到,构造函数的参数是所需要的内存大小(单位字节)。为了读写这段内容,需要为它指定视图。DataView视图的创建,需要提供对象实例作为参数。上面代码对一段 32 字节的内存,建立DataView。转载 2022-10-24 17:42:44 · 1032 阅读 · 0 评论 -
ECMAScript 6 入门:异步遍历器
注意,普通的 async 函数返回的是一个 Promise 对象,而异步 Generator 函数返回的是一个异步 Iterator 对象。可以这样理解,async 函数和异步 Generator 函数,是封装异步操作的两种方法,都用来达到同一种目的。就像 Generator 函数返回一个同步遍历器对象一样,异步 Generator 函数的作用,是返回一个异步遍历器对象。下面是读取文件的传统写法与异步遍历器写法的差异。,前一个处理同步遍历器,后一个处理异步遍历器,可以看到两个版本的写法基本上是一致的。转载 2022-10-24 17:39:11 · 103 阅读 · 0 评论 -
ECMAScript 6 入门:Module 的加载实现
JavaScript 现在有两种模块。一种是 ES6 模块,简称 ESM;另一种是 CommonJS 模块,简称 CJS。CommonJS 模块是 Node.js 专用的,与 ES6 模块不兼容。语法上面,两者最明显的差异是,CommonJS 模块使用require()和,ES6 模块使用import和export。它们采用不同的加载方案。从 Node.js v13.2 版本开始,Node.js 已经默认打开了 ES6 模块支持。Node.js 要求 ES6 模块采用.mjs后缀文件名。转载 2022-10-24 17:37:39 · 181 阅读 · 0 评论 -
ECMAScript 6 入门:Module 的语法
历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如 Ruby 的require、Python 的import,甚至就连 CSS 都有@import,但是 JavaScript 任何这方面的支持都没有,这对开发大型的、复杂的项目形成了巨大障碍。在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种。前者用于服务器,后者用于浏览器。转载 2022-10-24 17:27:33 · 110 阅读 · 0 评论 -
ECMAScript 6 入门:Class 的继承
Class 可以通过extends关键字实现继承,让子类继承父类的属性和方法。extends 的写法比 ES5 的原型链继承,要清晰和方便很多。}}上面示例中,Point是父类,ColorPoint是子类,它通过extends关键字,继承了Point类的所有属性和方法。但是由于没有部署任何代码,所以这两个类完全一样,等于复制了一个Point类。下面,我们在ColorPoint内部加上代码。// 调用父类的constructor(x, y)}// 调用父类的toString()}}上面示例中,转载 2022-10-20 17:51:21 · 56 阅读 · 0 评论 -
ECMAScript 6 入门:Class 的基本语法
并不是语言本身的特性,这是各大厂商具体实现时添加的私有属性,虽然目前很多现代浏览器的 JS 引擎中都提供了这个私有属性,但依旧不建议在生产中使用该属性,避免对环境产生依赖。上面代码中,箭头函数位于构造函数内部,它的定义生效的时候,是在构造函数执行的时候。另外,不管在类的内部或外部,读取一个不存在的私有属性,也都会报错。但是,这种命名是不保险的,在类的外部,还是可以调用到这个方法。这种新写法的好处是,所有实例对象自身的属性都定义在类的头部,看上去比较整齐,一眼就能看出这个类有哪些实例属性。转载 2022-10-20 17:38:48 · 80 阅读 · 0 评论 -
ECMAScript 6 入门:async 函数
这种写法比较麻烦,等于要求模块的使用者遵守一个额外的使用协议,按照特殊的方法使用这个模块。,还默认输出一个 Promise 对象(async 函数立即执行后,返回一个 Promise 对象),从这个对象判断异步操作是否结束。也就是说,模块的使用者完全不用关心,依赖模块的内部有没有异步操作,正常加载即可。这个写法的问题在于,必须有一个任务运行器,自动执行 Generator 函数,上面代码的。命令有点像,交出代码的执行权给其他的模块加载,等异步操作完成后,再拿回执行权,继续向下执行。转载 2022-10-20 16:08:00 · 64 阅读 · 0 评论 -
ECMAScript 6 入门:async 函数
这种写法比较麻烦,等于要求模块的使用者遵守一个额外的使用协议,按照特殊的方法使用这个模块。,还默认输出一个 Promise 对象(async 函数立即执行后,返回一个 Promise 对象),从这个对象判断异步操作是否结束。也就是说,模块的使用者完全不用关心,依赖模块的内部有没有异步操作,正常加载即可。这个写法的问题在于,必须有一个任务运行器,自动执行 Generator 函数,上面代码的。命令有点像,交出代码的执行权给其他的模块加载,等异步操作完成后,再拿回执行权,继续向下执行。转载 2022-10-20 16:07:29 · 293 阅读 · 0 评论 -
ECMAScript 6 入门:Generator 函数的异步应用
因为自动执行的关键是,必须有一种机制,自动控制 Generator 函数的流程,接收和交还程序的执行权。在 JavaScript 语言中,Thunk 函数替换的不是表达式,而是多参数函数,将其替换成一个只接受回调函数作为参数的单参数函数。所谓回调函数,就是把任务的第二段单独写在一个函数里面,等到重新执行这个任务的时候,就直接调用这个函数。所谓"异步",简单说就是一个任务不是连续完成的,可以理解成该任务被人为分成两段,先执行第一段,然后转而执行其他任务,等做好了准备,再回过头执行第二段。转载 2022-10-20 15:53:06 · 111 阅读 · 0 评论 -
ECMAScript 6 入门:Generator 函数的语法
Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细介绍 Generator 函数的语法和 API,它的异步编程应用请看《Generator 函数的异步应用》一章。Generator 函数有多种理解角度。语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。转载 2022-10-20 15:52:17 · 136 阅读 · 0 评论 -
ECMAScript 6 入门:Iterator 和 for...of 循环
本质上,遍历器是一种线性处理,对于任何非线性的数据结构,部署遍历器接口,就等于部署一种线性转换。其次,Set 结构遍历时,返回的是一个值,而 Map 结构遍历时,返回的是一个数组,该数组的两个成员分别为当前 Map 成员的键名和键值。由于 Iterator 只是把接口规格加到数据结构之上,所以,遍历器与它所遍历的那个数据结构,实际上是分开的,完全可以写出没有对应数据结构的遍历器对象,或者说用遍历器对象模拟出数据结构。由于数组的遍历会调用遍历器接口,所以任何接受数组作为参数的场合,其实都调用了遍历器接口。转载 2022-10-20 15:04:23 · 92 阅读 · 0 评论 -
ECMAScript 6 入门:Promise 对象
到了那个时候,Promise 的运行已经结束了,所以这个错误是在 Promise 函数体外抛出的,会冒泡到最外层,成了未捕获的错误。对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。事件的监听函数有两个参数,第一个是错误对象,第二个是报错的 Promise 实例,它可以用来了解发生错误的环境信息。转载 2022-10-20 14:28:53 · 72 阅读 · 0 评论 -
ECMAScript 6 入门:Reflect
Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect对象的设计目的有这样几个。(1) 将Object对象的一些明显属于语言内部的方法(比如),放到Reflect对象上。现阶段,某些方法同时在Object和Reflect对象上部署,未来的新方法将只部署在Reflect对象上。也就是说,从Reflect对象上可以拿到语言内部的方法。(2) 修改某些Object方法的返回结果,让其变得更合理。比如,在无法定义属性时,会抛出一个错误,而则会返回false。转载 2022-10-19 17:50:47 · 58 阅读 · 0 评论 -
ECMAScript 6 入门:Proxy
Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。`);},`);}});上面代码对一个空对象架设了一层拦截,重定义了属性的读取(get)和设置(set)行为。转载 2022-10-19 17:36:41 · 123 阅读 · 0 评论 -
ECMAScript 6 入门:Set 和 Map 数据结构
其次,WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于 WeakSet 之中。这就解决了同名属性碰撞(clash)的问题,我们扩展别人的库的时候,如果使用对象作为键名,就不用担心自己的属性与原作者的属性同名。也就是说,上面的 DOM 节点对象除了 WeakMap 的弱引用外,其他位置对该对象的引用一旦消除,该对象占用的内存就会被垃圾回收机制释放。转载 2022-10-19 17:19:27 · 124 阅读 · 0 评论 -
ECMAScript 6 入门:Symbol
ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Symbol的原因。ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。转载 2022-10-19 16:12:37 · 114 阅读 · 0 评论 -
ECMAScript 6 入门:运算符的扩展
不再被看成是一个完整的运算符,而会按照三元运算符进行处理,也就是说,那个小数点会归属于后面的十进制数字,形成一个小数。编程实务中,如果读取对象内部的某个属性,往往需要判断一下,属性的上层对象是否存在。现在的规则是,如果多个逻辑运算符一起使用,必须用括号表明优先级,否则会报错。也就是说,链判断运算符一旦为真,右侧的表达式就不再求值。上面代码中,首先计算的是第二个指数运算符,而不是第一个。属性在对象的第四层,所以需要判断四次,每一层是否有值。运算符,直接在链式调用的时候判断,左侧的对象是否为。转载 2022-10-19 15:41:43 · 75 阅读 · 0 评论 -
ECMAScript 6 入门:对象的新增方法
也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。注意,如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。字符串的每个字符,就是该对象的一个属性。方法返回一个对象,所有原对象的属性名都是该对象的属性名,对应的属性值就是该属性的描述对象。转载 2022-10-19 15:09:57 · 53 阅读 · 0 评论 -
ECMAScript 6 入门:对象的扩展
ES6 允许字面量定义对象时,用方法二(表达式)作为对象的属性名,即把表达式放在方括号内。对象(object)是 JavaScript 最重要的数据结构。ES6 对它进行了重大升级,本章介绍数据结构本身的改变,下一章介绍Object对象的新增方法。转载 2022-10-19 14:50:53 · 72 阅读 · 0 评论 -
ECMAScript 6 入门:数组的扩展
如果是不稳定的,就不行。是一个 Generator 函数,执行后返回的是一个遍历器对象,对这个遍历器对象执行扩展运算符,就会将内部遍历得到的值,转为一个数组。这实际上意味着,只要有一个原始的数据结构,你就可以先对它的值进行处理,然后转成规范的数组结构,进而就可以使用数量众多的数组方法。排序稳定性(stable sorting)是排序算法的重要属性,指的是排序关键字相同的项目,排序前后的顺序不变。上面是这四个新方法对应的原有方法,含义和用法完全一样,唯一不同的是不会改变原数组,而是返回原数组操作后的拷贝。转载 2022-10-19 14:46:04 · 71 阅读 · 0 评论 -
ECMAScript 6 入门:函数的扩展
尾调用(Tail Call)是函数式编程的一个重要概念,本身非常简单,一句话就能说清楚,就是指某个函数的最后一步是调用另一个函数。}上面代码中,函数f的最后一步是调用函数g,这就叫尾调用。以下三种情况,都不属于尾调用。// 情况一return y;}// 情况二}// 情况三g(x);}上面代码中,情况一是调用函数g之后,还有赋值操作,所以不属于尾调用,即使语义完全一样。情况二也属于调用后还有操作,即使写在一行内。情况三等同于下面的代码。g(x);}转载 2022-10-18 15:45:12 · 63 阅读 · 0 评论 -
ECMAScript 6 入门:数值的扩展
JavaScript 所有数字都保存成 64 位浮点数,这给数值的表示带来了两大限制。一是数值的精度只能到 53 个二进制位(相当于 16 个十进制位),大于这个范围的整数,JavaScript 是无法精确表示,这使得 JavaScript 不适合进行科学和金融方面的精确计算。二是大于或等于2的1024次方的数值,JavaScript 无法表示,会返回Infinity。// 超过 53 个二进制位的数值,无法保持精度// 超过 2 的 1024 次方的数值,无法表示ES2020。转载 2022-10-18 15:12:10 · 72 阅读 · 0 评论 -
ECMAScript 6 入门:正则u,y,s,v,d 修饰符
ES6 对正则表达式添加了u修饰符,含义为“Unicode 模式”,用来正确处理大于\uFFFF的 Unicode 字符。也就是说,会正确处理四个字节的 UTF-16 编码。上面代码中,是一个四个字节的 UTF-16 编码,代表一个字符。但是,ES5 不支持四个字节的 UTF-16 编码,会将其识别为两个字符,导致第二行代码结果为true。加了u修饰符以后,ES6 就会识别其为一个字符,所以第一行代码结果为false。一旦加上u修饰符号,就会修改下面这些正则表达式的行为。点(.转载 2022-10-18 14:38:43 · 648 阅读 · 1 评论 -
ECMAScript 6 入门:正则的扩展
构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。而且,返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符。第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag)。第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝。但是,ES5 不允许此时使用第二个参数添加修饰符,否则会报错。的实例方法,从而做到所有与正则相关的方法,全都定义在。上面代码中,原有正则对象的修饰符是。ES6 改变了这种行为。构造函数的参数有两种情况。转载 2022-10-18 14:37:12 · 74 阅读 · 0 评论 -
ECMAScript 6 入门:字符串的新增方法
此外,最后还可以添加两个参数,倒数第二个参数是捕捉到的内容在整个字符串中的位置,最后一个参数是原字符串。方法的参数,是字符在字符串中的位置(从 0 开始)。上面代码中,JavaScript 将“𠮷a”视为三个字符,codePointAt 方法在第一个字符上,正确地识别了“𠮷”,返回了它的十进制码点 134071(即十六进制的。如果用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串。一共接受两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串。转载 2022-10-18 11:11:34 · 132 阅读 · 0 评论 -
ECMAScript 6 入门:标签模板(这什么变态玩意啊)
函数的第一个参数是一个数组,该数组的成员是模板字符串中那些没有变量替换的部分,也就是说,变量替换只发生在数组的第一个成员与第二个成员之间、第二个成员与第三个成员之间,以此类推。模板字符串的功能,不仅仅是上面这些。模板字符串本身并不能取代 Mustache 之类的模板库,因为没有条件判断和循环处理功能,但是通过标签函数,你可以自己添加这些功能。“标签”指的就是函数,紧跟在后面的模板字符串就是它的参数。但是,如果模板字符里面有变量,就不是简单的调用了,而是会将模板字符串先处理成多个参数,再调用函数。转载 2022-10-18 11:04:13 · 195 阅读 · 0 评论 -
ECMAScript 6 入门:模板字符串
它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。由于模板字符串的大括号内部,就是执行 JavaScript 代码,因此如果大括号内部是一个字符串,将会原样输出。如果大括号中的值不是字符串,将按照一般的规则转为字符串。上面代码中,模板字符串的变量之中,又嵌入了另一个模板字符串,使用方法如下。如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。上面代码中,所有模板字符串的空格和换行,都是被保留的,比如。如果需要引用模板字符串本身,在需要时执行,可以写成函数。转载 2022-10-18 10:45:51 · 111 阅读 · 0 评论 -
ecmascript 5中数组的map()方法
回调函数修改数组的影响map 方法启动后的条件元素是否传递给回调函数在数组的原始长度之外添加元素否添加元素以填充数组中缺少的元素是,如果该索引尚未传递给回调函数元素已更改是,如果该元素尚未传递给回调函数从数组中删除元素否,除非该元素已传递给回调函数。在ecmascript中,map()方法可以对数组的每个元素调用指定的回调函数进行处理,并返回包含结果的数组;下面示例使用 map() 方法映射数组,把数组中每个元素的值平方,乘以 PI 值,把返回的圆的面积值作为新数组的元素值,最后返回这个新数组。转载 2022-10-18 10:44:51 · 134 阅读 · 0 评论 -
ECMAScript 6 入门:JavaScript 共有 6 种方法可以表示一个字符
【代码】ECMAScript 6 入门:JavaScript 共有 6 种方法可以表示一个字符。转载 2022-10-18 10:12:49 · 126 阅读 · 0 评论 -
ECMAScript 6 入门:变量的解构赋值
函数只能返回一个值,如果要返回多个值,只能将它们放在数组或对象里返回。有了解构赋值,取出这些值就非常方便。Map 结构原生支持 Iterator 接口,配合变量的解构赋值,获取键名和键值就非常方便。解构赋值使得输入语句非常清晰。如果只想获取键名,或者只想获取键值,可以写成下面这样。的值,这样的写法不仅简洁,而且易读,语义非常清晰。解构赋值对提取 JSON 对象中的数据,尤其有用。解构赋值可以方便地将一组参数与变量名对应起来。上面代码可以快速提取 JSON 数据的值。变量的解构赋值用途很多。转载 2022-10-18 10:04:46 · 75 阅读 · 0 评论 -
JavaScript 语言存在一个顶层对象
JavaScript 语言存在一个顶层对象,它提供全局环境(即全局作用域),所有代码都是在这个环境中运行。但是,顶层对象在各种实现里面是不统一的。综上所述,很难找到一种方法,可以在所有情况下,都取到顶层对象。下面是两种勉强可以使用的方法。同一段代码为了能够在各种环境,都能取到顶层对象,现在一般是使用。都是存在的,都可以从它拿到顶层对象,指向全局环境下的。也就是说,任何环境下,模拟了这个提案,可以在所有环境拿到。在语言标准的层面,引入。关键字,但是有局限性。转载 2022-10-17 17:43:14 · 186 阅读 · 0 评论 -
vue项目中使用ts(typescript)
根据项目的不同配置的地方不同,如果是vue cli 3.0创建的项目需要在vue.config.js中配置,如果是3.0以下版本的话,需要webpack.base.conf中配置。(以下说明是在webpack.base.conf文件中更改)由于 TypeScript 默认并不支持 *.vue 后缀的文件,所以在 vue 项目中引入的时候需要创建一个 vue-shim.d.ts 文件,放在根目录下。在resolve.extensions中增加.ts,目的是在代码中引入ts文件不用写.ts后缀。转载 2022-10-17 17:19:21 · 2190 阅读 · 0 评论 -
webpack
loader 被用于转换某些类型的模块,而插件则可以做更多的事情。插件的功能强大,是 webpack 扩展非常重要的利器,可以用来处理各种各样的任务。转载 2022-10-17 17:13:05 · 68 阅读 · 0 评论 -
es6的代码执行url
【代码】es6的代码执行url。原创 2022-10-17 17:00:27 · 197 阅读 · 1 评论 -
ECMAScript 6 简明教程
ECMAScript 6 目前基本成为业界标准,它的普及速度比 ES5 要快很多,主要原因是现代浏览器对 ES6 的支持相当迅速,尤其是 Chrome 和 Firefox 浏览器,已经支持 ES6 中绝大多数的特性。ES6 中可以通过 Symbol.iterator 给对象设置默认的遍历器,无论什么时候对象需要被遍历,执行它的 @@iterator 方法便可以返回一个用于获取值的迭代器。Symbol 是一种新的数据类型,它的值是唯一的,不可变的。ES6 中两种新的数据结构集:Map 和 WeakMap。转载 2022-10-17 16:59:20 · 104 阅读 · 0 评论 -
ECMAScript 6 入门:es6的let与var的使用细节
语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。总之,暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。这样的设计是为了让大家养成良好的编程习惯,变量一定要在声明之后使用,否则就报错。声明变量时,只要变量在还没有声明完成前使用,就会报错。命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。,声明的变量仅在块级作用域内有效,最后输出的是 6。转载 2022-10-17 16:56:30 · 102 阅读 · 0 评论