初始化

C语言学习笔记(八)--数组

若如初见. 提交于 2020-03-02 06:40:39
1 数组 在程序设计过程中我们往往需要处理一批相同类型的数据,如果使用基本类型定义变量来储存,显然是不方便的,这是我们就需要使用数组了。 2 数组特点 1.数组大小必须是确定的,不能随机改变的。 2.数组的元素必须是相同类型的,不允许出现混合类型。 3 一维数组 3.1 一维数组的定义: 类型说明符 数组名 [ 常量表达式 ] ; 例如: int a[10] 数组的生命需要注意以下几个问题: 1.数组的命名规则与变量相同; 2.常量表达式代表的是数组元素的个数,也就是数组的长度; 3.数组的下标是从 0 开始的,最后一个元素的下标是数组长度减 1 ; 4.数组的定义可以和普通变量一起声明和定义 Float i,j[]; 3.2 一维数组的引用:数组名 [ 下标表达式 ]; 例如: int a[5]; a[3]=10; 其中下标表达式可以是任意类型的表达式,但值必须是非负整型的。 数组分配内存空间是连续的空间,地址从低地址到高地址。 例子代码: #include "stdio.h" main() { float score[10]; int i; printf("please input scores:\n"); for (i=0;i<10;i++) /*数组下标为0~9*/ scanf("%f",&score[i]); /*依次输入每个数组元素*/ printf("\n");

Linux模块

