初始化

Scala进阶_类和对象

怎甘沉沦 提交于 2020-02-16 14:22:42
类和对象 scala是支持面向对象的,也有类和对象的概念。我们依然可以基于scala语言来开发面向对象的应用程序。 创建类和对象 用法 使用 class 来定义一个类 使用 new 来创建对象 示例 创建一个Person类,并创建它的对象 步骤 创建一个scala项目,并创建一个Object 添加main方法 创建类和对象 实现 在IDEA中创建项目,并创建一个Object(main方法必须放在Object中) 添加main方法 创建一个Person类 在main方法中创建Person类对象 参考代码 object _01ClassDemo { // 创建类 class Person{} def main(args: Array[String]): Unit = { // 创建对象 val p = new Person() println(p) } } 简写方式 用法 如果类是空的,没有任何成员,可以省略 {} 如果构造器的参数为空,可以省略 () 示例 使用简写方法重新创建Person类和对象 参考代码 object _02ClassDemo { // 创建类,省略花括号 class Person def main(args: Array[String]): Unit = { // 创建对象,省略括号 val person = new Person } } # 定义和访问成员变量

JavaScript 中的数据类型与变量

你离开我真会死。 提交于 2020-02-16 13:12:55
一、动态类型 JavaScript 是一种 弱类型 或者说 动态 语言。这意味着我们不用提前声明变量的类型(松散类型),在程序运行过程中,类型会被自动确定。也就是说我们可以使用同一个变量保存不同类型的数据,每个变量仅仅是一个用于保存值得占位符而已。 二、变量 定义变量 定义变量时要使用 var 操作符( var 是一个关键字),后跟变量名(即一个标识符): var username ; ES6 中新增了 let 和 const 关键字来代替 var ,这里我们先不做过多的讨论。 这行代码定义了一个名为 username 的变量,该变量可以用来保存任何值。这里有一点需要注意:像这样未经过初始化的变量,会保存一个特殊的值 —— undefined 。 初始化变量 我们也可以初始化变量,在定义变量的同时可以设置变量的值: var username = 'Deepspace' ; 初始化变量并不会把它标记为字符串类型,初始化的过程就是给变量赋一个值。 修改变量 因此,我们可以在修改变量值的同时修改值得类型: var username = 'Deepspace' ; username = 1 ; 有一点需要注意,用 var 操作符定义的变量将成为该变量的作用域中的局部变量。也就是说,如果在函数中使用 var 定义一个变量,那么这个变量在函数退出后就会被销毁。看个例子: function

.net系统自学笔记——数组

倖福魔咒の 提交于 2020-02-16 03:19:33
数组 1.简单数组 2.多维数组 3.锯齿数组 4.Array类 5.作为参数的数组 6.枚举 7.元组 8.结构比较 如果需 要 使 用同 一 类型的 多 个对 象,就可以 使 用集合和数组。C#用特殊的 记号声明 、 初始 化 和使用数组。 Array类 在后台 发挥作用,它为 数组中 元素的 排 序和过滤提供了几个方法。 使 用枚举器,可 以 迭 代数组中 的 所 有元素。.net4还引 入了 一个新类型 Tuple,它 用于合并不同 类型的 多 个对象。 一、简单数组 如果需要使用同一类型的多个对象,就可以使用数组。数组是一种数据结构,它可以包含同一类型的多个元素。 1.数组的声明:在声明数组时,应先定义数组中元素的类型,其后是一对方括号和一个变量名。 2.数组的初始化:声明了数组后,就必须为数组分配内存,以保存数组的所有元素。数组是引用类型,所以必须给它分配堆上的内存。为此,应使用new运算符,指定数组中元素的类型和数量来初始化数组的变量。还可以用数组初始化器为数组的每个元素赋值。数组初始化器只能在声明数组变量时使用,不能在声明数组之后使用。如果用花括号初始化数组,则还可以不指定数组的大小,因为编译器会自动统计元素的个数。 3.访问数组元素:可以使用索引器访问数组中的元素,一对方括号中间加整数如[0]。数组只支持有整型参数的索引器。通过索引器传递元素编号,就可以访问数组

C# Lazy Loading

二次信任 提交于 2020-02-16 00:12:08
C# Lazy Loading 前言 按需加载对象延迟加载实际是推迟进行创建对象,直到对其调用后才进行创建初始化,延迟(懒加载)的好处是提高系统性能,避免不必要的计算以及不必要的资源浪费。 常规有这些情况: 对象创建成本高且程序可能不会使用它。 例如,假定内存中有具有 Orders 属性的 Customer 对象,该对象包含大量 Order 对象,初始化这些对象需要数据库连接。 如果用户永远不要求显示 Orders 或在计算中使用该数据,则无需使用系统内存或计算周期来创建它。 通过使用 Lazy 来声明 Orders对象用于迟缓初始化,可以避免在不使用该对象时浪费系统资源。 对象创建成本高,且希望将其创建推迟到其他高成本操作完成后。 例如,假定程序在启动时加载多个对象实例,但是只需立即加载其中一部分。 可以通过推迟初始化不需要的对象,直到创建所需对象,提升程序的启动性能。(来源官方) 示例 创建用户类 public class User { public string Name { get; set; } public int Age { get; set; } public User() { this.Name = "Name"; this.Age = 0; } } 默认情况下,Lazy 对象是线程安全的。 也就是说,如果构造函数没有指定线程安全性的类型,该函数创建的 Lazy

【Go】数组、字符串与切片

一笑奈何 提交于 2020-02-16 00:10:59
数组、字符串与切片 Go语言中数组、字符串和切片三者是密切相关的数据结构。这三种数据类型,在底层原始数据有着相同的内存结构。虽然数组的元素可以被修改,但是数组本身的赋值和函数传参都是以整体复制的方式处理的。字符串赋值只是复制了数据地址和对应的长度,而不会导致底层数据的复制。 数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。数组的长度是数组类型的组成部分。因为数组的长度是数组类型的一个部分,不同长度或不同类型的数据组成的数组都是不同的类型,因此在Go语言中很少直接使用数组(不同长度的数组因为类型不同无法直接赋值)。和数组对应的类型是切片,切片是可以动态增长和收缩的序列,切片的功能也更加灵活,但是要理解切片的工作原理还是要先理解数组。 定义方式 var a [3]int // 定义长度为3的int型数组, 元素全部为0 var b = [...]int{1, 2, 3} // 定义长度为3的int型数组, 元素为 1, 2, 3 var c = [...]int{2: 3, 1: 2} // 定义长度为3的int型数组, 元素为 0, 2, 3 var d = [...]int{1, 2, 4: 5, 6} // 定义长度为6的int型数组, 元素为 1, 2, 0, 0, 5, 6 第一种方式是定义一个数组变量的最基本的方式,数组的长度明确指定

uboot源码分析1-启动第一阶段

穿精又带淫゛_ 提交于 2020-02-16 00:08:10
1、不简单的头文件包含 #include <config.h>:这个文件的内容其实是包含了一个头文件:#include <configs/x210_sd.h>". #include/version.h中包含了include/version_autogenerated.h,这个头文件就是配置过程中自动生成的。里面就一行内容:#define U_BOOT_VERSION "U-Boot 1.3.4" 2、启动代码的16字节头部 3、异常向量表的构建 4、用0xdeadbeef对齐填充 5、分配空间放TEXT_BASE c3e00000 6、分配空间放uboot在DDR中的物理地址 33e00000 7、设置CPU为SVC模式 8、设置 L2、 L1cache和 MMU 9、识别并暂存启动介质,因此执行完这一段代码后r3中存储了0x03,以后备用。 10、设置栈, 并调用 lowlevel_init ;目的:栈是在 SRAM中设置的,因为当前整个代码还在 SRAM中运行,此时 DDR还未被初始化还不能用 10.1lowlevel_init详解 (1)先将LR入栈 (2)检查复位状态,防止DDR再次初始化; 冷上电时 DDR是需要初始化才能用的;而热启动或者低功耗状态下的复位则不需要再次初始化 DDR。 (3) IO状态恢复 (4)关看门狗 (5) SRAM SROM相关 GPIO设置

单例模式

与世无争的帅哥 提交于 2020-02-15 16:50:23
1.饿汉式(线程安全) 1.创建私有的静态的final修饰的常量,静态的,在类加载机制的(加载, 连接,初始化 ,使用,卸载)步骤中的连接中的(验证, 准备 ,解析)中的准备阶段就会给 静态变量分配内存空间 ,但这个时候是 默认值 ,初始值是在 初始化 过程中, 新建该类对象 。 private static final 类 INSTANCE = new 类(); 2.构造方法私有,如果我们不写,默认是无参,我们需该权限为private private 类 ( ) { } 3.提供获取对象方法,这样,外部就只能通过getInstance方法获取对象,并且这个对象是final修饰的。 public 类 getInstance ( ) { return INSTANCE ; } 这个时候有人提出来了,假如我不用这个对象,那在类加载的时候依然分配内存空间,岂不是空间浪费呢?其实我想说的是,你不用它,初始化它干啥?类只有在 首次+主动使用 (主动使用: 反射,创建该类对象,调用该类静态方法或静态变量,初始化该类子类等等 )才会触发初始化。不过为了解决这个问题,仍然有方案,请跟我来~~~~~~ 2.懒汉式(线程不安全,在多线程下会new出多个对象,违背了单例原则,加锁) public class 类 { /*volatile关键字,JMM 修饰变量是变量的值在主内存里改变,主内存会告诉cpu

C++中数组和vector

丶灬走出姿态 提交于 2020-02-15 16:10:47
本文基于邓俊辉编著《数据结构(C++语言版)(第3版)》、《C++ Primer(第5版)》以及网上的相关博文而写,博主水平有限,若有不妥处,欢迎指出。 一、数组 C++中数组是一种内置的数据类型。 数组是存放类型相同的对象的容器,数组的大小确定不变,不能随意向数组中增加元素。 1、定义和初始化内置数组 (1)数组的大小不变,(a[d],d为数组的维度),数组的维度必须是一个常量表达式。定义数组的时,必须指定数组的类型和大小。 (2)初始化时,允许不指明数组的维度,不指明维度,则编译器根据数组初始值的大小推测出维度;若指定维度,则初始值的个数要小于等于维度,当小于时,不足的部分为0(其实还是等于维度)。 1 int a[]={1,2,3}; //数组a的大小为3; 2 int a[5]={1,2,3}; //等价于{1,2,3,0,0},大小为5 3 int a[5]={1,2,3,4,5,6}; //错误,初始值过多 还有一种特殊的情况:字符数组。当用字符串字面值去初始化数组时,要注意字符串字面值的后面还有一个空字符。也就是说,数组的大小要等于字面值的大小加1。 特别注意:不允许拷贝和赋值------不能将数组的内容拷贝给其他数组作为初始值,也不能用数组为其他数组赋值。 1 int a[]={1,2,3}; 2 int a2[]=a; //错误 3 a2=a; //错误 2

[c++primer][04]数组和指针

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-15 10:36:16
现代C++程序应尽量使用vector和迭代器类型,而避免使用低级的数组和指针。设计良好的程序只有在强调速度时才在类实现的内部使用数组和指针。 4.1 数组 数组的维数必须用值大于等于1的常量表达式定义。非const变量以及要到运行阶段才知道其值的const变量都不能用于定义数组的维数。 初始化 如果没有显式提供元素初值,数组元素与变量初始化规则一致。 字符串字面值包含一个额外额空字符(null)用于结束字符串 const char ch[6] = “Daniel” ; //error: Daniel is 7 elements  操作 数组下标的正确类型是size_t 4.2 指针的引入 什么是指针 指针保存的是另一个对象的地址,&操作符只能用于左值 初始化 避免使用未初始化的指针 有效的指针或者保存一个特定对象的地址,或者指向某个对象后面的另一个对象,或者是0值(0值表明指针不指向任何对象) 指针也可使用预处理器变量NULL初始化,该变量在stdlib.h中定义,其值为0 void*指针 void*可以保存任何类型对象的地址,不允许使用void*指针操纵它所指向的对象 指针和引用 引用总是指向某个对象,定义引用时没有初始化是错误的; 给引用赋值修改的是该引用所关联的对象的值,引用一经初始化,就始终指向同一特定对象 使用指针访问数组元素 数组名是指向数组第一个元素的指针 C+

Spring IOC原理学习笔记

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