上下文

Javascript内部原理

别等时光非礼了梦想. 提交于 2019-11-28 14:53:44
原文引用 大专栏 https://www.dazhuanlan.com/2019/08/26/5d6332d1a19b5/ 我们真的了解 Javascript 的内部工作原理吗? 下面几个问题可以检验一下。 Questions Q1 1234 if (!("a" in window)) { var a = 1;}alert(a); Q2 12345 var a = 1, b = function (x) { x && a(--x); };alert(a); Q3 12345 function a(x) { return x * 2;}var a;alert(a);//function a(x) {return x * 2;} 处理上下文代码 要想理解上面问题的执行结果的原因,需要先理解 Javascript 是如何处理执行上下文代码。 处理执行上下文代码分为两个阶段: 进入执行上下文 执行代码 进入执行上下文 先了解一个概念 变量对象(Variable object) ,它是一个与执行上下文有关的特殊的对象,它包括: 变量声明(var) 函数声明(FD) 函数形参在上下文中的声明 一般用 VO = { } 表示变量对象。举个例子: 12345 var a = 10;function test(x) { var b = 20;};test(30); 上述代码对应的变量对象(VO

spring-session(一)揭秘续篇

妖精的绣舞 提交于 2019-11-28 14:50:48
上一篇文章中介绍了Spring-Session的核心原理,Filter,Session,Repository等等,传送门: spring-session(一)揭秘 。 这篇继上一篇的原理逐渐深入Spring-Session中的事件机制原理的探索。众所周知,Servlet规范中有对HttpSession的事件的处理,如:HttpSessionEvent/HttpSessionIdListener/HttpSessionListener,可以查看 Package javax.servlet 在Spring-Session中也有相应的Session事件机制实现,包括Session创建/过期/删除事件。 本文主要从以下方面探索Spring-Session中事件机制 Session事件的抽象 事件的触发机制 Note: 这里的事件触发机制只介绍基于RedissSession的实现。基于内存Map实现的MapSession不支持Session事件机制。其他的Session实现这里也不做关注。 一.Session事件的抽象 先来看下Session事件抽象UML类图,整体掌握事件之间的依赖关系。 Session Event最顶层是ApplicationEvent,即Spring上下文事件对象。由此可以看出Spring-Session的事件机制是基于Spring上下文事件实现。

编码原理详解(六)--CABAC

放肆的年华 提交于 2019-11-28 14:01:45
本篇介绍一下熵编码的另外一种方式CABAC,基于上下文的自适应二进制编码,其同样是对经过ZigZag扫描后的数据从概率的角度进行再编码,但是由于CABAC编码过程中涉及到诸多的概率模型以及其他算法,由于篇幅原因,本篇只做提及,不详细展开,本篇希望从梗概的角度让大家明白CABAC是怎样的一个过程。 一、简介 CABAC编码的目的是从概率的角度再做一次压缩,编码的过程主要分为二值化,上下文建模,二进制算术编码。 二、二值化 在图像处理的世界中,所谓二值化就是将像素点的值根据一定的算法,将像素分别修改为0,或255,即获取图像的灰度图,或者通俗些讲就是图像的黑白图。而此处的“二值化”可以暂且理解为,将数值二进制化的一个过程,当然不是简单的将十进制转换为二进制。CABAC中二值化的方式主要有“一元码”,“截断一元码”,“K阶指数哥伦布编码”,“定长编码”,详细的就不展开了,不过小编决定了后续专门搞篇说这个的,嫑着急。这里简单以“一元码”简单举例说明下: “一元码”的编码方式是,对于一个非二进制的无符号整数x >= 0,在CABAC中的一元码码字用x个“1”位外再加一个“0”组成。For example, 对“8”编码,则二值化后的结果为“111111110”。辣么,如果是6呢,你可以尝试一下的哦。 经过二值化之后,CABAC就已经把待编码的语法元素按照一定的规则转换为只用“0”和“1

SpringBoot 2.0.3 源码解析

旧巷老猫 提交于 2019-11-28 13:00:53
前言 用SpringBoot也有很长一段时间了,一直是底层使用者,没有研究过其到底是怎么运行的,借此机会今天试着将源码读一下,在此记录。。。我这里使用的SpringBoot 版本是 2.0.3.RELEASE 源码解析   SpringApplication 的初始化   1.首先一个完整的SpringBoot项目一定会有个启动类,这里就是我们整个程序的入口; @SpringBootApplication public class TeachercommunitystudioApplication extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(TeachercommunitystudioApplication.class, args); }}   2.只有一行代码,调用了 SpringApplication的静态 run()方法, //调用重载run方法public static ConfigurableApplicationContext run(Class<?> primarySource, String... args) { return run(new Class[]{primarySource}, args); } /

SpringMVC源码分析3:DispatcherServlet的初始化与请求转发

