初始化

C#中ref和out的区别

荒凉一梦 提交于 2020-02-29 19:43:13
方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。 当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。 当希望方法返回多个值时,声明 out 方法非常有用。 使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。 若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。 不必初始化作为 out 参数传递的变量。然而,必须在方法返回之前为 out 参数赋值。 属性不是变量,不能作为 out 参数传递。 方法参数上的 ref 方法参数关键字使方法引用传递到方法的同一个变量。 当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。 若要使用 ref 参数,必须将参数作为 ref 参数显式传递到方法。 ref 参数的值被传递到 ref 参数。 传递到 ref 参数的参数必须最先初始化。 将此方法与 out 参数相比,后者的参数在传递到 out 参数之前不必显式初始化。 属性不是变量,不能作为 ref 参数传递。 两者都是按地址传递的,使用后都将改变原来的数值。 ref可以把参数的数值传递进函数,但是out是要把参数清空 就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。 两个的区别:ref是有进有出

spring-mvc源码阅读笔记

爱⌒轻易说出口 提交于 2020-02-29 19:37:13
简要的做一些spring-mvc部分的源码学习笔记 Spring-mvc做的工作主要是俩大方面吧:一个是初始化一个ioc容器,一个是mvc部分的控制和视图模块的实现。 先说下ioc容器的初始化部分:ioc的初始化主要在俩个地方,一个是contextLoadListener里,另一个在DispatcherServlet里。 contextLoadListener: 在contextLoadListener里初始化的ioc容器是整个web项目里的一个父容器。整个初始化的过程也比较简单,首先是实例化一个context,具体是哪个context类呢,我们可以在web.xml的配置里指定,不过我们一般也不会指定这个参数,所以就直接实例化了一个默认的context-XmlWebApplicationContext。实例化以后,就开始加载我们配置文件里的那些bean。配置文件的位置我们一般都在web.xml里进行了配置。具体的加载的过程都在refresh()方法里。 这refresh方法里我们一般比较关心的是不同类型的bean的注册的过程还有实例化的过程。具体的注册过程就不再说了。 在注册完成后,会首先实例化一些ioc关心的bean,比如各种processor,还有一些特定类型的bean,具体可以细看下代码。然后会把实例化后的一些在ioc容器里有特定功能的bean进行注册

linux 系统引导过程及引导修复

微笑、不失礼 提交于 2020-02-29 16:46:32
系统引导过程: 第一步:通电 第二步:bios初始化 1.对硬件检测 2.初始化硬件时钟 第三步:磁盘引导 1. mbr=主引导记录=0磁道1扇区446字节(磁道:磁头转一周的轨迹) 2.作用: 记录grub2文件的位置,当mbr数据丢失系统会因为找不到启动分区而停止启动。 3.问题模拟: (1)使用 fdisk -l 指令查看硬盘以及分区信息 系统磁盘:/dev/nvme0n1(*所在的分区对应的设备上有mbr) (2)使用 dd if=/dev/zero of=/dev/nvme0n1 bs=446 count=1 指令清空/dev/nvme0n1上的mbr数据。注意446字节后面的64个字节是分区表,分区表一经损坏后,你就要知道设备开始的块和结束的块,所以一般分区表是备份的。 (3)重启 注意要从硬盘启动,不要使用镜像。 重新开机,发现启动失败。 4.恢复: (1)设置使用光盘,并首先从光盘启动。 (2)选择Troubleshooting 选择第二个选项,进入系统挽救模式。 注意这个挽救模式使用的是光盘里的资源,而不是磁盘里的数据,它可以将磁盘里的系统挂载到光盘里的挽救环境中的/mnt/sysimage。1)表示继续,2)表示只读打开我们的系统,3)表示不挂载系统,直接进入挽救的shell,4)表示重启。 选择1) (3)使用 chroot /mnt/sysimage 指令

Java构造器

↘锁芯ラ 提交于 2020-02-29 15:59:26
Java的构造器并不是函数,所以他并不能被继承,这在我们extends的时候写子类的构造器是比较的常见,即使子类构造器参数和父类的完全一样,我们也要写super就是因为这个原因。 构造器的修饰符比较的有限,仅仅只有public private protected这三个,其他的例如任何修饰符都不能对其使用,也就是说构造器不允许被成名成抽象、同步、静态等等访问限制以外的形式。 因为构造器不是函数,所以它是没有返回值的,也不允许有返回值。但是这里要说明一下,构造器中允许存在return语句,但是return什么都不返回,如果你指定了返回值,虽然编译器不会报出任何错误,但是JVM会认为他是一个与构造器同名的函数罢了,这样就会出现一些莫名其妙的无法找到构造器的错误,这里是要加倍注意的。 Java在构造实例时的顺序 1、分配对象空间,并将对象中成员初始化为0或者空,Java不允许用户操纵一个不定值的对象。 2、执行属性值的显式初始化 3、执行构造器 4、将变量关联到堆中的对象上。 this() super()是你如果想用传入当前构造器中的参数或者构造器中的数据调用其他构造器或者控制父类构造器时使用的,在一个构造器中你只能使用this()或者super()之中的一个,而且调用的位置只能在构造器的第一行, 在子类中如果你希望调用父类的构造器来初始化父类的部分,那就用合适的参数来调用super()

