保存成功
订阅成功
保存失败,请重试
提交成功
清然

清然

高级软件工程师
从事java开发工作大约有7年多的时间,对设计模式、多线程高并发、分布式系统设计、JVM调优和sql调优有着丰富的实战经验和深刻的理解,对从事软件行业的每一个人和技术都怀有一颗敬畏的心,我希望把我的实战经验和对软件设计的个人见解分享给大家,我相信只有共同探讨才能进步。 我的公众号是“独孤九技”,欢迎大家订阅,会持续更新干货的哦。...更多
创作文章9

学了这篇 Zookeeper,分分钟钟写出分布式应用程序

Zookeeper 是 Apache 软件基金会顶级的开源项目之一,在我们熟知的分布式领域中,Dubbo 就是用它来实现服务注册与发现的,当然在 Kafka 中也有它的影子,主要用它来实现服务器之间的协调、生产者负载均衡、Topic 与 Broker 的注册等等,可见它的作用很强大,但是如果抛开这些开源的项目,让你来设计一个高可用的分布式架构,你可以胜任吗?那还用说?当然可以了!不过前提条件我们得有这方面的技能,所以还是要踏踏实实的去学习它,相信有了 Zookeeper 的介入,你定能会设计出属于自己的分布式应用程序,所以本场 Chat 你值得拥有! 在本场 Chat 中,会讲到如下内容: - Zookeeper 的核心理念与角色分析。 - 集群的搭建步骤与实操。 - 节点类型与常用命令。 - Zookeeper 的读写流程。 - ZAB协议的分析。 - Leader 挂掉之后的分析。 - 第一个Zookeeper 应用程序的讲解。 - 实现自己的服务注册、发现和负载均衡,掌握注册中心的精髓。 - 实现一个几乎“永不宕机”的 HA 架构。 - 分布式锁的实现,并与 Redis 实现的分布式锁做比较。 - 其他应用场景的介绍。 - 关于 Zookeeper 的一些思考。 - 做最后的总结。 温馨提示:实例代码使用的是 Java 语言。 适合人群: 对分布式架构设计感兴趣的所有开发人员。
严选ZooKeeper
233 订阅

使用 Shell 脚本甩掉重复的体力活,唯见你悠闲的喝着咖啡

很多后端的开发人员可能只是对各种源码、分布式感兴趣,可是做为一位优秀、“懒惰”的软件工程师而言,对自动化的设计也是要有吸引力的,试想,你的一堆服务器难道都需要你一个一个的启动、关闭、重启和检测状态吗?这些活不是不能干,而做为优秀的软件工程师而言要把时间放在有意义的上面来,哪怕是喝咖啡、休息也比一直干一些重复的体力活强吧,我们何把这些重复性的工作交给 Shell 脚本程序呢?设计一次无限执行与监控,然后腾出时间去做更加有意义的事!本场 Chat 我们就一步步的来分析和学习如何使用shell脚本自动化管理这些服务吧! 在本场 Chat 中,会讲到如下内容: - 一键启动 Redis、Nginx、Tomcat 和 MQ 服务的实现。 - 跨机器或机房怎么控制服务的启动,如何更加高效的执行多个 Shell 脚本的设计。 - 一键脚本检测多服务状态的实现。 - 当服务如果出现宕机则自动重启服务,摆脱人为手动启动服务。 - 使用 Shell 脚本一键启动 Spring Cloud 所有的服务,专门解决刚刚来电导致所有服务宕机的情况。 - 做最后的总结 适合人群: 对服务管控追求更加自动化的所有人员。
脚本
123 订阅

从零开始探究 RPC 架构的演化过程

RPC 是现在最流行的分布式架构之一,很多同学可能在工作之中也用到了 RPC 框架比如 Dubbo,但是有的同学却不知道它的核心理念,比如为什么要用 RPC?它能为我们解决哪些单体项目无法解决的问题等等,这些都是我们需要掌握的概念,而我觉得最重要的莫过于是它一步一步的演化过程,从历史的长河到现在前辈们经历了什么,为什么要那么做?而本场 Chat 就让我们一起去学习前辈们针对 RPC 框架的设计思想吧。 在本场 Chat 中,会讲到如下内容: - RPC 的核心概念,讲解那些让人眼花缭乱的专业名词 - 实现第一个 RPC 调用程序 - 通过代理的方式改进 RPC 程序 - 使用动态代理进一步改进 RPC,并分析为什么要使用动态代理 - 用 Hession 替换 Java 原生的序列化方式,并比较两种序列化的传输效率和数据大小 - 做最后的总结 温馨提示: - 案例代码使用的是 Java 语言 适合人群: 对分布式架构设计感兴趣和熟悉 Java 语言的所有开发人员
GRPC
194 订阅

