兴趣新闻
http://www.blogjava.net/RongHao/category/20773.html
http://www.cnblogs.com/yukaizhao/archive/2007/04/15/user_role_action_permission.html
最近每天晚上下班总是那么的迟,为什么到不是我原因,公司在和一个音乐网站合作,我们这边是用java来做的,
他们是用.net来开发,我们提供计费系统,和用户群,他们提供资源,具体网站开发和内容他们提供,我们这边有服务器
远程开给他。
但是我感觉他们那边的开发速度慢的要死,我感觉有一个功能就是可以重用的东西,就是登录退出在两个页面出现
,但是到了他们那儿就是一个做一天,其实这东西很容易重用的,同一个action处理,转不同的试图就望去ok了,这就是
一典型的重用的组件,但是.net我不知道怎么弄,但是他们却弄了好长时间却害我们都加班了。
改好好考虑一下软件可重用的性的问题了
刚刚运用文章管理的时候,不小心把一些文章边成了机密文档,但是我却不知道怎么弄的能让不是机密文档。
还有就是找不到如何移动文章分类
缓存产品目标锁定在支持分布式应用的3种开源产品身上:JbossCache、OSCache和SwarmCache,JbossCache采用数据复制策略,OSCache又大又全,重点在页面缓存上,SwarmCache虽然很小巧,但分布式是核心,采用的是失效机制。最终采用SwarmCache实现。全面了解一种开源产品,首要的是看它的文档了,随后的日志我会贴出他的Tutorial。
Hibernate3对各种缓存的提供了很好的支持,细看它的文档才发现它支持的额外3种缓存产品正好是上面列出的,EHCache是Hibernate自身的缓存实现,不支持分布式应用。这下子倒免去了写CacheProvider的工作。下载swarmcache-1.0RC2a二进制和源码,将jgroups-all.jar和swarmcache-1.0RC2.jar拷贝至 \WEB-INF\lib\下,
配置Hibernate.cfg.xml将provider_class换为指定的Provider
<property name="hibernate.cache.provider_class">net.sf.hibernate.cache.SwarmCacheProvider</property>
打开查询缓存的支持
<property name="hibernate.cache.use_query_cache">true</property>
配置
<class-cache class="com.foo.YourCacheEntity" usage="nonstrict-read-write" region="cache.region"/>
关于最后一行配置的说明,因为SwarmCache不支持严格的读写缓存,所以要配置成nonstrict-read-write,各个缓存之间需要用名字隔离,如cache.region。
重新启动Tomcat后,SwarmCache中的组播服务启动:
-------------------------------------------------------
GMS: address is pysh:1967
-------------------------------------------------------
如果另外一个也作了同样配置的web启动,他们之间通过组播消息可以相互通知:
2006-09-19 17:49:06 INFO JavaGroupsCommunicator:76 - A host has joined the cache notification bus: pysh:1967
测试应用:
在机器A上,通过Hibernate对Entity做了修改,机器B得知缓存Entity已经无效,机器B会remove此缓存,重新从数据库里加载。
package test.map;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Hashtable;
import java.util.Map;
import java.util.Set;
/*×
* 可以构造面向对象内存数据库
*/
public class TestHashMap {
@SuppressWarnings( { "unchecked", "unchecked" })
public static Map.Entry<String,Person>[] getSortedHashtableByKey(Hashtable<String,Person> h) {
Set<Map.Entry<String,Person>> set = h.entrySet();
Map.Entry<String,Person>[] entries = set.toArray(new Map.Entry[set.size()]);
Arrays.sort(entries, new Comparator() {
public int compare(Object arg0, Object arg1) {
Object key1 = ((Map.Entry) arg0).getKey();
Object key2 = ((Map.Entry) arg1).getKey();
return ((Comparable) key1).compareTo(key2);
}
});
return entries;
}
@SuppressWarnings( { "unchecked", "unchecked" })
public static Map.Entry<String,Person>[] getSortedHashtableByValue(Hashtable<String,Person> h) {
Set<Map.Entry<String,Person>> set = h.entrySet();
Map.Entry<String,Person>[] entries = set.toArray(new Map.Entry[set.size()]);
Arrays.sort(entries, new Comparator() {
public int compare(Object arg0, Object arg1) {
Person key1 = (Person)((Map.Entry)arg0).getValue();
Person key2 = (Person)((Map.Entry)arg1).getValue();
return ((Comparable) key1.age).compareTo(key2.age);
}
});
return entries;
}
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Hashtable<String, Person> t = new Hashtable<String, Person>();
t.put("10-11 02:45德利城VS德罗赫达联队",new Person("lcl",28));
t.put("10-11 06:45朗福德城VS谢尔伯恩",new Person("fxx",29));
t.put("10-11 05:00EL国民队VS托拉卡",new Person("fx",23));
for(Map.Entry<String,Person> ent:getSortedHashtableByValue(t)){
System.out.println(ent.getKey()+":"+ent.getValue().getName());
}
}
public static class Person {
private int age;
private String name;
public Person(String name, int age) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
package test.map;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Hashtable;
import java.util.Map;
import java.util.Set;
public class TestHashMap {
@SuppressWarnings({ "unchecked", "unchecked" })
public static Map.Entry[] getSortedHashtableByKey(Hashtable h) {
Set<Object> set = h.entrySet();
Map.Entry[] entries = (Map.Entry[]) set.toArray(new Map.Entry[set.size()]);
Arrays.sort(entries, new Comparator() {
public int compare(Object arg0, Object arg1) {
Object key1 = ((Map.Entry) arg0).getKey();
Object key2 = ((Map.Entry) arg1).getKey();
return ((Comparable) key1).compareTo(key2);
}
});
return entries;
}
@SuppressWarnings("unchecked")
public static Map.Entry[] getSortedHashtableByValue(Hashtable h) {
Set set = h.entrySet();
Map.Entry[] entries = (Map.Entry[]) set.toArray(new Map.Entry[set
.size()]);
Arrays.sort(entries, new Comparator() {
public int compare(Object arg0, Object arg1) {
int key1 = Integer.parseInt(((Map.Entry) arg0).getValue()
.toString());
int key2 = Integer.parseInt(((Map.Entry) arg1).getValue()
.toString());
return ((Comparable) key1).compareTo(key2);
}
});
return entries;
}
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Hashtable<String, String> t = new Hashtable<String, String>();
t.put("10-11 02:45德利城VS德罗赫达联队", "德利城VS德罗赫达联队");
t.put("10-11 02:45朗福德城VS谢尔伯恩", "朗福德城VS谢尔伯恩");
t.put("10-11 05:00EL国民队VS托拉卡", "EL国民队VS托拉卡");
t.put("10-11 02:00巴西VS厄瓜多尔", "巴西VS厄瓜多尔");
Map.Entry[] set = getSortedHashtableByKey(t);
for (int i = 0; i < set.length; i++) {
System.out.println(set[i].getKey().toString());
System.out.println(set[i].getValue().toString());
}
}
}
ListSort.java
package test.map;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class ListSort {
@SuppressWarnings("unchecked")
public static void main(String[] args){
ArrayList list = new ArrayList();
list.add(new Person("lcl",28));
list.add(new Person("fx",23));
list.add(new Person("wqx",29));
Comparator comp = new Comparator(){
public int compare(Object o1,Object o2) {
Person p1=(Person)o1;
Person p2=(Person)o2;
if(p1.age<p2.age)
return 1;
else
return 0;
}
};
Collections.sort(list,comp);
for(int i = 0;i<list.size();i++){
Person p = (Person)list.get(i);
System.out.println(p.getName());
}
}
public static class Person {
private int age;
private String name;
public Person(String name,int age){
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
