初始化

Angular2 constructor VS ngOnInit

怎甘沉沦 提交于 2020-03-09 07:14:24
constructor和ngOnInit钩子有什么不同? constructor constructor(构造函数)是ES6类或TypeScript类中的特殊方法,而不是Angular的方法,主要用来做初始化操作,在进行类实例化操作是,会被自动调用。通过constructor方法并不能使我们知道Angular何时完成了组件的初始化工作。 仅显示constructor方法: import { Component } from '@angular/core'; @Component({}) class ExampleComponent { // this is called by the JavaScript engine // rather than Angular constructor(name) { console.log('Constructor initialised'); this.name = name; } } // internally calls the constructor let appCmp = new ExampleComponent('AppCmp'); console.log(appCmp.name); 运行以上代码,控制台输出结果: Constructor initialization AppCmp

Python new方法与单例模式

左心房为你撑大大i 提交于 2020-03-09 00:53:19
在网上看了很多关于 __new__() 魔法方法的教程,毫无疑问大部分都是单例模式相关,确实如此,利用 __new__() 魔法方法的特性,在 Python 中很容易实现单例模式。 在面向对象编程的语言中,很多语言都有一个构造函数,例如 Java 和 C++ ,在 Python中 也存在一个构造函数 __init__() ,不过在 python 中叫做魔法方法,在类实例化的时候初始化类成员变量。运行下面的程序将会打印 init 字符串。 class test : def __init__ ( self ) : print ( 'init' ) if __name__ == '__main__' : a = test ( ) #程序输出 #init 刚开始学习 Python 的时候我觉得在类实例化的过程中第一运行的就是 __init__() 方法,后来发现还有一个比它先运行的魔法方法 __new__() 方法,运行下面的代码可以看到确实如此。 class test : def __init__ ( self ) : print ( 'init' ) def __new__ ( cls , * args , ** kwargs ) : print ( 'new' ) if __name__ == '__main__' : a = test ( ) #程序输出 #new 但是。。。

干货 | 速速收藏:五分钟带你了解Spring IOC原理!

岁酱吖の 提交于 2020-03-08 22:34:10
spring容器高层视图 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。 Bean缓存池:HashMap实现 IOC容器介绍 Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化 Bean 并建立 Bean 之间的依赖关系。 Spring 的 IoC 容器在完成这些底层工作的基础上,还提供了 Bean 实例缓存、生命周期管理、 Bean 实例代理、事件发布、资源装载等高级服务。 BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身; ApplicationContext 面向使用 Spring 框架的开发者,几乎所有的应用场合我们都直接使用 ApplicationContext 而非底层的 BeanFactory。 BeanFactory BeanFactory体系架构: BeanDefinitionRegistry : Spring 配置文件中每一个节点元素在 Spring 容器里都通过一个 BeanDefinition 对象表示,它描述了 Bean 的配置信息。而 BeanDefinitionRegistry

Spring Cloud Zuul 初始化源码深度解析

烈酒焚心 提交于 2020-03-08 22:16:16
概述   在微服务场景的开发下,网关的重要性不言而喻。Zuul是Netflix开源的微服务网关,Spring Cloud zuul是spring对Zuul进行的整合与增强。本文主要从源码角度对其初始化的过程。 主要包含以下内容 @EnableZuulProxy和@EnableZuulServer的区别 路由配置 ZuulProperties 路由定位器 RouteLocator 与spring mvc的集成 ZuulControler和ZuulHandlerMapping Zuul的饥饿加载 zuul.ribbon.eager-load.enabled zuul的事件监听机制,动态路由的基石。ZuulRefreshListener Filter初始化 Zuul初始化总结 1.@EnableZuulProxy和@EnableZuulServer的区别  在我们使用Spring Cloud Zuul通常是在启动类上添加@EnableZuulProxy注解或@EnableZuulServer。我们查看一下俩个注解的源码 @EnableZuulProxy @EnableCircuitBreaker @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Import

Spring中对象的创建时机

China☆狼群 提交于 2020-03-08 21:39:05
Spring中对象的创建时机 单例类(也是Spring bean对象默认的scope) 单例类(singleton),会在xml配置文件第一次被Application对象读取的时候,被创建并初始化。 原型类 (prototype) 只有在第一次被取出时,或者作为被取出对象的依赖对象时(会优先于被取出对象),被创建并初始化。 又或者,做idref的引用对象时(ioc容器会取去确认这个bean存不存在,从而创建该对象) ——后来改正: idref只会对照名称,不会创建其对象 来源: https://www.cnblogs.com/woshi123/p/12444751.html

react生命周期

有些话、适合烂在心里 提交于 2020-03-08 21:00:03
1、初始化 getDefaultProps() 设置默认的props,也可以用dufaultProps设置组件的默认属性。 getInitialState() 在使用es6的class语法时是没有这个钩子函数的,可以直接在constructor中定义this.state。 此时可以访问this.props componentWillMount() 在组件初始化时调用(渲染前),以后更新都不调用,整个生命周期只调用一次 此时可以修改state。 render() componentDidMount() 渲染后调用,只调用一次。 此时可以使用this.getDOMNode()。 2、更新 componentWillReceiveProps(nextProps) 接收新的props时调用,初始化时不调用。 shouldComponentUpdate(nextProps, nextState) 接收新的props或者state时被调用。初始化时或者使用forceUpdate时不调用 需要返回一个布尔值 可以在此对比前后两个props和state是否相同,如果相同则返回false阻止更新 componentWillUpdate(nextProps, nextState) 新一轮更新前调用,在初始化时不会被调用 此时可以修改state: nextState.name = '你想要更改的值’

你必须知道的指针基础-6.内存的初始化及结构体的使用

孤者浪人 提交于 2020-03-08 20:58:55
一、内存的使用 1.1 你创建的内存区域可能是脏的   当我们创建一个内存区域的时候,内存中的数据可能是乱七八糟的(可能是其他代码用过后遗留的数据),如下面一段代码: int main(int argc, char *argv[]) { // 下面申请的20个字节的内存有可能被别人用过 char chs[20]; // 这个代码打印出来的可能就是乱码,因为printf的%s是“打印一直遇到'\0'”。 printf("%s\n",chs); return 0; }   其运行结果是如下图所示的乱码,因为printf的%s是“ 打印一直遇到'\0' ”。 1.2 解决脏内存区域的办法   那么,如何解决上面我们有可能会访问的脏内存区域呢?在C语言中,可以采用如下的两种方法:   (1)使用memset函数首先清理一下内存: void *memset(void *s, int ch, unsigned n); 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。   那么,我们可以使用memset函数来清理内存,即填充创建的这块内存区域: int main(int argc, char *argv[]) { // 下面申请的20个字节的内存有可能被别人用过 char

java 基础 --- static 本质

坚强是说给别人听的谎言 提交于 2020-03-08 20:41:20
java 基础 --- static 本质 今天遇到了 Static ,想深入了解一下 Static 的具体作用。 一, 静态成员变量和静态方法 Static 是一个用于修饰成员变量和方法的,被其修饰的成员变量/方法被称作静态成员变量/静态成员方法 ,也叫做类变量。既然是被这个关键字修饰,那么注定静态成员变量/方法与普通的成员变量/方法是有区别的。 静态与非静态的区别: 1.static 修饰的成员变量和方法,从属于类。普通变量和方法,从属于对象的。 2.静态修饰的变量/方法的生命周期和类相同,在整个应用程序执行期间都有效。普通成员变量/方法只有在类创建对象后才开始存在的,对象被销毁,他也会被销毁。 3.静态变量/方法可以使用“类名.静态成员”的形式进行调用。非静态变量/方法必须用“对象.变量”来调用。 4.静态变量是全类共享的,普通变量是每个对象单独使用的。 5.在静态方法中不可以使用 this 关键字。 6.在静态方法中不可以直接调用非静态方法 7.在 java 中规定,不能将方法体内的局部变量声明为 static。 二,静态代码块 在类中,用 static 声明的成员变量为静态成员变量,也成为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。 构造方法用于对象的初始化,静态初始化块用于类的初始化操作。在静态初始化块中,不能直接访问非 static 成员。

Java 数组

天涯浪子 提交于 2020-03-08 15:50:03
目录 数组的定义 数组的初始化 数组对象 多维数组 数组的特殊性 数组与泛型 1.数组的定义 数组只是相同类型的,用一个标识符名称封装到一起的一个对象序列或基本数据类型数据序列。 数组是通过方括号下标操作符来定义和使用的。 定义一个数组有两种格式: //第一种 int[] a; //第二种 int a[]; 2.数组的初始化 数组定义完成后,此时拥有的只是对数组的一个引用,并没有给数组对象本身分配任何空间。为了给数组创建相应的存储空间,必须写初始化表达式。对于数组,初始化动作可以出现在代码的任何地方,但是有一种特殊初始化表达式除外。 数组有三种初始化表达式: //第一种 int[] arr1 = {1,2,3}; //第二种 int[] arr3 = new int[3]; Integer[] arr2 = new Integer[3]; //第三种 int[] arr4 = new int[]{5,6,7,};//最后一个逗号是可选的(这个特性使维护长列表变得更容易?) Integer[] arr5 = new Integer[]{new Integer(12),new Integer(23),new Integer(34)}; 第一种是由一对花括号括起来的值组成,它必须在创建数组的地方出现。此种情况,存储空间的分配将由编译器负责,等价于使用new。

可移动硬盘显示没有初始化恢复文件法子

我的梦境 提交于 2020-03-08 14:45:13
问题描述: 磁盘没有初始化是因为0号扇区损坏,导致可移动磁盘分区表读取不出来,从而可移动磁盘出现磁盘没有初始化。 工具/软件:极限数据恢复软件 步骤1:程序运行后,直接双击需要恢复数据的物理盘,磁盘没有初始化需要从磁盘恢复数据。 步骤2:坐等程序扫描完成一般需要几分钟到半个小时。 步骤3:软件扫描到文件后,软件会将扫描到的分区列出来。 步骤4:勾上所有需要恢复的资料,然后点右上角的保存,《另存为》按钮,将勾上的文件复制出来。 步骤5:最后一步只需要等软件将数据复制完成就好了 。 注意事项1:想要恢复磁盘没有初始化需要注意,在数据恢复之前,不要重建新的分区。 注意事项2:磁盘没有初始化找到出来的资料需要暂时保存到其它盘里。 来源: 51CTO 作者: akdm 链接: https://blog.51cto.com/13450935/2476365