Think In JAVA—Max

Best Or Nothing

RPC框架核心技术

同前几篇博文,本次针对大神分享的PRC框架核心技术进行总结分享。欢迎讨论 一、RPC框架整体架构 RPC Client  &&  RPC Server RPC Client 1、动态代理,根据lookUp信息(接口-实现-方法)动态创建出...

2018-05-30 15:33:55

阅读数 272

评论数 0

(二)常用的优化策略

一、性能瓶颈的定位查看操作系统负载1、CPU (查看各性能指标命令集合-待整理)2、IO3、带宽4、其他使用Profiler测试,另外外部工具例如Java的JProfiler/TPTP/CodePro Profiler;通过日志查询二、性能优化策略(具体case)空间换时间1、将远程调用改为数据初...

2018-05-29 18:59:39

阅读数 122

评论数 0

(一)服务容量预估

昨天一大神又做了一次精彩的分享,关于服务容量预估和常用的优化策略。鄙人将分享内容case及个人理解写出来,一在自我回顾总结,二在分享给大家,一起讨论。Case用户运营提出某活动价促销需求(优惠力度很大),且活动商品无限量供应。计划给1000w用户发送促销短信。问:你是负责该活动的RD,这次活动需要...

2018-05-29 17:47:52

阅读数 715

评论数 3

JDK、CGLib、Javassist实现动态代理

一、类加载1.类加载过程模拟public class Programmer { public void code() { System.out.println("I'm a Programmer,Just Coding....."); ...

2018-05-22 11:04:30

阅读数 268

评论数 0

Spring Cloud Zuul--服务网关

有了Eureka服务注册发现、Hystrix断路器、Ribbon服务调用负载均衡,以及spring cloud config 集群配置中心,似乎一个微服务框架已五脏俱全,last but not least,一个服务网关却不可或缺。 一、Zuul 实例     在上篇demo创建好注册中心、服务提...

2016-12-19 10:41:56

阅读数 36520

评论数 5

Spring Cloud Hystrix--熔断器

一、Hystrix 熔断器 1、引入pom org.springframework.boot spring-boot-starter-parent 1.3.5.RELEASE org.springframework.cloud sprin...

2016-12-13 16:39:19

阅读数 3432

评论数 1

Spring Cloud Ribbon--智能路由

一、Ribbon负载均衡 还是先通过一个demo直观的体验一下spring cloud Ribbon负载均衡技能 1、引入pom依赖 org.springframework.boot spring-boot-starter-parent 1.3.5.RELEASE ...

2016-12-12 16:21:00

阅读数 4328

评论数 1

Spring Cloud Eureka--服务发现

一、Spring Cloud      Spring Cloud 为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性 Token、全局锁、决策竞选、分布式会话和集群状态)操作的开发工具。最关键的是它足够简单,一般的开发人员只需要几天时间就可以学会它的基本...

2016-12-12 12:01:08

阅读数 4775

评论数 1

知识图谱和Neo4j图数据库

一、知识图谱                 互联网、大数据的背景下,谷歌、百度、搜狗等搜索引擎纷纷基于该背景,创建自己的知识图谱Knowledge Graph(谷歌)、知心(百度)和知立方(搜狗),主要用于改进搜索质量。 1、什么是知识图谱       一种基于图的数据结构,由节点(...

2016-09-04 11:48:42

阅读数 24050

评论数 3

MAT定位OOM溢出源

前期准备: 配置oom自动dump jvm快照:-XX :+HeapDumpOnOutOfMemoryError 分析过程: 1)MAT中导入java_pid17932.hprof jvm快照,查看histogram 信息 注:Shallow Heap:对象自身不包含引用的大小;Ret...

2018-11-13 16:09:00

阅读数 103

评论数 0

Linux菜鸟——awk

一、语法 awk [选项参数] 'script' var=value file(s) 示例 echo "" | awk  '{print "hello kuaigou"}' awk '{a=0;b=1;print a,b}'...

2018-11-12 18:07:01

阅读数 51

评论数 0

spring IOC容器自自实现

流程 组件一、配置文件加载器  public final class PropsUtil { /** * 获取文件流,转成properti map内存 */ public static Properties loadProps(String fi...

2018-11-05 18:25:58

阅读数 78

评论数 0

缓存穿透 & 缓存雪崩 & 缓存预热 & 缓存热点并发访问

一、什么是缓存穿透? 缓存未命中某key,转而到db中查询。 缓存穿透的漏洞 恶意利用不存在的key频繁攻击应用,导致请求直接落到DB中,可能导致DB瞬时高负载或挂掉。 缓存穿透解决方案一: 先查询缓存,若缓存为null,则查询db,若DB仍返回无结果,将该key写入缓存,标识为不存在k...

2018-10-22 17:15:30

阅读数 88

评论数 1

Spring AOP 内部调用失效解决方案

背景 前两篇博客采用AOP实现接口入参、返回结果的log打印和方法参数校验。测试时发现一个问题,简言之: 1、service中方法1设置AOP拦截,奏效 2、同service中方法2未设置AOP拦截,但在方法2中直接diao调用方法1,方法1的AOP拦截失效。 原因 通过debug发现,...

2018-10-09 15:19:07

阅读数 196

评论数 0

Redis缓存淘汰算法

Redis缓存淘汰策略 当实际内存超出 maxmemory 时,Redis 提供了几种可选策略 (maxmemory-policy) 来让用户自己决定淘汰哪些key。总结如下: Redis LRU近似算法 Redis 使用的是一种近似 LRU 算法: 1、key增加最近访问时间戳字段 ...

2018-09-25 16:55:49

阅读数 240

评论数 0

Mybatis缓存机制

一级缓存实现原理 1、创建了一个SqlSession对象,同时会为这个SqlSession对象创建一个新的Executor执行器 2、Executor接口的实现类BaseExecutor则使用PerpetualCache缓存对象维护缓存. 3、PerpetualCache缓存类实现Has...

2018-09-25 15:46:41

阅读数 86

评论数 0

LFU & LRU-K 等常用缓存淘汰算法对比

上篇文章介绍了最常用的LRU算法及实现,本篇总结常用缓存淘汰算法,归总对比。 一、LFU (Least Frequently Used):最近最低使用频次被淘汰 实现:通过count记录缓存数据的使用次数,数据块按照引用计数排序,计数相同则按照时间排序。 1. 新加入数据插入到队列尾部(因...

2018-09-20 17:37:29

阅读数 111

评论数 0

缓存淘汰算法LRU及JAVA实现

一、基本概念 命中:访问缓存是通过key get到对应value 回源: miss了,未命中导致回读源数据 淘汰:缓存满了,那么就会按照某一种策略,把缓存中的旧对象踢出,而把新的对象加入缓存池。(只有5个存储单元,来了第6个元素。则考虑谁出队) 淘汰策略:即缓存算法,决定到底应该踢出哪些对...

2018-09-20 16:39:48

阅读数 102

评论数 0

Spring AOP 通用入参校验终极版

入参校验一直是程序中一块鸡肋,食之无味却又不得不吃。经过几个版本变更,本次项目上线笔者终于将入参校验应用了稍微高级一点的写法。 基调:hibernate.validator 实现-低配版 1、引入pom <dependency> &a...

2018-09-17 19:31:51

阅读数 275

评论数 0

Spring AOP 日志切面升级版

上一篇Spring AOP项目应用——方法入参校验 & 日志横切 介绍了 spring AOP 5切面类型及应用场景。本次结合注解使用,方便又实惠。实现如下: 封装日志切面 @Aspect @Component public class LogAspect { ...

2018-09-05 15:31:19

阅读数 112

评论数 0

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