![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程
文章平均质量分 75
Java世界上最好的语言
学习Java不秃头
展开
-
Java 数据结构源码探究(一)—— ArrayList
线性表—— 顺序存储结构线性表 顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。Java ArrayList对象的定义/** * Resizable-array implementation of the List interface */public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, C转载 2021-05-09 20:31:47 · 86 阅读 · 1 评论 -
带你学RocketMq——消息的存储源码分析!
我们设计一个消息的存储服务器,首先会现在内存里一块内存缓冲区,但是内存缓存有限,所以需要定时把消息刷到磁盘或者数据库等持久化介质中。如果存在磁盘中的文件,一个文件肯定是不行的,就算存没问题,那么检索也会超级耗时,过期消息的清理也很麻烦,所以消息需要多文件的存储。 RocketMq就是内存+多文件的存储,每个Broker对应一个MessageStore,专门用来存储接收到的消息。MessageStore只是存储的一个抽象,MessageStore里保存着一个CommitLog,CommitLog维护了一...转载 2021-05-08 22:05:11 · 129 阅读 · 2 评论 -
2021最新出炉的,Java程序员极力推荐的springboot全家桶干货系列
最近,在某平台收到读者反馈,希望能整理出一些有关spring的干货,主要是springboot有关的面试题和书籍,所以,应广大爱学习人士的需求,网罗了一些资料,并将这些资料分享给更多有需要的人。高频面试题:1、什么是 Spring Boot?2、Spring Boot 有哪些优点?3、什么是 JavaConfig?4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?5、Spring Boot 中的监视器是什么?6、如何在 Spring Boot 中禁用 Actuator原创 2021-01-06 15:18:26 · 245 阅读 · 1 评论 -
备战金三银四,年薪80W,捶爆阿里P7,简历、实战、源码、图文并茂,这些资料绝了!
前言最近经常有人问我要学习路线图,趁着有空,整理出来了,包括学习路线图和一些相关的学习资料见下文,由于图片被压缩,可能导致看不清,需要原图和相关学习资料的朋友,见文末获取~概略:细节展示架构师筑基必备技能大厂必问并发编程技术相关学习资料:JVM深度剖析相关学习资料:网络编程与高效IO、mysql高度进阶、深入tomcat底层、算法与数据结构等相关学习资料:设计思想解读开源框架相关学习资料:由于压缩,图片相对模糊,也因为篇幅原因,资料仅展示相关目录截图,需.原创 2020-12-29 14:34:47 · 229 阅读 · 0 评论 -
Strings=newString(“xyz“)创建几个实例
从面试题说起String s = new String("xyz"); 创建了几个实例?这是一道很经典的面试题,在一本所谓的Java宝典上,我看到的“标准答案”是这样的:两个,一个堆区的“xyz”,一个栈区指向“xyz”的s。这个所谓的“标准答案”槽点太多,后面我们慢慢分析。虽然答案很离谱,但是我觉得这个问题本身也不具有什么意义,因为问题没有既定义“创建”的具体含义,又没有指定“创建”的时间,是运行时吗?包不包括类加载的时候?有没有上下文代码语境?也没有定义实例是指什么实例,是指Java实例吗转载 2020-12-28 14:22:25 · 1512 阅读 · 0 评论 -
「mybatis-plus」主键id生成、字段自动填充
一、主键id的生成数据库表里通常都会有一个主键id,来作为这条数据的唯一标识。常见的方式数据库自动增长这种很常见了,可以做到全库唯一。因为id是天然排序的,对于涉及到排序的操作会很方便。UUID上面的自动增长,虽然简单,但是对于分表这样的操作来说就比较麻烦。因为你在第二张插入数据的时候,需要拿到上一张表最后一个数据的id。UUID则不同,每次都一个随机唯一的值,不过因为是随机,所以也就没有排序了。redisredis也可以用来生成id,利用redis的原子操作。好处是可以不依赖数据库,性能好,但转载 2020-12-25 15:32:55 · 8912 阅读 · 0 评论 -
优雅的讲解JAVA操作数据库方式与设计模式应用
1. 在业务层使用JDBC直接操作数据库-最简单,最直接的操作1)数据库url,username,password写死在代码中Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url="jdbc:oracle:thin:@localhost:1521:orcl"; String user="scott"; String password="tiger"; Connecti.转载 2020-12-24 14:15:21 · 169 阅读 · 0 评论 -
太牛了吧!!阿里开源爆款源码笔记,已拿蚂蚁金服Java岗P6 Offer (spring+MyBatis+SpringBoot+Kafka源码笔记)
小伙伴一直叨叨要跳槽,大大小小的公司面试了很多,但总没有拿到一个满意的offer,要么package太低,要么就是面试被虐。经过前几次的面试失利,终于明白了什么叫基础不牢,地动山摇。面试官随便针对一个知识点深入考察一下,就回答不出来,就这样,还怎么能通过面试?不过,最近收到了小伙伴的捷报,已拿到蚂蚁金服的offer,公司足够大,base还可以,虽然是个P6,但还是隐隐感觉到他很满意。其实,我还是有点疑惑,他之前的基础很一般,咋就突然拿到了蚂蚁的offer。后来没忍住,问他:“你最近都干啥了,阿里面试都问原创 2020-12-23 11:17:53 · 446 阅读 · 0 评论 -
漫谈一下 SpringBoot 的起步依赖和自动配置
起步依赖什么是起步依赖在没有SpringBoot之前,如果要使用Spring开发一个web工程,我们需要怎么做呢?首先,我们需要添加Spring、SpringMVC的框架的依赖,有时还需要考虑这些依赖间的版本兼容性,我们pom.xml文件看起来往往是这样的。<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId&g转载 2020-12-23 10:48:34 · 135 阅读 · 0 评论 -
吾日三省吾身——ThreadLocal深入剖析
一、学习目标1、ThreadLocal能解决什么问题?2、ThreadLocal相比synchronized、volatile的优势在哪里?synchronized:在并发量小的情况下还好,如果并发量较大时,会有大量的线程等待同一个对象锁,会造成系统吞吐量直线下降。volatile:修饰的变量不保留拷贝,直接访问主内存,主要用于一写多读的场景ThreadLocal:给每一个线程都创建变量的副本,保证每个线程访问都是自己的副本,相互隔离,就不会出现线程安全问题二、ThreadLocal的使用转载 2020-12-22 10:29:11 · 120 阅读 · 0 评论 -
重磅来袭!腾讯前晚最新爆出的“JVM学习笔记”,看完我慕了!!
前言“JVM”,一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。有了JVM后,Java语言在不同平台上运行时不需要重新编译,为我们提供了极大的便利性,现在在面试当中“JVM”相关的知识是必问的,可见现在互联网企业对JVM的重视性。就在昨晚,腾讯爆出内部锻造已久的“JVM学习笔记”,一经流出,GitHub上受各路大神点赞好评,我也是熬夜啃完后,就立马入榜我的年度最爱笔记之一!我也是第一时间赶快分享给大家,需要完整版的朋友,点击这里下载JVM学习笔记概述第一部分、带你原创 2020-12-19 22:24:37 · 87 阅读 · 1 评论 -
朋友从阿里离职,“偷偷”带走了这四套全彩版并发编程手册,我已经悄咪咪的看完了!
Java并发编程作为Java开发当中极其重要的一部分,是每位开发者必看、必学、必会的一部分知识,今天我们就来学习阿里巴巴要求其内部程序员必须去学习的一套Java并发变成笔记,这套笔记从原理、模式、应用三套笔记,外加一份并发编程和PDF来深入学习并发编程~!原理篇如若你也需要学习这四套笔记,麻烦帮忙一键三连,点击这里模式篇如若你也需要学习这四套笔记,麻烦帮忙一键三连这篇文章,然后 点击这里应用篇Java并发编程实践总结如果你正在编写或者设计、调试、维护、研究一多原创 2020-12-17 17:25:35 · 247 阅读 · 12 评论 -
Java中读写锁的设计以及实现,不懂进来
针对读多写少的场景,Java提供了另外一个实现Lock接口的读写锁ReentrantReadWriteLock(RRW),之前分析过ReentrantLock是一个独占锁,同一时间只允许一个线程访问。而 RRW 允许多个读线程同时访问,但不允许写线程和读线程、写线程和写线程同时访问。读写锁内部维护了两个锁,一个是用于读操作的ReadLock,一个是用于写操作的 WriteLock。读写锁遵守以下三条基本原则允许多个线程同时读共享变量;只允许一个线程写共享变量;如果一个写线程正在执行写操作,此时禁转载 2020-12-17 15:47:29 · 125 阅读 · 1 评论 -
【JAVA】跳槽必备《Java核心知识点笔记》——JVM+并发编程+数据结构+算法+数据库及分布式事务+设计模式
不知道大家在面试中有没有这种感觉:面试官通常会在短短两小时内对面试者的知识结构进行全面了解,面试者在回答问题时如果拖泥带水且不能直击问题的本质,则很难充分表现自己,最终影响面试结果。针对这种情况,这份阿里架构师纯手打的Java核心知识点笔记应运而生!这份笔记在讲解知识点时不拖泥带水,力求精简,详细介绍了Java程序员面试时常被问及的核心知识点。这份笔记总共九大部分,涵盖了Java开发1年到Java架构师层面的面试知识点总结,作者承诺:这份笔记100%免费获取!因为这份笔记的知识点太多,小编没办法为大家原创 2020-12-11 21:57:12 · 74 阅读 · 0 评论 -
动态高并发时为什么推荐重入锁而不是Synchronized?
前言碎语Synchronized和 ReentrantLock 大家应该都不陌生了,作为java中最常用的本地锁,最初版本中 ReentrantLock 的性能是远远强于 Synchronized 的,后续java在一次次的版本迭代中 对 Synchronized 进行了大量的优化,直到 jdk1.6 之后,两种锁的性能已经相差无几,甚至 Synchronized 的自动释放锁会更好用。在面试时被问到 Synchronized 和 ReentrantLock 的使用选择时,很多朋友都转载 2020-12-11 17:28:37 · 83 阅读 · 0 评论 -
动态高并发时为什么推荐重入锁而不是Synchronized?
前言碎语Synchronized和 ReentrantLock 大家应该都不陌生了,作为java中最常用的本地锁,最初版本中 ReentrantLock 的性能是远远强于 Synchronized 的,后续java在一次次的版本迭代中 对 Synchronized 进行了大量的优化,直到 jdk1.6 之后,两种锁的性能已经相差无几,甚至 Synchronized 的自动释放锁会更好用。在面试时被问到 Synchronized 和 ReentrantLock 的使用选择时,很多朋友都转载 2020-12-11 17:24:46 · 177 阅读 · 0 评论 -
撸了阿里P8大神10W字的SpringBoot独家笔记,助你升职+涨薪两双收,服气!!
前言Spring Boot作为Java编程语言的一个全新开发框架。相比于以往的一些开发框架,使用Spring Boot开发框架,不仅能提高开发速度,增强生产效率,从某种意义上,可以说是解放了程序员的劳动,而且一种新技术的使用,更能增强系统的稳定性和扩展系统的性能指标。目的是简化Spring应用的搭建和开发过程,它不但具有Spring 的所有优秀特性,而且具有如下显著的特点:为Spring开发提供更加简单的使用和快速开发的技巧。具有开箱即用的默认配置功能,能根据项目依赖自动配置。具有功能更加强大的服原创 2020-12-10 21:48:40 · 90 阅读 · 8 评论 -
关于HashMap,这篇文章已经总结很详细了
HashMap的底层数据结构?HashMap 是我们非常常用的数据结构,由 数组和链表组合构成 的数据结构。数组里每个地方都存了Key-Value这样的实例,在Java7叫Entry,在Java8中叫Node。初始化后所有的位置都为null,在put插入的时候会根据key的hash去计算一个index值。链表?为啥需要链表?链表具体是什么样的?数组的长度是有限的,在有限的长度里面使用哈希,哈希本事就存在一定的概率性,当两个key的hash一样时就会hash到一个值上,形成链表。转载 2020-12-10 21:42:35 · 153 阅读 · 0 评论 -
Redis Sentinel-深入浅出原理和实战
本篇博客会简单的介绍Redis的Sentinel相关的原理,同时也会在最后的文章给出 硬核的 实战教程,让你在了解原理之后,能够实际上手的体验整个过程。之前的文章聊到了Redis的主从复制,聊到了其相关的原理和缺点,具体的建议可以看看我之前写的文章 Redis的主从复制 。总的来说,为了满足Redis在真正复杂的生产环境的高可用,仅仅是用主从复制是明显不够的。例如,当master节点宕机了之后,进行主从切换的时候,我们需要人工的去做failover。同时在流量方面,主从架构只能通过转载 2020-12-09 16:18:17 · 137 阅读 · 0 评论 -
香!香!香!阿里巴巴Spring Security五套笔记免费开源,妈妈再也不担心我的学习!牛皮!
Spring SecuritySpring Security想必在这里不用我多说了,它作为一个强大且高度可定制的安全框架,一直致力于为Java应用提供身份认证和授权。在Web开发中,安全一直是非常重要的一个方面。它的三大功能:认证(你是谁)授权(你能干什么)攻击防护(防止伪造身份)让其成为首先被推崇的安全解决方案。如何学习Spring Security?对于Java基础不太好的朋友,在面对Spring Security时大多无从入手。因为它囊括了大量知识,仅官方参考手册就有数十万字,并且还省略了诸多实原创 2020-12-09 15:10:44 · 121 阅读 · 8 评论 -
volatile关键字的原理和要避免的误区
背景最近做code review看到有的同学在承载缓存数据的变量里加了volatile关键字。想起来之前项目中也看到有的同学习惯在从配置中心获取的配置数据的变量上加volatile。今天就来探讨一下这个volatile加的有没有必要。volatile关键字的作用1>防止指令重排2>禁用工作内存缓冲区,直接使用主内存。经典使用场景场景1public static Singleton getInstance() { //第一次null检查 if (instan转载 2020-12-08 17:33:29 · 74 阅读 · 0 评论 -
利用maven-shade-plugin解决不兼容依赖冲突
问题描述在maven工程中,我们常常遇到底层依赖包的版本冲突问题。如果高版本对低版本兼容,那么我们可以使用maven的 exclusions 排除掉低版本。但如果版本互不兼容,甚至是不同jar有相同类名的冲突,就比较棘手了。比如,我在某个java工程中即使用了Hutool的加密工具类,也使用了openfeign的feign接口。而Hutool依赖了 bcprov-jdk15to18 ,openfeign依赖了 bcprov-jdk15on ,这转载 2020-12-04 21:29:09 · 1910 阅读 · 0 评论 -
synchronized的对象锁和类锁的区别
synchronized可以锁对象,代码块,类对象 ,那么他们用起来会有区别吗,这里我们用实际代码来探究下package com.example.hxk.thread.synchroized;public class SyncTest1 { // synchronized修饰非静态方法 public synchronized void test1() { for (int i = 0; i < 5; i++) { System.out.p转载 2020-12-03 21:46:01 · 328 阅读 · 0 评论 -
SpringBoot中的MyBatis框架整合实现及原理分析
整合MyBatis的初步分析概述Mybatis是一个优秀的持久层框架,底层基于JDBC实现与数据库的交互。并在JDBC操作的基础上做了封装和优化,它借助灵活的SQL定制,参数及结果集的映射方式,更好的适应了当前互联网技术的发展。Mybatis框架的简单应用架构如图所示:在当今的互联网应用中项目,mybatis框架通常会由spring框架进行资源整合,作为数据层技术实现数据交互操作。准备工作第一步:创建项目module,例如:第二步:添加依赖mysql 驱动依赖<dependency转载 2020-12-02 16:39:36 · 985 阅读 · 0 评论 -
近5000页,git爆火!JAVA程序员必备魔鬼开发文档,Git/实战/集群/面试/源码,样样齐全!我酸了!
前两天,挖到了一个实用性很强的宝藏文档,手把手带你玩的那种,不信,你看预览:总目录(22个大专题):IDEA DeBug 调试技巧Dubbo 序列化协议 5 连问Git 从入门到放不下GitHub 移动端操作IDEA DeBug 调试技巧IDEA 插件推荐10 分钟实现 Java 发送邮件功能Maven 实战问题和最佳实践MyBatis 事务管理解析Nginx 从入门到实战RESTful 架构基础点击这里,直达免费获取~Redis + Tomcat +原创 2020-12-01 22:04:37 · 85 阅读 · 14 评论 -
Kafka与RocketMQ性能对比大揭秘
在双十一过程中投入同样的硬件资源,Kafka 搭建的日志集群单个Topic可以达到几百万的TPS,而使用RocketMQ组件的核心业务集群,集群TPS只能达到几十万TPS,这样的现象激发了我对两者性能方面的思考。温馨提示:TPS只是众多性能指标中的一个,我们在做技术选型方面要从多方面考虑,本文并不打算就消息中间件选型方面投入太多笔墨,重点想尝试剖析两者在性能方面的设计思想。1、文件布局1.1 Kafka 文件布局Kafka 文件在宏观上的布局如下图所示:正如上图所示,Kafka 文件布局的主要特转载 2020-12-01 16:25:31 · 452 阅读 · 0 评论 -
新技能 MyBatis 千万数据表,快速分页
基本概念流式查询指的是查询成功后不是返回一个集合而是返回一个迭代器,应用每次从迭代器取一条查询结果。流式查询的好处是能够降低内存使用。如果没有流式查询,我们想要从数据库取 1000 万条记录而又没有足够的内存时,就不得不分页查询,而分页查询效率取决于表设计,如果设计的不好,就无法执行高效的分页查询。因此流式查询是一个数据库访问框架必须具备的功能。流式查询的过程当中,数据库连接是保持打开状态的,因此要注意的是:执行一个流式查询后,数据库访问框架就不负责关闭数据库连接了,需要应用在取完数据后自己关闭。M转载 2020-11-30 21:30:32 · 61 阅读 · 0 评论 -
缘起缘灭——HashMap系列之1.8put源码篇
#TreeNode结构下面是HashMap1.8中的TreeNode结构: /** * 用于Tree bins 的Entry。 扩展LinkedHashMap.Entry(进而扩展Node),因此可以用作常规节点或链接节点的扩展。 */ static final class TreeNode<K,V> extends LinkedHashMap.Entry<K,V> { TreeNode<K,V> parent; // 红转载 2020-11-28 09:54:40 · 303 阅读 · 0 评论 -
你知道可以通过网址访问的Servlet如何实现吗?
Servlet 是 Server Applet 的缩写,是服务端小程序的意思。使用 Java 语言编写的服务器端程序,主要功能在于交互式地浏览和生成数据,生成动态Web内容,Servlet 主要运行在服务器端,并由服务器调用执行,是一种按照 Servlet 标准来开发的类。 是 SUN 公司提供的一门用于开发动态 Web 资源的技术。(言外之意:要实现 web 开发,需要实现 Servlet 标准)Servlet 本质上也是 Java 类,但要遵循 Servlet 规范进行编写,没有 main() 方法,转载 2020-11-28 09:45:27 · 222 阅读 · 0 评论 -
开源爆款,阿里P7技术笔记《k8s+docker》,图文并茂,理论与实战齐飞~
容器,毫无疑问是近年来的又一个技术热词。容器化技术的诞生和兴起,以及它所催生的微服务架构、DevOps、云原生等技术理念,都对软件行业产生了深远的影响。容器的优点有很多了,完善的封装、便捷的部署、轻量的启动和调度,这些都是容器技术受到欢迎的原因。与编排系统配合后,它能让我们的应用程序容易管理和迭代,即便是再复杂的系统也不在话下。同时呢,容器应用还能做到非常好的可迁移性,环境中只要有符合标准的容器运行时就可以顺利运行。我相信你对容器其实有一定的了解,也知道 Docker 和 Kubernetes 分别是容原创 2020-11-26 15:32:34 · 1515 阅读 · 12 评论 -
使用SpringBoot进行优雅的数据验证
JSR-303 规范在程序进行数据处理之前,对数据进行准确性校验是我们必须要考虑的事情。尽早发现数据错误,不仅可以防止错误向核心业务逻辑蔓延,而且这种错误非常明显,容易发现解决。JSR303 规范(Bean Validation 规范)为 JavaBean 验证定义了相应的元数据模型和 API。在应用程序中,通过使用 Bean Validation 或是你自己定义的 constraint,例如 @NotNull, @Max, @ZipCode , 就可以确保数据模型(JavaBean)的正确性。cons转载 2020-11-24 21:00:22 · 370 阅读 · 0 评论 -
征服tomcat,阿里程序员推荐的这份架构解析笔记,图文并茂,透彻,必须死磕!
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开原创 2020-11-24 16:09:08 · 1031 阅读 · 20 评论 -
狂怼面试官——JAVA IO知识点梳理
Java对数据的操作是通过流的方式,io是java中实现输入输出的基础,它可以很方便的完成数据的输入输出操作,Java把不同的输入输出抽象为流,通过流的方式允许Java程序使用相同的方式来访问不同的输入、输出。补充( File )构造函数//构造函数File(String pathname)File f1 =new File("c:\\abc\\1.txt");//File(String parent,String child)File f2 =new File("c:\\abc","2.txt转载 2020-11-23 21:27:28 · 81 阅读 · 0 评论 -
《数据结构与算法经典》、《吃透算法只为面试》、《程序员代码面试指南 》,王者上分必备,凭借这些笔记,拿下多个大厂offer
想要通关大厂面试,千万别让数据结构和算法拖了后腿众所周知,很多大厂技术面试的要求是:技术要好,计算机基础扎实,熟练掌握算法和数据结构,语言不重要,熟练度很重要。每一轮技术面试都可能考代码,不只考算法,但一定会考算法。算法作为大厂面试必备的一个环节!所以要想被录取就必须依靠牢固的基础和刷题量。算法根基不扎实,不仅难过面试,对于代码性能的提升、编程语言的驾驭也会比别人弱很多。因此,现在算法基础不牢固的同学,都很难通过大厂的面试。两个月时间上岸大厂是如何刷题的?有幸获得这三份资料,籍此成功拿到大厂off原创 2020-11-20 17:45:20 · 2620 阅读 · 7 评论 -
MyBatis高级应用之逆向工程自动生成SQL语句
本文以Spring整合MyBatis环境下,介绍MyBatis逆向工程自动生成pojo,mapper,dao的Java类。MyBatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码,一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。下图为逆向工程依赖的jar包。mybatis-generator-core-1.3.6.jar为逆向工程的核心包mysql-connec转载 2020-11-19 21:53:46 · 1190 阅读 · 0 评论 -
Spring是怎么解析Xml配置文件路径中的占位符的
前言我们在配置Spring Xml配置文件的时候,可以在文件路径字符串中加入 ${} 占位符,Spring会自动帮我们解析占位符,这么神奇的操作Spring是怎么帮我们完成的呢?这篇文章我们就来一步步揭秘。1.示例ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext();applicationContext.setConfigLocation("${java.version}.xm转载 2020-11-18 15:38:03 · 226 阅读 · 0 评论 -
厉害了!百度T9大佬纯手打的Kafka学习笔记,吃透已胜过80%Java求职者
小灰工作3年了,一直在一家初创公司做大数据架构师,最近几次大厂的面试经历都百般不顺,小灰心如死灰,想着如果一直跳槽无望,只能跟着时下最火的地摊儿大军一起去出摊儿谋生了。被问到了为什么要使用 Kafka,在哪种场景下需要使用 JMS,小灰一脸问号。工作几年来,接触了 Kafka,Elasticsearch 等等,居然没想过为什么要用这些眼花缭乱的消息系统,各种数据库。脑海中一直萦绕着面试官问的好几个问题,看似简单,小灰却给不出一个系统性的答复。Kafka为什么这么快?如何对Kafka集群进行调优?原创 2020-11-17 21:33:53 · 320 阅读 · 1 评论 -
Spring是怎么解析Xml配置文件路径中的占位符的
前言我们在配置Spring Xml配置文件的时候,可以在文件路径字符串中加入 ${} 占位符,Spring会自动帮我们解析占位符,这么神奇的操作Spring是怎么帮我们完成的呢?这篇文章我们就来一步步揭秘。1.示例ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext();applicationContext.setConfigLocation("${java.version}.xm转载 2020-11-17 15:56:17 · 444 阅读 · 1 评论 -
2021锤爆45K月薪的MySQL面试笔记解析:索引+优化+锁+慢查询+事务+面试
MySQL 作为主流的数据库,是各大厂面试官百问不厌的知识点,但是需要了解到什么程度呢?仅仅停留在 建库、创表、增删查改等基本操作的水平可不够。在面试后端开发的时候,一连几个问题,简直会被问到一脸懵逼。MySQL 语句怎么优化?分库,分表都适合哪些场景?讲讲 InnoDB 如何使用 B+ 树存储的?一般来说,准备 MySQL 面试 ,无非要从这几块进行准备:查询、存储、事务、锁和性能调优。不少朋友苦于搜集资料耗时耗力,很难 cover 住面试官的考核角度。为了能让大家在准备面试时少走弯路,这里特别熬原创 2020-11-11 15:03:29 · 179 阅读 · 1 评论 -
阿里内部P8大神架构师都在用的神仙级Spring Cloud文档,赶紧学起来
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。值得一提的原创 2020-11-09 21:41:16 · 2871 阅读 · 20 评论