- 浏览: 102450 次
- 性别:
- 来自: 杭州
最新评论
文章列表
Oscache实现的原理,基于map的扩展,通过jgroup等UDP jar包进行各点间的通信。Oschche没有通知过来后的操作,我们需要重写JavaGroupsBroadcastingListener的增删改和handleClusterNotification方法。
1:关于oscache的不足:
a 获取的value不是副本,所以在缓存之外的代码有机会修改oscache里面的value 的属性值,增加了风险。
b 每个点都需要存储一份数据,增加了空间的浪费。
2: 关于oscache的优点:
基于java实现。
ArrayList的一些思考
- 博客分类:
- 数据结构
代码1:
List<Object> list = new ArrayList<Object>();
System.out.println(list.get(0));
如上的代码抛出 IndexOutOfBoundsException
代码2 :
List<Object> list = new ArrayList<Object>();
list.add(null);
System.out.println(list.get(0));
返回null;
...
1,关于死锁 : E有着A这个锁对象,F拥有着B这个锁对象,同时E需要B这个锁对象,F需要A这个锁对象,两者同时等待对方释放锁,这种等待应该会造成系统的崩溃。
2,关于线程阻塞,E拥有A这个锁对象,如果E的操作需要比较长的时间,而并发数比较多,其他的线程就会因为需要等待E线程释放锁而等待,这就是线程的阻塞。
单向表
package datamemory.link;
//单链表
public class ObjectLink
{
private int size;// 链表长度
private ObjectNode head;// 头节点
public void add(Object obj)
{
ObjectNode node = new ObjectNode(obj, null);
if (head == null)
{
head = node ...
以前面试的时候遇到一个面试题 :把两个整数的值进行掉换,不用中间数.后来网上查来下,代码如下所示:
int i = 123;
int j = 125;
i = i ^ j;
j = i ^ j;
i = j ^ i;
今天写了个测试用例,发现效率比平常写的换法慢,想了下虽然少了个中间数的初始化,但其实算法方面需要的时间太多,没多大实际的意义。测试代码如下
@Test
public void test1()
{
System.out.println("- ...
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
/** 随即获取N个数据,并把这些数据拍到数据最前面(假设所有数据都不为空) */
public class RandomRank {
public static final int k = 56666;
public static final int num = 56665;
@Test
public void test1() {
String[] boo ...
<Student Name="张三">
<age>19</age>
</Student>
输出如上xml格式:创建一个pojo类-->Student
package mytest;
public class Student
{
/** 姓名 */
private String name;
private Integer age;
public String getName()
{
return na ...
package thread;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
public class Daemonromactory implements Runnable
{
public void run()
{
try
{ ...
volatile :含义和用法参考资料 http://www.iteye.com/topic/109150
package thread;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/** 优先级的测试类,一般情况下不需要用到优先级 */
public class SimplePriorities implements Runnable
{
private int countDown = 5;
privat ...
package thread.demo;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
/** 演示线程的睡眠时间,并且比较jdk 5与以前版本的不同 */
public class Demo6
{
public static void main(String[] args)
{
Executor ...
package thread;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/** Runnable是执行工 ...
runable类:
package thread;
public class LiftOff implements Runnable
{
protected int countDown = 10;// default;
private static int taskCount = 0;
private final int id = taskCount++;
public LiftOff()
{
}
public LiftOff(int countDo ...
编译期报错的代码 :
import ipad.IpadHttpUtils;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import utils.StringUtil;
import view.handler.HandlerClass;
public class SendButton extends JButton
{
private static final long serialVersionU ...
package annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//定义注解
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface UseCase
{
pub ...
package stream.demo1;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
public class BufferToText
{
private static final int BSIZE = 1024;
public static void ma ...