初始化

Java类加载全过程

烂漫一生 提交于 2020-02-01 22:42:52
类加载全过程这个基础章节的博客也是很早之前就想做个总结的了,直奔主题 (1)加载 加载JAVA编译阶段后产生.class文件,里面有各种表,各种属性和方法描述。所以第一步进行的加载阶段,就是通过一个C++的instanceKlass加载器读取.class字节码文件,并且在元空间(方法区)生成一个.class类对象,它加载时会产生一个_JAVA_MIRROR镜像对象放在堆中。 (2)验证 校验类的字节码文件是否符合JVM虚拟机规范,比如检查头部的Cafe Babe 魔数。 (3)准备 准备阶段就是给static 静态变量分配内存空间,设置默认值,在初始化阶段才附值。 如果是static final +基本类型(int,long…) ,准备阶段分配空间同时附值。因为基本类型静态常量在编译期已经确定值,省去了初始化附值多此一举操作。 如果是static final +基本引用类型(对象,数组),则分配空间,不附值。因为new创建对象和附值操作都必须是在加载完成初始化阶段后。 (4)解析 将常量池(.class里面那个constant pool )中的符号引用(一个方法,类,属性的描述)转化成为直接引用(方法,类,属性值在内存中的真是地址,一般长“@1024a129493b11001c”大概这个样子)。 (5)初始化 调用生成的构造方法(< init >()v)对该加载的类进行初始化

Apache与php解析器通信方式分析(mod_php的apache2hander模块模式与php-fpm的fastcgi管理器模式分析)

淺唱寂寞╮ 提交于 2020-02-01 21:44:27
Apache与php解析器通信方式分析(mod_php的apache2hander模块模式与php-fpm的fastcgi管理器模式分析) 在apache(Unix平台最流行的WEB服务器平台)之中调用PHP是个经久不衰的话题,目前的PHP存在PHP4和PHP5的版本,而且在apache(Unix平台最流行的WEB服务器平台)之中调用PHP还存在module(模块)方式和CGI方式,同时apache(Unix平台最流行的WEB服务器平台)还存在apache(Unix平台最流行的WEB服务器平台)1和apache(Unix平台最流行的WEB服务器平台)2两个版本.   在apache(Unix平台最流行的WEB服务器平台)之中调用PHP存在以下八种模式:   1,PHP4在apache(Unix平台最流行的WEB服务器平台)1的module模式   2,PHP4在apache(Unix平台最流行的WEB服务器平台)1的cgi模式   3,PHP5在apache(Unix平台最流行的WEB服务器平台)1的module模式   4,PHP5在apache(Unix平台最流行的WEB服务器平台)1的cgi模式   5,PHP4在apache(Unix平台最流行的WEB服务器平台)2的module模式   6,PHP4在apache(Unix平台最流行的WEB服务器平台)2的cgi模式  

Oracle Data Guard

僤鯓⒐⒋嵵緔 提交于 2020-02-01 16:36:31
DG 是 Oracle Data Guard 的简称。也就是Oracle11g的 数据卫士。 由于在工作中 Oracle 和 SQL SERVER2008 同时都需要维护管理。给我的感觉这里的 DG 其实和 Sql Server 2008的镜像实现的功能是一样的(当然更强大一些)。DG 中的物理备用库 尤其和 Sql Server 2008 的镜像实现的功能是一样的。但也有不同点:DG中的物理备用库可以在特定条件下 以只读或读写方式打开。而镜像则不可以(2012版本虽然可以读,但还是不能打开),当然 Sql Server 2008 的日志传送功能实现的 热备份库,是可以只读的。DG中的逻辑备用库既可以读又可以写(如果写的话需要闪回数据库后才能继续和主库保持同步)基于逻辑备用库的结构可以和 主库的不一样,这点Sql Server 2008 的复制订阅方式实现的从库有些类似。具体有哪些不同点,这里就不累述了,大家自己看书自通吧。 DG 使用3 中服务来管理 REDO数据的传送、REDO数据的应用、更改数据库角色。 1 、REDO 传输服务:控制从主生产库将REDO数据自动传输到一个或多个归档目的地。 2 、日志应用服务:即在备用库上应用REDO 数据,保持与主库事务同步。可以从归档redo日志文件和备用redo日志文件中应用。 3 、角色转换服务:使用切换或故障转移操作

Oracle Data Guard

限于喜欢 提交于 2020-02-01 16:36:13
DG 是 Oracle Data Guard 的简称。也就是Oracle11g的 数据卫士。 由于在工作中 Oracle和 SQL SERVER2008 同时都需要维护管理。给我的感觉这里的 DG 其实和 Sql Server 2008的镜像实现的功能是一样的(当然更强大一些)。DG 中的物理备用库 尤其和 Sql Server 2008 的镜像实现的功能是一样的。但也有不同点:DG中的物理备用库可以在特定条件下 以只读或读写方式打开。而镜像则不可以(2012版本虽然可以读,但还是不能打开),当然 Sql Server 2008 的日志传送功能实现的 热备份库,是可以只读的。DG中的逻辑备用库既可以读又可以写(如果写的话需要闪回数据库后才能继续和主库保持同步)基于逻辑备用库的结构可以和 主库的不一样,这点Sql Server 2008的复制订阅方式实现的从库有些类似。具体有哪些不同点,这里就不累述了,大家自己看书自通吧。 DG使用3中服务来管理 REDO数据的传送、REDO数据的应用、更改数据库角色。 1、REDO传输服务:控制从主生产库将REDO数据自动传输到一个或多个归档目的地。 2、日志应用服务:即在备用库上应用REDO数据,保持与主库事务同步。可以从归档redo日志文件和备用redo日志文件中应用。 3、角色转换服务:使用切换或故障转移操作,把备用库更改为主生产库

