java的使用技巧(二)

1、zookeeper的相关博客

        1)、分布式锁实现:http://chenjingbo.iteye.com/blog/2039641

        2)、官网的代码地址:https://svn.apache.org/repos/asf/zookeeper/trunk/src/recipes/lock/

        3)、牛人博客:http://www.cnblogs.com/yuyijq/p/4116365.html http://nileader.blog.51cto.com/1381108/795525

2、flash跨域访问 (粗点)

         flash在跨域时唯一的限制策略就是crossdomain.xml文件,该文件限制了flash是否可以跨域读写数据以及允许从什么地方跨域读写数据。位于www.a.com域中的SWF文件要访问www.b.com的文件时,SWF首先会检查www.b.com服务器目录下是否有crossdomain.xml文件,如果没有,则访问不成功;若crossdomain.xml文件存在,且里边设置了允许www.a.com域访问,那么通信正常。所以要使Flash可以跨域传输数据,其关键就是crossdomain.xml

3、javassist的入门小示例

package com.javassist;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtField;
import javassist.CtMethod;
import javassist.CtNewMethod;
import javassist.NotFoundException;

public class Test {
	public static void main(String[] args) throws CannotCompileException, InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException, NotFoundException {
		ClassPool pool = ClassPool.getDefault();
		// 创建一个名叫Foo的类
		CtClass cc = pool.makeClass("Hello");
	    // 获取指定的类型  
	    CtClass ctClass = pool.get("java.lang.String");  
		// 创建一个名叫i的属性,它的类型是‘int’
		CtField f = new CtField(ctClass, "name", cc);
		cc.addField(f);
		// 创建一个名叫‘getName’的方法
		CtMethod mthd = CtNewMethod.make("public String getName() { return  name ; }", cc);
		cc.addMethod(mthd);
		//创建一个赋值的方法
		CtMethod setMethod = CtNewMethod.make("public void setName( String name) { this.name=name ; }", cc);
		cc.addMethod(setMethod);
		// 实例化这个类
		Class clazz = cc.toClass(); 
		Object instance = clazz.newInstance();		
		Method getmethod=clazz.getMethod("getName");
		Method setmethod=clazz.getMethod("setName", String.class);		
		System.out.println(setmethod.invoke(instance, "hello wrold2"));
		System.out.println(getmethod.invoke(instance, null));
	}
}
运行之后打印:<p>null
hello wrold2 </p>

4、ExecutorService中submit和execute的区别:

    1)、参数不一样

    2)、submit可以获取返回值(比较有用),execute不可以。

    3)、submit方便Exception处理

5、ExecutorService的shutdown方法的作用:

         当线程池调用该方法时,线程池的状态则立刻变成SHUTDOWN状态,以后不能再往线程池中添加任何任务,否则将会抛出RejectedExecutionException异常。但是,此时线程池不会立刻退出, 直到添加到线程池中的任务都已经处理完成,才会退出。 与它相似的还有一个shutdownNow(),它通过调用Thread.interrupt来实现线程的立即退出。


6、有多个过滤器时,过滤器的执行顺序:

  	<filter-mapping>
		<filter-name>filter1</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

    	<filter-mapping>
		<filter-name>filter2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

执行结果是:

filter1..............begin
filter2..............begin
filter2..............end
filter1..............end


  	<filter-mapping>
		<filter-name>filter2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
  	<filter-mapping>
		<filter-name>filter1</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

执行结果是:

filter2..............begin
filter1..............begin
filter1..............end
filter2..............end

总结:    多个过滤器之间按照配置的顺序来执行,过滤器的执行是一个栈操作:先进后出。

6、类名.this的用处,借用别处的代码做个示例:

public class WebxContextLoaderListener extends ContextLoaderListener {
	protected final ContextLoader createContextLoader() {
		return new WebxComponentsLoader() {
			protected Class<? extends WebxComponentsContext> getDefaultContextClass() {
				Class defaultContextClass = <span style="color:#FF0000;"><strong>WebxContextLoaderListener.this.getDefaultContextClass();</strong></span>

				if (defaultContextClass == null) {
					defaultContextClass = super.getDefaultContextClass();
				}

				return defaultContextClass;
			}
		};
	}

	protected Class<? extends WebxComponentsContext> <strong><span style="color:#FF0000;">getDefaultContextClass</span></strong>() {
		return null;
	}
}
         在这里用到的 类名.this.method调用方法,不用new一个新的示例就可以,但是这种只限用于内部类或者类的内部使用,特别是内部类的方法同外部的方法名字一致时,也只能通过这种方法调用。

7、设置iframe里的面尾固定显示,需要CSS+JS合作实现

<script type="text/javascript">
$(document).ready(function() {

	$(parent.window).scroll(function(){
		$("#footerDiv").css("bottom",$(window).height()-$(parent.window).scrollTop()-$(parent.window).height()+80);
		  
		});

});	
</script>
<style type="text/css">
.jump-top-foot {
	text-align: center;
	bottom: 30px;
	position: fixed;
	height: 80px;
	z-index: 999;
	background-color: #e6e6e6;
	width:99%
}
</style>

8、java.util.Collections.singletonMap(K key,V value)

参数:

  • key-- 唯一的键被存储在返回的映射。

  • value--唯一的键对应的值

返回值:在方法调用返回一个只包含指定键 - 值映射的不可变映射。


9、不能通过继承来改变父类中的静态方法

10、父类序列化,子类不用再序列化。子类序列化,针对父类的属性无效。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值