自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 IDEA注释模板,惊艳了,动作要快,姿势要帅

一、类注释打开 IDEA 的 Settings,点击 Editor-->File and Code Templates,点击右边 File 选项卡下面的Class,在其中添加图中红框内的内容:/** * @author jitwxs * @date ${YEAR}年${MONTH}月${DAY}日 ${TIME} */注 意在我提供的示例模板中,说明了作者和时间,IDEA 支持的所有的模板参数在下方的 Description 中被列出来。保存后,当你创建一个新的类的

2022-01-25 19:38:12 466 1

原创 RabbitMQ 可靠性、重复消费、顺序性、消息积压解决方案

前言为什么引入消息队列?引入 MQ 给我们解决了一些问题,但同时又引入了一些复杂的问题,这些问题是大型项目中必须解决的重点,更重要的是,面试也经常问。实际上消息队列可以说是没法百分之百保证可靠性的!RabbitMQ 提供的相关机制也只是在于缩小消息丢失的概率,或者说提供了消息丢失后的我们可以记录日志的功能。在解决这些问题时有必要明白一点,其实小公司业务量不大,并发量不高的情况下这些问题是几乎不会发生的......即使偶尔出现,开发人员手动修复数据处理就好。所以可结合公司实际业务场景看有没有必要解决这些.

2022-01-25 15:46:10 299

原创 阿里弃用Hibernate,却用MyBatis,竟是因为这个

前言现在已经有很多公司在使用HikariCP了,HikariCP还成为了SpringBoot默认的连接池,伴随着SpringBoot和微服务,HikariCP 必将迎来广泛的普及。下面陈某带大家从源码角度分析一下HikariCP为什么能够被Spring Boot 请来,文章目录如下:目录零、类图和流程图开始前先来了解下HikariCP获取一个连接时类间的交互流程,方便下面详细流程的阅读。获取连接时的类间交互:图1一、主流程1:获取连接流程HikariCP获

2022-01-25 14:58:52 364

原创 深入底层探究并发编程Bug罪魁祸首——可见性、原子性、有序性

如果你细心观察的话,你会发现,不管是哪一门编程语言,并发类的知识都是在高级篇里。换句话说,这块知识点其实对于程序员来说,是比较进阶的知识。我自己这么多年学习过来,也确实觉得并发是比较难的,因为它会涉及到很多的底层知识,比如若你对操作系统相关的知识一无所知的话,那去理解一些原理就会费些力气。大家都知道,编写正确的并发程序是一件极困难的事情,并发程序的 Bug 往往会诡异地出现,然后又诡异地消失,很难重现,也很难追踪,很多时候都让人很抓狂。但要快速而又精准地解决“并发”类的疑难杂症,你就要理解这件事情的本质

2022-01-25 14:52:14 129

原创 情景再现,Java面试老大难问题:缓存雪崩,穿透,击穿,一文道明

正文提到Redis我相信各位在面试,或者实际开发过程中对缓存雪崩,穿透,击穿也不陌生吧,就算没遇到过但是你肯定听过,那三者到底有什么区别,我们又应该怎么去防止这样的情况发生呢,我们有请下一位受害者。面试开始一个大腹便便,穿着格子衬衣的中年男子,拿着一个满是划痕的mac向你走来,看着快秃顶的头发,心想着肯定是尼玛顶级架构师吧!但是我们腹有诗书气自华,说虚都不虚。小伙子我看你的简历上写到了Redis,那么我们直接开门见山,直接怼常见的几个大问题,Redis雪崩了解么?帅气迷人的面试官您好

2022-01-25 13:49:07 124

原创 一文参透:缓存一致性策略以及雪崩、穿透等问题

