实例化

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)对该加载的类进行初始化

第二章 Spring bean实例化、IOC、循环依赖笔记

久未见 提交于 2020-02-01 05:56:17
一、 Bean的实例化过程 流程图地址: https://www.processon.com/view/link/5df87156e4b0cfc88c3c18c5 org.springframework.context.support.AbstractApplicationContext#refresh方法中 /* * 这个方法是spring中最重要的方法,没有之一 , 所以这个方法一定要理解要具体看 * 1、bean实例化过程 * 2、ioc * 3、注解支持 * 4、BeanPostProcessor的执行 * 5、Aop的入口 */ // Instantiate all remaining (non-lazy-init) singletons. finishBeanFactoryInitialization(beanFactory); 1、 BeanDefinitionRegistryPostProcessor接口 Refresh().invokeBeanFactoryPostProcessors这个方法里面。 BeanDefinitionRegistryPostProcessor这个接口的调用分为三部: 1)调用实现了PriorityOrdered排序接口 2)调用实现了Ordered排序接口 3)没有实现接口的调用 这个接口的理解

百度ueditor 实例化 Cannot set property 'innerHTML' of null 完美解决方案

删除回忆录丶 提交于 2020-01-31 04:21:29
此时此刻,我正在用博客园推荐的TinyMCE编辑器写这个博客,突然想起最近在项目中使用 百度ueditor 编辑器中的一些经历.所以记录在此,与大家分享. 不得不说,百度ueditor是一款很好的在线编辑器,为开发者提供了诸多便利,你甚至可以用它来把word文档的内容按照一定的格式转换成html代码,然后再放进自己的项目中. 1.我们的项目中,用户在注册时有可能需要查看用户协议和隐私协议,而我们的文案是将这两个协议的内容放在word文档中,作为苦逼的开发人员,你需要把这些文字展示在html页面上,并且保持一定的样式,例如首行缩进,行距等等; 这里有两个解决方案: 第一种------word文档可以直接转换成html.不错,是有这个功能,但是经过本人亲测,2010版本的并不好用,但是word2003还不错. 第二种------我当时采用的方法就是利用word与notepad++协作调好文档的格式,再将调好格式的文档内容拷贝到ueditor编辑器.生成html代码,然后C V大法,扔进需要展示的html页面,在浏览器预览进行微调就可以了.至于怎么生成html代码,你可以看到博客园TinyMCE编辑器的工具栏处,有一个写有html的按钮.ueditor也如此,点击即可生成html代码, 这两种方法,请大家自行去比较哪种方便,哪种适合你..... 2.该说说今天这篇博客的主题了

Java设计模式-单例模式的7种写法详解(上)

余生颓废 提交于 2020-01-30 10:11:31
Java设计模式-单例模式的7种写法详解(上) 参照B站尚硅谷官方视频资源:https://www.bilibili.com/video/av57936239?p=33 文章目录 Java设计模式-单例模式的7种写法详解(上) 0.前言 1.饿汉式(静态常量)实现单例模式 1.1 实现步骤 1.2 具体编码 1.3 测试验证 1.4 阶段小结 2.饿汉式(静态代码块)实现单例模式 2.1 实现步骤 2.2 具体编码 2.3 测试验证 2.4 阶段小结 3.懒汉式(线程不安全)实现单例模式 3.1实现步骤 3.2具体编码 3.3测试验证 3.4阶段小结 4.懒汉式(线程安全,同步方法)实现单例模式 4.1实现步骤 4.2具体编码 4.3测试验证 4.4阶段小结 5.一种错误的写法:懒汉式(同步代码块) 5.1实现步骤 5.2具体编码 5.3测试验证 5.4阶段小结 0.前言 单例模式: 确保此类只有一个实例,并提供获取实例的方法。 作用: 可以保持在一个应用程序生命周期内,所引用对象的实例均为同一个 使用场景:例如工具类,使用了单例模式后,可避免重复创建实例造成的资源浪费。 单例模式分为以下7种: 饿汉式(静态常量) 饿汉式(静态代码块) 懒汉式(线程不安全) 懒汉式(线程安全,同步方法) 双重检查 静态内部类 枚举 也可说是5种,只是懒汉饿汉各自又有2种不同的实现方式。

Spring中Bean的作用域

こ雲淡風輕ζ 提交于 2020-01-29 04:41:16
Bean作用域 作用域描述 singleton 在每个Spring IoC容器中一个bean定义对应一个对象实例。整个容器中只有该bean的唯一实例 prototype 一个bean定义对应多个对象实例。 request 在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例, 它们依据某个bean定义创建而成。该作用域仅在基于web的Spring ApplicationContext 情形下有效。 session 在一个HTTP Session 中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext 情形下有效。 global session 在一个全局的HTTP Session 中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web的Spring ApplicationContext 情形下有效。 ApplicationContext 实现的默认行为就是在启动时将所有 singleton bean提前进行实例化。提前实例化意味着作为初始化过程的一部分, ApplicationContext 实例会创建并配置所有的 singleton bean。通常情况下这是件 好事 ,因为这样在配置中的任何错误就会即刻被发现

unittest框架