二次信任 提交于 2020-03-02 04:50:53
一、为什么要使用模块 由于linux使用的是整体结构,不是模块化的结构,整体结构实现的操作系统可扩展性差。linux为了扩展系统,使用了模块的技术,模块能够从系统中动态装入和卸载,这样使得linux也具有很好的可扩展性。 二、linux中哪些代码作为模块实现,哪些直接编译进内核? 当然我们是尽量把代码编译成模块,这样就可以根据需要进行链接,内核的代码量也会少很多。几乎所有的高层组件—文件系统、设备驱动程序、可执行格式、网络层等等—都可以作为模块进行编译。 然而有些代码确必须直接编译进内核。这些代码通常是对数据结构或者函数进行修改。如内核中已经定义好了的数据结构,如果要改变这个数据结构,那么只有从新编译内核了。 三、管理模块 内核主要完成管理模块的两个任务。第一个任务是确保内核的其它部分可以访问该模块的全局符号,模块还必须知道全局符号在内核及其它模块中的地址。因此,在链接模块时,一定要解决模块间的引用关系。第二个任务是记录模块的使用情况,以便再其它模块或者内核的其它部分正在使用这个模块时,不能卸载这个模块。 四、模块使用的数据结构 每个模块都用一个module描述符描述,并且链接到一个以modules变量为链表头的双向循环链表中。 module描述符: struct module { enum module_state state; //模块内部状态 struct list_head

Java数组的基本讲解

感情迁移 提交于 2020-03-02 03:40:03
由于Java数组涵盖的内容比较多,这里从个人的角度对主要的内容进行相关的讲解。 如有不足,欢迎批评指正~ 1)Java数组是动态还是静态的啊? Java语言是典型的静态语言,由此推断Java数组也是静态。何为静态,就是说Java数组在初始化的时候必须确定在内存中分配的空间的大小。 具体实现方式就是在初始化数组的时候(注意不是声明数组的时候,这两个概念别搞混了)指定数组的长度,或者指定初始化数组的内容哦。 同时需要明白数组变量并不是数组本身,数组变量是存储在栈中的,对应的数组对象是存储在堆中的。栈中的数组变量指向堆中的数组对象。 例如: package com.yonyou.test; import java.util.HashSet; import java.util.Iterator; import java.util.Set; /** * 测试类 * @author 小浩 * @创建日期 2015-3-2 */ public class Test{ public static void main(String[] args) { int[] array=new int[10];//初始化数组的时候指定类数组的长度 int[] array_new=new int[]{1,2,3};//初始化数组的时候指定了对应的相关元素 //需要注意的是这里不能再指定对应的长度了哦 /

java数组小结

非 Y 不嫁゛ 提交于 2020-03-02 03:39:37
---恢复内容开始--- 1、概述   由于java是典型的静态语言,因而java中的数组也是静态的;java数组变量是引用类型的变量,(ps:java中的引用有些许像c++和c中的指针)当我们使用java数组的时候,主要有2部分操作;分别是定义引用变量(相当于c++/c中的定义一个指针(指NULL))和实例化数组对象。   在java内存分配机制中,定义局部变量和引用变量是在相应的方法栈内存中申请一块空间;而引用变量所指向的对象(类对象、数组对象)是在堆内存中申请了内存;栈内存容易访问(直接访问),堆内存不易访问(需要借助引用变量来访问堆内存)。 2、数组初始化   java数组的初始化分为2种;分别是静态初始化和动态初始化。   静态初始化:   在定义数组的时候同时对数组对象进行初始化操作; 但是不可以对数组长度进行赋值 。   例:int []a=new int[]{1,2,3,4};     String []b=new String[]{"Kylin","shanshan"};   动态初始化:   定义数组的时候只对数组长度进行了赋值,并没有对具体的数组对象进行初始化(由系统默认初始化)   例如:int []c=new int[4];      String []d=new String[3];   对于c数组的实例化对象的值,分别是c[0]==0 c[1]==0

yii2安装与初始化-Yii2学习笔记(一)

十年热恋 提交于 2020-03-02 01:08:13
一、安装项目:   使用composer下载安装yii2 advanced安装包: composer create-project yiisoft/yii2-app-advanced advanced(自己的项目名称) 2.0.7(版本号) 二、初始化项目:   1、window:运行init.bat,linux:运行init ./init   2、运行初始化脚本init选择你的应用场景是开发环境还是生产环境,选择完成会帮你生成对应场景的配置文件。   3、配置完成后访问地址:前台/frontend/web,后台:backend/web 尊重原创,转载请保留:(Yii2高级模板安装配置) http://www.cnblogs.com/seafood/p/4067770.html 来源: https://www.cnblogs.com/seafood/p/yii-install.html

深入剖析Classloader(一)--类的主动使用与被动使用

时光总嘲笑我的痴心妄想 提交于 2020-03-01 21:28:25
原文地址: http://yhjhappy234.blog.163.com/blog/static/3163283220115573911607 我们知道 java 运行的是这样的,首先 java 编译器将我们的源代码编译成为字节码,然后由 JVM 将字节码 load 到内存中,接着我们的程序就可以创建对象了,我们知道 JVM 将字节码 load 到内存之后将将建立内存模型( JVM 的内存模型我们将在稍后阐述),那 JVM 是怎么将类 load 到内存中的呢?对了,是通过 Classloader ,今天我们就来深入探讨一下 Classloader 。 首先我们来看一段诡异的代码(一段单实例测试代码)。 package com.yhj.jvm.classloader; /** * @Description:单例初始化探究 * @Author YHJ create at 2011-6-4 下午08:31:19 * @FileName com.yhj.jvm.classloader.ClassLoaderTest.java */ class Singleton{ private static Singleton singleton=new Singleton(); private static int counter1; private static int counter2 = 0;

Java中的final,finally,finalize关键字

我的梦境 提交于 2020-03-01 20:16:57
一、final关键字 final 是一个修饰符,在java中它可以修饰类、方法、变量。一旦你将引用声明做final,你将不能改变这个引用了 ,如果你视图将变量再次初始化的话,编译器会报编译错误。final的含义在不同的场景下有细微的差别,但总体来说, 它指的是“不可变”。 final 修饰类时表明这个类不可以被继承。 final 修饰方法时表明这个方法不可以被其子类重写。 final 修饰变量时可分为局部变量、实例变量和静态变量,当 final修饰变量时,该变量的值在初始化后不能发生改变。 修饰局部变量时,该局部变量可以被一次赋值 (可以选择在初始化时赋值或在需要位置赋值,但只能选择一个地方赋值一次), 以后该变量的值不能发生改变 ; 当 final 修饰实例变量时,实例变量必须由程序员在构造器、初始化块、定义时这 3 个位置的其中之一指定初始值 ; 当 final 修饰静态变量时,静态变量必须由程序在静态初始化块、定义时这 2 个位置的其中之一指定初始值 。 finally 是异常处理语句结构的一部分,表示总会执行的代码块。 finalize 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法, 可以覆盖此方法提供垃圾收集时的其他资源回收。但实际上重写该方法进行资源回收并不安全,因为 JVM 并不保证该方法总被调用。 二、final关键字修饰引用类型

单例设计模式实现总结

三世轮回 提交于 2020-03-01 19:16:29
单例模式的总体概述 单例模式,属于创建型模式,《设计模式》一书对它做了定义:保证一个类仅有一个实例,并提供一个全局访问点。 单例模式适用于无状态的工具类、全局信息类等场景。例如日志工具类,在系统中记录日志;假设我们需要统计网站的访问次数,可以设置一个全局计数器。 单例模式的优势有 在内存里只有一个实例,减少了内存开销; 可以避免对资源的多重占用; 设置全局访问点,严格控制访问。 单例模式的研究重点大概有以下几个: 构造私有,提供静态输出接口 线程安全,确保全局唯一 延迟初始化 防止反射攻击 防止序列化破坏单例模式 多种实现方式与比较 线程安全的饿汉模式 public class HungrySingleton { private final static HungrySingleton instance = new HungrySingleton(); private HungrySingleton() { } public static HungrySingleton getInstance() { return instance; } } 也可以通过静态代码块的形式实现。实现与静态常量基本相同,只是把实例化过程放到了静态代码块中。 private final static HungrySingleton2 instance; static { instance = new

远距离混合语音识别方法的研究

我的未来我决定 提交于 2020-03-01 17:40:20
深度神经网络的基本原理 在 DNN 声学模型应用于语音识别中,较之前的浅层神经网络参数初始化的方法略有不同。早期的神经网络参数的初始化主要是随机进行初始化的,而 DNN 参数的初始化值主要是利用大量的语音数据输入生成一个具有多个隐含层的生成性模型。DNN 的基本框架图 2.3 所示。 图 2.3 表示语音数据经过 DNN 的输入层,得到的特征参数再利用深度信念网络 [39-41]进行逼近,这种训练过程称为预训练过程。在网络结构的最后一个隐含层加入 softmax 函数,从而得到输出层值,然后用初始化后的网络权重利用反向传播算法(Back Propagation,BP)对网络的权重精确的微调(fine-tuning),以便得到准确的网络权重。DBN 是通过多个受限玻尔兹曼机制的神经单元构建而成的。 基于优化阵列参数的远距离语音识别方法 远距离语音识别的方法一般是为了提高语音信号质量,也就是针对信号增强和提高信噪比这两方面。这些方法大多数情况下关注的是能够通过麦克风阵列的输出端得到一个最佳的语音信号波形,因此这些方法依据的是不同的信号准则对远距离语音进行处理,例如最大化信噪比原则和来波方向最小化失真准则。然而,在这些准则下,并没有改善对语音识别来说至关重要的特征参数,进而阵列处理后的语音信号并没有明显改善。 由于语音识别不仅是信号处理领域,同样属于模式识别领域

laravel创建服务

自闭症网瘾萝莉.ら 提交于 2020-03-01 17:12:46
laravel关于这块的教程很多, 所谓控制反转,就是把该由主类全部完成的事情改由子类去完成,这种设计思路就叫控制反转 实现控制反转有多种方式,工厂模式便是一种比较常见的模式,什么是工厂模式,也就是说父类不需要一个一个去new需要的子类,父类只需要new一次工厂类,由工厂决定子类的依赖,工厂返回类对象,父类直接调用类方法即可。 工厂模式其实已经可以满足我们目前的很多开发方式了,但是也存在一个问题,所有的模块都在工厂类中安排好了,如果有新的类,我们必须去改造工厂。 于是接口的作用就来了,接口是什么,接口是一个类,这个类只有需要实现的方法名字跟入参,并没有方法的定义,继承接口的类必须实现接口的方法才能使用。这样我们就有了更为先进的处理方式了,由接口来规范各个子类的调用,我主类只管去初始化接口就实现了我的全部工作。 class Superman{ protected $module; public function __construct(SuperModuleInterface $module) { $this->module = $module }} 于是,依赖注入的概念就出来了,我们的所有依赖,只要不是由内部生产(比如初始化、构造函数 __construct 中通过工厂方法、自行手动 new 的),而是由外部以参数或其他形式注入的,都属于 依赖注入(DI) 。是不是豁然开朗?事实上