初始化

深入JVM-Class装载系统

天涯浪子 提交于 2020-02-24 23:14:43
一、Class文件的装载过程 Class类型通常以文件的形式存在(当然,任何二进制流都可以是Class类型),只有被Java虚拟机装载的Class类型才能在程序中使用。系统状态Class类型可以分为加载、连接和初始化3个步骤。其中,连接又可分为验证、准备和解析3步。 1.1 类装载的条件 Class只有在必须要使用的时候才会被装载,Java虚拟机不会无条件的装载Class类型。Java虚拟机规定,一个类或接口在初次使用前,必须要进行初始化。这里指的“使用”,是指主动使用,主动使用只有下列几种情况: 创建一个类的实例,比如使用new关键字,或者通过反射、克隆、反序列化。 使用类的静态方法时,即当使用了字节码invokestatic指令。 使用类或接口的静态字段(final常量除外),比如,使用getstatic或者putstatic指令。 使用java.lang.reflect包中的方法反射类的方法时。 当初始化子类时,要求先初始化父类。 作为启动虚拟机,含义main()方法的那个类。 除了以上的情况属于主动使用,其他的情况均属于被动使用。被动使用不会引起类的初始化。 主动引用的例子: public class Parent { static{ System.out.println("Parent init"); } } public class Child extends

React 生命周期

假装没事ソ 提交于 2020-02-24 21:55:17
从vue来到了react,很多相似之处,还好,自我感觉生命周期函数就是个执行过程,生命周期函数(钩子函数)通俗的说就是在某一时刻会被自动调用执行的函数 从React生命周期官方了解 componentWillMount 在渲染前调用,在客户端也在服务端。 componentDidMount 在第一次渲染后调用,只在客户端。之后组件已经生成了对应的DOM结构,可以通过this.getDOMNode()来进行访问。 如果你想和其他JavaScript框架一起使用,可以在这个方法中调用setTimeout, setInterval或者发送AJAX请求等操作(防止异步操作阻塞UI)。 componentWillReceiveProps 在组件接收到一个新的 prop (更新后)时被调用。这个方法在初始化render时不会被调用。 shouldComponentUpdate 返回一个布尔值。在组件接收到新的props或者state时被调用。在初始化时或者使用forceUpdate时不被调用。 可以在你确认不需要更新组件时使用。 componentWillUpdate 在组件接收到新的props或者state但还没有render时被调用。在初始化时不会被调用。 componentDidUpdate 在组件完成更新后立即调用。在初始化时不会被调用。 componentWillUnmount

BOOST 之filesystem, path

旧街凉风 提交于 2020-02-24 18:54:42
目录[-] 使用 boost::filesystem 的第一个程序 清单 1. 用于确定某个文件的类型是否为 Directory 的代码 了解 Boost path 对象 清单 2. 创建 Boost path 对象的方法 清单 3. 使用本机格式初始化 path 清单 4. 使用可移植格式初始化 path path 成员函数概述 清单 5. 使用 path::iterator(begin 和 end 接口) 清单 6. 路径字符串的串联 错误处理 清单 7. Boost 中的错误处理 Boost Filesystem Library 中的函数类别 属性函数 文件系统操作函数 清单 8. Boost 中的重命名功能 实用工具 清单 9. 测试两个路径是否等效 杂项函数 清单 10. 使用 boost::basename 结束语 C++ 语言(实际上是 C++ 标准)的最常见问题之一是,缺乏定义良好的库来帮助处理文件系统查询和操作。由于这个原因,程序员不得不使用本机操作系统提供的应用程序编程接口(Application Program Interfaces,API),而这使得代码不能在平台之间移植。以下面的简单情况为例:您需要确定某个文件是否是 Directory 类型。在 Microsoft® Windows® 平台中,可以通过调用 GetAttributes 库函数(在

深入理解JAVA虚拟机JVM

不打扰是莪最后的温柔 提交于 2020-02-24 16:47:38
深入理解JAVA虚拟机JVM Java 虚拟机(Java virtual machine,JVM)是运行 Java 程序必不可少的机制。java之所以能实现一次编写到处执行,也就是因为jVM。 原理: 编译后的 Java 程序指令并不直接在硬件系统的 CPU 上执行,而是由 JVM 执行。JVM抹平了与具体平台相关的信息,使Java语言编译程序只需要生成在JVM上运行的目标字节码(.class),就可以在多种平台上不加修改地运行。Java 虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。因此实现了java平台无关性。它是 Java 程序能在多平台间进行无缝移植的可靠保证,同时也是 Java 程序的安全检验引擎(还进行安全检查)。 JVM 是 编译后的 Java 程序(.class文件)和硬件系统之间的接口 ( 编译后:javac 是收录于 JDK 中的 Java 语言编译器。该工具可以将后缀名为. java 的源文件编译为后缀名为. class 的可以运行于 Java 虚拟机的字节码。) JVM的工作结构大致如下: JVM结构浅显了解: java开发人员写好的文件,都是.java文件。如果是想要被jvm加载必须要先经过编译为字节码文件。在经过调用javac编译好后生成了java字节码文件(.class)。然后才能被jvm加载。 在生成了class文件之后

2018-2-24 牛客试题复盘

和自甴很熟 提交于 2020-02-24 14:18:00
1、使用mvc模式设计的web应用程序具有以下优点,除了? D A、可维护行强 B、可扩展性强 C、代码重复少 D、大大减少代码量 2、关于依赖注入,下列选项中说法错误的是(B) A、依赖注入能够独立开发各组件,然后根据组件间关系进行组装 B、依赖注入使组件之间相互依赖,相互制约 C、依赖注入提供使用接口编程 D、依赖注入指对象在使用时动态注入 解析: 依赖注入的动机就是减少组件之间的耦合度,使开发更为简洁。 3、下列说法正确的是( C) A、volatile,synchronized 都可以修改变量,方法以及代码块 B、volatile,synchronized 在多线程中都会存在阻塞问题 C、volatile能保证数据的可见性,但不能完全保证数据的原子性,synchronized即保证了数据的可见性也保证了原子性 D、volatile解决的是变量在多个线程之间的可见性、原子性,而sychroized解决的是多个线程之间访问资源的同步性 解析: synchronized关键字和volatile关键字比较: volatile关键字是线程同步的轻量级实现,所以volatile性能肯定比synchronized关键字要好。但是volatile关键字只能用于变量而synchronized关键字可以修饰方法以及代码块。synchronized关键字在JavaSE1

Web.xml配置详解之context-param

泪湿孤枕 提交于 2020-02-24 11:51:53
<context-param>   <param-name>contextConfigLocation</param-name>   <param-value>contextConfigLocationValue></param-value> </context-param> 作用:该元素用来声明应用范围(整个WEB项目)内的上下文初始化参数。 param-name:设定上下文的参数名称。 必须是唯一名称 param-value:设定的参数名称的值 初始化过程: 在启动Web项目时,容器(比如Tomcat)会读web.xml配置文件中的两个节点<listener>和<contex-param>。 接着容器会创建一个ServletContext(上下文),应用范围内即整个WEB项目都能使用这个上下文。 接着容器会将读取到<context-param>转化为键值对,并交给ServletContext。 容器创建<listener></listener>中的类实例,即创建监听(备注:listener定义的类可以是自定义的类但必须需要继承 ServletContextListener )。 在监听的类中会有一个 contextInitialized (ServletContextEvent event)初始化方法,在这个方法中可以通过event.getServletContext()

linux 启动过程原理哦

南笙酒味 提交于 2020-02-24 09:03:26
bios加电自检硬件设备 grub引导加载程序 当内核被加载到内存,内核阶段就开始了。 init进程是所有进程的发起者和控制者。因为在任何基于unix的系统中,它都是第一个运行的进程。 然后执行systemd初始化系统 初始化bios》〉执行启动加载器》〉载入内核》〉启动init服务》〉初始化系统systemd》》开始 来源: https://www.cnblogs.com/huhuxixi/p/11658381.html

FS4412的启动流程分析

亡梦爱人 提交于 2020-02-24 04:57:08
先了解一下FS4412开发板的硬件环境, 可以看到:   4412有8G内存,即 DDRⅢ 双速率SDRAM,可片上执行,一般为机器运行软件提供内存,掉电后数据丢失。   还有4G的eMMC,也就是Nand Flash,但是同时集成了主控芯片与接口,不可以片上执行,但掉电后数据不会丢失。   同时4412支持SD卡启动,SD也是Nand Flash的集成,一般我们会把uboot或裸机程序烧写到eMMC或SD卡上。 以下内容转自: Exynos4412启动过程分析 再看一下芯片启动框图(芯片手册里的)    从图中可以看到4412内部有64K的ROM和256K SRAM,在ROM中已经固化好了一段代码——iROM BOOT代码,上电后先运行 iROM BOOT (BL0),用于初始化SRAM,并将eMMC中256k代码(BL1)拷贝到SRAM中,进而BL1进行初始化DRAM。(在这儿,我们知道ROM掉电不会丢失数据,且CPU可以直接访问,进行取指令,但是不能直接写数据,由此应该为片内Nor Flash) 启动运行过程大概如下: 1:、硬件上电后,实现运行iROM中固化的代码,读取OM电平从而确定硬件启动模式(拨码开关:0110--eMMC启动, 1000--SD卡启动); 2、把已经设置启动存储单元代码复制到内部RAM中并跳转到RAM运行; 3、运行系统 一、iROM  

SpringBoot 系统初始化器 - ApplicationContextInitializer 三种实现方式

与世无争的帅哥 提交于 2020-02-24 04:26:56
SpringBoot 系统初始化器 - ApplicationContextInitializer 类名: ApplicationContextInitializer。 介绍: Spring容器刷新(reflash)之前执行的一个回调函数。 作用: 主要是向SpringBoot容器中注册属性。 使用方式: 继承接口自定义实现。 总结:系统初始化器就是SpringBoot预留的一个扩展点,通过这个扩展点我们可以在SpringBoot容器刷新前注册自定义的相关属性。 自定义系统初始化器的实现方式 实现方式01 具体的代码实现如下所示: 步骤01 继承 ApplicationContextInitializer 接口 步骤02 在项目的resources 目录下建立一个目录 META-INF 下再建立一个文件 spring.factories /** * 描述: 第一个初始化器 * 实现方式1 继承 ApplicationContextInitializer 接口 * * @author mh * @create 2020-02-23 12:13 */ @Order ( 1 ) public class FirstInitializer implements ApplicationContextInitializer < ConfigurableApplicationContext >

Memory Organization of DA1458x Software Platform

谁说我不能喝 提交于 2020-02-24 00:40:32
1.Overview DA1458x包含一个嵌入式的一次性可编程(OTP)存储器,用于存储蓝牙配置文件和自定义应用程序代码。Bluetooth®低能耗协议栈存储在专用ROM中。低泄漏保留RAM用于在深度睡眠模式下存储敏感数据和连接信息。内存块大小如下: ●84 kB ROM。包含Boot ROM代码和Bluetooth Low Energy协议相关的代码。 ●32 kB一次性可编程(OTP)。在DA1458x上电或复位时,主引导代码(ROM代码)检查是否对OTP存储器进行了编程,如果已编程,则将OTP内容镜像到系统RAM并执行该代码。 ●128 kB闪存(只有DA14583具有)。在DA14583上电或复位时,主引导代码(ROM代码)加载辅助Bootloader(从OTP存储器或FLASH),并且辅助Bootloader继续将FLASH映像复制到系统RAM并对其执行进行编程。 ●42 kB系统SRAM。 ●8 kB保留SRAM。 2.Memory Map BLE内核需要访问名为“ Exchange Memory”的存储空间来存储控制结构和帧缓冲区。 BLE内核地址空间到系统总线地址空间的映射是通过寄存器字段GP_CONTROL_REG [EM_MAPPING]控制的。 在SDK应用程序示例中,选择了案例23,并且寄存器的编程位于文件sdk \ platform \ arch \