- 博客(31)
- 收藏
- 关注
转载 缓存回收策略 以及 回收算法
缓存回收策略1 基于空间即设置缓存的【存储空间】,如设置为10MB,当达到存储空间时,按照一定的策略移除数据。2 基于容量基于容量指缓存设置了【条目的最大值】,当缓存的条目超过最大大小,则按照一定的策略将旧数据移除。3 基于时间TTL(Time To Live ):存活期,即缓存数据从缓存中创建时间开始直到它到期的一个时间段(不管在这个时间段内
2017-08-31 16:19:55 2026
转载 缓存回收算法 FIFO 、LRU、LFU三种算法
提到缓存,有两点是必须要考虑的:(1)缓存数据和目标数据的一致性问题。(2)缓存的过期策略(机制)。 其中,缓存的过期策略涉及淘汰算法。常用的淘汰算法有下面几种: (1)FIFO:First In First Out,先进先出 (2)LRU :Least Recently Used, 最近最少使用 (3)LFU :Le
2017-08-31 16:00:48 1752
转载 StringBuilder 以及 StringBuffer默认大小与扩容
StringBuilder 以及 StringBuffer默认大小与扩容 可变的 char[] 扩容1. 首先明确 StringBuffer类与 StringBuilder类均继承了抽象类 AbstractStringBuilder类无参构造方法2. 源码中StringBu
2017-08-30 12:20:29 12741
转载 Spring中的AOP底层实现原理
spring中的AOP底层实现原理:动态代理。动态代理,我的理解就是,在不修改原有类对象方法的源代码基础上,通过代理对象实现原有类对象方法的增强,也就是拓展原有类对象的功能。JDK动态代理中包含一个类和一个接口: InvocationHandler 接口: public interface Invocati
2017-08-29 19:00:46 354
转载 B tree、B-tree和B+tree
(1)B tree 即二叉搜索树:1.所有非叶子结点至多拥有两个儿子(Left和Right);2.所有结点存储一个关键字;3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就
2017-08-29 16:07:24 2790 2
转载 MySQL BTree索引和hash索引的区别
MySQL BTree索引和hash索引的区别备注:先说下,在MySQL文档里,实际上是把B+树索引写成了BTREE,例如像下面这样的写法:[sql] view plain copyCREATE TABLE t( aid int unsigned not null auto_increment
2017-08-29 15:22:28 453
转载 Redis与Memcached的区别
传统MySQL+ Memcached 架构遇到的问题 实际mysql是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题: 1.MySQL需要不断进行拆库,拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。
2017-08-28 16:43:42 249
转载 分布式事务解决方案
如何用消息系统避免分布式事务?原文作者: 伯乐在线 - 占利军 !前阵子从支付宝转账1万块钱到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我就思考支付宝扣除1万之后,如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了。上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一
2017-08-25 12:06:58 238
转载 java 线程池讲解
什么是线程池,如何使用,为什么要用,以下做个总结1、什么是线程池: java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所
2017-08-24 19:06:54 278
转载 redis内存淘汰机制
Redis内存淘汰 :指的是用户存储的一些键被可以被Redis主动地从实例中删除,从而产生读miss的情况,那么Redis为什么要有这种功能?这就是我们需要探究的设计初衷。Redis最常见的两种应用场景为 缓存 和 持久存储,首先要明确的一个问题是内存淘汰策略更适合于那种场景?是持久存储还是缓存?内存的淘汰机制的初衷是为了更好地使用内存,用一定的缓存miss来换取内
2017-08-24 17:45:53 218
转载 缓存淘汰算法--LRU算法
缓存淘汰算法--LRU算法1. LRU1.1. 原理LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。1.2. 实现最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:1. 新数据插入到
2017-08-24 17:27:01 185
转载 JVM 垃圾检测、回收算法
三、垃圾检测、回收算法垃圾收集器一般必须完成两件事:检测出垃圾;回收垃圾。怎么检测出垃圾?一般有以下几种方法:(1)引用计数法:给一个对象(堆中的对象)添加 【引用计数器】,每当有个地方引用它,计数器就加1;引用失效就减1。计数为0,进行回收操作。 好了,问题来了,如果我有两个对象A和B,互相引用,
2017-08-24 15:27:07 497
转载 Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.CyclicBarr
2017-08-23 16:55:38 194
转载 同步辅助类 java.util.concurrent.CountDownLatch
CountDownLatch : 一个同步辅助类。在完成【一组】正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。主要方法 public CountDownLatch(int count); public void countDown(); public void await() throws InterruptedExceptio
2017-08-23 16:02:49 309
转载 GC基本算法及C++GC机制
前言基本概念有向可达图与根集三种基本的垃圾收集算法及其改进算法1、引用计数算法2、 Mark & Sweep 算法3、 节点复制算法分代回收C++垃圾回收机制参考书籍 正文前言垃圾收集器是一种动态存储分配器,它自动释放程序不再需要的已分配的块,这些块也称为垃圾。在程序员看来,垃圾就是不再被引用的对象
2017-08-22 17:23:05 581
转载 HashMap,HashSet,LinkedHashSet,LinkedHashMap,ArrayList 原理
HashMap的实现原理1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指
2017-08-22 10:32:49 394
转载 简单易懂的金融"杠杆原理"解说
都说美国的金融危机是因为采用"杠杆"交易,高风险投资是用借的钱炒钱的原理.一。杠杆。目前,许多投资银行为了赚取暴利,采用20-30倍杠杆操作,假设一个银行A自身资产为30亿,30倍杠杆就是900亿。也就是说,这个银行A以 30亿资产为抵押去借900亿的资金用于投资,假如投资盈利5%,那么A就获得45亿的盈利,相对于A自身资产而言,这是150%的暴利。反过来,假如投资亏损5%,那么银行A赔光
2017-08-18 10:30:39 3396
转载 MySql直接备份数据库文件的方法(MyISAM和InnoDB有所不同)
MySql直接备份数据库文件的方法(MyISAM和InnoDB有所不同)MySql直接备份数据库文件的方法(MyISAM和InnoDB有所不同) mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原
2017-08-15 19:06:44 1175
转载 Spring的传播行为与隔离级别
Spring的传播行为与隔离级别spring事务中的传播行为如下:Require:支持当前事务,如果没有事务,就建一个新的,这是最常见的;Supports:支持当前事务,如果当前没有事务,就以非事务方式执行;Mandatory:支持当前事务,如果当前没有事务,就抛出异常;RequiresNew:新建事务,如果当前存在事务,把当前事务挂
2017-08-14 15:02:50 223
转载 Spring 使用注解方式进行事务管理
事务使用步骤:步骤一、在spring配置文件中引入命名空间 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/sch
2017-08-14 14:56:47 231
转载 MyBatis中的一级缓存
原博主主页地址:http://blog.csdn.net/eson_15缓存的作用是减轻数据库的压力,提高数据库的性能的。mybatis中提供了一级缓存和二级缓存,先来看一下两个缓存的示意图: 从图中可以看出:一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashM
2017-08-14 14:22:07 220
转载 MyBatis中的延迟加载
原博主主页:http://blog.csdn.net/eson_151. 什么是延迟加载 举个例子:如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。 所以延迟加载即先从单表查询、需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张
2017-08-14 14:14:36 235
转载 springMVC 的工作原理和机制
工作原理上面的是springMVC的工作原理图:1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参
2017-08-14 12:00:02 1080
转载 java方法的重载与覆盖的返回值类型
重载overload重写overRiding[java] view plain copypublic class A extends B{ //下面的是方法的覆盖(重写overRiding) public void riding(){ System.out.println("this
2017-08-11 12:40:07 1004
转载 Java数组扩容算法及Java对它的应用
Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组对象是不可扩容的。 2)利用 【数组复制】方法可以 变通的 实现数组扩容。 3)System.arraycopy()可以复制数组。 4)Arrays.copyOf()可以简便的创建数组副本。 5)创建数组副本的 同时 将数组长度增加 就 变通的 实现了数组的扩容。
2017-08-09 09:52:23 274
转载 Java方法之--System.arraycopy方法和Arrays.copyOf()
System.arraycopy方法:如果是数组比较大,那么使用System.arraycopy会比较有优势: 因为其使用的是内存复制,省去了大量的数组寻址访问等时间[java] view plain copy
2017-08-09 09:45:05 853
转载 ArrayList和Vector的扩容机制
ArrayList和Vector都是继承了相同的父类和实现了相同的接口。如下 Java代码 public class Vector extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable {} publ
2017-08-08 18:02:49 442
转载 spring aop 两种配置方式
第一种:注解配置AOP注解配置AOP(使用 AspectJ 类库实现的),大致分为三步: 1. 使用注解@Aspect来定义一个切面,在切面中定义切入点(@Pointcut),通知类型(@Before, @AfterReturning,@After,@AfterThrowing,@Around). 2. 开发需要被拦截的类。 3. 将切面配置到xml中,当然,我们也可以使用自动
2017-08-07 15:50:54 301
转载 spring 面试题
一、spring工作原理: 1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.3.DispatcherServlet请请求提交到目标Controller4.Controll
2017-08-07 15:36:15 277
原创 mybatis 动态标签
delete from ${dmlItem.tableName} test="dmlItem.id != null"> where ${dmlItem.pkColumn} = #{dmlItem.id} where 1 = 1
2017-08-07 12:15:15 429
转载 Java HashMap的工作原理
面试的时候经常会遇见诸如:“java中的HashMap是怎么工作的”,“HashMap的get和put内部的工作原理”这样的问题。本文将用一个简单的例子来解释下HashMap内部的工作原理。首先我们从一个例子开始,而不仅仅是从理论上,这样,有助于更好地理解,然后,我们来看下get和put到底是怎样工作的。我们来看个非常简单的例子。有一个”国家”(Country)类,我们将要
2017-08-02 14:02:56 183
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人