摘要: 前不久公司进行了一次大促,晚上值班。大促是从晚上8点多开始的,一开始流量慢慢的进来,观察了应用的各项指标,一切都是正常的,因为这是双11过后的第一次大促,想着用户的购买欲应该不会太强,所以我们的运维同事9点多就回家了在家里面远程支持,留下交易组和其它后端的技术值班,楼主就是交易组的。谁知10点整的时 阅读全文
posted @ 2018-11-26 18:38 浮云骑士LIN 阅读(2523) 评论(0) 推荐(2) 编辑
摘要: 前阵子有个用户调用劵列表一直超时,后面经过性能排查:发现这个用户下面有8000多张劵,db查询花了10多毫秒。但是对象从entity到dto的复制却花了几百毫秒,后面定位到性能瓶颈是出现在了ApacheBeanUtils的org.apache.commons.beanutils.BeanUtils# 阅读全文
posted @ 2018-11-23 19:01 浮云骑士LIN 阅读(5192) 评论(1) 推荐(6) 编辑
摘要: 前不久做了一个优惠劵的分享功能,其中一个功能就是生成一个优惠劵分享短链接。生成的短链接要求每个链接都是唯一的,并且长度尽可能短。在网上查了一下相关的思路,发现了一个不错的算法。这个算法的思路就是用[a-zA-Z0-9]建立一个长度为62的矩阵,然后把矩阵打乱,再生成一个全局唯一的数字,再把这个数字用 阅读全文
posted @ 2018-08-23 12:51 浮云骑士LIN 阅读(7756) 评论(0) 推荐(0) 编辑
摘要: 8月初收到阿里中间件的面试邀请,收到之后很快就进行了第一面。 第一面主要聊了一些java自身的东西 常用的集合比如list,hashmap,set聊这些集合的适用常景和一些底层的实现原理。常用的并发包组件如conurrentHashMap,countdownlatch和这些组件的底层实现,锁有几种等 阅读全文
posted @ 2018-08-23 00:21 浮云骑士LIN 阅读(3005) 评论(1) 推荐(0) 编辑
摘要: 缓存这个东西相信大家工作中都接触得比较多,相应的在不同场景下也会遇到各种各样的问题。下面我列举几种可能会遇到的问题并提供一些解决建议。 1、如何把海量数据存放在缓存中并提供快速查询 现实中我们的缓存通常都是以string,map,array,list,set,tree等具体的类型或者集合存放内存中, 阅读全文
posted @ 2018-07-24 15:53 浮云骑士LIN 阅读(1218) 评论(1) 推荐(2) 编辑
摘要: guava是google的一个开源java框架,其github地址是 https://github.com/google/guava。guava工程包含了若干被Google的 Java项目广泛依赖的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [prim 阅读全文
posted @ 2018-07-22 18:45 浮云骑士LIN 阅读(16151) 评论(2) 推荐(1) 编辑
摘要: fork/join作为一个并发框架在jdk7的时候就加入到了我们的java并发包java.util.concurrent中,并且在java 8 的lambda并行流中充当着底层框架的角色。这样一个优秀的框架设计,我自己想了解一下它的底层代码是如何实现的,所以我尝试的去阅读了JDK相关的源码。下面我打 阅读全文
posted @ 2018-07-18 15:02 浮云骑士LIN 阅读(8115) 评论(2) 推荐(8) 编辑
摘要: 早在2014年oracle发布了jdk 8,在里面增加了lambda模块。于是java程序员们又多了一种新的编程方式:函数式编程,也就是lambda表达式。我自己用lambda表达式也差不多快4年了,但在工作中却鲜有看到同事使用这种编程方式,即使有些使用了,但感觉好像对其特性也不是很了解。我看了一上 阅读全文
posted @ 2018-07-09 22:21 浮云骑士LIN 阅读(34752) 评论(3) 推荐(7) 编辑
摘要: 之前在我的上一篇文章《系统性能优化二三事》中提到了sql的性能优化的问题。因为时间和篇幅的关系,当时并没有进行什么讨论,那现在我们就来讨论关于索引的一些事一些情~ 认识索引 索引也叫做"键(key)",是存储引擎用于快速找到记录的一种数据结构。索引分为两种:b-tree索引、hash索引。这两种索引 阅读全文
posted @ 2018-06-29 15:03 浮云骑士LIN 阅读(828) 评论(0) 推荐(4) 编辑
摘要: 工作中当一个业务系统被开发出来之后,经过多次迭代业务的发展处理逻辑会越来越复杂,同时访问量以及处理的数据也会相应的增多,系统的响应时间就会开始得逐渐加长。终于有一天用户忍受不了抱怨你的app或者页面要等好几十秒或者好几分钟才响应时你就迫切需要对你的系统进行一个性能的优化。 下面谈一下我对性能优化方面 阅读全文
posted @ 2018-06-25 11:29 浮云骑士LIN 阅读(2684) 评论(5) 推荐(5) 编辑
摘要: 前阵子开发了公司领劵中心的项目,这个项目是以redis作为关键技术落地的。 先说一下领劵中心的项目吧,这个项目就类似京东app的领劵中心,当然图是截取京东的,公司的就不截了。。。 其中有一个功能叫做领劵的订阅推送。什么是领劵的订阅推送?就是用户订阅了该劵的推送,在可领取前的一分钟就要把提醒信息推送到 阅读全文
posted @ 2018-06-22 20:35 浮云骑士LIN 阅读(23260) 评论(26) 推荐(14) 编辑
摘要: RPC英文全称remote procedure call 翻译成中文的意思就是远程过程调用。RPC的出现其实主要是为了解决分布式系统间的通信透明性的问题。 那什么是分布式系统的通信透明性问题?这个问题就是指分布式系统间的相互调用其实是基本进程间的显式消息交换,然而,消息的发送和接收过程无法隐藏。而通 阅读全文
posted @ 2018-06-20 21:35 浮云骑士LIN 阅读(27826) 评论(1) 推荐(9) 编辑
摘要: 当我们用RocketMQ发送信息的时候通常都会返回如下信息: SendResult [sendStatus=SEND_OK, msgId=0A42333A0DC818B4AAC246C290FD0000, offsetMsgId=0A42333A00002A9F000000000134F1F5, m 阅读全文
posted @ 2018-06-14 21:00 浮云骑士LIN 阅读(7342) 评论(3) 推荐(1) 编辑
摘要: 1、RocketMQ 简介: RocketMQ前身是阿里研发的一个队列模型的消息中间件,后开源给apache基金会成为了apache的顶级开源项目,具有高性能、高可靠、高实时、分布式特点。 2、RocketMQ基本架构: 如图所示RocketMQ架构上主要分为四部分: Producer: 充当消息发 阅读全文
posted @ 2018-06-14 17:35 浮云骑士LIN 阅读(5888) 评论(0) 推荐(0) 编辑
摘要: 阿里分布式服务框架 dubbo现在已成为了外面很多中小型甚至一些大型互联网公司作为服务治理的一个首选或者考虑方案,相信大家在日常工作中或多或少都已经用过或者接触过dubbo了。但是我搜了一下网上关于dubbo框架原理方面的解析还是比较少,大多数都是介绍一个大概的框架结构和一些配置的用法。一些低层原理 阅读全文
posted @ 2017-11-10 19:23 浮云骑士LIN 阅读(27961) 评论(2) 推荐(1) 编辑
摘要: 日常中工作中我并没有对kafka接触很多,但了解到很多的框架都和kafka有着紧密的关系。比如rockmetmq是参考了kafka的设计,neflix的缓存组件ehcache是用kafka做数据的同步。同时kafka在大数据方面通常和spark,hadoop,storm一起使用,所以我对kafka也 阅读全文
posted @ 2018-07-30 18:34 浮云骑士LIN 阅读(843) 评论(0) 推荐(0) 编辑
摘要: 1、缓存的意义 说到分布式系统基本上就离不开缓存,在高并发,大流量的场景下缓存更是扮演着重要的角色。所以作为一个分布式系统的开发人员是必须熟练掌握缓存的使用与设计。下面是一张简单的系统架构图 从图中我们知道了缓存在系统层面的所处位置,可以在应用系统的内部也可以在外部。那缓存的意义又是什么呢? 1、缩 阅读全文
posted @ 2018-07-21 11:40 浮云骑士LIN 阅读(652) 评论(0) 推荐(1) 编辑