初始化

vue运行机制总结

不羁的心 提交于 2020-02-28 21:03:19
new Vue()运行之后,Vue调用_init函数进行初始化,初始化生命周期,事件,props,methods,data,computed,watch等 其中最重要的是通过Object.defineProperty设置setter和getter函数,用来 实现响应式(数据自动更新)和依赖收集 初始化后,调用 $mount挂载组件 -------------- 添加响应式数据 : this.$set(this.obj,'name','dongfang') //因为是在初始化时就劫持监听数据,所以初始化后添加的数据要响应式,必须通过$set方法添加数据监听 数组变异方法 : vue文档链接 当直接修改数组某一项值时,vue没法检测到,如 vm.items[1] = 'x' // 不是响应性的 vm.items.length = 2 // 不是响应性的 // Vue.set Vue.set(vm.items, indexOfItem, newValue) // Array.prototype.splice vm.items.splice(indexOfItem, 1, newValue) vue对如下数组方法进行了包装变异,调用这些方法操作后 一样能 触发视图更新 。 push() pop() shift() unshift() splice() sort() reverse() --

C语言 存储类型

折月煮酒 提交于 2020-02-28 20:22:33
C语言 存储类型 类型 作用域 生命周期 存储位置 auto变量 一对{}内 当前函数 栈区 static局部变量 一对{}内 整个程序运行期 初始化在data段,未初始化在BSS段 extern变量 整个程序 整个程序运行期 初始化在data段,未初始化在BSS段 static全局变量 当前文件 整个程序运行期 初始化在data段,未初始化在BSS段 extern函数 整个程序 整个程序运行期 代码区 static函数 当前文件 整个程序运行期 代码区 register变量 一对{}内 当前函数 运行时存储在CPU寄存器 字符串常量 当前文件 整个程序运行期 data段 内存分区 一、内存分区说明 代码区(text segment) 加载的是可执行文件代码段,所有的可执行代码都加载到代码区,这块内存是不可以在运行期间修改的。 未初始化数据区(BSS) 加载的是可执行文件BSS段,位置可以分开亦可以紧靠数据段,存储于数据段的数据(全局未初始化,静态未初始化数据)的生存周期为整个程序运行过程。 全局初始化数据区/静态数据区(data segment) 加载的是可执行文件数据段,存储于数据段(全局初始化,静态初始化数据,文字常量(只读))的数据的生存周期为整个程序运行过程。 栈区(stack) 栈是一种先进后出的内存结构,由编译器自动分配释放,存放函数的参数值、返回值、局部变量等

单例模式

痴心易碎 提交于 2020-02-28 19:51:24
这篇文章中我会用8种写法来对单例模式进行优化,以达到最完美的效果 但是说实话在平常我们进行代码编写的时候用不着那么完美 单例模式 什么是单例模式? 简单的说就是只能new出来一个实例 第一种写法 饿汉式:   优点:简单实用   缺点:不论该对象是否会被用到,都提前将对象实例化 1.首先我们创建出一个静态的不可更改的变量Instance 2.我们将该类的构造方法的权限设置为private,防止其他类new对象 3.设置该对象的get方法 1 /** 2 * 饿汉式 3 * 类加载到内存后,就实例化一个单例,JVM保证线程安全 4 * (JVM保证每一个class只会露到内存一次,那么static变量在class露到内存之后马上进行初始化,所以static变量也保证初始化这一次) 5 * 简单实用,推荐使用 6 * 唯一缺点:不管用到与否,类加载时就完成实例化 7 */ 8 public class Mgr01 { 9 private static final Mgr01 Instance = new Mgr01(); 10 11 private Mgr01(){} 12 13 public static Mgr01 getInstance(){return Instance;} 14 15 public static void main(String[] args) { 16 /*

Keil 中的Code,RO-data,RW-data,ZI-data

有些话、适合烂在心里 提交于 2020-02-28 18:43:21
Keil 中的Code,RO-data,RW-data,ZI-data 我们开发项目中,编译、链接完成后,都要看一下RAM和Flash的利用情况,尤其在有bootloader的情况下,确保自己的单片机选型能符合项目的要求。其中ARM程序的组成,是很容易混淆的。 此处所说的“ARM程序” 是指在ARM系统中正在执行的程序,而非保存在Flash中的bin映像(image)文件 ,这一点清注意区别。 一、Code,RO-data,RW-data,ZI-data所代表的意思 下图是车检器项目的APP利用情况: 图1 Code = 10956 Code 表示 程序代码部分,即指令 RO-data = 2196 Read Only 表示 程序定义的常量,如const关键字定义的常量数组或者长量(一般作为掉电后的标记),函数中的常量 RW-data = 76 Read Write 表示 已初始化的变量(全局和局部变量) ZI-data = 9908 Zero Initialize 表示 未初始化的变量(全局和局部变量) 二、查找..\Lists文件夹中Project.map文件,查看使用的 MCU 资源: 图2 1、Flash占用 图3 由上图2和图3可知,Size:0x33ac.....13228,因此flash占用如下: Code, RO-data, RW-data ...........

通过 ApplicationContext 发布 TestApplicationEvent 事件

杀马特。学长 韩版系。学妹 提交于 2020-02-28 14:07:41
Spring 提供了非常多的扩展接口,官方将这些接口称之为钩子,这些钩子会在特定的时间被回调,以此来增强 Spring 功能,众多优秀的框架也是通过扩展这些接口,来实现自身特定的功能,如 SpringBoot、mybatis 等。 1、Aware 系列接口 Aware 从字面意思理解就是“知道”、“感知”的意思,是用来获取 Spring 内部对象的接口。A ware 自身是一 个顶级接口,它有一系列子接口,在一个 Bean 中实现这些子接口并重写里面的 set 方法后,Spring 容器启动时,就会回调该 set 方法,而相应的对象会通过方法参数传递进去。我们以其中的 ApplicationContextAware 接口为例。 ApplicationContextAware 大部分 Aware 系列接口都有一个规律,它们以对象名称为前缀,获取的就是该对象,所以 ApplicationContextAware 获取的对象是 ApplicationContext 。 public interface ApplicationContextAware extends Aware { void setApplicationContext(ApplicationContext applicationContext) throws BeansException; }

一条进程的栈区、堆区、数据区和代码区在内存中的映射

蓝咒 提交于 2020-02-28 13:44:09
一条进程的栈区、堆区、数据区和代码区在内存中的映射 1>栈区:主要用来存放局部变量, 传递参数, 存放函数的返回地址。.esp 始终指向栈顶, 栈中的数据越多, esp的值越小。 2>堆区:用于存放动态分配的对象, 当你使用 malloc和new 等进行分配时,所得到的空间就在堆中。动态分配得到的内存区域附带有分配信息, 所以你  能够 free和delete它们。 3>数据区:全局,静态和常量是分配在数据区中的,数据区包括bss(未初始化数据区)和初始化数据区。 注意: 1)堆向高内存地址生长; 2)栈向低内存地址生长; 3)堆和栈相向而生,堆和栈之间有个临界点,称为stkbrk。 1、一条进程在内存中的映射 假设现在有一个程序,它的函数调用顺序如下: main(...) ->; func_1(...) ->; func_2(...) ->; func_3(...),即:主函数main调用函数func_1; 函数func_1调用函数func_2; 函数func_2调用函数func_3。 当一个程序被操作系统调入内存运行, 其对应的进程在内存中的映射如下图所示: 注意: 1>随着函数调用层数的增加,函数栈帧是一块块地向内存低地址方向延伸的; 2>随着进程中函数调用层数的减少(即各函数调用的返回),栈帧会一块块地被遗弃而向内存的高址方向回缩; 3

Spring(七)核心容器 - 钩子接口

天涯浪子 提交于 2020-02-28 09:59:23
目录 前言 1、Aware 系列接口 2、InitializingBean 3、BeanPostProcessor 4、BeanFactoryPostProcessor 5、ImportSelector 6、ImportBeanDefinitionRegistrar 7、FactoryBean 8、ApplicationListener 最后 前言 Spring 提供了非常多的扩展接口,官方将这些接口称之为钩子,这些钩子会在特定的时间被回调,以此来增强 Spring 功能,众多优秀的框架也是通过扩展这些接口,来实现自身特定的功能,如 SpringBoot、mybatis 等。 1、Aware 系列接口 Aware 从字面意思理解就是“知道”、“感知”的意思,是用来获取 Spring 内部对象的接口。Aware 自身是一个顶级接口,它有一系列子接口,在一个 Bean 中实现这些子接口并重写里面的 set 方法后,Spring 容器启动时,就会回调该 set 方法,而相应的对象会通过方法参数传递进去。我们以其中的 ApplicationContextAware 接口为例。 ApplicationContextAware 大部分 Aware 系列接口都有一个规律,它们以对象名称为前缀,获取的就是该对象,所以 ApplicationContextAware 获取的对象是

golang中map的声明与初始化

心不动则不痛 提交于 2020-02-28 09:52:46
第一种: 声明一个key是字符串,值为int的字典,这种方式的声明需要在使用之前使用make初始化 var numbers map[string]int 初始化 numbers = make(map[string]int) var numbers map[string]int numbers = make(map[string]int) numbers["one"] = 1 //赋值 numbers["ten"] = 10 //赋值 fmt.Println(numbers) 另一种: 声明并初始化 number := make(map[string]int) number := make(map[string]int) number["two"] = 2 //赋值 number["five"] = 5 //赋值 fmt.Println(number) 来源: CSDN 作者: 天马行空波 链接: https://blog.csdn.net/jiangbo721/article/details/104533693

浅谈Java中的final关键字

…衆ロ難τιáo~ 提交于 2020-02-28 07:42:47
 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。 一、final关键字的基本用法 在Java中,final关键字可以用来 修饰类、方法和变量 (包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。 1、修饰类   当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。 final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。 在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽量不要将类设计为final类。 2、修饰方法 下面这段话摘自《Java编程思想》第四版第143页:   “使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。“    因此,如果只有在想明确禁止

静态常量字符串(类成员)

白昼怎懂夜的黑 提交于 2020-02-28 06:10:01
我想要一个类的私有静态常量(在这种情况下是形状工厂)。 我想要些类似的东西。 class A { private: static const string RECTANGLE = "rectangle"; } 不幸的是,我从C ++(g ++)编译器中收到各种错误,例如: ISO C ++禁止初始化成员“ RECTANGLE” 非整数类型'std :: string'的静态数据成员的无效的类内初始化 错误:将“ RECTANGLE”设为静态 这告诉我,这种成员设计不符合该标准。 您如何在没有使用#define指令的情况下拥有私有文字常量(或也许是公共的)(我想避免数据全局性的丑陋!) 任何帮助表示赞赏。 #1楼 您必须在类定义之外定义静态成员,然后在其中提供初始化程序。 第一 // In a header file (if it is in a header file in your case) class A { private: static const string RECTANGLE; }; 然后 // In one of the implementation files const string A::RECTANGLE = "rectangle"; 您最初尝试使用的语法(类定义内的初始化程序)仅适用于整数和枚举类型。 从C ++ 17开始,您还有另一个选择