一. 缓存原理高并发情境下首先考虑到的第一层优化方案就是增加缓存,尤其是通过Redis将原本在数据库中的数据复制一份放到内存中,可以减少对数据库的读操作,数据库的压力降低,同时也会加快系统的响应速度,但是同样的也会带来其他的问题,比如需要考虑数据的一致性、还需要预防可能的缓存击穿、穿透和雪崩问题等等。1. 实现步骤先查询缓存中有没有要的数据,如果有,就直接返回缓存中的数据。如果缓存中没有要的数据,才去查询数据库,将得到数据更新到缓存再返回,如果数据库中也没有就可以返回空。考虑数据一致

2022-01-25 13:47:06 58

原创 无语子,GitHub首次开源,在国内外都被称为分布式理论+实践的巅峰之作

前言如果你是一位软件行业从业者,尤其是从事服务器端或者后台系统软件开发,相信近年来一定被层出不穷的商业名词所包围:NoSQL、Big Data、Web-scale、Sharding.Eventual consistency、ACID、CAP理论、云服务、MapReduce和Real-time等,所有这些其实都围绕着如何构建高效存储与数据处理这一核心主题。过去十年,在数据库领域与分布式系统方面涌现了许多引人瞩目的进展,由此深刻地影响了如何构建上层应用系统。纵使软件千变万化,终有若干理念贯穿其中。无论你

2022-01-24 20:24:37 71 1

原创 后端程序员必备:四种限流算法,图文结合一篇拿下

前言最近我们系统引入了Guava的RateLimiter限流组件,它是基于令牌桶算法的实现的。本文将跟大家一起学习几种经典的限流算法。限流是什么?维基百科的概念如下:In computer networks, rate limiting is used to control the rate of requests sent orreceived by a network interface controller. It can be used to prevent DoS at

2022-01-24 17:13:57 435

原创 妙啊,美团 OCTO 分布式服务治理系统,这描述也太清晰了

OCTO 是美团千亿调用量的分布式服务通信框架及服务治理的系统,可实现服务注册、服务自动发现、服务管理、容错处理、数据可视化、服务监控报警、服务分组等。本文总结了 OCTO 架构原理、Java 应用的集成方法、以其控制台的使用。1 概述OCTO 是 octopus(章鱼) 的缩写。是美团公司级基础设施,为公司所有业务提供统一的高性能服务通信框架,使业务具备良好的服务运营能力,轻松实现服务注册、服务自动发现、负载均衡、容错、灰度发布、数据可视化、监控告警等功能,提升服务开放效率、可用性及服务运维效率。

2022-01-24 16:59:41 107

原创 双管齐下,JDK源码+HotSpot源码一次性学完

JDK源码手册除了第一章节的内容外,我们会从第二章开始自下而上,从简单到复杂的有顺序的深度学习整个Concurrent包!Semaphore(Semaphore也就是信号量,提供了资源数量的并发访问控制)HotSpot源码手册这份手册主要讲述的就是HotSpot基础功能模块的源码,这份手册对于你基础地基将会是一个很好的补充,同时手册将会结合大量的实例进行讲解,这样对于受众来说将会更加容易接受以及吸收。HandleArea、A

2022-01-24 16:22:17 388 1

原创 RabbitMQ,RocketMQ,Kafka 消息模型对比分析

消息模型消息队列的演进消息队列模型早期的消息队列是按照”队列”的数据结构来设计的。生产者(Producer)产生消息,进行入队操作,消费者(Consumer)接收消息,就是出队操作,存在于服务端的消息容器就称为消息队列。当然消费者也可能不止一个,存在的多个消费者是竞争的关系,消息被其中的一个消费者消费了,其它的消费者就拿不到消息了。发布订阅模型如果一个人消息想要同时被多个消费者消费,那么上面的队列模式就不适用了,于是又引出了一种新的模式,发布订阅模型。在发布-

2022-01-24 15:46:25 121

原创 年前福利,我愿称之为分布式事务最全面的总结

事务首先还是先说一下事务的定义吧,事务的英语是transaction,我们查找词典可以发现这个单词的中文解释是交易,买卖等含义,所以我们可以知道事务一定和交易密不可分他们才能共享一个英文单词,而交易的定义是什么呢?有句俗话说得好,一手交钱,一手交货,那这个就是交易的规则,而这个同时也是事务的定义。那么事务的官方定义是什么呢?事务是一系列操作的集合,这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的最小工作单元。可以发现这个基本和我们一手交钱,一手交货很像,的确在现实的开..

2022-01-24 15:38:58 76

原创 快准狠,Alibaba出品Java性能优化高级笔记(全彩版)震撼来袭

性能优化作为一个程序员,性能优化是常有的事情,不管你是刚入行的小白还是已经入坑了很久的小秃头都会经历很多不同层次的性能优化——小到代码审查大到整个系统设计的优化!大势所趋之下,如何让自己的优化方向精准到性能瓶颈的那个点以及尽可能的提高优化的性价比已经慢慢成为每一个程序员都要考虑的问题了~下面是目前程序员进行性能优化时需要遵循的一些原则以及注意的一些点,大家可以看看自己在进行优化的时候是否有考虑到这些:如果你对于以上性能优化的原则、层次、通用方法以及代码质量的关系根本没有一个概念,也不知道

2022-01-24 14:45:30 64

原创 JVM调优工具锦囊:JDK自带工具与Arthas线上分析工具对比

Arthas线上分析诊断调优工具以前我们要排查线上问题,通常使用的是jdk自带的调优工具和命令。最常见的就是dump线上日志,然后下载到本地,导入到jvisualvm工具中。这样操作有诸多不变,现在阿里团队开发的Arhtas工具,拥有非常强大的功能,并且都是线上的刚需,尤其是情况紧急,不方便立刻发版,适合临时处理危急情况使用。下面分两部分来研究JVM性能调优工具:1.JDK自带的性能调优工具虽然有了Arthas,但也不要忘记JDK自带的性能调优工具,在某些场景下,他还是有很大作用的。而且Arth

2022-01-24 13:43:37 373

原创 讲真的,身为一个合格的码农,谁还没碰过索引失效呢

大家好,我是小林。在工作中,如果我们想提高一条语句查询速度,通常都会想对字段建立索引。但是索引并不是万能的。建立了索引,并不意味着任何查询语句都能走索引扫描。稍不注意,可能你写的查询语句是会导致索引失效,从而走了全表扫描,虽然查询的结果没问题,但是查询的性能大大降低。今天就来跟大家盘一盘,常见的 6 种会发生索引失效的场景。不仅会用实验案例给大家说明,也会清楚每个索引失效的原因。发车!索引存储结构长什么样?我们先来看看索引存储结构长什么样?因为只有知道索引的存储结构,

2022-01-24 13:37:50 76

原创 聊聊消息队列高性能的秘密——零拷贝技术

前言RocketMQ为什么这么快、Kafka为什么这么快?用了零拷贝技术?什么是零拷贝技术,它们二者的零拷贝技术有不同吗?为什么需要零拷贝在计算机产业中,I/O的速度相较CPU,总是太慢的。SSD硬盘的IOPS可以达到2W、4W,但是我们CPU的主频有2GHz以上,也就意味着每秒会有20亿次的操作。如果对于I/O操作,都是由CPU发出对应的指令,然后等待I/O设备完成操作之后返回,那CPU有大量的时间其实都是在等待I/O设备完成操作。但是,这个 CPU 的等待,在很多时候,其实并没有太多的实际意

2022-01-23 20:13:56 76

原创 Cloudreve自建云盘实践,我说了没人能限制得了我的容量和速度

一、前言为啥要用自建网盘,市面上的云盘不香了?每一个用户需求的背后都是因为有场景存在,而这些差异化的场景也都是因为不同的用户类型产生的。就像我作为技术号主想分享一些自己总结的资料,放到一些云盘以后有时候会被其他不知道从哪冒出来的小伙伴给举报,举报链接就取消了,取消了链接也就影响了我的资料分享。同时我可能还希望我的分享内容能被记录到下载次数、允许几次下载、下载时是否要做一些引流动作等等。所以类似这样的特殊场景下就需要自建网盘来维护个人需要的资料,与之类似的还有一些公司或者组织都会建相对私域的.

2022-01-23 20:10:26 877

原创 惊掉我的下巴,阿里这套MySQL优化笔记有多强?才在GitHub被BATJ联手封杀

今年的春招很猛,公司的大神也变多了。。。来了个新同事,一看是个二本生,还是非科班出身,刚30岁。。。结果没想到人家上来就把现有项目的性能优化了一遍,直接给公司节省了一半的成本,这种“王炸”打法,直接给所有人整懵了。一问情况,才知道这位仁兄也是一路被虐过来的。去年年底被裁,本以为自己技术还行,看了一段时间面经,复习了基础知识,就开始投大厂简历。阿里最先给他面试机会,结果没能扛过三面,然后是各种大大小小的公司,在实际面试中被碾压得翻不了身。整整一个半月,一个offer都没拿到。面试时觉得自己

2022-01-23 19:41:34 73 1

原创 Spring Boot 3.0.0的第一个里程碑版本M1发布

2022年1月20日,Spring官方发布了Spring Boot 3.0.0的第一个里程碑版本M1。下面一起来来看看Spring Boot 3.0.0 M1版本都有哪些重大变化:Java基线从 Java 8 提升到了 Java 17这个在最早的Spring Boot 3相关预告中就已经知道了,Java 17将成为未来的主流版本。那么问题来了,大家都把Java 17的升级提上日程了吗?如果你对Java 8之后的各种版本的信息不太了解的话,这里有份 4.6 W 字的总结,或许你可以读一读。从J

2022-01-23 17:08:02 184

原创 Pulsar与Rocketmq、Kafka、Inlong-TubeMQ,谁才是消息中间件的王者?

导语 |Pulsar作为下一代消息中间件的典型代表,在设计和实现上面都具备很好的前瞻性,综合考量了业界现存的一些比较常用的、优秀的消息中间的架构设计、适用场景、运营中的问题等,如目前用的比较多的Kafka、Rocketmq、Inlong-TubeMQ等。本文仅从设计角度出发,说明下Pulsar与Kafka、Rocketmq及腾讯开源的Inlong-TubeMQ在实现上的几点区别和可能遇到的问题,供大家参考。一、云原生多租户设计(一)分级命名Pulsar原生支持多租户设计,非常适合作为云产品进行.

2022-01-23 16:23:30 384

原创 看完这份学习笔记,Spring Boot于你而言就是小菜一碟

什么是Spring Boot?Java (面向对象编程语言)经过30多年的发展,产生了非常多的优秀框架。Spring (为解决企业应用程序开发的复杂性而创建的框架)曾是最受欢迎的Java框架之- , 但随着Node、Ruby、Groovy、PHP等脚本语言的蓬勃发展,使用Spring开发应用就显得烦琐了,因为它使用了大量的XML配置文件,配置烦琐,整合不易,开发和部署效率低下。这时急切需要一种新的能解决这 些问题的快速开发框架,于是Pivotal Software公司在2013开始了Spring Boo

2022-01-23 15:26:42 4380

原创 大型互联网公司分布式ID方案总结

ID是数据的唯一标识,传统的做法是利用UUID和数据库的自增ID,在互联网企业中,大部分公司使用的都是Mysql,并且因为需要事务支持,所以通常会使用Innodb存储引擎,UUID太长以及无序,所以并不适合在Innodb中来作为主键,自增ID比较合适,但是随着公司的业务发展,数据量将越来越大,需要对数据进行分表,而分表后,每个表中的数据都会按自己的节奏进行自增,很有可能出现ID冲突。这时就需要一个单独的机制来负责生成唯一ID,生成出来的ID也可以叫做分布式ID,或全局ID。下面来分析各个生成分布式ID的机制