使用 Redis 实现延时任务解决分布式系统的数据一致性问题(两种实现方式)

在我们现有的系统中,往往会调用第三方的服务,比如我们会调用支付宝和微信的服务,可是因为网络的不可靠性或者我们的服务器在某一时刻的不稳定,而有可能导致两方系统数据的不一致,增加了我们和运营、产品和三方公司的沟通成本,并且自己还要苦哈哈的去扒线上的日志,能找到问题自然比较好,但是找不到呢,好办,接着找,直到我们加班加到吐为止,那么,要怎么避免这种问题的发生呢?答案就是——使用延时任务,只要有了这位”兄弟“的加入,以上的问题就能得到很好的解决,并且此方案是通用的,因为虽然我们系统的不一样而出现问题的场景大多却是相似的,所以本场 Chat 您值得拥有。 在本场 Chat 中,会讲到如下内容: - 为什么要用延时任务,用定时器扫描不可以吗?(面试经常会被问到) - 在分布式系统中什么场景下适合用延时任务,会列举两种案例来说明。 - 为什么采用 Redis 实现,用 JDK 自带的不可以吗? - 用主动拉取的方式怎么实现延时任务,并结合多线程,使用生产消费模式进行开启与暂停。 - 采用被动监听的方式如何实现延时任务。 - 用一个互联网金融实战案例检验两种延时任务的实现,并分析他们的优缺点。 温馨提示:需要小伙伴们安装 Redis 服务,Windows 或 Linux 版本都可以,同时使用 Spring Boot 集成我们的开发环境。 适合人群:对分布式系统感兴趣、数据一致性要求很高的 Java 技术人员。
严选Redis
353 订阅

阿里巴巴 Java 岗位面试与笔试题的总结(本人真实经历)

首先向大家声明,这是本人在疫情期间真实的面试经历,绝不是从某网站上面复制、粘贴的,如有做假,大家可以在 GitChat 平台上面举报我哦。 大厂人人都想进,可是他们的面试、笔试题却把很多同学挡在了外面,门槛高了很多,在这里我想把我面试阿里的经历给大家做一个总结,希望大家有所收获,更希望大家有一天也能进入一线互联网公司。 在本场 Chat 中,会讲到如下内容: - 电话面试的内容总结。 - 视频面试笔试题答案公布与分析,总共两个题,一道算法题、一道多线程。 - 该多线程题目的两种写法,并介绍第三种,选择在面试中最好的是哪一种。 - 视频面试的内容总结。 温馨提示:本人在自如网面试的时候,也遇到了多线程那道笔试题了,所以希望大家掌握哦,因为很重要。 适合人群:正在找工作、打算跳槽、想去大厂或需要面试大厂经验的 Java 技术人员。
Java
225 订阅

多种高并发设计让你的业务耗时飞起来

在实际的开发过程中,我们有很多耗时的业务去处理,比如我们方法内部不但执行了本地的很多业务代码并且还要去远程调用别的服务,导致整个方法响应太慢;又比如数据处理,需要往数据库中插入大量的数据,怎么使用 Java 程序快速批量执行呢?比如我们的 Excel 导出,因数据量太大并且多 Sheet 而出现了网络超时,这种问题该怎么去解决?又比如列表查询太慢了, SQL 调优已经是极限,用程序怎么去加快响应?等等问题都是实际开发中经常遇到的,说到这里,大家应该能想到,没错——那就是用多线程,对于优秀的 Java 技术人员来说,我们要掌握它,只有掌握了它,以上问题的才能迎刃而解,本场 Chat 就是帮大家使用多线程去解决以上的这些问题,同时在不同场景中选择最合适的并发设计,然后举一反三,类似的问题那还会是问题吗?本场 Chat 您值得拥有。 在本场 Chat 中,会讲到如下内容: - 当远程调用服务时,怎么使用多线程技术提升方法的响应速度,文章内容将会用三种程序设计来分别讲解,并分析他们的优缺点。 - 大量的数据怎么使用任务切分批量插入数据库中。 - Excel 导出怎么使用多线程技术提升响应,文章内容将会用两种程序设计分别讲解,并分析他们的优缺点。 - 使用模板设计模式实现并行分页,加快查询列表的响应速度。 - 再次使用模板设计模式编写模拟异步发送消息的实例。 - 操作系统之纤程,在操作系统层面分析纤程与线程的区别,使你在面试过程之中出类拔萃。 - 做最后的总结。 - 温馨提示:以上实例程序都是在 SpringBoot 环境下运行的。 适合人群: 对多线程高并发感兴趣、系统响应上要求提升更快的 Java 技术人员
严选高并发
376 订阅

