redis查询优化

  最近公司运维提示线上redis出现报警,排查下来是redis存储的value过大导致查询的时候耗时过高。虽然redis最大限制可以存储512M,但是当单key过大时,每一次访问都会造成redis阻塞,由于redis是单线程的,其他请求只能等待了。在我们的这个场景下,主要是hash存储的json...

2019-07-12 10:36:39

阅读数 3

评论数 0

使用Guava cache构建本地缓存

前言 最近在一个项目中需要用到本地缓存,在网上调研后,发现谷歌的Guva提供的cache模块非常的不错。简单易上手的api;灵活强大的功能,再加上谷歌这块金字招牌,让我毫不犹豫的选择了它。仅以此博客记录我在使用过程中的点滴。 什么是本地缓存 在我们的应用中,大部分的计算是昂贵的,而且是可复用的,并...

2019-07-10 10:32:00

阅读数 5

评论数 0

Redis闲谈:构建知识图谱

一、Redis是什么 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI 、C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据...

2019-05-27 18:03:23

阅读数 16

评论数 0

如何合理设置线程池大小

要想合理的配置线程池的大小,首先得分析任务的特性,可以从以下几个角度分析: 任务的性质:CPU密集型任务、IO密集型任务、混合型任务。 任务的优先级:高、中、低。 任务的执行时间:长、中、短。 任务的依赖性:是否依赖其他系统资源,如数据库连接等。 性质不同的任务可以交给不同规模的线程池执行。...

2019-04-05 10:50:16

阅读数 41

评论数 0

Java 反射基础

一、什么是反射 反射 (Reflection) 是 Java 的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。 总而言之,通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。程序中一般的对象的类型都是在编译期就确定下来的,而 Java...

2019-04-03 20:20:23

阅读数 55

评论数 0

缓存与数据库的一致性

什么是缓存? 缓存就是数据交换的缓冲区,针对服务对象的不同(本质就是不同的硬件)都可以构建缓存。 目的是,把读写速度慢的介质的数据保存在读写速度快的介质中,从而提高读写速度,减少时间消耗。 例如: CPU 高速缓存 :高速缓存的读写速度远高于内存。 CPU 读数据时,如果在高速缓存中找到所需...

2019-04-03 20:05:53

阅读数 40

评论数 0

SpringBoot启动过程

SpringBoot启动过程分析,首先打开SpringBoot的启用入口Main类: @SpringBootApplication public class ApplicationMain{ public static void main(String[] args) { ...

2019-03-14 17:18:40

阅读数 93

评论数 0

Spring event事件通知机制应用

Spring的事件通知机制是一项很有用的功能,使用事件机制我们可以将相互耦合的代码解耦,从而方便功能的修改与添加。 举个栗子:下单成功给用户送积分。这里介绍两种实现方式: spring的event事件机制 首先定义事件模型OrderEvent: public class OrderEvent ex...

2019-03-11 21:26:53

阅读数 124

评论数 0

Spring Event事件通知机制

Spring的事件通知机制是一项很有用的功能,使用事件机制我们可以将相互耦合的代码解耦,从而方便功能的修改与添加。本文我来学习并分析一下Spring中事件的原理。 举个例子,假设有一个添加评论的方法,在评论添加成功之后需要进行修改redis缓存、给用户添加积分等等操作。当然可以在添加评论的代码后面...

2019-03-11 21:10:57

阅读数 265

评论数 0

spring cache注解@Cacheable缓存穿透

最近发现线上监控有个SQL调用量很大,但是方法的调用量不是很大,查看接口实现,发现接口是做了缓存操作的,使用Spring cache缓存注解结合tair实现缓存操作。但是为啥SQL调用量这么大,难道缓存没有生效。测试发现缓存是正常的,分析了代码发现,代码存在缓存穿透的风险。具体注解是这样的: @C...

2019-03-11 14:26:19

阅读数 277

评论数 0

Spring Cache- 缓存拦截器( CacheInterceptor)

打开Spring Cache的核心缓存拦截器CacheInterceptor,可以看到具体实现: public class CacheInterceptor extends CacheAspectSupport implements MethodInterceptor, Serializable ...

2019-03-11 14:20:51

阅读数 246

评论数 0

高并发缓存处理之——缓存穿透的几种形式及解决方案

缓存失效的几种形式 1 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用...

2019-03-11 10:53:35

阅读数 128

评论数 0

java调用Groovy脚本

一、使用 用 Groovy 的 GroovyClassLoader ,它会动态地加载一个脚本并执行它。GroovyClassLoader是一个Groovy定制的类装载器,负责解析加载Java类中用到的Groovy类。 先创建一个groovy脚本,非常简单,定义一个用于计算的方法,groovy脚本如...

2019-02-01 17:28:50

阅读数 131

评论数 0

Groovy语言

一、Groovy语言 Groovy 是基于JVM的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。 二、特性 1.兼容Java类库 由于Groovy是基于JVM的面向对象的编...

2019-02-01 16:28:50

阅读数 149

评论数 0

groovy脚本导致的FullGC问题

这个是由一个线上问题导致的: 背景: 应用中内嵌了groovy引擎,会动态执行传入的表达式并返回执行结果 线上问题: 发现机器的fullGC从某个时候开始暴涨,并且一直持续; 登到机器上,用jstat -gcutil命令观察,发现perm区一直是100%,fullGC无法回收; 将这台机器的内存...

2019-01-31 19:12:01

阅读数 74

评论数 0

Groovy深入探索——Groovy的ClassLoader体系

Groovy中定义了不少ClassLoader,本文将介绍其中绝大多数Groovy脚本都会涉及到的,也是最主要的3个ClassLoader:RootLoader、GroovyClassLoader和GroovyClassLoader.InnerLoader。 注:以下分析的Groovy源代码来自G...

2019-01-31 19:03:18

阅读数 161

评论数 0

记一次生产多线程调优

一、问题 在某次促销活动之前,突然收到生产环境的报警,有个后台应用出现了大量的YGC,赶紧查看系统监控日志,没有什么异常,那是什么原因呢? 二、问题排查 1.登录跳板机,通过top命令查看,有个java的进程CPU占用率过高,ps -ef |grep java发现是应用的进程。 2.通过top -...

2019-01-30 20:13:38

阅读数 20

评论数 0

java线程池

一、什么是线程池? 线程池是用于创建和管理线程的容器,可以提高系统的资源利用率。线程池(Thread Pool)对于限制应用程序中同一时刻运行的线程数很有用。因为每启动一个新线程都会有相应的性能开销,每个线程都需要给栈分配一些内存等等。JDK1.5之后java.util.concurrent包下新...

2019-01-30 19:52:52

阅读数 35

评论数 0

用户画像原理、技术选型及架构实现

这篇文章在宏观上很好地描述了用户画像的主要内容。(文章内的图片来源于不同帖子,侵删) 一、 什么是用户画像  &amp...

2018-10-18 22:29:33

阅读数 1462

评论数 0

用户画像:数据指标与表结构设计

本篇博客介绍一下画像中需要开发的数据指标与开发过程中表结构的设计。 首先介绍画像开发的数据指标,画像开发过程中通用类的指标体系包括用户属性类、用户行为标签类、用户活跃时间段类、用户消费能力类、用户偏好类等 数据指标体系 用户属性指标 用户属性指标根据业务数据来源,尽可能全面地描述用户基础属性,这些...

2018-10-18 22:27:12

阅读数 120

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