类初始化顺序

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-29 15:23:31
父类静态代码块 ( java虚拟机加载类时,就会执行该块代码,故只执行一次) 子类静态代码块 ( java虚拟机加载类时,就会执行该块代码,故只执行一次) 父类成员变量初始化 父类普通代码块(每次new,每次执行 ) 父类构造函数(每次new,每次执行) 子类成员变量初始化 子类普通代码块(每次new,每次执行 ) 子类构造函数(每次new,每次执行) 来源: CSDN 作者: xxx。。。 链接: https://blog.csdn.net/weixin_43975333/article/details/104572699

父类与子类的初始化顺序

孤者浪人 提交于 2020-02-29 14:04:15
1. 构造器没有参数 创建爷爷类 public class GrandFather { public GrandFather ( ) { System . out . println ( "爷爷" ) ; } } 创建父亲类 public class Father extends GrandFather { public Father ( ) { System . out . println ( "爸爸" ) ; } } 创建A类 创建儿子类 public class A { public A ( ) { System . out . println ( "A" ) ; } } public class Son extends Father { public Son ( ) { System . out . println ( "儿子" ) ; } A a = new A ( ) ; public static void main ( String [ ] args ) { new Son ( ) ; } } 运行结果: 爷爷 爸爸 A 儿子 结论: 构造过程是从父类“向外”扩散的,所以父类在子类构造器可以访问它之前,就已经完成了初始化,即使没有Son类的构造器,编译器也会 默认合成一个构造器 ,然后调用父类的构造器。 虽然Son的构造方法在new A()之前

2020-02-29

流过昼夜 提交于 2020-02-29 13:44:48
JAVA 类和对象 构造方法 定义了一个学生的类 Student,包括成员变量“学号” 、 “班号” 、 “姓名” 、 “性别” 、 “年龄” , 成员方法: “获得学号” 、 “获得班号” 、 “获得性别” 、 “获得姓名” 、 “获得年龄” 。 . 请为 Student类定义构造函数初始化所有的成员变量。增加一个方法 public String toString() 把 Student类对象的所有信息组合成一个字符串。 代码 来源: CSDN 作者: xiaobaixl 链接: https://blog.csdn.net/xiaobaixl/article/details/104571789

java的构造函数和构造代码块

南笙酒味 提交于 2020-02-29 13:31:56
一:构造方法 Java当中有两种函数:构造函数和普通函数(实例函数)。 构造函数的特点: 构造函数的函数名字与类名相同 构造函数不可以定义返回值 构造函数不可以写return语句 每个类默认有一个无参数构造函数 构造函数可以重载但不能重写 构造函数的作用: 给对象进行初始化 注意 : 虽然每个类都有一个默认的不带参数的构造方法,但是我们重写了这个类的构造方法之后,而又没有不带参数的构造方法, 此时程序就会报错,不能通过编译。 如下:不带参数的Person()构造方法被注释掉之后就会报错。 public class Person { private String name;//无参构造方法被注释掉之后会报错。 /* Person(){ System.out.println("I'm a Person constructor."); } */ Person(String name){ System.out.println("I'm a overloaded constructor."); } } class PersonTest{ public static void main(String[] args) { Person person=new Person();//这句会报错,因为找不到不带参数的构造方法 } } 二:构造代码块 作用:给对象初始化用 对象已建立就运行

Google Java编程风格指南

那年仲夏 提交于 2020-02-29 13:17:55
作者:Hawstein 出处: http://hawstein.com/posts/google-java-style.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。 前言 这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。 与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见。 1.1 术语说明 在本文档中,除非另有说明: 术语class可表示一个普通类,枚举类,接口或是annotation类型( @interface ) 术语comment只用来指代实现的注释(implementation comments),我们不使用“documentation comments”一词,而是用Javadoc。 其他的术语说明会偶尔在后面的文档出现。 1.2 指南说明 本文档中的示例代码并不作为规范。也就是说,虽然示例代码是遵循Google编程风格,但并不意味着这是展现这些代码的唯一方式。 示例中的格式选择不应该被强制定为规则。

wpa_supplicant软件架构分析

三世轮回 提交于 2020-02-29 12:33:44
struct socket 数据结构 interface network callback 目录 (?) [+] 启动命令 wpa_supplicant 初始化流程 main函数 wpa_supplicant_init函数 wpa_supplicant_add_iface函数 wpa_supplicant_run函数 Wpa_supplicant提供的接口 上行接口 Dbus接口 Unix domain socket 接口 下行接口 Control interface commands 1. 启动命令 wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下: wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/wifi/wpa_supplicant.conf -f/data/wifi/wpa_log.txt wpa_supplicant 对于启动命令带的参数,用了两个数据结构来保存, 一个是 wpa_params, 另一个是 wpa_interface. 这主要是考虑到 wpa_supplicant 是可以同时支持多个网络接口的。 wpa_params 数据结构主要记录与网络接口无关的一些参数设置。 而每一个网络接口就用一个 wpa_interface 数据结构来记录。