上下文

异步 JavaScript

别说谁变了你拦得住时间么 提交于 2020-03-01 02:36:24
简评:如果你对 JavaScript 异步的原理感兴趣,这里有一篇不错的介绍。 JavaScript 同步代码是如果工作的 在介绍 JavaScript 异步执行之前先来了解一下, JavaScript 同步代码是如何执行的。 这里有两个概念需要了解: ** 执行上下文(Excution Context)** 执行上下文是一个抽象的概念,用于表示 JavaScript 的运行环境,任何代码都会有一个执行上下文。 全局代码运行在全局执行上下文,函数里的代码运行在函数执行上下文,每一个函数都有自己的执行上下文。 调用堆栈(Call Stack) 调用栈是一个具有 LIFO(后进先出)结构的栈,用于储存代码执行阶段所有的执行上下文。 因为 JavaScript 是单线程的,所以 JavaScript 只有一个单独的调用栈。 我们以下面例子介绍同步代码执行过程。 const second = () => { console.log('Hello there!'); } const first = () => { console.log('Hi there!'); second(); console.log('The End'); } first(); 创建全局上下文(由 main() 表示),并将全局上下文推到栈顶。然后依次将遇到函数执行上下文推到栈顶(如果函数中执行其他他函数

docker入门与实践之【04-使用dockerfile定制镜像】

拟墨画扇 提交于 2020-02-29 22:34:46
利用dockerfile定制镜像 Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。 以定制nginx 镜像为例,使用 Dockerfile 来定制。 在一个空白目录中,建立一个文本文件,并命名为 Dockerfile: $ mkdir mynginx $ cd mynginx $ touch Dockerfile 其内容为: FROM nginx RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html 1 FROM 指定基础镜像 所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制.FROM 就是指定基础镜像,一个 Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令。 2 RUN 执行命令 RUN 指令是用来执行命令行命令的。由于命令行的强大能力,RUN 指令在定制镜像时是最常用的指令之一。其格式有两种: shell 格式: RUN <命令> ,就像直接在命令行中输入的命令一样。刚才写的 Dockerfile 中的 RUN 指令就是这种格式。 RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index

Go 为什么这么“快”

狂风中的少年 提交于 2020-02-29 19:29:11
本文主要从 Go 调度器架构层面上介绍了 G-P-M 模型,通过该模型怎样实现少量内核线程支撑大量 Goroutine 的并发运行。以及通过 NetPoller、sysmon 等帮助 Go 程序减少线程阻塞,充分利用已有的计算资源,从而最大限度提高 Go 程序的运行效率。 本文主要介绍了 Go 程序为了实现极高的并发性能,其内部调度器的实现架构(G-P-M 模型),以及为了最大限度利用计算资源,Go 调度器是如何处理线程阻塞的场景。 怎么让我们的系统更快 随着信息技术的迅速发展,单台服务器处理能力越来越强,迫使编程模式由从前的串行模式升级到并发模型。 并发模型包含 IO 多路复用、多进程以及多线程,这几种模型都各有优劣,现代复杂的高并发架构大多是几种模型协同使用,不同场景应用不同模型,扬长避短,发挥服务器的最大性能。 而多线程,因为其轻量和易用,成为并发编程中使用频率最高的并发模型,包括后衍生的协程等其他子产品,也都基于它。 并发 ≠ 并行 并发 (concurrency) 和 并行 ( parallelism) 是不同的。 在单个 CPU 核上,线程通过时间片或者让出控制权来实现任务切换,达到 "同时" 运行多个任务的目的,这就是所谓的并发。但实际上任何时刻都只有一个任务被执行,其他任务通过某种算法来排队。 多核 CPU 可以让同一进程内的 "多个线程" 做到真正意义上的同时运行

spring beanFactory

半腔热情 提交于 2020-02-29 03:13:41
1.什么叫beanfactory? spring使用BeanFactory来实例化、配置和管理对象,但是它只是一个接口,里面有一个getBean()方法。我们一般都不直接用BeanFactory,而是用它的实现类ApplicationContext,这个类会自动解析我们配置的applicationContext.xml,然后根据我们配置的bean来new对象,将new好的对象放进一个Map中,键就是我们bean的id,值就是new的对象。 原文参考http://www.cnblogs.com/liuling/archive/2013/04/14/BeanFactory.html 2.什么叫ApplicationContext? 答:实用的Bean工厂ApplicationContext,继承BeanFactory接口 在ApplicationContext接口的众多实现类中,有3个是我们经常用到的(见表1-1),并且使用这3个实现类也基本能满足我们Java EE应用开发中的绝大部分需求。 表1-1 ApplicationContext接口的常用实现类介绍 类 名 称 功 能 描 述 ClassPathXmlApplicationContext 从类路径ClassPath中寻找指定的XML配置文件,找到并装载 完成ApplicationContext的实例化工作。例如: /

spring启动流程

自古美人都是妖i 提交于 2020-02-29 03:09:54
转载:https://www.cnblogs.com/luoluoshidafu/p/6442055.html 首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境; 其次,在web.xml中会提供有contextLoaderListener。在web容器启动时,会触发容器初始化事件,此时contextLoaderListener会监听到这个事件,其contextInitialized方法会被调用,在这个方法中,spring会初始化一个启动上下文,这个上下文被称为根上下文,即WebApplicationContext,这是一个接口类,确切的说,其实际的实现类是XmlWebApplicationContext。这个就是spring的IoC容器,其对应的Bean定义的配置由web.xml中的context-param标签指定。在这个IoC容器初始化完毕后,spring以WebApplicationContext.ROOT WEB APPLICATION CONTEXT ATTRIBUTE为属性Key,将其存储到ServletContext中,便于获取; 再次,contextLoaderListener监听器初始化完毕后,开始初始化web

spring 启动过程

别等时光非礼了梦想. 提交于 2020-02-29 03:09:34
首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境; 其次,在web.xml中会提供有contextLoaderListener。在web容器启动时,会触发容器初始化事件,此时contextLoaderListener会监听到这个事件,其contextInitialized方法会被调用,在这个方法中,spring会初始化一个启动上下文,这个上下文被称为根上下文,即WebApplicationContext,这是一个接口类,确切的说,其实际的实现类是XmlWebApplicationContext。这个就是spring的IoC容器,其对应的Bean定义的配置由web.xml中的context-param标签指定。在这个IoC容器初始化完毕后,spring以WebApplicationContext.ROOT WEB APPLICATION CONTEXT ATTRIBUTE为属性Key,将其存储到ServletContext中,便于获取; 再次,contextLoaderListener监听器初始化完毕后,开始初始化web.xml中配置的Servlet,这个servlet可以配置多个,以最常见的DispatcherServlet为例

delete分析 引用于 http://www.cnblogs.com/yuzhongwusan/archive/2012/06/14/2549879.html

点点圈 提交于 2020-02-28 23:47:18
最近重新温习JS,对delete操作符一直处于一知半解的状态,偶然发现一篇文章,对此作了非常细致深入的解释,看完有茅塞顿开的感觉,不敢独享,大致翻译如下。 原文地址: http://perfectionkills.com/understanding-delete/ P.S. 作者是PrototypeJS的开发组成员之一 ========分割线======== 在开始之前,先让我们看一段代码 Js代码 >>> var sum = function(a, b) {return a + b;} >>> var add = sum; >>> delete sum true >>> typeof sum; "undefined" 这段代码是Firebug控制台里的实际结果,初看这段代码,你觉得有什么问题?但我要说的是,删除sum应该是失败的,同时typeof sum的结果不应该是undefined,因为在Javascript里以这种方式声明的变量是无法被删除的。 那么问题出在哪里?为了回答这个问题,我们需要理解delete操作符在各种情况下的实现细节,然后再回过头来看Firebug的这个看似“诡异”的输出。 P.S 没有特殊声明的情况下,下文中所提到的Javascript都指的是ECMAScript规范。 1. 理论 delete操作符通常用来删除对象的属性: Js代码 var o = {

作用域和作用域链

≡放荡痞女 提交于 2020-02-28 21:57:38
作用域与作用域链     ① 作用域属于一个函数,一个函数产生了不一样的作用域     ② 函数名 .[[scope]] 函数的隐式属性     ③ [[scope]] 指的就是作用域,其中存储了运行期的上下文的集合,而这一集合就是作用域链     ④ 查找变量:从作用域链的顶端依次向下查找 ( 在那个函数里面查找变量,就上那个函数的作用域链的顶端依次向下查找变量 )   2. 函数的执行期上下文     ① 当函数执行的前一刻,会创建一个称为执行期上下文的内部对象 AO     ② 一个执行期上下文定义了一个函数执行时的环境(也就是函数预编译创建 AO 后下面的步骤操作),函数每次执行时对应的执行上下文都是独一无二的     ③ 多次调用一个函数会导致创建多个执行上下文,当函数执行完毕,它所产生的执行上下文会被销毁    3 . 用代码和图解说明函数执行时的作用域链和执行上下文问题     ① 代码 function a(){ function b(){ var b = 234; } var a = 123; b(); } var glob = 100; a();     ② 说明 代码执行说明 1. a被定义时,在其自己所处的环境下(全局环境)创建了一个执行期上下文(GO)将其放在 其作用域链的顶端,即0位处 2. a被执行时,会再次创建一个属于自己函数体的执行期上下文(AO

Nginx:基本概念

烈酒焚心 提交于 2020-02-28 21:04:07
基础概念——你可以了解命令(directive)与环境(context)的区别、继承模式,以及 Nginx 选择服务器区块的顺序,还有安装位置。 性能管理——提升速度的诀窍。我们将会讲解 gzip、缓存、缓冲区以及超时设置。 SSL 设置——讲解用 HTTPS 来提供内容的设置步骤。 什么是 Nginx? Nginx 最初是作为一个 Web 服务器创建的,用于解决 C10k 的问题。作为一个 Web 服务器,它可以以惊人的速度为您的数据服务。但 Nginx 不仅仅是一个 Web 服务器,你还可以将其用作反向代理,与较慢的上游服务器(如:Unicorn 或 Puma)轻松集成。你可以适当地分配流量(负载均衡器)、流媒体、动态调整图像大小、缓存内容等等。 基本的 nginx 体系结构由 master 进程和其 worker 进程组成。master 读取配置文件,并维护 worker 进程,而 worker 则会对请求进行实际处理。 基本命令 要启动 nginx,只需输入: [sudo] nginx 当你的 nginx 实例运行时,你可以通过发送相应的信号来管理它: [sudo] nginx -s signal 可用的信号: stop – 快速关闭 quit – 优雅关闭 (等待 worker 线程完成处理) reload – 重载配置文件 reopen – 重新打开日志文件

微服务和微服务架构

跟風遠走 提交于 2020-02-28 13:04:06
微服务 强调的是服务的大小,它关注的是某一个点,是具体解决某一问题/提供落地对应服务的一个服务应用, 狭义的看,可以看做Eclipse里面的一个个微服务工程/Module 微服务架构 微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务,服务之间相互协调,互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务之间采用轻量级的通信机制互相协作(HTTPPAII的RESTfull),每个服务都围绕着具体业务进行构建,并且能够独立的部署到生产环境,类生产环境等,另外,应避免统一的,集中式的服务管理机制,对具体的服务而言,应根据业务上下文,选择合适的语言、工具进行构建 本文参考资料: 尚硅谷周阳Spring Cloud讲解和翻译 , 业界大牛 马丁.福勒(Martin Fowler)发布的论文 本文若有错误请指正,互相学习,加油! 来源: CSDN 作者: 小小辉先生 链接: https://blog.csdn.net/Modesty_Boy/article/details/104551301