- 博客(6)
- 收藏
- 关注
原创 java中的引用类型
强应用(Strong Reference): 最长见的引用类型,比如String s=new String(“asc”),这里s就是强引用类型。 软引用(Soft Reference): 如果某个对象是软引用可达,并且内存不足,则该对象会被回收掉,很多缓存系统采用软引用实现。 弱引用(Weak Referance): 对象处于...
2018-08-22 22:04:08
241
原创 ThreadLocal内存泄漏原因以及避免方案
ThreadLocal的原理是操作Thread内部的一个ThreadLocalMap,这个Map的Entry继承了WeakReference,设值完成后map中是(WeakReference,value)这样的数据结构。java中的弱引用在内存不足的时候会被回收掉,回收之后变成(null,value)的形式,key被收回掉了。 如果线程执行完之后销毁,value也会被回收,这样也没问题。但如果是...
2018-08-07 21:37:58
15136
12
原创 秒杀系统设计
限流 秒杀场景短时间内有很高的并发量,秒杀的难点主要是超卖和限流。业务流程分验库存,较少库存,生成订单三个步骤。十几万的用户同时抢十几件商品,可能会达到几十万的qps,这么大的请求量可能会打垮服务器和数据库。而且99.9%的请求是无效的。做的第一件事是限流,在分布式条件下,一个限流方案是采用redis限流,比如限流到100qps,当前秒作为key。每次key自增,如果大于100之后的超...
2018-05-27 22:21:38
340
原创 ClassLoader
java是通过类加载器,将jdk中的类,classpath下的类,或者网络上下载下来的class文件夹在到内存中去。 类加载器分几种,最顶层的是Bootstrap ClassLoader,负责加载rt.jar包中的类,其子类是ExtensionClassLoader,负责加载jdk的ext包中的所有类,ExtensionClassLoader的子类是SystemClassLoader,这个类加载器
2016-05-21 14:04:59
258
原创 java是值传递还是引用传递。
: 值传递是指传递参数的一个拷贝过去,这个拷贝被修改,原来的参数是不会发生变化的,而引用传递是将引用传递过去,如果参数被修改,参数就真的发生了变化。java中的基本数据类型i被传递到另外一个方法中并进行修改,执行完毕后,这个i没有发生变化的,这是值传递的表现。一个对象obj被传递到一个方法中,obj的一个成员变量被修改,方法执行完毕后,这个obj的那个成员变量就真的发生了变化,这好像是引用传递的表
2016-05-04 23:21:54
290
原创 Hashmap和LinkedHashmap的对比
java中很多数据容器都是基于数组实现的,hashmap和linkedhashmap也不例外,都是内部维护一个数组,但是数组存放的元素不是普通的对象,而是经过包装的对象。hashmap中的包装类如下static class Entry<K,V> implements Map.Entry<K,V> { final K key;//存放进去的key V value;//存放的value
2016-05-02 14:50:05
395
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人