spring注解开发-IOC

此生再无相见时 提交于 2020-02-01 15:31:40
1. @Configuration, @Bean @Configuration该注解就是用来告诉spring这是配置类 @Bean该注解是用来注册一个bean。类型是返回值的类型,ID默认是用方法名作为ID的;可以在注解中指定ID,@Bean("person") ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class); //MainConfig.class是配置类 Person bean = applicationContext.getBean(Person.class); 以上注解主要是用来取代了配置文件application.xml中对bean的定义 2. @ComponentScan 该注解用于包扫描,主要是取代了下面的配置。主要扫描标记有以下注解的:@Controller、@Service、@Repository,@Component <context:component-scan base-package="com.atguigu" use-default-filters="false"></context:component-scan> 属性一:excludeFilters = Filter[]

移动端实现拖动操作

北城以北 提交于 2020-02-01 12:45:46
前言 近期有个项目需求,需要用到拖动事件。由于不需要考虑IE8等低端浏览器的兼容性, 所以想到HTML5中的 drag 事件, 但是发现移动端 android & IOS 并不支持 drag 事件。所有新事物的产生都不是偶然, 所以决定自己去实现一个页面元素的拖动。 实现页面元素的主要思路,是通过监听事件( touchstart )判断要拖动的元素并定位该元素; 然后监听移动事件( touchmove )判断手指移动的方向距离并将这些参数转换为元素的移动方向距离,通过 transform (当然也可以通过定位 top&left 等)移动元素; 当然有开始就有停下来,所以还要监听结束( touchend )事件,在结束的时候进行相应的处理,返回初始位置,或者停在结束的位置。 现在整体思路有了,然后就是一步步的实现。 源代码文件 demo (请在移动端打开或者模拟移动端打开) 手机请扫 js实现拖动操作 初始化 就像盖房子需要打地基一样,写程序实现一个功能需要初始化。 初始化主要是对传入参数处理,然后做一些基本定义。在这里实现的拖动操作, 以将页面元素拖入垃圾箱为背景来进行一系列的操作。 首先, 我们需要定义可操作的元素,即需要被拖动的元素。接下来就是对可操作元素进行操作,这里需要绑定事件,也就是touch事件,包括 touchstart/touchmove/touchend

内核初始化过程

旧时模样 提交于 2020-02-01 10:25:51
  在内核源代码的init目录中只有一个main.c文件.系统在执行完boot目录中的head.s程序后就会将执行权交给main.c,该程序包含了内核初始化的所有工作. main.c程序分析   main.c程序首先利用setup.s程序取得的系统参数设置系统的 根文件设备号 以及一些内容全局变量.这些内存变量指明了主内存的开始地址,系统所拥有的内存容量和作为告诉缓冲区内存的末端地址.如果还定义了虚拟盘(RAMDISK),则主内存将适当减少.   高速缓冲部分还要扣除被显存和ROM BIOS占用的部分.高速缓冲区是用于磁盘等块设备临时存放数据的地方,以1K(1024)字节为一个数据块单位.主内存区域的内存是由内存管理模块mm通过分页机制进行管理分配,以4K字节为一个内存页单位.内核程序可以自由访问到高速缓冲区中的数据,但需要通过mm才能使用分配到的内存页面.   然后,内核进行所有方面的硬件初始化工作.包括陷阱门,块设备,字符设备和tty,包括人工创建第一个任务(task 0).待所有初始化工作完成就设置中断允许标志,开启中断.   在整个内核完成初始化后,内核将执行权切换到用户模式,即CPU从0特权级切换到了第3特权级.然后系统第一次调用创建进程函数fork(),创建出一个用于运行init()子进程.在该进程中系统将运行控制台程序.如果控制台环境创建成功,则再生成一个子进程

类和对象

久未见 提交于 2020-02-01 10:22:46
1.构造方法是一种特殊方法, 使用关键字new实例化新对象时会被自动调用, 用于完成初始化操作. 2.this表示当前对象引用(注意不是当前对象). 可以借助 this 来访问对象的字段和方法 3.构造块:定义在类中的代码块(不加修饰符)。也叫:实例代码块。构造代码块一般用于初始化实例成员变量。 4.静态代码块,使用static定义的代码块。一般用于初始化静态成员属性。 5.toString方法 6.匿名对象 来源: CSDN 作者: star9523 链接: https://blog.csdn.net/star9523/article/details/104129277

顺序存储二叉树

我怕爱的太早我们不能终老 提交于 2020-02-01 08:46:46
顺序存储二叉树 基本说明 从数据存储来看,数组存储方式和树的存储方式可以相互转换 数组 《------》 树 要求:在遍历数组arr时,仍然可以以前序遍历,中序遍历和后序遍历的方式来完成对结点的遍历。 概念 顺序存储二叉树通常仅仅考虑完全二叉树 第n个元素的左子节点为2 * n + 1; 第n个元素的右子节点为2 * n + 2; 第n个节点的父节点为(n - 1) /2; n表示为二叉树中第几个元素(注意:编号是从0开始记的) 图示: 应用实例 八大排序算法中的堆排序,使用的就是顺序存储为叉树。 用顺序存储二叉树实现树的三种遍历 前序遍历: 思路分析: 判断树是否为空 先输出根节点, 在判定左子节点是否为空,在进行左子结点的递归输出 最后判定右子结点是否为空,在进行递归输出 没有了就return 代码实现: public void preOrder ( ) { this . preOrder ( 0 ) ; } //重载方法,是程序看起来更加干净简洁 /**\ * * @param index 标识为数组的下标 * */ public void preOrder ( int index ) { if ( arr == null || arr . length == 0 ) { //有没有数组长度为0,还不为空的数组 //经过实验发现,确实存在如此蛋疼的数组 //两种情况