Netty(二) 从线程模型的角度看 Netty 为什么是高性能的? 前言在之前的 SpringBoot 整合长连接心跳机制 一文中认识了 Netty。 但其实只是能用,为什么要用 Netty?它有哪些优势?这些其实都不清楚。 本文就来从历史源头说道说道。 传统 IO在 Netty 以及 NIO 出现之前,我们写 IO 应用其实用的都是用 java.io.* 下所提供的包。 比如下面的伪代码: 123456789ServeSocket serverSocket 2018-07-04 Netty #内存模型
一个学渣的阿里之路 前言最近有些朋友在面试阿里,加上 Java-Interview 项目的原因也有小伙伴和我讨论,近期也在负责部门的招聘,这让我想起年初那段长达三个月的奇葩面试经历🤣。 本来没想拿出来说的,毕竟最后也没成。 但由于那几个月的经历让我了解到了大厂的工作方式、对候选同学的考察重点以及面试官的套路等都有了全新的认识。 当然最重要的是这段时间的查漏补缺也让自己精进不少。 先交代下背景吧: 从去年 12 月 2018-06-21 Interview > Person
Guava 源码分析(Cache 原理) 前言Google 出的 Guava 是 Java 核心增强的库,应用非常广泛。 我平时用的也挺频繁,这次就借助日常使用的 Cache 组件来看看 Google 大牛们是如何设计的。 缓存 本次主要讨论缓存。 缓存在日常开发中举足轻重,如果你的应用对某类数据有着较高的读取频次,并且改动较小时那就非常适合利用缓存来提高性能。 缓存之所以可以提高性能是因为它的读取效率很高,就像是 CPU 的 L1、 2018-06-13 Guava #Cache
分布式工具的一次小升级⏫ 前言之前在做 秒杀架构实践 时有提到对 distributed-redis-tool 的一次小升级,但是没有细说。 其实主要原因是: 秒杀时我做压测:由于集成了这个限流组件,并发又比较大,所以导致连接、断开 Redis 非常频繁。最终导致获取不了 Redis connection 的异常。 池化技术这就是一个典型的对稀缺资源使用不善导致的。 何为稀缺资源?常见的有: 线程 数据库连接 网络 2018-06-07 Distributed Tools #Distributed Lock #Distributed Limited
记于 2018 年高考! 2012/02/28 2012年二月二十八日。 这天学校举行了高考 100 天誓师大会,当时完全不知道意味着什么,只感觉现场热血沸腾、激情高涨,心里告诉自己就算只剩下 100 天我也能考上清华其次也是北大。 2012/06/03 2012年六月三日。 晚自习拿出前段时间刚拍的毕业合照,恨死摄影师,没有抓拍到我最帅的角度😡。 2018-06-06 小情绪
Netty(一) SpringBoot 整合长连接心跳机制 前言Netty 是一个高性能的 NIO 网络框架,本文基于 SpringBoot 以常见的心跳机制来认识 Netty。 最终能达到的效果: 客户端每隔 N 秒检测是否需要发送心跳。 服务端也每隔 N 秒检测是否需要发送心跳。 服务端可以主动 push 消息到客户端。 基于 SpringBoot 监控,可以查看实时连接以及各种应用信息。 效果如下: 2018-05-24 Netty #SpringBoot #TCP #Heartbeat
1K star+ 的项目是如何炼成的? 前言首先标题党一下,其实这篇文章主要是记录我的第二个过 1K star 的项目 Java-Interview,顺便分享下其中的过程及经验。 需求选择Java-Interview之所以要做这个项目主要是当时我正在面阿里的两个部门,非常幸运的是技术面都过了。其中的过程真是让我受益匪浅更是印象深刻,所以就想把期间的问题记录下来,加上自己的理解希望能对其他朋友起到帮助。 正好那段时间也是传说中的金三银 2018-05-15 小技巧 #GitHub
SSM(十八) 秒杀架构实践 前言之前在 Java-Interview 中提到过秒杀架构的设计,这次基于其中的理论简单实现了一下。 本次采用循序渐进的方式逐步提高性能达到并发秒杀的效果,文章较长请准备好瓜子板凳(liushuizhang😂)。 本文所有涉及的代码: https://github.com/crossoverJie/SSM https://github.com/crossoverJie/distribut 2018-05-07 SSM > Distributed Tools #Java #Kafka #Redis #SpringBoot
sbc(七)分布式限流 前言本文接着上文应用限流进行讨论。 之前谈到的限流方案只能针对于单个 JVM 有效,也就是单机应用。而对于现在普遍的分布式应用也得有一个分布式限流的方案。 基于此尝试写了这个组件: https://github.com/crossoverJie/distributed-redis-tool DEMO以下采用的是 https://github.com/crossoverJie/springboot 2018-04-28 sbc > Distributed Tools #Distributed Limited
【译】对于初学者什么是最好的编程语言? 原文链接Python?Java?Ruby?JavaScript?有非常多的选择。选择一种编程语言开始你的编码之旅不应该是一件艰巨的任务。 事实上:你将要学习的语言并不是特别重要,更重要的是学习编程的理念。对于任何编程语言来说知识的可传递性都是至关重要的。 我学习的第一门语言是 Java,学习了循环,while 循环,条件,函数,面向对象编程和许多编程理念。 然而,选择一门能在编程领域轻松找到工作 2018-04-12 翻译