- 浏览: 98819 次
- 性别:
- 来自: 杭州
最新评论
-
ddnzero:
学习了 ,今天刚看见这框架就来看看是什么。看来Spring D ...
QueryDSL学习笔记 -
love398146779:
分析的不错,收了。
多进程log4j日志丢失问题分析 -
diecui1202:
Attach Listener这个应该是HotSpot的动态添 ...
JVM线程知多少 -
diecui1202:
janeky 写道写得很好,谢谢分享!希望对你有帮助~
Java虚拟机学习笔记(三)Java虚拟机 -
diecui1202:
weilJava 写道昨天被问到了多进程读写文件的问题一点思路 ...
多进程log4j日志丢失问题分析
文章列表
Context代表一个Web应用,它运行在某个指定的虚拟主机(Host)上;每个Web应用都是一个WAR文件,或是一个包含WAR解压后的文件的目录;
Connector组件接收到http请求后,通过将请求URI的最长可能前缀与每个Context的path进行匹配,然后选择相应的Web应用来处理这个http请求。之后,Context会根据web application deployment descriptor文件中定义的servlet映射,会选择一个正确的Servlet来处理请求。Servlet映射必须定义在该Web应用目录层次结构中的/WEB-INF/web.xml中。 一、几个重要的概 ...
一、背景:后台有很多任务,每个任务都是一个main函数(JVM或进程),但是所有的任务都加载同一个log4j.xml文件,即往同一份文件中输出日志。
二、原因追踪:
在 log4j 的 DailyRollingFileAppender 类中:
void rollOver() throws IOE ...
进程管理-x86系统:
进程结构:<include/linux/sched.h>-struct task_struct
thread_info:<arch/x86/include/asm/thread_info.h>-struct thread_info
thread_union:<include/linux/sched.h>
current_thread_info:<arch/x86/include/asm/thread_info.h>
current宏:<include/asm-generic/current.h>
...
进程的概念
进程就是处于执行期的程序;
包含:可执行程序代码(代码段text section),打开的文件、挂起的信号、内核内部数据、处理器状态、地址空间及一个或多个执行线程、存放全局变量的数据段(data section)等;
执行线程即线程,是在进程中活动的对象;每个线程都拥有一个独立的程序计数器、进程栈和一组进程寄存器;
内核调用的对象是线程,而不是进程;在传统的Unix系统中,一个进程只包含一个线程;但现在多线程程序已经司空见惯了;而在Linux中,线程只不过是一种特殊的进程;
创建进程
进程在它被创建的时候开始存活;
通过fork()系统调用复制一个现有进程来 ...
编译内核:
在编译内核之前,必须配置它;
配置的选项以CONFIG_FEATURE形式表示,如对称多处理器(SMP)的配置选项为:CONFIG_SMP=y/n;y表示启用,n表示不起作用;
make config:该工具会挨个遍历所有配置项,要求用户选择yes,no或是module;
make menuconfig:基于X11的图形工具;
make xconfig:基于gtk+图形工具;
make gconfig:
make defconfig:创建一个默认配置;
配置文件存放在代码树根目录的.config文件中,可以直接修改或用它来配置新的代码树,此时需要验证和更新配置:m ...
三、从容器中取得bean
1、前面体会到了一点,那就是解析bean的职责分工;在这里,这个特点又有充分的体现;
2、如何取得bean?
当应用程序通过beanFactory.getBean("simpleBean")从容器中取得bean实例时,处理该请求的是AbstractBeanFactory中的以下方法:
protected Object doGetBean(
final String name, final Class requiredType, final Object[] args, boolean typeCheckOnly) ...
二、注册的具体过程
1、职责类
由DefaultListableBeanFactory来完成,该接口实现了ListableBeanFactory和BeanDefinitionRegistry接口;
2、源码解读
前一节中谈到,生成BeanDefinition后,由
BeanDefinitionReaderUtils.registerBeanDefinition()来完成向容 ...
一、Bean的解析(以XmlBeanFactory为例来说明)
1、构造级联容器
AbstractBeanFactory.java
public void setParentBeanFactory(BeanFactory parentBeanFactory) {
// 如果当前容器已经指定了父容器,且新的父容器与当前的父容器不相同,则出错了;
if (this.parentBeanFactory != null && this.parentBeanFactory != parentBeanFactory) {
throw new IllegalS ...
一、初始化
// 1. 资源
Resource res = new ClassPathResource("beans.xml");
// 2. 初始化IOC容器
BeanFactory beanFactory = new XmlBeanFactory(res);
二、如何查看容器中的bean定义信息?
// 3. 转化为可枚举容器
ListableBeanFactory listableBeanFactory = null;
if (beanFactory instanceof ListableBeanFactory) {
listableBea ...
一、类图
先来一张全图吧,如图
目的:
从整体上把握各个类、接口之间的关系;
大致了解各个类、接口的职责;
操作系统是指整个系统中负责完成最基本功能和系统管理的那些部分,包括:
内核
驱动程序
启动引导程序
命令行shell或者其它种类的用户界面
基本的文件管理工具和系统工具
内核通常由:
负责响应 ...
一、Java内存组成
组成图
堆(Heap)
运行时数据区域,所有类实例和数组的内存均从此处分配。Java虚拟机启动时创建。对象的堆内存由称为垃圾回收器的自动内存管理系统回收。
组成
组成
详解
Young Generation
即图中的Eden + From Space + To Space
1.Eden存放新生的对象
2.Survivor Space有两个,存放每次垃圾回收后存活的对象
Old Generation
Tenured Generation 即图中的Old Space
主要存放应用程序中生命周期长的存活 ...
一、类型生命周期的开始
如图所示
初始化时机
所有Java虚拟机实现必须在每个类或接口首次主动使用时初始化;
以下几种情形符合主动使用的要求:
当创建某个类的新实例时(或者通过在字节码中执行new指令,或者通过不明确的创建、反射、克隆和反序列化);
当调用某个类的静态方法时(即在字节码中执行invokestatic指令);
当使用某个类或接口的静态字段,或者对该字段赋值时(用final修饰的静态字段除外,它被初始化为一个编译时常量表达式);
当调用Java API中的某些反射方法;
当初始化某个类的子类时(子类初始化时,要求父类已经被初始化);
当虚拟机 ...
一、class文件内容
每个class文件只
能包含一个类或接口;
class文件内容按顺序如下:
magic(魔数)-u4
0xCAFEBABE,其作用在于可以轻松辨别出Java class文件和非Java class文件;
minor_version-u2和major_version-u2(次、主版本 ...
一、JVM的生命周期
当启动一个Java程序时,一个Java虚拟机实例就诞生了;当该程序关闭退出时,这个Java虚拟机也就随之消亡;
JVM实例通过调用某个初始类的main方法来运行一个Java程序;这个main方法必须是public、static的,而且 ...