加载中
Guava 源码分析(Cache 原理【二阶段】)

前言 在上文「Guava 源码分析(Cache 原理)」中分析了 Guava Cache 的相关原理。 文末提到了回收机制、移除时间通知等内容,许多朋友也挺感兴趣,这次就这两个内容再来分析分析。 在开始之前...

2018/07/16 08:02
53
分布式限流

前言 本文接着上文应用限流进行讨论。 之前谈到的限流方案只能针对于单个 JVM 有效,也就是单机应用。而对于现在普遍的分布式应用也得有一个分布式限流的方案。 基于此尝试写了这个组件: ht...

如何成为一位「不那么差」的程序员

前言 已经记不清有多少读者问过: 博主,你是怎么学习的?像我这样的情况有啥好的建议嘛? 也不知道啥时候我居然成人生导师了。当然我不排斥这些问题,和大家交流都是学习的过程。 因此也许诺...

一次线上问题排查所引发的思考

前言 之前或多或少分享过一些内存模型、对象创建之类的内容,其实大部分人看完都是懵懵懂懂,也不知道这些的实际意义。 直到有一天你会碰到线上奇奇怪怪的问题,如: 线程执行一个任务迟迟没...

2018/07/09 08:25
912
Netty(三) 什么是 TCP 拆、粘包?如何解决?

前言 记得前段时间我们生产上的一个网关出现了故障。 这个网关逻辑非常简单,就是接收客户端的请求然后解析报文最后发送短信。 但这个请求并不是常见的 HTTP ,而是利用 Netty 自定义的协议。...

2018/08/06 08:05
118
「造个轮子」——设计 HTTP 请求全局上下文

前言 本次 Cicada 已经更新到了 v1.0.3。 主要是解决了两个 issue,#9(Boss线程数好像设置有误 ) #8(怎么返回纯字符串内容不要JSON格式?)。 所以本次的主要更新为: Cicada 采用合理的线程分...

2018/10/09 08:06
42
Netty(二) 从线程模型的角度看 Netty 为什么是高性能的?

前言 在之前的 SpringBoot 整合长连接心跳机制 一文中认识了 Netty。 但其实只是能用,为什么要用 Netty?它有哪些优势?这些其实都不清楚。 本文就来从历史源头说道说道。 传统 IO 在 Nett...

2018/07/05 08:14
1K
Guava 源码分析(Cache 原理)

前言 Google 出的 Guava 是 Java 核心增强的库,应用非常广泛。 我平时用的也挺频繁,这次就借助日常使用的 Cache 组件来看看 Google 大牛们是如何设计的。 缓存 本次主要讨论缓存。 缓存在日...

2018/06/13 10:17
771
如何优雅的使用和理解线程池

前言 平时接触过多线程开发的童鞋应该都或多或少了解过线程池,之前发布的《阿里巴巴 Java 手册》里也有一条: 可见线程池的重要性。 简单来说使用线程池有以下几个目的: 线程是稀缺资源,不...

Netty(一) SpringBoot 整合长连接心跳机制

前言 Netty 是一个高性能的 NIO 网络框架,本文基于 SpringBoot 以常见的心跳机制来认识 Netty。 最终能达到的效果: 客户端每隔 N 秒检测是否需要发送心跳。 服务端也每隔 N 秒检测是否需要...

2018/05/29 10:19
3.2K
『并发包入坑指北』之向大佬汇报任务

前言 在面试过程中聊到并发相关的内容时,不少面试官都喜欢问这类问题: 当 N 个线程同时完成某项任务时,如何知道他们都已经执行完毕了。 这也是本次讨论的话题之一,所以本篇为『并发包入坑...

一份针对于新手的多线程实践

前言 前段时间在某个第三方平台看到我写作字数居然突破了 10W 字,难以想象高中 800 字作文我都得巧妙的利用换行来完成(懂的人肯定也干过)。 干了这行养成了一个习惯:能撸码验证的事情都自己...

不改一行代码定位线上性能问题

背景 最近时运不佳,几乎天天被线上问题骚扰。前几天刚解决了一个 HashSet 的并发问题,周六又来了一个性能问题。 大致的现象是: 我们提供出去的一个 OpenAPI 反应时快时慢,快的时候几十毫...

分享几个 SpringBoot 实用的小技巧

前言 最近分享的一些源码、框架设计的东西。我发现大家热情不是特别高,想想大多数应该还是正儿八经写代码的居多;这次就分享一点接地气的: SpringBoot 使用中的一些小技巧。 算不上多高大上...

2018/10/15 08:24
7.5K
为自己搭建一个分布式 IM 系统二【从查找算法聊起】

前言 最近这段时间确实有点忙,这篇的目录还是在飞机上敲出来了的。 言归正传,上周更新了 cim 第一版;没想到反响热烈,最高时上了 GitHub Trending Java 版块的首位,一天收到了 300+ 的 ...

HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!

前言 Map 这样的 Key Value 在软件开发中是非常经典的结构,常用于在内存中存放数据。 本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它...

2018/07/23 08:20
5.5K
一次生产 CPU 100% 排查优化实践

前言 到了年底果然都不太平,最近又收到了运维报警:表示有些服务器负载非常高,让我们定位问题。 还真是想什么来什么,前些天还故意把某些服务器的负载提高(没错,老板让我写个 BUG!),不...

2018/12/17 08:44
5.6K
利用责任链模式设计一个拦截器

前言 近期在做 Cicada 的拦截器功能,正好用到了责任链模式。 这个设计模式在日常使用中频率还是挺高的,借此机会来分析分析。 责任链模式 先来看看什么是责任链模式。 引用一段维基百科对其...

2018/10/22 08:17
168
「造个轮子」——cicada 设计一个配置模块

前言 在前两次的 cicada 版本中其实还不支持读取配置文件,比如对端口、路由的配置。 因此我按照自己的想法创建了一个 issue ,也收集到了一些很不错的建议。 最终其实还是按照我之前的想法来...

2018/09/14 08:55
32
1K star+ 的项目是如何炼成的?

前言 首先标题党一下,其实这篇文章主要是记录我的第二个过 1K star 的项目 Java-Interview,顺便分享下其中的过程及经验。 需求选择 Java-Interview 之所以要做这个项目主要是当时我正在面阿...

2018/05/15 08:37
140

没有更多内容

加载失败,请刷新页面

返回顶部
顶部