背景 对于高频访问但是低频更新的数据我们一般会做缓存,尤其是在并发量比较高的业务里,原始的手段我们可以使用HashMap或者ConcurrentHashMap来存储. 这样没什么毛病,但是会面临一个问题,对于缓存中的数据只有当我们显示的调用remove方法,才会移除某个元素,即便是高频的数据,也会有访问命中率的高低之分,内存总是有限的,我们不可能无限地去增加Map中的数据. 我希望的比较完美的场景时.对于一个业务,我只想分配给你2k的内存,我们假设map中一条数据(键值对)是1B,那么最多它能存…
这些年一直在用spring的框架搭建项目,现在开始我们从零开始利用Spring框架来搭建项目,目前我能想到有Spring.SpringMVC.SpringJDBC.Mybatis.WebSockt.Redis.定时任务(Quartz).消息队列(ActiveMQ).缓存(Ehcache)等等,接下来,我会记录我整合过程并且把项目源码公布出来. 第一步,项目的建立,我们使用maven作为项目管理搭建. Maven建立父子关系项目工程,建立依赖关系结构,构建工作集. 构建一个maven项目(pare…
1.pom.xml 定义版本 <properties> <spring.version>4.2.7.RELEASE</spring.version> <jackson.version>2.6.7</jackson.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> 2.pom.xml…
缓存的背景 缓存,在我们日常开发中是必不可少的一种解决性能问题的方法.简单的说,cache 就是为了提升系统性能而开辟的一块内存空间.在cpu进行计算的时候, 首先是读取寄存器,然后内存,再是硬盘.由于寄存器容量很小,不太适合存储我们需要快速读取的数据,放在硬盘中话,效率太低,所以大多数人将一些静态资源或者不经常修改的数据放在内存中. 缓存的作用 缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用.在日常开发的很多场合,由于受限于硬盘 IO的性能或者我们自身业务系统的数…
前言 今天第一次使用MarkDown的形式发博客. 准备记录一下自己对Guava Cache的认识及项目中的实际使用经验. 一: 什么是Guava Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] .缓存 [caching] .原生类型支持 [primitives support] .并发库 [concurrency libraries] .通用注解 [common annotations] .字符串处理 [string proce…
此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 1.guava cache 当下最常用最简单的本地缓存 线程安全的本地缓存 类似于ConcurrentHashMap(或者说成就是一个ConcurrentHashMap,只是在其上多添加了一些功能) 2.使用实例 具体在实际中使用的例子,去查看<第七章 企业项目开发--本地缓存guava cache>,下面只列出测试实例: import java.util.concurrent.ExecutionExc…
1.guava cache 当下最常用最简单的本地缓存 线程安全的本地缓存 类似于ConcurrentHashMap(或者说成就是一个ConcurrentHashMap,只是在其上多添加了一些功能) 2.使用实例 具体在实际中使用的例子,去查看<第七章 企业项目开发--本地缓存guava cache>,下面只列出测试实例: import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit;…
Run java -jar -Dspring.profiles.active=dev sport.web.services.jar Maven <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <…
前面给大家讲了整合的思路和整合的过程,在这里就不在提了,直接把springMVC+spring+Mybatis整合的实例代码(单表的增删改查)贴给大家: 首先是目录结构: 仔细看看这个目录结构:我不详细解释了直接把所有的代码贴出来 实体类:com.etc.entity.User.java(get,set,空的构造方法,tostring记得生成) public class User implements Serializable{ private static final long serialV…
Spring cache简单使用 前言 spring有一套和各种缓存的集成方式.类似于sl4j,你可以选择log框架实现,也一样可以实现缓存实现,比如ehcache,guava cache. [TOC] 什么时候用缓存 首先,缓存是为了省略消耗时间的步骤,比如io.当我需要从数据库查询的数据几乎没有变化,或者变化很少的时候,我就没必要每次都去数据库里拿数据了.大可以放到本地,直接取出来就可以了.这时候需要注意的是数据一致性问题,缓存的数据是否被更改了,数据是否有效. 我的项目是分布式部署的,但还…