goodBlog
goodBlog copied to clipboard
我是koala, 公众号【程序员成长指北】的作者, 专注Node.js技术栈分享,从前端到Node.js再到后端数据库,帮您成为优秀的Node.js全栈工程师。和我一起进阶全栈吧!
 对象着手 在谈原型链之前,先了解对象。 所有引用类型(函数,数组,对象)都拥有__proto__属性(隐式原型) 所有函数拥有prototype属性(显式原型)(仅限函数) 原型对象:拥有prototype属性的对象,在定义函数时就被创建 prototype与__proto__两个概念 prototype:此属性只有构造函数才有,它指向的是当前构造函数的原型对象。 proto:此属性是任何对象在创建时都会有的一个属性,它指向了产生当前对象的构造函数的原型对象,由于并非标准规定属性,不要随便去更改这个属性的值,以免破坏原型链,但是可以借助这个属性来学习,所谓的原型链就是由__proto__连接而成的链。 原型链详解 在js代码中 通过对象创建(下面一段简单的代码)详细分析原型链 一段简单代码: function foo(){} foo.prototype.z=3; var obj=new foo(); obj.y=2; obj.x=1; //调用 obj.x;//1 obj.y;//2 obj.z;//3 typeof obj.toString;//'function' 'z' in obj;//true...
## css盒模型 ### 基本概念 就是来装页面上的元素的矩形区域。CSS中的盒子模型包括IE盒子模型和标准的W3C盒子模型。 - 标准盒模型  从上图可以看到标准 W3C 盒子模型的范围包括 margin、border、padding、content,并且 content 部分不包含其他部分。 - IE盒子模型  从上图可以看到IE盒子模型的范围也包括 margin、border、padding、content, 与标准W3C盒子模型不同的是: IE盒子模型的**content部分包含了 border 和 padding** 在CSS3中引入了box-sizing属性,box-sizing:content-box;表示标准的盒子模型,box-sizing:border-box表示的是IE盒子模型 最后,前面我们还提到了,box-sizing:padding-box,这个属性值的宽度包含了左右padding+width 也很好理解性记忆,包含什么,width就从什么开始算起。
BFC(Block Formatting Context),**块级格式化上下文**,是一个独立的渲染区域,让处于 BFC 内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。 - 触发条件 (以下任意一条) - float的值不为none - overflow的值不为visible - display的值为table-cell、tabble-caption和inline-block之一 - position的值不为static或则releative中的任何一个 > 在IE下, Layout,可通过`zoom:1` 触发 - .BFC布局与普通文档流布局区别 普通文档流布局: 1. 浮动的元素是不会被父级计算高度 2. 非浮动元素会覆盖浮动元素的位置 3. margin会传递给父级元素 4....
js最初设计是运行在浏览器中,单线程是为了防止DOM渲染冲突问题 比如有这样一个场景: 假设有2个线程, 当它们同时对同一个DON进行操作, 一个进行修改,而另一个进行删除, 此时就会产生冲突 所以为了避免出现这样的冲突, javascript从一诞生就是单线程. 但是呢单线程始终是一个痛点, 为了利用多核 CPU 的计算能力,HTML5 提出 Web Worker 标准,允许 JavaScript 脚本创建多个线程。但是子线程完全受主线程控制,且不得操作 DOM
## 概念 ### 关系型数据库 SQL (Structured Query Language) 数据库,指关系型数据库 - 主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源)。 ### 非关系型数据库 NoSQL(Not Only SQL)泛指非关系型数据库 - 主要代表:MongoDB,Redis,CouchDB。 ## 二者对比 ### 存储方式: SQL数据存在特定结构的表中;而 NoSQL 则更加灵活和可扩展,存储方式可以省是JSON文档、哈希表或者其他方式。 SQL通常以数据库表形式存储数据。举个栗子,存个学生借书数据:  数据表 而NoSQL存储方式比较灵活,比如使用类JSON文件存储上表中熊大的借阅数据:...
http://www.inode.club/#/node/eventLoop 输出结果 展示错了吧 /输出结果3,4 process.nextTick(() => console.log(1)); Promise.resolve().then(() => console.log(2)); process.nextTick(() => console.log(3)); Promise.resolve().then(() => console.log(4)); **//输出结果 1,3,3,4** 注意,只有前一个队列全部清空以后,才会执行下一个队列。两个队列的概念 nextTickQueue 和微队列microTaskQueue,也就是说开启异步任务也分为几种,像promise对象这种,开启之后直接进入微队列中,微队列内的就是那个任务快就那个先执行完,但是针对于队列与队列之间不同的任务,还是会有先后顺序,这个先后顺序是由队列决定的。
### 什么是闭包 > 维基百科中的概念 - 在计算机科学中,闭包(也称词法闭包或函数闭包)是指一个函数或函数的引用,与一个引用环境绑定在一起,这个引用环境是一个存储该函数每个非局部变量(也叫自由变量)的表。 - 闭包,不同于一般的函数,它允许一个函数在立即词法作用域外调用时,仍可访问非本地变量 > 学术上 - 闭包是指在 JavaScript 中,内部函数总是可以访问**其所在的**外部函数中声明的参数和变量,即使在其外部函数被返回return掉(寿命终结)了之后。 > 个人理解 - 闭包是在函数里面定义一个函数,该函数可以是匿名函数,该子函数能够读写父函数的局部变量。 ### 闭包的常见案例分析 **案例分析是从浅入深希望大家都看完!** - 案例1---基本介绍: ```javascript function A(){ var localVal=10; return localVal;...
## 提出问题: 对于一个做后台不久的我,起初做项目只是实现了功能,所谓的增删改查,和基本查询索引的建立。直到有一个面试官问我一个问题,一条sql查询语句在mysql数据库中具体是怎么执行的?我被虐了,很开心,感谢他。于是开始了深入学习mysql。本篇文章通过 > 一条sql查询语句在mysql数据库中具体是怎么执行的? 来具体讲解mysql的基础架构。 ## 讲解 ``` mysql> select * from Student where ID=1; ``` 上面一条简单的查询语句很简单,但我想好多开发者并不知道在MYSQL内部的执行过程。 #### Mysql基本架构示意图  从图中可以看出Mysql可以大体分为Server层和存储引擎层两部分。 Server层包括连接器、查询缓存、分析器、优化器、执行器等,这些涵盖了MySQL的大多数核心服务和所有的内置函数(如日期、时间、数学和加密函数等),跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。 存储引擎层负责数据的存储和提取,提供数据的读写接口。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。目前开发中最常用的存储引擎是InnoDB,它从MySQL5.5.5版本开始成为默认存储引擎,不过开发者也可以通过指定存储引擎的类型来选择别的引擎。 即使存储引擎不同,但是也会共用一个Server层,接下来对Server层中的执行流程,依次对其作用进行讲解。 #### 连接器 运行查询语句开始查询的前提是第一步先连接数据库,这时候等待你的就是连接器。连接器负责和客户端建立连接、获取权限、维持和管理连接。 常规的开发模式,客户端与服务器需要建立连接。二者在完成经典的TCP握手后,Server层连接器就要开始认证你的身份,这个时候是服务器端代码使用的用户名和密码。 连接器一些内容说明:...