大家好,又见面了,我是你们的朋友全栈君。 async/await是什么 async/await 是ES7提出的基于Promise的解决异步的最终方案。...async async是一个加在函数前的修饰符,被async定义的函数会默认返回一个Promise对象resolve的值。因此对async函数可以直接then,返回值就是then方法传入的函数。...可以理解为等待。...await表达式的结果。...console.log(1) } fun(); // 立即输出 undefined 1 // 1秒后输出 1000 // 2秒后输出 2000 // 3秒后输出 3000 async/await 的正确用法
大家好,又见面了,我是你们的朋友全栈君。...dict.setdefault(key, default=None) 功能: 如果键不存在于字典中,将会添加该键并将default的值设为该键的默认值,如果键存在于字典中,将读出该键原来对应的值,...default的值不会覆盖原来已经存在的键的值。...参数: key—-要查找的键 default—–查找的键不存在时用于设置的默认值 使用方法示例:(以下使用方法是我理解setdefault函数的过程) 方法一:给字典中不存在的键赋值为默认值None...ExsampleDict.setdefault("NotExist") >>> print ExsampleDict {'NotExist': None, 'Exist': 'Elle'} >>> 方法三:读出字典中存在的键对应的值
语法 不同的 import 的引入方法 import defaultExport from "module-name"; import * as name from "module-name"; import...import defaultExport, * as name from "module-name"; import "module-name"; defaultExport 将引用模块默认导出的名称...module-name 要导入的模块。这通常是包含模块的.js文件的相对或绝对路径名,不包括.js扩展名。某些打包工具可以允许或要求使用该扩展;检查你的运行环境。只允许单引号和双引号的字符串。...name 引用时将用作一种命名空间的模块对象的名称。 export, exportN 要导入的导出名称。 alias, aliasN 将引用指定的导入的名称。...import {myExport} from '/modules/my-module.js'; import { foo,bar } form '/modules/my-module.js' 导入带有别名的导出
,self代表的是类的实例。...,就是那个传入的实例,而不是指定义了self的类的实例。...t.x,也就是说是Test类的实例t的属性x,由于实例t中并没有定义属性x,所以找到了类属性x,而该属性是描述符属性,为Desc类的实例而已,所以此处并没有顶用Test的任何方法。...从OO的本质理解python中的self 假设要对用户的数据进行操作,用户的数据包含name和age。如果用面向过程的话,实现出来是下面这样子的。...如果用面向对象的话,就不用每次把user参数传来传去,把相关的数据和操作绑定在一个地方,在这个类的各个地方,可以方便的获取数据。
获取成功的结果 3. 获取失败的结果 4. 多个 Promise 的场景 5. async 标记函数 6. await 等待异步操作执行完成 6. async + await 相关文章推荐 1....前言 ---- async/await 是 ES7 提出的基于 Promise (ES6 中提出的) 的解决异步的最终方案 async + await 的作用: 简化 promise 的异步操作,把 promise...获取失败的结果 ---- 当 Promise 抛出错误信息时,控制台默认是直接抛出异常的 reject('接口请求失败') 可以使用 try … catch 捕获 promise 抛出的错误 try...多个 Promise 的场景 ---- 使用 Promise Promise.all 的参数是一个数组,数组的每一项是一个返回的 promise 的函数调用 Promise.all([getProfile...resolve 就是 undefined 如果在 async 函数中写了 return,那么 promise 对象的 resolve 就是 return 的值 如果 async 里的代码都是同步的,那么这个函数被调用就会同步执行
昨天更新的是“JavaScript中的Promise使用详解”,其实也就是说了下基本用法和自己对Promise的理解,可能有错误之处,也欢迎指出。...今天就说一说“JavaScript中的async/await的用法和理解” 编程语言中任意一个关键字都是有意义的,我们先从字面意思来理解。 1.async ?...async 是“异步”的简写,带async关键字的函数,是声明异步函数,返回值是promise对象,如果async关键字函数返回的不是promise,会自动用Promise.resolve()包装。...await 可以认为是 async wait 的简写。所以应该很好理解 async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。...如果它等到的不是一个 Promise 对象,那 await 表达式的运算结果就是它等到的东西。
大家在做Android开发是很经常会遇到要初始化控件时要写大量的findViewById的情况。一两个还好多的时候就很烦因为大家都在做同样的事情,那怎么才能解决这样的问题呢?...当然现在随着JQuery在Android上的应用这个问题已经得以解决。今天要讲的是Butter Knife的用法。大家一看可能比较陌生,其实很简单的,看看下面的解释就清楚啦。 ...Butter Knife 是一个专注于 Android 系统 View 的注入框架,让你从烦人的 findViewById 中解脱出来。 同时还支持 View 的一些事件处理函数。...Butter Knife 的特性: 支持 Activity 中的 View 注入 支持 View 中的 View 注入 支持 View 事件回调函数注入 目前支持如下事件回调函数:...主要是对Butter Knife 进行一个总的解释概括不算很详细。但是可以给大家一个启蒙。想研究Butter Knife 用法的同学可以自己研究,写写代码。
大家好,又见面了,我是你们的朋友全栈君。 关于this指针的一个精典回答: 当你进入一个房子后, 你可以看见桌子、椅子、地板等, 但是房子你是看不到全貌了。...对于一个类的实例来说, 你可以看到它的成员函数、成员变量, 但是实例本身呢? this是一个指针,它时时刻刻指向你这个实例本身。...个人理解: (ps:class类就好比这座房子,this就好比一把钥匙,通过钥匙来打开了这座房子的门,那么里面的东西就随意你取用了) this是指向实例化对象本身时候的一个指针,里面存储的是对象本身的地址...因为this作用域是在类的内部,自己声明一个类的时候,还不知道实例化对象的名字,所以用this来使用对象变量的自身。...例如a.fun(1)fun(&a,1) this的使用:1)在类的非静态成员函数中返回对象的本身时候,直接用return *this(常用于操作符重载和赋值、拷贝等函数)。
背景: 在项目里面写一个公共的方法,只要有需要的table的column需要变色就直接调用这个方法就好了,不需要在自己的子页面写方法。 如下图,写一个column变色的公共方法。.../modules'; // 创建 store 实例 export default new Vuex.Store({ modules, }); 假如你对上面的小例子代码看的有点云里雾里,没有关系,那么接下来我将带你详细的理解一遍...它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。...来自不同视图的行为需要变更同一状态。 对于问题一,传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。...对于问题二,我们经常会采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝。以上的这些模式非常脆弱,通常会导致无法维护的代码。
css-transform-effects-1140x625.png 实现炫酷的网页动画效果,自然少不了css3中transform的属性,此属性功能丰富且强大,比如实现元素的位移translate(...,我们还需要深入了解它的另外一个属性——matrix,matrix就是矩阵的意思,听起来是不是很高级,你没听错实现更高级的效果,你需要了解“矩阵”,听到“矩阵”,是不是很惊慌,当初笔者学习线性代数时也甚是无聊...,我们左边矩阵的每行与右边矩阵的每列分别相乘,相乘规则如矩阵与向量相乘的规则一样,最终得到矩阵的行数等于左边矩阵的行数,列数等于右边矩阵的列数。...注:参数书写的方向是竖着写的。...(如上图),其实就是每个变换对应的矩阵参数相乘的结果得到这6个参数值,记住一定要按照rotate,translateX,scaleX对应的顺序进行举行相乘,如下图所示(运算的结果笔者就不写了,留给大家练习下矩阵相乘
虽然 javascript 没有明确的类的概念,但是用类来理解它,会更方便。 jQuery便是一个封装得非常好的类,比如我们用 语句 $(“#btn1″) 会生成一个 jQuery类的实例。...jQuery.extend(object) a、为jQuery类添加类方法,可以理解为添加静态方法。...jQuery类的实例可以使用这个“成员函数”。 比如我们要开发一个插件,做一个特殊的编辑框,当它被点击时,便alert 当前编辑框里的内容。...jQuery.extend() 的调用并不会把方法扩展到对象的实例上,引用它的方法也需要通过jQuery类来实现,如jQuery.init(),而 jQuery.fn.extend()的调用把方法扩展到了对象的...prototype上,所以实例化一个jQuery对象的时候,它就具有了这些方法,这 是很重要的,在jQuery.js中到处体现这一点 jQuery.fn.extend = jQuery.prototype.extend
说明 了解 es6+ 的 class 的使用 了解其中 set 和 get 的使用情况 适用:es6+ 初学者 class es7 类的使用 一 class extends super class 声明创建一个基于原型继承的具有给定名称的新类...但是不同于类表达式,类声明不允许再次声明已经存在的类,否则将会抛出一个类型错误。 申明一个类,Polygon, 然后 Square 来继承 Polygon,只能在构造函数中使用 super()。...使用 extends 创建子类/ super 关键字用于调用对象的父对象上的函数。...p1 = new Point(5, 5); const p2 = new Point(10, 10); console.log(Point.distance(p1, p2)); 复制代码 二 get 的使用...get语法将对象属性绑定到查询该属性时将被调用的函数。
2、矩阵与矩阵相乘 比如 2✖️4 的矩阵与 4️✖️3 的矩阵相乘我们得到一个 2✖️3 的矩阵,如下图所示: 从图示中我们可以看出,我们左边矩阵的每行与右边矩阵的每列分别相乘,相乘规则如矩阵与向量相乘的规则一样...,最终得到矩阵的行数等于左边矩阵的行数,列数等于右边矩阵的列数。...注:参数书写的方向是竖着写的。...,scaleX对应的顺序进行举行相乘(矩阵相乘顺序不同结果不同),如下图所示:(运算的结果笔者就不写了,留给大家练习下矩阵相乘) 今天的内容就介绍到这里,我们理解了transform这个高级属性——matrix...()矩阵属性,通过这个属性我们了解其背后的数学逻辑,只有理解掌握这个属性后,我们才能实现更为复杂的动画效果。
这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。...initialValue这个方法是一个延迟调用方法(可以理解成给初始值),在线程第1次调用get()或set(Object)时才执行,并且仅执行1次。...curThread = Thread.currentThread(); map.put(curThread, obj); } } 现在我们用一个实例来加深对ThreadLocal的理解...通过ThreadLocal.set()将这个新创建的对象的引用保存到各线程的自己的一个map中,每个线程都有这样一个map,执行ThreadLocal.get()时,各线程从自己的map中取出放进去的对象...,因此取出来的是各自自己线程中的对象,ThreadLocal实例是作为map的key来使用的。
大家好,又见面了,我是你们的朋友全栈君。 1. 函数功能:在当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内还是边界外。...SetCapture和ReleaseCapture必须成对出现 通俗来讲,例如:一只羊被一根弹性的绳子(SetCapture)拴在羊圈,羊可以拉长绳子无限制区域活动,但是永远无法摆脱绳子的束缚。
apply和call都是为了改变某个函数运行时的上下文而存在的(就是为了改变函数内部this的指向),Function对象的方法,每个函数都能调用; 使用apply或call方法,其运行的上下文指向第一个参数...apply和call的常用用法: 让类数组拥有方法; binde 方法的使用 也是改变函数体内this的指向,bind()是es5中的方法,bind会创建一个新函数,称为绑定函数,当调用这个函数的时候...,绑定函数会以创建它时传入bind()方法的第一个参数作为this,传入bind()方法的第二个及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数; 例如:(后面的代码皆取自张鑫旭大神的博客...function() { return self.apply(context, args.slice(1)); } }; } 上面的代码中this的指向是个容易理解错的地方...这之后的代码就很好理解,返回一个函数,该函数把传给bind的第一个参数当做执行上下文,由于args已经是一个数组,排除第一项,将之后的部分作为第二部分参数传给apply,前面讲过apply的用法。
现在网络的资料到处都是,很容易搜索到自己想要的答案。但答案通常只能解决自己一部分的问题。如果自己想要有一套自己的解决方案,还得重新撸一遍靠谱。 我需要学下OAuth2.0吗?...没看之前以为OAuth2.0是登录认证授权的东西,自己的项目里应该是需要的。实际上OAuth是为了第三方应用访问我们资源用的,大多数开发者基本不会用到这个东西。...一个是自己的账号密码存在泄露的风险,一个是自己的账号权限太大,万一被别人删除了或者看到了不该看到的东西怎么办。...以下用石墨文档(client)采用微信(authorization server & resource server)登录的方案来描述理解4种授权方式。...这种也叫client side,又称为User Agent Flow,先说具体用法。 client直接请求authorization server获取access_token.
输出张量和输入张量的元素类型相同。...用法 tf.reshape函数用于对输入tensor进行维度调整,但是这种调整方式并不会修改内部元素的数量以及元素之间的顺序,换句话说,reshape函数不能实现类似于矩阵转置的操作。...其内部实现可以理解为: tf.reshape(a, shape) -> tf.reshape(a, [-1]) -> tf.reshape(a, shape) 现将输入tensor,flatten铺平...总结 关于tf.reshape函数我们需要知道的是: 函数用于张量维度调整,但是不会修改内部元素的数量以及相对顺序 shape中-1表示这个维度的大小,程序运行时会自动计算填充(因为变换前后元素数量不变...,我们可以根据其他维度的大小,最终确定-1这个位置应该表示的数字) 如果需要通过修改内部元素的存储顺序以实现维度调整,需要使用tf.transpose函数
使用GRANT赋予用户权限的时候通常有ADMIN OPTION和GRANT OPTION这两个OPTION。下面使用简单的实验来体会下这两种授权的用途。...带有WITH ADMIN OPTION的权限授予方式,可传递授权。 2. 带有WITH ADMIN OPTION的权限授予方式,当使用REVOKE收回权限时,传递的授权并不会自动收回。 3....授予user_a和user_b创建session的权限,但用user_a查询dcsopen的t1表时提示无此权限: ? 2....SYS账户收回user_a的查询dcsopen.t1表的权限: ? 5. 使用user_b用户查询dcsopen.t1表时提示无权限: ? 总结: 1....使用WITH GRANT OPTION的权限授予方式,可传递授权。 2. 使用WITH GRANT OPTION的权限授予方式,当使用REVOKE收回权限时,传递的授权会自动收回。 3.
前言 以前一直不会用infer,要么直接就是returnType,压根不需要用infer,网上那些教程只给示例不给具体场景就无法让人很好理解这玩意。...Fish | Bird> = { water: '水' }; let condition2: Condition = { sky: '天空' }; 相信这个例子大家很容易理解...R : any; 乍看之下好像有点难懂,其实仔细看发现还是很好理解的,它也是个类型分发。...卧槽,这个问的太好了,这个就是理解Infer的关键。...可以看下这个例子加深理解: type T1 = { name: string }; type T2 = { age: number }; type UnionToIntersection
领取专属 10元无门槛券
手把手带您无忧上云