初始化

Spring源码分析笔记--AOP

冷暖自知 提交于 2020-03-05 17:19:02
核心类&方法 BeanDefinition Bean的定义信息,封装bean的基本信息,从中可以获取类名、是否是单例、是否被注入到其他bean中、是否懒加载、bean依赖的bean的名称等。 Aware 继承Aware的bean可以感知到他在容器中的一些属性,如获取bean在容器中的ID,甚至获取到容器等。 BeanPostProcessor Bean的后置处理器,可在bean的创建、初始化等阶段的前后对bean进行增强处理等。 BeanFactory 以 Factory 结尾,表示它是一个工厂类 ( 接口 ) ,用于管理 Bean 的一个工厂。在 Spring 中, BeanFactory 是 IOC 容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。 是访问容器的顶层接口,他的实现类中会有一个 MAP ,用于存储 bean 的 BeanDefinition 。 ( 与 FactoryBean 区别:实现 FactoryBean 接口也是在容器中注入 bean 的方式之一,但它不是一个普通的 bean ,而是生成指定 bean 的一个工厂 ) AbstractAutowireCapableBeanFactory :: populateBean ( .. ) DefaultListableBeanFactory 继承了

类加载时机

本小妞迷上赌 提交于 2020-03-05 15:35:34
五种会触发初始化的场景,有且只有以下五种,这五种场景中的行为称为对一个类进行主动引用 一、new、getstatic、putstatic或invokestatic 遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。 生成这4条指令的最常见的Java代码场景是 :使用new关键字 实例化对象的时候、读取或设置一个类的静态字段(被final修饰、已在编译期把结果放入常 量池的静态字段除外)的时候,以及调用一个类的静态方法的时候。 这四种命令的描述中均有 :One successful resolution of the field,the class or interface that declared the resolved field is initized if that class or interface has not already been initial. new :Create new object getstatic : get static field from class(The value of the class or – interface field is fetched and pushed onto the operand stack) putstatic

堆栈、BSS段、代码段、数据段、RO、RW、ZI等概念区分

浪子不回头ぞ 提交于 2020-03-05 13:08:03
堆栈、BSS段、代码段、数据段、RO、RW、ZI等概念区分 一 预备知识 二 程序文件中的分区 三 程序进程中的分区 四 总结 一 预备知识 在区分一个程序的堆栈、bss、text段、RO、RW、ZI等概念时,首先区分一下程序进程和程序文件,然后了解一下哈弗结构和冯诺依曼结构。 程序进程就是程序运行时的程序,程序文件是编译后生成的可执行文件,比如.bin文件等,这两个概念很好区分,特别强调一下,分开表达主要是怕读者在阅读过程中混淆了。 哈佛结构和冯诺依曼结构的主要区别就是 处理器能不能实现取指令和取数据的并发进行 。嵌入式芯片中主要是哈佛结构,PC机上是冯诺依曼结构。 经典的哈佛结构: 程序存储器和数据存储器是各自独立的存储器。处理器应该有两套总线,一套是程序存储器的数据和地址总线,一套是数据存储器的数据和地址总线。取指令和取数据能并发进行。51的程序进程的逻辑代码段放在ROM中,而变量部分则放在RAM中,取ROM中的指令和RAM中的变量是两套总线。 改进型哈佛结构: 程序存储器和数据存储器是各自独立的存储器。处理器只有一套总线,分时访问程序存储器和数据存储器,但是在处理器中有icache和dcache将程序和数据分开,所以处理器仍然可以并步执行取指令和取数据。从ARM9开始以后所有的ARM处理器内核都是改进型的哈佛结构。ARM的逻辑代码和变量都是存放在RAM中的,但是

Keras网络层之常用层Core

孤街醉人 提交于 2020-03-05 12:27:22
常用层 常用层对应于core模块,core内部定义了一系列常用的网络层,包括全连接、激活层等 Dense层 keras.layers.core.Dense(units, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None) Dense就是常用的全连接层,所实现的运算是output = activation(dot(input ,kernel) + bias ).其中activation是逐元素计算的激活函数,kernel是本层的权值矩阵,bias为偏置向量,只有当use_bias=True才会添加。 如果本层的输入数据的维度大于2,则会先被压为与kernel相匹配的大小。 #as first Layer in a sequential model: #as first Layer in a sequential model: model = Sequential() model.add(Dense(32,

10-1 Keras深入-常用层

╄→尐↘猪︶ㄣ 提交于 2020-03-05 12:26:50
常用层对应于core模块,core内部定义了一系列常用的网络层,包括全连接、激活层等 【Dense层】 1 keras.layers.core.Dense(units, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)   Dense就是常用的全连接层,所实现的运算是 output = activation(dot(input, kernel)+bias) 。   其中 activation 是逐元素计算的激活函数, kernel 是本层的权值矩阵, bias 为偏置向量,只有当 use_bias=True 才会添加。   参数 : units:大于0的整数,代表该层的 输出维度 。 activation: 激活函数 ,为预定义的激活函数名或逐元素。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x) use_bias: 布尔值, 是否使用偏置项 kernel_initializer

