- 浏览: 73225 次
- 性别:
- 来自: 深圳
文章列表
本文主要关注Java编程中涉及到的各种集合类,以及它们的使用场景
相关学习资料
http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E6%8E%92%E5%BA%8F%E5%8F%8Ajava%E9%9B%86%E5%90%88%E7%B1%BB%E8%AF%A6%E8%A7%A3%28collection%E3%80%81list%E3%80%81map%E3%80%81set%29.rar
http://blog.sina.com.cn/s/blog_a345a8960101k9vx.html
http:/ ...
(转)浅谈Java多线程的同步问题
- 博客分类:
- 多线程
多线程的同步依靠的是对象锁机制,synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问。
下面以一个简单的实例来进行对比分析。实例要完成的工作非常简单,就是创建10个线程,每个线程都打印从0到99这100个数字,我们希望线程之间不会出现交叉乱序打印,而是顺序地打印。
先来看第一段代码,这里我们在run()方法中加入了synchronized关键字,希望能对run方法进行互斥访问,但结果并不如我们希望那样,这是因为这里synchronized锁住的是this对象,即当前运行线程对象本身。代码中创建了
Java中class是如何加载到JVM中的:1.class加载到JVM中有三个步骤 装载:(loading)找到class对应的字节码文件。 连接:(linking)将对应的字节码文件读入到JVM中。 初始化:(initializing)对class做相应的初始化动作。2.Java中两种加载class到JVM中的方式 2.1:Class.forName("className"); 其实这种方法调运的是:Class.forName(className, true, ClassLoader.getCallerClassLoader())方 ...
1、给用户授权:grant debug connect session to xxxuser;
2、给包增加debug信息:alter package pkg_xxx compile debug;
struts返回值的不合理使用
- 博客分类:
- 企业应用
今天写了一个SessionListener来监听session的创建和销毁情况,有意外收获,发现系统的一个bug:
当关闭浏览器时,容器会销毁当前session,而后新建一个同sessionId的session。
经过分析,发现session的销毁是由退回操作时应用程序进行的失效操作引发。而后session的新建是由应用程序调用了logout操作后struts的返回值想后台又发起了一个请求导致的session的新建,而该session只能等待session过期才能自动销毁了。
这时可采用关闭窗口和logout有区别对待即可,logout有返回值,而关闭窗口时无返回值。或者在主页添加
...
第一次用ant编写打包命令,写下纪念
<?xml version="1.0" encoding= "UTF-8" ?>
<project name="myweb_project" default="dist" basedir=".">
<!--
该项目需要jdk1.5以上的编译器进行编译
-->
<property name="java_home" value="C:\jdk5" ...
jboss启动时java VM参数设置
- 博客分类:
- jboss
jboss服务器中jvm参数的设置:
在$JBOSS_HOME/bin下的run.sh里面存在这么一个设置:
# Force IPv4 on Linux systems since IPv6 doesn't work correctly with jdk5 and lower
if [ "$linux" = "true" ]; then
JAVA_OPTS="-Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcI ...
学习spring源码之事务管理
- 博客分类:
- spring
核心接口:org.springframework.transaction.PlatformTransactionManager
该接口定义了统一的模型,用于屏蔽各种事务之间的差别,比如jdbc,hibernate,jta等。
该接口提供一个抽线的实现(或者说模版类):org.springframework.transaction.support.AbstractPlatformTransactionManager
里面对事务的管理做了基本的模版,具体的实现类只需要根据具体的情况(如是否采用jdbc或者采用的时分布式事务等)实现里面的几个抽象方法。
事务的状态的接口:org.springf ...
在分析ibatis源码解析配置文件时,接触了大量的回调方法,这里写下学习心得。
一般来说,我们都需要定义一个回调接口,该接口的实现由具体的调用者实现,而模版方法里面规范了一个调用的模版。
如下:
回调接口的定义:
/**
* 回调的接口
* @author shuidexiongdi
*
*/
interface ICallBack {
void doCallBack();
}
模版方法的定义:
/**
* 模版类,该类负责回调函数的调用或者不调用
* @author shuidexiongdi
*
*/
class So ...
Ibatis源码学习(三):配置文件的解析
- 博客分类:
- ibatis
ibatis文件的文件的解析从主文件sql-map-config.xml开始。见类:com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser
public SqlMapConfigParser() {
parser.setValidation(true);
parser.setEntityResolver(new SqlMapClasspathEntityResolver());
addSqlMapConfigNodelets(); //"/sqlMapConfig/ ...
Map取key和value的遍历
- 博客分类:
- java综合
遍历一遍时将key和value同时去除
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
String name = (String) entry.getKey();
Object value = entry.getValue();
}
Ibatis源码学习(二):延迟加载的实现
- 博客分类:
- ibatis
Ibatis获取查询的结果是从ResultMap.java类里面的getResults获取
/**
* Read a row from a resultset and map results to an array.
*
* @param statementScope scope of the request
* @param rs ResultSet to read from
*
* @return row read as an array of column values.
*
* @throws java.sql.SQ ...
springIOC学习
- 博客分类:
- spring
4个基本接口:
1、BeanFactory:基本创建Bean的接口
2、BeanDefinition:基本定义Bean的接口;所有的Bean定义都被转化为这一统一的抽象模型(描述了bean是否是单例,bean的依赖关系等等)
3、BeanDefinitionReader:这个不是必须接口,只是建议读取bean定义时实现的接口。(如果能正确的读取到bean的定义,则不实现该接口也是允许的);将外部资源对象描述的Bean定义统一转化为统一的内部数据结构BeanDefinition。
4、Resource:定义bean的资源接口
过程:Resource定义好各个bean;BeanDef ...
ibatis学习源码学习(一):类信息的缓存
- 博客分类:
- ibatis
Ibatis数据转化时,需要根据配置的信息(或按照约定)将查询返回的值映射到实例对象上。这时候需要用到反射机制,将对应的属性赋上对应的值。
Ibatis的思路是:建一个缓存(CLASS_INFO_MAP),每次反射时先再缓存里面找,如果有,则返回缓存的信息,如果没有,再利用反射机制,将反射得到的类的信息缓存起来,然后返回类的信息。因为反射本身涉及到效率问题,如果每个实例都进行反射,将大大降低框架的效率,所以采用了缓存的机制。这种思路给我们平时想通过反射设置或得到属性值的程序提供了很好的解决方案。
具体的实现类参考Ibatis源码里面的:com.ibatis.common.bean ...