huoxiangdong / blog Goto Github PK
View Code? Open in Web Editor NEW学习记录
学习记录
document
到触发事件的那个节点,即自上而下的去触发事件 true
,事件捕获;false
,事件冒泡。默认false
,即事件冒泡
当一个节点被拖拉到另一个节点里,触发的事件如下:
dragstart --> drag --> dragenter --> dragover --> drop --> dragend
dragstart
, drag
, dragend
在被拖动的节点触发,触发的event.target
为被拖拽的节点
dragenter
,dragover
, dragleave
, drop
在目标节点触发,触发的event.target
为释放的目标节点
在 dragover
触发时需要执行event.preventDefault()
,允许被拖动的节点进入
preventDefault()
-> 取消事件的默认动作jsonp
跨域nginx
反向代理node.js
中间件代理跨域http header
cors
currentStyle
: 该属性只兼容IE,不兼容火狐和谷歌
ele.currentStyle["attr"]
getComputedStyle
: 该属性是兼容火狐谷歌,不兼容IE
window.getComputedStyle(ele,null)[attr]
AO
, GO
[[scope]]
:运行期上下文对象(AO
, GO
)集合--> 作用域链scope chain
GO (Global Object)
-->AO (Activation Object)
-->[[scope]]
--> 0: GO --> 所在环境[[scope]]
--> 0: AO , 1: GOsudo apt-get update
sudo apt-get install docker.io
#查看版本
docker version
# 阿里云: https://dev.aliyun.com/search.html
sudo vi /etc/docker/daemon.json
# 添加以下内容
{
"registry-mirrors": ["https://ihep3sb9.mirror.aliyuncs.com"]
}
# 重启进程
sudo service docker restart
sudo su
mkdir /share && chmod 777 /share
ln -s /share .
#拉去镜像
docker pull mysql
# 启动mysql
docker run -p 3306:3306 -v $PWD/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql -d mysql
# -p 3306:3306:将容器的3306端口映射到主机的3306端口
# -v $PWD/share:/var/lib/mysql:将主机当前目录下的/mysql挂载到容器的/var/lib/mysql
# -e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码
# --name 给容器命名,mysql
# -d 指定镜像
docker ps -a
# 进入
docker exec -it mysql bash
#进入mysql
mysql -uroot -p
#mysql
show databases;
#切换数据库
use mysql;
SELECT `User`, `Host` FROM `user`;
# 创建用户
#CREATE USER 'admin'@'%' IDENTIFIED BY 'admin';
#授权
#grant all on *.* to 'admin'@'%';
#注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
# GRANT all ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
# 更改加密认证
#ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER; #修改加密规则,永不过期
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
#FLUSH PRIVILEGES; #刷新权限
#alter user 'root'@'%' identified by 'root';
webpack
就是完成一个又一个任务而完成整个打包构建过程make
是最开始的起点, complie
就是编译任务点,after-complie
是编译完成,emit
是即将准备生成文件,after-emit
是生成文件之后等compilation
,它继承于compiler
,所以能拿到一切compiler的内容(所以你也会看到webpack
的options
),而且也有plugin
函数来接入任务点map()
:返回一个新的Array
,每个元素为调用func
的结果
filter()
:返回一个符合func
条件的元素数组
some()
:返回一个boolean
,判断是否有元素是否符合func
条件
every()
:返回一个boolean
,判断每个元素是否符合func
条件
forEach()
:没有返回值,只是针对每个元素调用func
find()
: 返回数组中满足提供的测试函数的第一个元素的值
n++,是先赋值在自增1,假设n= 2, x = n++,则x= 2,n= 3
同理,++ n是先自增在赋值,假设n= 2, x = ++n, 则 x = 3,n = 3
apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;
apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文;
apply 、 call 、bind 三者都可以利用后续参数传参;
bind是返回对应函数,便于稍后调用;apply 、call 则是立即调用
函数调用的方法一共有 4 种
fun()
a.fun()
new fun()
call、apply
data --> Object.defineProperty --> getter/setter -->Observer -->setter被调用 -->通知变化-->watcher -->
- vm(实例初始化阶段) data内 数据(model)是一个js对象 -- copy给getter/setter
- hash 值 (带 #)
- `Vue.extend()` 构造组件对象,生成组件
- `props : ['name']` 接收父组件信息,`{propsData: {name : 'dear_mr'}}` 传递参数
- `$refs` 是引用值
进程和线程都是一个时间段的描述,是CPU工作时间段
的描述
程序-> 进程 -> CPU工作时间段
线程和进程实际上只是一件事:“执行上下文”
电脑的运行,实际就是CPU
和相关寄存器
以及RAM
之间的事情
在CPU
看来所有的任务都是一个一个的轮流
执行的
程序上下文 -> 执行环境
进程就是包括上下文切换的程序执行时间总和 = CPU加载上下文+CPU执行+CPU保存上下文
线程是共享了进程的上下文环境,的更为细小的CPU时间段
new
task 宏任务队列
:每次执行栈执行的代码就是一个宏任务(包括每次从事件队列中获取一个事件回调并放到执行栈中执行)
setTimeout
、setInterval
、setImmediate
、I/O
、UI交互事件
task->渲染->task->...
microtask 微任务队列
:可以理解是在当前 task 执行结束后立即执行的任务
Promise
、process.nextTick
、MutaionObserver
另外,请注意下Promise的polyfill与官方版本的区别:
官方版本中,是标准的microtask形式
polyfill,一般都是通过setTimeout模拟的,所以是macrotask形式
请特别注意这两点区别
注意,有一些浏览器执行结果不一样(因为它们可能把microtask当成macrotask来执行了),
但是为了简单,这里不描述一些不标准的浏览器下的场景(但记住,有些浏览器可能并不标准)
nodeType
是用来获得当前节点对象的类型
element
1attr
2text
3comments
8document
9大O表示法通常表示算法占用
cpu
的情况
O(1)
: 不管参数是多少,占用cpu
情况一值不变的,就是我们所说的“常数级的时间复杂度” O(㏒n)
: 对数级别的时间复杂度// boolean
let isDone: boolean = false;
// number
let decLiteral: number = 6;
// string
let name: string = "bob";
// 数组
let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];
PageX
: 相对于文档边缘(包含滚动条距离)
clientX/Y,X/Y
: 相对于当前页面且不包含滚动条距离 (可视区)
pageX/Y,layerX/Y,offsetX/Y
: 相对于页面且考虑滚动条
screenX/Y
: 鼠标指针相对于屏幕的坐标
offsetX/Y
: 相对于当前元素(块或行内块),除safari外不包含边框 。
sudo apt purge mysql-*
sudo rm -rf /etc/mysql/ /var/lib/mysql
sudo apt autoremove
sudo apt autoreclean
什么是Vuex?
简单理解就是统一管理和维护各个vue组件的可变化状态(你可以理解成vue组件里的某些data
)
Vuex采用和Redux类似的单向数据流的方式来管理数据。用户界面负责触发动作Action
进而改变对应状态State
,从而反映到视图View上
state
store.commit(mutationName)
是用来触发一个mutation
的方法mutation
必须是同步函数动作事件
mutation
实现的middlewares中间件处理的东西,这里主要开发时候在控制台查看一些处理日志
class Client {
constructor(serviceA: ServiceA, serviceB: ServiceB) {
// 注入器在建立Client的时候,将依赖的 Service 通过构造函数参数传递给 Client
// Client此时即可将依赖的服务保存在自身状态内:
this.serviceA = serviceA;
this.serviceB = serviceB;
}
}
use strict
var 全局声明
let 局部声明
const 常量声明
null
是一个对象undefined
不是一个值...
会开辟新的内存空间``
连接符 -->字符串拼接${}
插入变量includes
startsWith
ends
repeat()
复制Binary
Octal
Number
Math
length
-->类数组 --> Array.from
转数组Array.of
--> 字符串转数组find()
--> -->fill()
for ( of )
forEach()
filter
some
map
toString()
join()
entries()
in
Object.is()
严格相等 --> ===同值相等Object.assign()
合并对象Symbol
add()
has()
delete()
clear()
size
set()
get()
delete()
size
has
get
set
apply
--> 处理方法# 查看端口
netstat -an | grep 80
let promise = new Promise(function(resolve, reject) {
console.log('Promise');
resolve();
});
promise.then(function() {
console.log('resolved.');
});
console.log('Hi!');
// Promise
// Hi!
// resolved
Promise
新建后立即执行
,所以首先输出的是Promise
。
然后,then
方法指定的回调函数,将在当前脚本所有同步任务执行完才会执行,所以resolved最后输出
/**
* @class Sortable
* @param {HTMLElement} el
* @param {Object} [options]
*/
shim
是一个库,它将一个新的API引入到一个旧的环境中,而且仅靠旧环境中已有的手段实现polyfill
就是一个用在浏览器API上的shimA declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.