SF
crossoverJie专栏
crossoverJie专栏
注册登录
关注博客
注册登录
主页
关于
RSS
Guava 源码分析(Cache 原理)
crossoverJie
2018-06-13
阅读 4 分钟
5.4k
前言 Google 出的 Guava 是 Java 核心增强的库,应用非常广泛。 我平时用的也挺频繁,这次就借助日常使用的 Cache 组件来看看 Google 大牛们是如何设计的。 缓存 本次主要讨论缓存。 缓存在日常开发中举足轻重,如果你的应用对某类数据有着较高的读取频次,并且改动较小时那就非常适合利用缓存来提高性能。 缓存之所以可...
分布式工具的一次小升级⏫
crossoverJie
2018-06-08
阅读 6 分钟
2.2k
秒杀时我做压测:由于集成了这个限流组件,并发又比较大,所以导致连接、断开 Redis 非常频繁。最终导致获取不了 Redis connection 的异常。
Netty(一) SpringBoot 整合长连接心跳机制
crossoverJie
2018-05-29
阅读 15 分钟
10k
前言 Netty 是一个高性能的 NIO 网络框架,本文基于 SpringBoot 以常见的心跳机制来认识 Netty。 最终能达到的效果: 客户端每隔 N 秒检测是否需要发送心跳。 服务端也每隔 N 秒检测是否需要发送心跳。 服务端可以主动 push 消息到客户端。 基于 SpringBoot 监控,可以查看实时连接以及各种应用信息。 效果如下: IdleSt...
1K star+ 的项目是如何炼成的?
crossoverJie
2018-05-15
阅读 3 分钟
4.1k
之所以要做这个项目主要是当时我正在面阿里的两个部门,非常幸运的是技术面都过了。其中的过程真是让我受益匪浅更是印象深刻,所以就想把期间的问题记录下来,加上自己的理解希望能对其他朋友起到帮助。
秒杀架构实践
crossoverJie
2018-05-09
阅读 14 分钟
9.4k
前言 之前在 Java-Interview 中提到过秒杀架构的设计,这次基于其中的理论简单实现了一下。 本次采用循序渐进的方式逐步提高性能达到并发秒杀的效果,文章较长请准备好瓜子板凳(liushuizhang😂)。 本文所有涉及的代码: [链接] [链接] 最终架构图: <!--more--> 先简单根据这个图谈下请求的流转,因为后面不管怎么...
分布式限流
crossoverJie
2018-04-28
阅读 10 分钟
3.7k
前言 本文接着上文应用限流进行讨论。 之前谈到的限流方案只能针对于单个 JVM 有效,也就是单机应用。而对于现在普遍的分布式应用也得有一个分布式限流的方案。 基于此尝试写了这个组件: [链接] DEMO 以下采用的是 [链接] 来做演示。 在 Order 应用提供的接口中采取了限流。首先是配置了限流工具的 Bean: {代码...} 接...
动手实现一个 LRU cache
crossoverJie
2018-04-08
阅读 15 分钟
5.8k
前言 LRU 是 Least Recently Used 的简写,字面意思则是最近最少使用。 通常用于缓存的淘汰策略实现,由于缓存的内存非常宝贵,所以需要根据某种规则来剔除数据保证内存不被撑满。 如常用的 Redis 就有以下几种策略: 策略 描述 volatile-lru 从已设置过期时间的数据集中挑选最近最少使用的数据淘汰 volatile-ttl 从已设...
基于 Redis 的分布式锁
crossoverJie
2018-04-02
阅读 6 分钟
21.8k
前言 分布式锁在分布式应用中应用广泛,想要搞懂一个新事物首先得了解它的由来,这样才能更加的理解甚至可以举一反三。 首先谈到分布式锁自然也就联想到分布式应用。 在我们将应用拆分为分布式应用之前的单机系统中,对一些并发场景读取公共资源时如扣库存,卖车票之类的需求可以简单的使用同步或者是加锁就可以实现。 ...
Spring Bean 生命周期
crossoverJie
2018-03-21
阅读 5 分钟
4.6k
前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模式 Bean 的完整生命周期,对于 prototype 的 bean ,Spring 在创建好交给使用者之后则不会再管理后续的生命周期。 注解方式 在 b...
深入理解线程通信
crossoverJie
2018-03-20
阅读 13 分钟
11k
前言 开发中不免会遇到需要所有子线程执行完毕通知主线程处理某些逻辑的场景。 或者是线程 A 在执行到某个条件通知线程 B 执行某个操作。 可以通过以下几种方式实现: 等待通知机制 等待通知模式是 Java 中比较经典的线程通信方式。 两个线程通过对同一对象调用等待 wait() 和通知 notify() 方法来进行通讯。 如两个线程...
你应该知道的 volatile 关键字
crossoverJie
2018-03-09
阅读 4 分钟
2.5k
前言 不管是在面试还是实际开发中 volatile 都是一个应该掌握的技能。 首先来看看为什么会出现这个关键字。 内存可见性 由于 Java 内存模型(JMM)规定,所有的变量都存放在主内存中,而每个线程都有着自己的工作内存(高速缓存)。 线程在工作时,需要将主内存中的数据拷贝到工作内存中。这样对数据的任何操作都是基于工作...
1
…
More
4
5
6
(current)
上一页
6
(current)
下一页