Spring Bean
Spring Beanbean的作用域
在Spring中可以通过配置bean标签的scope属性来指定bean的作用域范围,各取值含义参考如下表:
取值
含义
创建对象的时机
singleton(默认)
在IoC容器中,这个bean的对象始终为单实例
IoC容器初始化时
prototype
这个bean在IoC容器中有多个实例
获取bean时
多实例——每个实例地址不同
bean的生命周期Spring Bean的生命周期是从 Bean 实例化之后,即通过反射创建出对象之后,到Bean成为一个完整对象,最终存储到单例池中,这个过程被称为Spring Bean的生命周期。Spring Bean的生命周期大体上分为三个阶段:
Bean的实例化阶段: Spring框架会取出BeanDefinition的信息进行判断当前Bean的范围是否是singleton的是否不是延迟加载的,是否不是FactoryBean等,最终将一个普通的singleton的Bean通过反射进行实例化;
Bean的初始化阶段: Bean创建之后还仅仅是个”半成品”,还需要对Bean实例的属性进行填充 ...
类加载过程
类加载过程Java文件通过javac编译成class文件,这种中间码被称为字节码,然后由JVM加载字节码。
运行时,解析器将字节码解释为一行行的机器码执行,在程序运行期间,即时编译器会针对热点代码将该部分字节码编译成机器码以获得更高的执行效率。
在整个运行时解释器和即时编译器的相互配合使Java程序几乎能够达到和编译型语言一样的执行速度
把一份被javac编译过的class文件文本,通过加载生成某种形式的Class数据结构进入内存,程序可以调用这个数据结构来构造出object,这个过程是在运行时进行的,是Java动态扩展性的根基
在类加载过程中,只有加载步骤中的读取二进制流与初始化部分,能够被上层开发者,也就是大部分的Java程序员控制,而剩下的所有步骤,都是由JVM控制,其中细节由JVM的开发人员处理,对于上层开发者来说是个黑盒
加载Loading加载就是一个读取Class文件,将其转化为某种静态数据结构存储在方法区内,并在堆中生成一个便于用户调用的java.lang.Class类型的对象的过程
通过一个类的全限定名获取定义此类的二进制字节流
将这个字节流所代表的静态存储结构转化 ...
SpringMVC工作流程
SpringMVC的执行流程以及运行原理什么是MVCMVC 是 Model、View 和 Controller 的缩写,分别代表 Web 应用程序中的 3 种职责,MVC是一种软件设计规范。它将业务逻辑、数据、显示分离的方法来组织代码,降低了视图与业务逻辑之间的双向耦合
Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。也就是说控制器做了个调度员的工作。
最典型的MVC模式就是JSP+Servlet+JavaBean的模式。
什么是SpringMVC
SpringMVC是一个基于MVC模式的Web框架,是Spring框架的 ...
类加载器
类加载器的分类
JVM支持两种类型的类加载器,分别是引导类加载器(BootStrap ClassLoader)和自定义类加载器(User-defined ClassLoader)
从概念上讲,自定义类加载器一般指的是程序中由开发人员自定义的一类加载器,但是Java虚拟机规范却又没这么定义,而是将所有派生于抽象类的ClassLoader的类加载器划分为自定义类加载器
启动类加载器(引导类加载器)Bootstrap ClassLoader
这个类加载器使用C/C++语言实现的,嵌套在JVM内部
它用来加载Java的核心库(JAVA_HOME/jre/lib/rt.jar、resources.jar或sun.boot.class.path路径下的内容),用于提供JVM自身需要的类
并不继承自java.lang.ClassLoader,没有父加载器
加载扩展类和应用程序类加载器,并指定为他们的父类加载器
出于安全考虑,Bootstrap启动类加载器只加载包java、javax、sun等开头的类
扩展类加载器(Extension ClassLoade ...
Java新特性表达式
Java8新特性Lambda表达式
lambda表达式形式:参数, 箭头(->) 以及一个表达式。如果代码要完成的计算无法放在一个表达式中,就可以像写方法一样,把这些代码放在 { }中,并包含显式的 return语句
即使 lambda 表达式没有参数, 仍然要提供空括号,就像无参数方法一样: () -> { for (int i = 100;i >= 0;i ) System.out.println(i); }
无需指定 lambda 表达式的返回类型。lambda 表达式的返回类型总是会由上下文推导得出。例如,下面的表达式(String first, String second) -> first.length()- second.length()
也可以忽略其类型,由编译器推出其类型( first, second) -> first.length()- second.length()
12345678910111213141516171819202122232425262728293031323334353637publ ...
Hexo博客搭建基础教程
Node的安装
打开Node官网,下载和自己系统相匹配的Node安装程序。官网下载地址:https://nodejs.org/en/download
安装选择默认即可。安装目录安装完后,
注册Github
进入官网https://github.com/
点击Sign up进行注册
填写自己的相关信息,验证邮箱完成注册
注册完,登录之后,点击右上角(头像旁边的+),选择New repository,创建一个 <用户名>.github.io 的仓库
填写描述,添加Add a README file,点击Create repository
安装Git
在Windows上安装Git,进入官网:https://git-scm.com/downloads ,由于官网下载太慢可以通过淘宝的开源镜像下载 网址:https://registry.npmmirror.com/binary.html?path=git-for-windows/v2.36.1.windows.1/ ,下载版本更具自己的需求选择即可。
安装选择默认即可。安装目录安装完后,
在开始菜单里找到“Git Bash”,点 ...
Welcome to WereAsh's Blog
欢迎来到的WereAsh的博客主页
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment






