后端
Java领域佼佼者
免费学习网资源:(https://space.bilibili.com/526518958)
十余年Java行业经验。曾就职于阿里、携程等一线互联网公司。 专注于java领域,精通软件架构设计,对于高并发、高性能服务有深刻的见解 ,在服务化基础架构和微服务技术有大量的设计和建设经验
展开
-
熬了7天,总结出来了Java中动态规则的实现方式
背景业务系统在应用过程中,有时候要处理“经常变化”的部分,这部分需求可能是“业务规则”,也可能是“不同的数据处理逻辑”,这部分动态规则的问题,往往需要可配置,并对性能和实时性有一定要求。Java不是解决动态层问题的理想语言,在实践中发现主要有以下几种方式可以实现:表达式语言(expression language) 动态语言(dynamic/script language language),如Groovy 规则引擎(rule engine)表达式语言Java Unified Expr原创 2020-09-22 19:32:46 · 602 阅读 · 0 评论 -
Kafka 和 RocketMQ 快的飞起,底层存储有什么不同?
都知道 RocketMQ 和 Kafka 消息都是存在磁盘中的,为什么消息存磁盘读写还可以这么快?有没有做了什么优化?都是存磁盘它们两者的实现之间有什么区别么?各自有什么优缺点?今天我们就来一探究竟。存储介质-磁盘一般而言消息中间件的消息都存储在本地文件中,因为从效率来看直接放本地文件是最快的,并且稳定性最高。毕竟要是放类似数据库等第三方存储中的话,就多一个依赖少一份安全,并且还有网络的开销。那对于将消息存入磁盘文件来说一个流程的瓶颈就是磁盘的写入和读取。我们知道磁盘相对而言读写转载 2020-07-28 14:54:58 · 627 阅读 · 0 评论 -
Redis——由分布式锁,造成的一起重大事故
前言基于Redis使用分布式锁在当今已经不是什么新鲜事了。本篇文章主要是基于我们实际项目中因为redis分布式锁造成的事故分析及解决方案。背景:我们项目中的抢购订单采用的是分布式锁来解决的。有一次,运营做了一个飞天茅台的抢购活动,库存100瓶,但是却超卖了!要知道,这个地球上飞天茅台的稀缺性啊!!!事故定为P0级重大事故...只能坦然接受。整个项目组被扣绩效了~~事故发生后,CTO指名点姓让我带头冲锋来处理,好吧,冲~事故现场经过一番了解后,得知这个抢购活动接口以前从来没有出现过这种...原创 2020-07-21 16:07:00 · 211 阅读 · 0 评论 -
来了,来了,你们要的Nginx教程来了
一 Nginx简介1.1 什么是NginxNginx 是一个高性能的 http 和反向代理服务器,其特点是占用内存小,并发能力强。 Nginx专为性能优化而开发,性能是其最重要的考量,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。1.2 反向代理正向代理:在浏览器中配置代理服务器,通过代理服务器进行互联网访问。反向代理:将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴漏的是代理服原创 2020-07-21 16:05:48 · 230 阅读 · 0 评论 -
再见,Visio
提到流程图软件,大部分人想到的就是 Visio。确实,Visio 用的人多,和 office 集成度也很高。但是!!!1、Visio 不属于 Office 套件,需要单独购买;2、很多Mac、Linux 用户无法使用;今天,哈哥就给大家介绍一款堪比 Visio 的流程图软件:diagrams。它可以在线操作,也可以本地安装,还有各种丰富的图标个功能,并且完全免费!完全免费!下面就来感受下。特性多客户端支持网页版没有所谓的客户端支持一说。...原创 2020-07-15 21:04:07 · 582 阅读 · 0 评论 -
同事线上埋的这个坑,我整整找了3天3夜
对于线上系统调优,它本身是个技术活,不仅需要很强的技术实战能力,很强的问题定位,问题识别,问题排查能力,还需要很丰富的调优能力。本篇文章从实战角度,从问题识别,问题定位,问题分析,提出解决方案,实施解决方案,监控调优后的解决方案和调优后的观察等角度来与大家一起交流分享本次线上高并发调优整个闭环过程。一、项目简要情况概述该项目为基于SSM架构的商城类单体架构项目,其中有一个秒杀重磅模块,如下为当前线上环境的简要架构部署图,大致描述一下:(1)项目为SSM架构(2)服务器类别:1台负载均衡服原创 2020-07-11 14:10:55 · 2643 阅读 · 9 评论 -
答应我,别再if/else走天下了可以吗
想当年,其实我也特别钟情于 if/else连环写法,上来就是一顿SAO操作,比如举个好理解的简单栗子:一般来说我们正常的后台管理系统都有所谓的角色的概念,不同管理员权限不一样,能够行使的操作也不一样,比如:系统管理员( ROLE_ROOT_ADMIN):有 A操作权限订单管理员( ROLE_ORDER_ADMIN):有 B操作权限普通用户( ROLE_NORMAL):有 C操作权限比如一个用户进来,我们需要根据不同用户的角色来判断其有哪些行为,这时候SAO代码出现了:publ.原创 2020-06-28 16:25:14 · 193 阅读 · 0 评论 -
Tomcat 又爆出高危漏洞!Tomcat 8.5 ~ 10 中招…
开源界最近很热闹啊,各个主流软件或框架漏洞频发,比如像 Struts2、FastJSON、Dubbo、Redis、Tomcat 等都存在各种各样的漏洞。不要使用含有漏洞的组件每次也都被评为 OWASP 10 大安全漏洞之一。光这半年以来,所知道的就有 Dubbo、FastJSON、Tomcat:前段时间这个 Tomcat AJP 协议漏洞大开,2020/06/25 这天 Tomcat 又爆出 HTTP/2 拒绝服务漏洞:http://mail-archives.apache.org/mod原创 2020-06-27 17:08:06 · 2620 阅读 · 0 评论 -
Git 入门看这一篇就够了!程序员防被diss必会技能走一波
今天简单讲下 Git 的实现原理,知其所以然才能知其然;并且梳理了日常最常用的 12 个命令,分为三大类分享给你。如果觉得不错的话,一定要点个关注哦本文的结构如下:作者和开发原由 Git 的数据模型 常用命令 资源推荐作者和开发原由Talk is cheap. Show me the code.这句话就出自 Linux 和 Git 的作者Linus Torvalds。原本 Linux 内核的版本控制系统是用的 BitKeeper,然而 2005 年,BitMover 公司原创 2020-06-18 14:53:58 · 1056 阅读 · 0 评论 -
优秀的代码千篇一律,恶心的代码各有千秋,一些让人恶心的代码片段
1、下面一段代码将注释和代码混在了一起,不认真看还真不知道。高亮显示后:2、看到这种多层嵌套恶心到头大3、据说某俄国特工经过九死一生偷到了NASA的太空火箭发射程序的源代码的最后一页,代码是:))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))...原创 2020-06-16 15:35:03 · 516 阅读 · 0 评论 -
让你彻底了解 Java 8 的 Lambda、函数式接口、Stream 用法和原理
就在今年 Java 25周岁了,可能比在座的各位中的一些少年年龄还大,但令人遗憾的是,竟然没有我大,不禁感叹,Java 还是太小了。(难道我会说是因为我老了?)而就在上个月,Java 15 的试验版悄悄发布了,但是在 Java 界一直有个神秘现象,那就是「你发你发任你发,我的最爱 Java 8」.据 Snyk 和 The Java Magazine 联合推出发布的 2020 JVM 生态调查报告显示,在所有的 Java 版本中,仍然有 64% 的开发者使用 Java 8。另外一些开发者可能.原创 2020-06-11 17:01:12 · 294 阅读 · 0 评论 -
看完这篇Redis缓存三大问题,保你能和面试官互扯。
Redis推荐阅读:https://www.bilibili.com/video/BV13z411b7mU日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题。一旦涉及大数据量的需求,如一些商品抢购的情景,或者主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度问题有严重的性能弊端,详细的磁盘读写原理请参考这一片[]。在这一瞬间成千上万的请求到来,需要系统在极短...原创 2020-06-10 16:39:31 · 324 阅读 · 0 评论 -
新手常犯的错,阿里规定代码中禁用这个,为何?
image在项目开发过程中经常遇到时间处理,但你真的用对了吗,理解阿里巴巴开发手册中禁用static修饰SimpleDateFormat吗?通过阅读本篇文章你将了解到:为什么需要LocalDate、LocalTime、LocalDateTime【java8新提供的类】 java8新的时间API的使用方式,包括创建、格式化、解析、计算、修改为什么需要LocalDate、LocalTime、LocalDateTime1.Date如果不格式化,打印出的日期可读性差Tue Sep...原创 2020-06-08 14:52:31 · 279 阅读 · 0 评论 -
try catch 有多烦人,我就有多暴躁!一次搞定 Exception
背景软件开发过程中,不可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} finally {...}代码块,不仅有大量的冗余代码,而且还影响代码的可读性。比较下面两张图,看看您现在编写的代码属于哪一种风格?然后哪种编码风格您更喜欢?丑陋的 try catch 代码块优雅的Controller上面的示例,还只是在Controller层,如果是在Service层,可能会有更多的try catc.原创 2020-06-05 15:00:01 · 350 阅读 · 0 评论 -
干掉 Date,Java8 LocalDate 简直不能贼香,赶紧来艿一口
简介伴随 lambda表达式、streams 以及一系列小优化,Java 8 推出了全新的日期时间API。Java处理日期、日历和时间的不足之处:将 java.util.Date 设定为可变类型,以及 SimpleDateFormat 的非线程安全使其应用非常受限。然后就在 java8 上面增加新的特性。全新API的众多好处之一就是,明确了日期时间概念,例如:瞬时(instant)、 长短(duration)、日期、时间、时区和周期。同时继承了Joda 库按人类语言和计算机各自解析的时间处理原创 2020-05-30 15:18:23 · 345 阅读 · 0 评论 -
同样是服务注册中心,Eureka凭什么比ZooKeeper优秀?
1. 前言服务注册中心,给客户端提供可供调用的服务列表,客户端在进行远程服务调用时,根据服务列表然后选择服务提供方的服务地址进行服务调用。服务注册中心在分布式系统中大量应用,是分布式系统中不可或缺的组件,例如rocketmq的name server,hdfs中的namenode,dubbo中的zk注册中心,spring cloud中的服务注册中心eureka。在spring cloud中,除了可以使用eureka作为注册中心外,还可以通过配置的方式使用zookeeper作为注册中心。既然这...原创 2020-05-29 16:21:48 · 367 阅读 · 0 评论 -
Netty快速上手:Netty没有你想象的那么难
该文章是Netty相关文章。目的是让读者能够快速的了解netty的相关知识以及开发方法。因此本文章在正式介绍Netty开发前先介绍了Netty的前置相关内容:线程模型,JavaNIO,零拷贝等。本文章以大纲框架的形式整体介绍了Netty,希望对读者有些帮助。文中图片多来自于百度网络,如果有侵权,可以联系我进行删除。内容若有不当欢迎在评论区指出。Nettynetty是由JBOSS提供的一个Java开源框架,是一个异步的,基于事件驱动的网络应用框架,用以快速开发高性能,高可靠性的网络IO程序.NIO原创 2020-05-20 16:00:03 · 1133 阅读 · 0 评论