旧城冷巷雨未停 提交于 2019-11-28 12:55:43
在我们第一次学Servlet编程,学java web的时候,还没有那么多框架。我们开发一个简单的功能要做的事情很简单,就是继承HttpServlet,根据需要重写一下doGet,doPost方法,跳转到我们定义好的jsp页面。Servlet类编写完之后在web.xml里注册这个Servlet类。 除此之外,没有其他了。我们启动web服务器,在浏览器中输入地址,就可以看到浏览器上输出我们写好的页面。为了更好的理解上面这个过程,你需要学习关于Servlet生命周期的三个阶段,就是所谓的“init-service-destroy”。 以上的知识,我觉得对于你理解SpringMVC的设计思想,已经足够了。SpringMVC当然可以称得上是一个复杂的框架,但是同时它又遵循Servlet世界里最简单的法则,那就是“init-service-destroy”。我们要分析SpringMVC的初始化流程,其实就是分析DispatcherServlet类的init()方法,让我们带着这种单纯的观点,打开DispatcherServlet的源码一窥究竟吧。 配置元素读取 用Eclipse IDE打开DispatcherServlet类的源码,ctrl+T看一下。 DispatcherServlet类的初始化入口方法init()定义在HttpServletBean这个父类中

Spring Context 你真的懂了吗

橙三吉。 提交于 2019-11-28 12:17:16
今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当然每个人有每个人的理解,它被理解为:上下文、容器等等。我想说的是,context 理解为上下文最为合适。为什么呢?我以一个在计算机系统的例子来解释一下。 在计算机系统中,进程执行时有进程上下文,如果进程在执行的过程中遇到了中断,CPU 会从用户态切换为内核态(当然这个过程用户进程是感知不到的,由硬件来实现的),此时进程处于的进程上下文会被切换到中断上下文中,从而可以根据中断号去执行相应的中断程序。 通过上面这个例子我们可以发现,进程在执行程序(不管是用户程序,还是内核中的中断程序)时,都会依赖一个上下文,这个上下文由多种数据结构组成,可以提供我们运行时需要的一些数据和保存运行时的一些数据。那其实 context 就可以理解对一个程序运行时所需要的一些数据结构的抽象表达呗。 抽象是个好东西,可以更方便的表达一些东西,更好的设计系统,但大家要想进步也不能停留在抽象层面,要去探索它的真正含义,真正对应的实体。有时间和大家聊一聊抽象应该怎么去理解。 2. spring context 是什么 回到 spring 中,spring 的 ioc 容器也是程序呀

Linux就该这么学10学习笔记

纵然是瞬间 提交于 2019-11-28 10:59:54
参考链接: https://www.linuxprobe.com/chapter-10.html 网站服务程序 第1步 :把光盘设备中的系统镜像挂载到/media/cdrom目录。 [root@linuxprobe ~]# mkdir -p /media/cdrom [root@linuxprobe ~]# mount /dev/cdrom /media/cdrom mount: /dev/sr0 is write-protected, mounting read-only 第2步 :使用Vim文本编辑器创建Yum仓库的配置文件 [root@linuxprobe ~]# vim /etc/yum.repos.d/rhel7.repo [rhel7] name=rhel7 baseurl=file:///media/cdrom enabled=1 gpgcheck=0 第3步 :动手安装Apache服务程序。注意,使用yum 命令 进行安装时,跟在命令后面的Apache服务的软件包名称为httpd。如果直接执行yum install apache命令,则系统会报错。 [root@linuxprobe ~]# yum install httpd Loaded plugins: langpacks, product-id, subscription-manager ……………

上下文调用模式

风格不统一 提交于 2019-11-28 10:55:06
上下文调用模式:指call,apply,bind三个方法,他们都能改变this指向. 1 call 作用1:调用函数 -- 和普通调用函数一样  fn.call(); 作用2:改变函数的this指向;     第一个参数:通常是个对象,call使函数中this指向这个对象     剩余的参数:是函数的实参     fn.call(obj,2,3); 2 apply 和call的功能一模一样     第二个参数:将函数中需要的参数作为一个数组传入     fn.apply(obj,[3,5]); 3 bind     复制一个函数,并将这个复制出来的新函数的this指向其对象参数     var fn3 = fn.bind(obj); // 给bind传入一个对象参数,将原来函数中this变成了这个obj 来源: https://www.cnblogs.com/qihang0/p/11405775.html

Spring与Web环境集成

不打扰是莪最后的温柔 提交于 2019-11-28 08:46:53
1.Spring与Web环境集成 1.1自定义监听器将Spring集成到web环境 1_需求:将spring集成到web开发环境中,将所有的bean对象创建交给spring,除了servlet,servlet可以理解为一个测试类.在servlet中获取ApplicationContext,获取对应的bean 环境搭建,这个是自己一步步取实现的,其实spring有提供简单的方法完成1.1的操作 <!--在pom文件中引入所需的依赖--> <!--Spring坐标--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.5.RELEASE</version> </dependency> <!--SpringMVC坐标--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.0.5.RELEASE</version> </dependency> <!--Servlet坐标--> <dependency> <groupId>javax.servlet</groupId>

EntityFrameworkCore - CodeFirst

烂漫一生 提交于 2019-11-28 08:33:20
添加模型 [DataContract] public class UserExtend : BaseEntity { /// <summary> /// 用户Id /// </summary> [DataMember] public long UserId { get; set; } /// <summary> /// 昵称 /// </summary> [DataMember] public long NickName { get; set; } } 添加数据上下文 public class WebDbContext : Microsoft.EntityFrameworkCore.DbContext { public WebDbContext(DbContextOptions<WebDbContext> options) : base(options) { } public DbSet<UserExtend> UserExtend { get; set; } } 引用 // Core 版本的 Ef Microsoft.EntityFrameworkCore // 用于代码迁移 Microsoft.EntityFrameworkCore.Tools Microsoft.EntityFrameworkCore.SqlServer 在 StartUp 里修改代码 // 上下文1