设计模式思维拓展与实战:观察者模式

“设计模式都是虚的,实现功能才是硬道理,可是这代码看起也太 TM 垃圾了”;“我最害怕读开源代码了,因为我不懂设计模式,所以看不懂谁调的谁”;“我们业务上用不上设计模式,难道真的要学吗”。如果您有类似的想法,那么这篇文章将很适合您阅读,设计模式是前辈们总结出来的设计思想,招式千奇百怪同时也很容易被时代给淘汰,但是思想确能延绵很长时间,作为一位优秀的软件开发人员,还等什么呢,设计模式您值得拥有,本场 Chat 我们将来探讨观察者模式,让大家举一反三理解它背后的原理并熟练运用它,如果有疑问,欢迎请大家留言哦。 在本场 Chat 中,会讲到如下内容: - 观察者模式的使用场景 - 从零开始写一个观察者模式的代码实例 - 当业务增加与减少的时候怎么控制我们的观察者 适合人群: 对架构设计感兴趣的 Java 技术人
免费程序员
135 订阅

使用 Redis 实现代码零侵入、高性能和安全的分布式锁

针对高并发程序的设计而言,分布式锁是不可或缺的功能,特别是用户大量的操作、流量涌进来以后,看似运行稳定的程序却因为没有分布锁而导致物品超卖或一人多个订单的情况发生,而有的同学在系统中可能也使用了分布锁,但是每隔一段时间就会导致死锁或者出现根本拦不住的情况,视分布式锁如无物,关键是问题还偶然性的发生,花了大量的时间看日志、测试,但都一无所获,本场 Chat 将解密分布锁以上发生问题的原因和解决办法,同时又能在设计层让我们的代码实现零侵入使用它,让我们的程序更加的干净、整洁,避免了大量的复制与粘贴,本场 Chat 你值得拥有。 在本场 Chat 中,会讲到如下内容: - 为什么使用分布锁,用 JDK 自带的 Synchronize 与 Lock 方式不行吗 - 发生死锁的原因和解决办法 - 释放锁的最佳实现,避免了释放锁时的“串台” - 代码零侵入实现分布锁的设计,让你的程序更加的干净、整洁 适合人群: 对高并发感兴趣、代码设计上追求极致的 Java 技术人员
Redis
162 订阅

设计模式思维拓展与实战:策略模式集成(Spring 和 SPI)

“我明明学了那么多的设计模式,怎么转头就忘?”;“设计模式那么多,我该用哪一种?”;“设计模式太难了,我还是继续堆积我的代码吧,虽然扩展起来比较麻烦,复制、粘贴嘛”。如果您有类似的困惑,那么这篇文章将很适合您阅读,学会了概念不代表真正的掌握了它,只有实战才能真正的加深我们对设计模式的理解,从而让我们的程序更加的健壮、优美和富有生命力,远离复制、粘贴吧,因为您是一位优秀的软件开发人员,本场 Chat 我们就从策略模式开始,在此过程中,结合本人的实战经验,将会让大家多维度的思考策略模式该如何的运用。 在本场 Chat 中,会讲到如下内容: - 如何在真实的业务场景中使用策略模式 - 在 Spring 现有的框架中将如何集成策略模式 - 如何利用自定义注解和枚举并利用 Gateway 的思想达到代码几乎 0 侵入的业务扩展 - 如何与别的设计方案整合在一起,让你的设计与众不同
设计模式
141 订阅