2022-01-23 14:58:51 67

原创 一文解读 redis 主从/哨兵/集群架构

主从主从结构示意图:主从架构搭建,配置从节点:复制 redis.conf 文件,并修改如下配置port 8001pidfile /var/redis_8001.pidlogfile 8001.logdir /usr/local/redis_8001/data 配置主从配置replicaof 172.0.0.1 8002replica-read-only yes 根据配置文件启动redisredis-server redis.conf主从结构工作原理master-slave数

2022-01-23 14:42:10 235

原创 可以称的上是史上最全的Java面试笔记(准备+基础+数据库+框架+面经)

十二月份,在阿里的朋友看我在找工作给了本他自己的独家宝典——[Java突击面试笔记],通过学习我终于明白为什么他可以进阿里的真正原因,在这里分享给大家!看完这份[Java突击面试笔记]后我把它分为以下5篇内容准备篇:求职指南+简历怎么写+面试前关心的问题+如何学习等基础篇:Java基础+Java集合计算机网络+操作系统+数据结构+算法+操作系统等数据库篇:MySQL+Redis等框架篇:Spring+MyBatis+Kafka+Netty+SpringBoot等面经篇:蚂蚁金服+百度

2022-01-23 14:20:45 93

原创 赶紧收藏,月薪5万的程序员必备软件清单

1、idea业界排名第一的java开发工具,非常非常好用,如果还在用eclipse的朋友,赶紧来体验一把,你一定会爱上她的。2、navicat玩mysql的同学,这个工具应该很熟悉了吧,算是玩mysql必备的管理工具。3、dbeaver万能数据库管理工具,navicat收费了,建议同学们可以体验一下这个工具,比navicat更优秀。4、submine非常强大的一款文本编辑器,特别好用。http://www.sublimetext.cn/5

2022-01-23 14:06:10 121

原创 详解TCP常见的五个异常处理场景,其实TCP聪明得很

之前收到个读者的问题,对于 TCP 三次握手和四次挥手的一些疑问:第一次握手,如果客户端发送的SYN一直都传不到被服务器,那么客户端是一直重发SYN到永久吗?客户端停止重发SYN的时机是什么? 第三次握手,如果服务器永远不会收到ACK,服务器就永远都留在 Syn-Recv 状态了吗?退出此状态的时机是什么? 第三次挥手,如果客户端永远收不到 FIN,ACK,客户端永远停留在 Fin-Wait-2状态了吗?退出此状态时机是什么时候呢? 第四次挥手,如果服务器永远收不到 ACK,服务器永远停留在 La

2022-01-22 22:26:14 213

原创 华为18级工程师三年心血终成趣谈网络协议文档(附详细讲解)

前言虽然在大学的时候大家都学过网络协议 ,但是肯定感觉网络协议的知识点非常多 ,非常复杂。学的时候就浑浑噩噩,真正到了实践中更是糊里糊涂,一旦工作中遇到了网络问题,除了会简单地 ping 几下 ,基本没有什么解决问题的思路。 然而当拿起书来学习,或者看一些官方文档的时候,各种生僻的专业词汇马上扑面而来,每了解其中的一个词汇 ,都要看多 篇文章,读多本书,导致一篇即使很短的有关网络技术的文章也要几个星期才能看完。这严重打击着大家的自信心,并且很容易让人在技术的海洋中迷失自我,从而产生“从人门到放弃”的

2022-01-22 22:19:23 674 1

原创 我服了,肝完Alibaba这份面试通关宝典,我成功拿下今年第15个Offer

前言马上就要金三银四已到,不少人找LZ咨询,问我现在的面试需要提前准备什么?为了造福更多的开发者,也为了让更多的小伙伴通过面试;LZ近期也一直想着怎么才能帮到大家。所以近期在各大渠道整合大厂相关面试题,并结合了我一位现在已经入职阿里(阿里的Offer就是他今年的第15张offer)的朋友一整年的面试经历,为大家打造出一份金九银十Java面试通关宝典。内容涵盖:Java基础、JVM多线程、Spring、MyBatis、SpringBoot、MySQL、SpringCloud、Dubbo、

2022-01-22 21:56:49 57 1

原创 如何定义SpringBoot项目配置文件中密码的加密

前言项目中的配置文件会有密码的存在,例如数据库的密码、邮箱的密码、FTP的密码等。配置的密码以明文的方式暴露,并不是一种安全的方式,特别是大型项目的生产环境中,因为配置文件经手的(运维)人员可能很多,也可能是多方的(甲方、乙方甚至第三方)。本文讲述基于 SpringBoot 项目对配置文件中的密码进行加密。本文实例中密码加密主要用到的是 Jasypt,一个Java的加解密库。加密步骤1、在项目中引入以下依赖。 <dependency>

2022-01-22 21:48:40 242

原创 MySQL沉浸式面试:隔离级别、锁、索引原理连环炮你扛得住吗?

今天我们来聊聊MySQL原理基础篇主要是侧重基础知识,原理篇是有一定基础后的递进,通过学习本篇,不仅可以进一步了解MySQL的各项特性,还能为接下来的容灾调优打下坚实的基础。现在,就让我们继续跟随阿柴进行这场沉浸式面试吧。ACID与隔离级别那你先来说说MySQL的四种隔离级别吧。SQL标准定义了4类隔离级别,包括一些具体规则,用来限定事务之间的隔离性。这四种级别分别是读未提交、读已提交、可重复读、串型化。读未提交,顾名思义,就是可以读到还没有提交的数据;读已提交会读到其它

2022-01-22 21:36:36 65

原创 我顶不住了,阿里并发核心编程宝典(2022版)一夜登顶Github热榜第三

不知道大家去年的金九银十是否有出去面试过?有出去面试的朋友肯定深有感受,像我们刚入行那会面试的加分项现在卷得已经成为了面试的基础题(手动狗头)。其中最典型的就属这个Java并发编程了。之前一般只有大厂才会有高并发编程相关的面试内容,但现在只要你入了Java行业就会涉及,不管你工作中是否用到,面试就得问。So,我们这些生活在内卷时代的新生代农民工只能把Java并发知识也变成我们必修课之一,不断的提升自己的核心竞争力。如果你有打算开始学习并发编程知识,却不知如何入手,那么LZ今天要分享的这份阿里高并发核心编

2022-01-22 20:44:46 119

原创 腾讯三面灵魂问题:如何理解MySQL索引底层数据结构

MySQL 索引相关的数据结构有两种,一种是 B+tree,一种是 Hash,那么为什么在 99.99% 很多情况下都使用的是 B+tree索引呢?索引的底层数据结构是怎样的呢?接下来就听小二娓娓道来。一、索引是什么MySQL 官方对索引的定义:索引是帮助 MySQL 高效获取数据的排好序的数据结构。所以,可以得出:索引是数据结构!当然啦,上面两句话可能看起来很抽象,那么生活中有哪些索引的例子呢。小二以上图《书籍》这本为例,书籍的目录就是按顺序排列的,有第一章,第二章...,

2022-01-22 20:14:03 81

原创 妹子始终没搞懂OAuth2.0,今天整合Spring Cloud Security 说明白

本篇文章介绍一下OAuth2.0相关的知识点,并且手把手带大家搭建一个认证授权中心、资源服务进行OAuth2.0四种授权模式的验证,案例源码详细,一梭子带大家了解清楚。本篇文章的案例源码项目架构为:Spring Boot + Spring Cloud Alibaba + Spring Security文章目录如下:为什么需要OAuth2.0?编码永远都是为了解决生产中的问题,想要理解为什么需要OAuth2,当然要从实际生活出发。举个例子:小区的业主点了一份外卖,但是小区的门禁系统

2022-01-22 14:41:02 417 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除