java面试
原创大约 2 分钟
java远程调用的对象流
java 在远程通信时,发送方会把对象变成字节序列,接收方再把字节序列变成对象
已知一个 HashMap<Integer,User>集合, User 有 name(String)和 age(int)属性。请写一个方法实现对 HashMap 的排序功能,该方法接收 HashMap<Integer,User>为形参,返回类型为 HashMap<Integer,User>, 要求对 HashMap 中的 User 的 age 倒序进行排序。排序时 key=value 键值对不得拆散。
public class App
{
public static void main( String[] args )
{
HashMap<Integer,User> map = new HashMap();
map.put(1,new User("张三",20));
map.put(2,new User("张三1",19));
map.put(3,new User("张三2",28));
System.out.println(JSON.toJSONString(map));
HashMap<Integer,User> users= sortMap(map);
System.out.println(JSON.toJSONString(users));
}
public static HashMap<Integer,User> sortMap(HashMap<Integer,User> users) {
Set<Entry<Integer, User>> entries = users.entrySet();
List<Entry<Integer, User>> list = new ArrayList<>(entries);
Collections.sort(list, new Comparator<Entry<Integer, User>>() {
@Override
public int compare(Entry<Integer, User> o1, Entry<Integer, User> o2) {
return o2.getValue().getAge()-o1.getValue().getAge();
}
});
LinkedHashMap<Integer, User> hashMap = new LinkedHashMap<>();
for (Entry<Integer, User> user: list) {
hashMap.put(user.getKey(),user.getValue());
}
return hashMap;
}
}
ArrayList、HashSet、HashMap是线程不安全的,如何让他们线程安全
List list = new ArrayList();
Set hashSet = new HashSet();
Map map = new HashMap();
Collections.synchronizedList(list)
Collections.synchronizedMap(hashSet)
Collections.synchronizedSet(map)
- 附加: 在集合中 Vector 和 HashTable 是线程安全的
单例模式
/**
* @ClassName 单例模式
* @Description
* @Author yilongwu
* @DATE 2020-01-15 15:59
* @Version 1.0.0
**/
public class Single { // 饿汉模式
public static Single single= new Single();
private Single(){
}
public static Single getIntance() {
return single;
}
}
public class Single2{ // 懒汉模式
public static volatile Single2 single = null;
private Single2(){
}
public static Single2 getIntance() {
if(single == null) {
synchronized (Single2.class) {
if(single == null) {
single = new Single2;
}
}
}
return single;
}
}
mysql性能优化
- 当只要一行数据时使用 limit 1
- 用 not exists 代替 not in
- 对操作符的优化,尽量不采用不利于索引的操作符,如:in not in is null is not null <> 等
- 某个字段总要拿来搜索,为其建立索引: