进程,是操作系统资源分配(CPU时间片、内存空间)的最小单位。
进程通信:每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。
内核
接口是抽象方法的集合,如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法
当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化。
JVM虚拟机执行class字节码的过程可以分为7个阶段:加载、验证、准备、解析、初始化、使用、卸载
(没事多看书,多总结,多动手。)
在Java中String类的定义是
1
public final class String implements java.io.Serializable, Comparable<String>, CharSequence {...}
由此,可知String类是不可以被继承的,因为被final修饰的类是不可以被继承的
1、事务抽象,特性:
①REQUIRED:如果当前没有事务就需要创建一个新事务,否则就加入该事务,最常用也是Spring默认设置
spring ioc的核心设计模式的思想体现,本身就是一个大的工厂,把所有的bean实例都放在了spring 容器里(大工厂),如果要使用bean就直接找spring容器就好了,自己不用创建对象。
创建和配置实例 刷新实例
创建和配置实例
刷新实例
Spring容器的启动流程如下,这是我在看源码过程中自己总结的流程图,如有错误,还望评论区指点:
接下来附上源码:
为什么是refresh方法命名,而不是init命名呢? 其实,在ApplicaitonContext建立起来之后,可以通过refresh进行重建,将原来的ac销毁,重新执行一次初始化操作,用refresh更加贴切。
为什么是refresh方法命名,而不是init命名呢?
其实,在ApplicaitonContext建立起来之后,可以通过refresh进行重建,将原来的ac销毁,重新执行一次初始化操作,用refresh更加贴切。
Bean的创建和销毁
使用 Git Shell 进入本地 Blog 文件夹,输入以下命令:
hexo n "文章题目"
命令执行完后,就会发现在Blog/source/_posts目录中多了一个文件 博文名.md,这就是我们刚才新建的博文。