1.redis做存储,可以持久化,memcache做缓存,数据易丢失。2.redis支持多数据类型,memcache存放字符串。3.redis服务端仅支持单进程、单线程访问,也就是先来后到的串行模式,避免线程上下文切换,自然也就保证数据操作的原子性。Memcache服务端是支持多线程访问的。4.redis虽然是...
平衡性指的是hash的结果尽可能分布到所有的缓存中去,这样可以使得所有的缓存空间都可以得到利用。但是hash算法不保证绝对的平衡性,为了解决这个问题一致性hash引入了“虚拟节点”的概念。虚拟节点”(virtualnode)是实际节点在hash空间的复制品(replica),...
1.当某个值过期后并不会从内存删除。(因此status统计时的curr_items有其信息)2.如果之前没有get过,将不会自动删除。如果(过期失效,没get过一次)又没有一个新值去占用他的位置时,当做空的chunk占用。3.当取其值(get)时,判断是否过期:如果过期返回空,且清空。(所以curr_items...
强引用:通常我们使用new操作符创建一个对象时所返回的引用即为强引用;软引用:若一个对象只能通过软引用到达,那么这个对象在内存不足时会被回收,可用于图片缓存中,内存不足时系统会自动回收不再使用的Bitmap;弱引用:若一个对象只能通过弱引用到达,那么它就会被回收(即使内存充足),同样可用于图片缓存中,这时候只要...
可以,现在的虚拟机基本都是通过可达性分析算法来判断对象是否存活的,而不是通过简单的引用计数法来判断对象是否存活。可达性分析算法使用一系列的“GCRoots”对象(虚拟机栈中引用的对象、静态属性引用对象)作为起始点,这些节点向下搜索的路径称为引用链,当一个对象到GCRoots没有任何引用链...
1.防止死锁。线程池中所有线程都在等待A事件发生,而没有空闲线程去执行A。2.防止系统资源不足。要控制线程数量。3.防止并发错误。4.防止线程泄漏,某个线程因RuntimeException或Error没有正常被捕获导致该线程异常终止,线程池失去了一个线程。5.避免任务过载。
@Autowire默认按照类型装配,默认情况下它要求依赖对象必须存在如果允许为null,可以设置它required属性为false,如果我们想使用按照名称装配,可以结合Qualifier注解一起使用;@Resource默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配,可以通过name属性指定,如果...
1.ArrayList是线程不安全的,若要线程安全,则使用CopyOnWriteList。2.底层是Object[]数组,内部有一个elementData引用指向数组,刚开始默认指向一个缓存空数组(transient),当要进行扩容时,会重新new一个大小为1.5倍(x+(x>>1)...
因为StringBuffer不需要重复创建String对象,但是其实也不是这样。比如Strings="a"+"b"+"c"操作编译器会优化,变成Strings="abc"Strings=s1+s2+s3编译器也会优化,变成Strin...
1.ArrayList是线程不安全的,若要线程安全,则使用CopyOnWriteList。2.底层是Object[]数组,内部有一个elementData引用指向数组,刚开始默认指向一个缓存空数组(transient),当要进行扩容时,会重新new一个大小为1.5倍(x+(x>>1)...