做~自己de王妃 提交于 2020-01-28 13:07:58
About unittest是Python内置的单元测试框架(模块),不仅可以完成单元测试,也适用于web自动化测试中。 unittest提供了丰富的断言方法,判断测试用例是否通过,然后生成测试结果报告。 必要的准备与注意事项 首先,我们准备这样一个目录: M:\tests\ # 我的是M盘的tests目录,所有操作都在tests目录内完成 ├─discover │ ├─son │ │ ├─test_dict.py │ │ └─__init__.py │ ├─test_list.py │ ├─test_str.py │ └─__init__.py ├─loadTestsFromTestCaseDemo │ └─loadTestsFromTestCaseDemo.py ├─case_set.py ├─myMain.py # 代码演示文件,所有演示脚本文件 ├─test_tuple.py └─__init__.py 如果你跟我的流程走, 请务必建立和理解这样的一个目录,目前这些文件都是空的,后续会一一建立,各目录内的 __init__.py 也必须建立,虽然它是空的,但是它无比重要,因为它标明它所在目录是Python的包。 case_set.py 有4个函数,分别计算加减乘除,并且代码不变: """ 用例集 """ def add(x, y): """ 两数相加 """ return

面向对象

自闭症网瘾萝莉.ら 提交于 2020-01-26 18:18:38
第六章 面向对象 规范化目录 规范化目录的优点 #1:加载速度块#2:可读性高#3:查询修改代码时都简单​ 规范化目录分析 划归固定的路径 将文件目录的固定路径划分完成​ settings.py配置文件 #1:基本存储的都是变量#2:静态路径,数据库的链接,配置,静态文件的的路径,基本不发生改变的​ src.py主逻辑函数 #主逻辑函数,核心函数:贯穿整个项目的主要功能​ common.py公共组件 #放置一些公用的函数,功能,方便与其他的函数或者业务需求,如:装饰器​ start启动文件 #单独的启动文件,将所有项目的功能单独放置一个文件中,开启项目方便,醒目​ register #用户信息,数据相关,多个文件​ logging日志文件 #记录用户的访问次数,转账,取钱,充钱等等.极了用户干了什么.​ README描述文件 #1:软件定位,软件的基本功能。#2:运行代码的方法: 安装环境、启动命令等。#3:简要的使用说明。#4:代码目录结构说明,更详细点可以说明软件的基本原理。#5:常见问题说明。​ 规范化目录sys模块路径加载 #版本一sys模块内置模块,文件运行时,sys内置模块就会将一些模块 自动 加载到内存. 内置模块. time,json pickle等等.以及当前目录的.如何引用到一个模块最本质的原因在于这个模块名称空间在不在内存.如果直接引用不到一个模块

Java SPI(Service Provider Interface)

孤街醉人 提交于 2020-01-26 13:39:43
SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, 举个例子来说,有个接口,想运行时动态的给它添加实现,你只需要添加一个实现。 当服务的提供者提供了一种接口的实现之后,需要在classpath下的META-INF/services/目录里创建一个以服务接口命名的文件,这个文件里的内容就是这个接口的具体的实现类。当其他的程序需要这个服务的时候,就可以通过查找这个jar包(一般都是以jar包做依赖)的META-INF/services/中的配置文件,配置文件中有接口的具体实现类名,可以根据这个类名进行加载实例化,就可以使用该服务了。JDK中查找服务的实现的工具类是:java.util.ServiceLoader。 SPI实例 定义接口 package org.cellphone.api; public interface DataSource { String getConnection(); } Oracle厂商实现接口 package org.cellphone.oracle; import org.cellphone.api.DataSource; public class DataSourceImpl implements

设计模式-单例模式

筅森魡賤 提交于 2020-01-25 00:17:31
定义 百度文库:单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 标准定义: Singleton保证一个类仅有一个实例,并提供一个访问它的全局访问点。 UML图 示例 (1.1)定义一个私有的静态的全局变量 public class Singleton { //定义一个私有的静态的全局变量 private static Singleton singleton; } (1.2)设置私有构造函数 public class Singleton { //定义一个私有的静态的全局变量 private static Singleton singleton; /// <summary> /// 设置私有构造函数(外部无法使用new创建实例) /// </summary> private Singleton() { } } (1.3)设置一个全局访问点,静态方法供外部调用 public class Singleton { //定义一个私有的静态的全局变量 private static Singleton singleton; /// <summary> /// 设置私有构造函数

第2章 Spring中的Bean

六眼飞鱼酱① 提交于 2020-01-24 06:53:24
2.1 Bean的配置 Bean本质是Java中的类。Spring可以被看做一个大型工厂,这个工厂的作用就是生产和管理Spring容器zho中的Bean。想在项目中使用这个工厂,就需要对Spring的配置文件进行配置。 Spring支持XML和Properties两种格式的配置文件。常用XML文件配置,该方式通过XML文件来注册并管理Bean之间的依赖关系。 XML配置文件的根元素是<beans>,包含了多个<bean>子元素,每个子元素地定义一个Bean。 <bean>元素的常用属性及其子元素 如果在Bean中未指定id和name,则Spring会把class的值当做id使用。 getBean( id/name/class ); 2.2 Bean的实例化: 2.21 构造器实例化:Spring容器通过Bean对应类中默认的无参构造方法来实例化Bean package com.itheima.instance.constructor;public class Bean1 { <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi