- 浏览: 44190 次
- 性别:
- 来自: 上海
最新评论
-
onesir520:
楼主后来进盛付通了吗?
2015/3 盛付通面试
文章列表
一般现在时:I make love with her everyday.
一般过去时:I made love with her yesterday.
一般将来时:I will make love with her tomorrow.
现在进行时:I am making love with her
过去进行时:I was making love with her at this time yesterday
将来进行时:I will be making love with her at this time tomorrow
现在完成时:I have made love with ...
你当前参与项目的架构和领域模型画一下。
分析一下jvm为什么会出现oom。系统运行了半年出现这个问题。怎么排查。
一个集群应用,后面挂一个 oracle 。怎么保证事务性。
你是怎么调用 memcached的,如果更新memcached过程中网络断开应该怎么处理。 雪崩怎么处理。
一个对象,包含 cancel、 approval、等几个状态,分布式环境下怎么保证状态能同步更新。
单元测试用过什么工具。如果单元测试方法中包含一个外部依赖,应该如何测试。如何去依赖。
一个用户要买一本书,用户有“金牌”“银牌”“铜牌”等等级。书在某种状态下有相应的折扣。代码包含很多if else 。如 ...
问:为什么要在JSP中使用
<%@ page session="false" %>
答:
一个原因是 内存 和 性能。如果你有一个页面不需要在一个Session中被调用(比如,about.jsp,faq.jsp)。
那么你可以再JSP页面中使用此句话阻止服务端创建Session。
session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session ...
JVM内存模型及垃圾收集策略解析
- 博客分类:
- j2se全是基础
一 JVM内存模型
1.1 Java栈
Java栈是与每一个线程关联的,JVM在创建每一个线程的时候,会分配一定的栈空间给线程。它主要用来存储线程执行过程中的局部变量,方法的返回值,以及方法调用上下文。栈空间随着线程的终止而释放。StackOverflowError:如果在线程执行的过程中,栈空间不够用,那么JVM就会抛出此异常,这种情况一般是死递归造成的。
1.2 堆
Java中堆是由所有的线程共享的一块内存区域,堆用来保存各种JAVA对象,比如数组,线程对象等。
1.2.1 Generation
JVM堆一般又可以分为以下三部分:
1.Java对象的强、软、弱和虚引用
在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。图1为对象应用类层次。
图1
⑴强引用(StrongReference)
强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异 ...
JVM基础概念总结:数据类型、堆与栈
- 博客分类:
- j2se全是基础
数据类型
Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。
基本类型的变量保存原始值,即:他代表的值就是数值本身;
而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。
基本类型包括:byte, short, int, long, char, float, double, Boolean, returnAddress
引用类型包括:类类型,接口类型和数组。
堆与栈
堆和栈是程序运行的关键,很有必要把他们的关系说清楚。
JVM分代垃圾回收策略的基础概念
- 博客分类:
- j2se全是基础
为什么要分代
分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。
在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。但是还有一些对象,主要是程序运行过程中生成的临时变量,这些对象生命周期会比较短,比如:String对象,由于其不变类的特性,系统会产生大量的这些对象,有些对象甚至只用一次即可回收。
试想,在不进行对象存活时间区分的情况下,每次垃圾回收都是对整个堆空间进行 ...
对于双检锁,其实有多种不同的用法,有很多种用法是无论如何不会出现问题的.我最初用双检锁来获取jndi对象时,立即有人告诉我双检锁是不安全的,我笑着告诉他:是否安全我比你更有把握.
static DataSource ds = null;
public static DataSource getDataSource(){
if(ds == null){
synchronized(this.getClass()){
if(ds == null)
ds = xxx;
}
}
return ds;
}
这样的DC ...
1。模拟死锁1。1。主表-- Create table
create table WDZ1
(
WDZ1ID NUMBER not null,
MEMO VARCHAR2(20)
)
;
alter table WDZ1
add constraint XXXXXX primary key (WDZ1ID);
1。2。从表(没有外健的索引)-- Create table
create table WDZ2
(
WDZ2ID NUMBER not null,
WDZ1ID NUMBER,
MEMO VARCHAR2(20)
)
;
...
先来看下面的 代码:
public class Test
{
public static void main(String[] args)
{
short i ;
i = i + 1; //编译错误
i += 1; //正确
byte j = 1; //正确
byte k = 2;
byte l = j + k; //错误
}
}
1、关于 i = i + 1: i + 1是int型,赋值给short 型变量需要做显示转换。
2、+= 、-= 属于复合赋值运算符(Compound Assign ...
上周接到华为招聘电话,让周六去应聘android 程序员。。周六反正也没事就去了。。。
华为这次招聘是在 新金桥路2222,太太太远了。。。按照丁丁地图和百度地图的说法 世纪大道站 转790 ,然后乘20站
到金海路金穗路。
790跟网上介绍的时间间隔好像不太一样,周末的790貌似是半小时一班。。地铁转公交整整在路上花费两个半小时才到达
目的地。。
面试是在华为的餐厅进行的,还是老样子,先做题。我选择的是java试题,还有其他的,可以自己选择。
题目结构是:
1、判断题 五道
2、单选题 五道
3、多选题 五道
4、简答题
5、(好像是 ...
转自:http://marshal.easymorse.com/archives/425
DataSource接口(javax.sql.DataSource)替代DriverManager获取Connection的方法,有以下好处:
可以在部署时灵活更换Connection实现;
可以更好的屏蔽数据库的相关性。
以下以oracle为例说明。
使用厂商DataSource
数据库厂商在提高JDBC2.0和以上版本的JDBC驱动中应该包含厂商的DataSource实现。
OracleDataSource ods = new OracleDataSource( ...
出处:http://www.iteye.com/topic/164644
使用 synchronized 关键字,这也是最原始的方法。代码如下
synchronized(anObject)
{
value = map.get(key);
}
使用 JDK1.5 提供的锁(java.util.concurrent.locks.Lock)。代码如下
lock.lock();
value = map.get(key);
lock.unlock();
实际应用中,可能多数操作都是读操作,写操作较少 ...
出处:http://www.iteye.com/topic/754887
HashMap的数据结构
HashMap主要是用数组来存储数据的,我们都知道它会对key进行哈希运算,哈系运算会有重复的哈希值,对于哈希值的冲突,HashMap采用链表来解决的。在HashMap里有这样的一句属性声明:
transient Entry[] table;
Entry就是HashMap存储数据所用的类,它拥有的属性如下
final K key;
V value;
final int hash;
Entry<K,V> next;
看到ne ...