ios内存分配

戏子无情 提交于 2020-03-05 08:05:15
内存分区: 1)、 栈区 (stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2)、 堆区 (heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。(ios中alloc都是存放在堆中) 3)、 全局区 (静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放。注意:全局区又可分为未初始化全局区:.bss段和初始化全局区:data段。 4)、 常量区 —常量字符串就是放在这里的。 程序结束后由系统释放 5)、 代码区 —存放函数体的二进制代码。 来源: https://www.cnblogs.com/foxmin/archive/2012/10/04/2711620.html

模型-视图-提供器 模式

允我心安 提交于 2020-03-05 06:26:13
原文:http://www.tracefact.net/Software-design/Model-View-Presenter-Pattern.aspx 出处: http://msdn.microsoft.com/en-us/magazine/cc188690.aspx 引言 随着像Asp.Net和Windows窗体这样的用户界面创建技术越来越强大,让用户界面层做多于它本应做的事是很常见的。没有一个清晰的职责划分,UI层经常沦为一个包含实际上应属于程序其他层的逻辑的容器。有一个称为 模型(Model)-视图(View)-提供器(Presenter)(MVP)的设计模式,特别适合解决这个问题。为了表明我的观点,我将为Northwind数据库中的客户建一个遵循MVP模式的显示屏幕(display screen)。 为什么在UI层包含太多的逻辑是很糟糕的?在既不手动运行应用程序,也不维护丑陋的自动执行UI组件的UI运行者脚本(runner script)的情况下,位于应用程序UI层中的代码是非常难于调试的。虽然这本身就是一个很大的问题,一个更大的问题是在应用程序的公共视图之间会有大量的重复代码。当执行某一特定业务的功能在UI层的不同部分之间拷贝,通常很难找到好的可选重构方法。MVP设计模式使得将UI层中的逻辑和代码 重构为 更加易于测试的新型的、可重用的代码 更加容易。 图1

初始化CheckBoxList中哪些是选中了的

浪子不回头ぞ 提交于 2020-03-05 05:14:11
1 /// <summary> 2 /// 初始化CheckBoxList中哪些是选中了的 </summary> 3 /// <param name="checkList"> CheckBoxList </param> 4 /// <param name="selval"></param> 5 /// <param name="separator"></param> 6 public static string SetCheckBoxList(CheckBoxList checkList, string selval, string separator) 7 { 8 selval = separator + selval + separator; 9 for ( int i= 0 ; i<checkList.Items.Count; i++) 10 { 11 checkList.Items[i].Selected = false ; 12 string val = separator + checkList.Items[i].Text + separator; 13 if (selval.IndexOf(val)!=- 1 ) 14 { 15 checkList.Items[i].Selected = true ; 16 selval = selval.Replace(val

Java的运行原理

允我心安 提交于 2020-03-05 03:20:16
在 Java 中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在 Java 中,这种供虚拟机理解的代码叫做 字节码 (ByteCode)(class文件的内容) ,它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。 Java 源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。 跨平台: 话说,在北京,一般都是讲北京话的,上海,一般都是将上海话,广东,广东话... 现有一公文发出,要全国执行,该当如何?——先统一翻译成普通话。各地在将普通话版本翻译成当地的方言。 这里,北京、上海就是不同类型的机器windows,linux... 编译(javac)就是将公文翻译成普通话的过程,而编译出的.class文件,就是公文的普通话版本。 在执行的时候,各地的翻译就是jvm,负责将.class转换成本地能够理解的方言来执行。 *.jav a→ *.class →机器码 java 编译器 ( 编译 ) → 虚拟机 ( 解释执行 ) → 解释器 ( 翻译 ) →

JVM——类的加载过程

怎甘沉沦 提交于 2020-03-05 02:22:53
类的加载过程 加载过程 加载过程主要分为三个阶段:加载阶段、链接阶段、初始化阶段。 类加载子系统负责从文件系统或网络中加载class文件,class文件在文件开头有特定的文件标识。 ClassLoader只负责class文件的加载,至于它是否运行,则由(Execution Engine)执行引擎决定。 加载的类的信息存放于一块称为方法区的内存空间。除了类的信息外,方法区还存放了运行时常量池信息,可能还包括字符串字面量和数字常量。 常用工具:命令行:javap -v 类名.class,插件:jclasslib。 一、加载阶段 加载:通过一个类的全限定名获取定义此类的二进制字节流,将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构,在内存中生成一个代表这个类的java.lang.Class对象,作为方法区中这个的各种数据结构的访问入口。 加载.class文件(字节码文件开头:CA FE BA BE)的方式 从本地系统中直接加载 通过网络获取,如Web Applet 从zip压缩包中读取,成为日后jar,war格式的基础 运行时计算生成,如动态代理技术 由其他文件生成,如JSP应用 从数据库中提取.class文件,少见 从加密文件中获取 二、链接阶段 验证(Verify) 验证class文件的字节流中包含的信息是否符合当前虚拟机要求,保证被加载类的正确性,不会危害虚拟机自身安全