- 浏览: 230534 次
- 性别:
- 来自: 北京
文章列表
Java中运行时内存结构
1.1 方法区:
方法区是系统分配的一个内存逻辑区域,是JVM在装载类文件时,用于存储类型信息的(类的描述信息)。
方法区存放的信息包括:
1.1.1类的基本信息:
每个类的全限定名
每个类的直接超类的全限定名(可约束类型转换)
该类是类还是接口
该类型的访问修饰符
直接超接口的全限定名的有序列表
1.1.2已装载类的详细信息:
判断循环链表是否有环
- 博客分类:
- 面试题
方法一:
通过快慢指针来检查单链表是否存在循环
判断是否是循环链表时,也设置两个指针,慢指针和快指针,让快指针比慢指针每次移动快两次。如果快指针追赶上慢指针,则为循环链表,否则不是循环链表,如果快指针或者慢指针指向NULL,则不是循环链表。
(1)用两个指针p1和p2分别指向表头结点,即p1=p2=head
(2)p1和p2分别采用1和2作为步长遍历该链表。(注意,p2应该检查当前结点的下一个结点是否为NULL)
(3)如果p1或者p2遇到了NULL,则证明该链表没有环;若p1和p2在某时刻指向同一结点,则说明该链表有环。
并发容器
这些容器的关键方法大部分都实现了线程安全的功能,却不使用同步关键字(synchronized)。值得注意的是Queue接口本身定义的几个常用方法的区别,
add方法和offer方法的区别在于超出容量限制时前者抛出异常,后者返回f ...
以下的文章主要介绍的是MySql数据库索引类型,其中包括普通索引,唯一索引,主键索引与主键索引,以及对这些索引的实际应用或是创建有一个详细介绍,以下就是文章的主要内容描述。
(1)普通索引
这是最基本的MySQL数据库索引,它没有任何限制。它有以下几种创建方式:
创建索引
CREATE INDEX indexName ON mytable(username(length));
如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length,下同。
修改表结构
ALTER mytable ADD INDEX [ ...
ZooKeeper 节点是有生命周期的,这取决于节点的类型。在 ZooKeeper 中,节点类型可以分为持久节点(PERSISTENT )、临时节点(EPHEMERAL),以及时序节点(SEQUENTIAL ),具体在节点创建过程中,一般是组合使用,可以生成以下 4 种节 ...
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class InvocationHandlerImpl implements InvocationHandler {
private Object targetObject;//要代理的目标对象
// 通过构造方法 传入要代理的目标对象
public InvocationHandlerImpl(Object targetObject ...
spring3 mvc 的controller方法如果有参数会自动映射传入的来的parameter,但是一个date类型的值传进来会被认为是string类型,如果你需要映射至一个date字段,就会报类型不匹配的exception.如果是spring2.5即需通过extends simpleFormController override initBinder方法,注册一个自定义的CustomEditor.但spring3里,这个simpleformController被@Deprecated了,取而代之的是注解的方式即:
@InitBinder
protected void initBin ...
项目中解析配置文件的工具类
- 博客分类:
- J2EE
项目中解析配置文件的工具类
package com.sohu.cloudno.util;
import java.util.ResourceBundle;
/**
* 项目参数工具类
*
*
*/
public class ConfigUtil {
private static final ResourceBundle bundle = java.util.ResourceBundle.getBundle("config");
/**
* 获得sessionInfo名字
*
* @return
...
volatile和synchronized的不同
- 博客分类:
- 面试题
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使 ...
java BIO NIO AIO 理论篇
- 博客分类:
- 面试题
java中的IO主要源自于网络和本地文件
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO
在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket, ...
Java垃圾收集机制
- 博客分类:
- 面试题
垃圾对象的判定
Java堆中存放着几乎所有的对象实例,垃圾收集器对堆中的对象进行回收前,要先确定这些对象是否还有用,判定对象是否为垃圾对象有如下算法:
引用计数算法
给对象添加一个引用计数器,每当有一 ...
System.gc() 与 finalize()
- 博客分类:
- 面试题
【System.gc() 与 finalize()】
java.lang.System.gc()
java.lang.Runtime.getRuntime().gc()
java.lang.Object.finalize()
一个题目:11. rbo = new ReallyBigObject();
Java虚拟机体系结构
- 博客分类:
- 面试题
Java虚拟机体系结构
如图,概念上讲,JVM由类加载器子系统,运行时数据区,执行引擎以及本地方法接口组成。
图4 JVM体系结构
1. 类加载器子系统主要用于定位类定义的二进制信息,然后将这些信息解析并加载 ...
Java之命令模式(Command Pattern)
1.概念
将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与 ...
mysql存储过程和任务调度器
- 博客分类:
- MySql
-- 创建月表和日表的存储过程
delimiter $$
use `devicitydb1`$$
drop procedure if exists `createTable`$$
create definer=`devicityusr01`@`%` procedure `createTable`()
begin
declare sql_str varchar(20000);
declare tname varchar(200);
declare dataStr varchar(2000);
declare i int;
set i=0 ...