![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 85
Java架构设计
一名Java爱好者
展开
-
拿捏大厂面试,2022最新版的Java面试突击班手册
前言最近很多同学已经成功“拿捏”了今年的面试,好多同学给老师说,2022最新版的Java面试突击班的内容给自己提供了很大的帮助,在这里很感谢这些同学对老师的认可,老师会持续奋战在Java教培的一线,了解最新的技术并且提供给大家学习! 话说回来,今天给大家分享的就是咱们2022版面试突击班的文字PDF版本,如果大家需要视频版本也可以一并送给大家的,下面是文字版的分享大家可以详细往下看!由于文章的篇幅有限,所以这里只为大家截图一些大标题内容,里面详细的小标题内容就不为大家截图了,等大家自己拿到手之后可以原创 2022-05-17 21:30:50 · 586 阅读 · 1 评论 -
当 key 达到过期时间,Redis 就会马上删除么?
码哥,当 key 达到过期时间,Redis 就会马上删除么?先说结论,并不会立马删除,Redis 有两种删除过期数据的策略:定期选取部分数据删除; 惰性删除;该命令在 Redis 2.4 版本,过期时间并不是很精确,它可能在零到一秒之间。从 Redis 2.6 开始,过期错误为 0 到 1 毫秒。EXPIRE key seconds [ NX | XX | GT | LT] 指令可以将指定的 key 设置过期时间,如果没有设置过期时间, key 将一直存在,除非我们明确将其删...原创 2022-05-17 15:35:25 · 1459 阅读 · 0 评论 -
SpringBoot终于受不了这种滥用,对循环依赖说再见
原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,非公众号转载保留此声明。Spring的Bean管理,一直是整个体系中津津乐道的东西。尤其是Bean的循环依赖,更是很多面试官最喜欢考察的2B知识点之一。但事实上,项目中存在Bean的循环依赖,是代码质量低下的表现。多数人寄希望于框架层来给擦屁股,造成了整个代码的设计越来越糟,最后用一些奇技淫巧来填补犯下的错误。还好,SpringBoot终于受不了这种滥用,默认把循环依赖给禁用了!从2.6版本开始,如果你的项目里还存在循环依赖,..原创 2022-05-17 15:11:16 · 674 阅读 · 2 评论 -
CTO给我炫了一遍RocketMQ 的设计理念剖析
前言张大胖最近是又喜又忧,喜的是业务量发展猛增,忧的是由于业务量猛增,一些原来不是问题的问题变成了大问题,比如说新会员注册吧,原来注册成功只要发个短信就行了,但随着业务的发展,现在注册成功也需要发 push,发优惠券,...等这样光注册用户这一步就需要调用很多服务,导致用户注册都需要花不少时间,假设每个服务调用需要 50 ms,那么光以上服务就需要调用 200 ms,而且后续产品还有可能再加一些发新人红包等活动,每加一个功能,除了引入额外的服务增加耗时外,还需要额外集成服务,重发代码,实在让原创 2022-05-17 14:09:40 · 214 阅读 · 0 评论 -
阿里巴巴开源SpringBoot深度历险(嵩山版),实现面试进阶
前言大家可以回想一下,当初我们最开始学习Java的时候,搭建一个Web所需要的步骤。。。1、配置web.xml,加载spring和spring mvc2、配置数据库连接、配置spring事务3、配置加载配置文件的读取,开启注解4、配置日志文件...5、配置完成之后部署tomcat 调试现在回看一下,真的是yue了!现在大家学Spring,需要搭建一个新的项目时都是先从SpringBoot入手,用SpringBoot只需要非常少的几个配置就可以迅速搭建起来一套web项目或者微服务(原创 2022-05-16 17:05:12 · 571 阅读 · 0 评论 -
概念详解:MySQL不同事务之间的隔离性,如何实现?
前言MySQL有ACID四大特性,本文着重讲解MySQL不同事务之间的隔离性的概念,以及MySQL如何实现隔离性。下面先罗列一下MySQL的四种事务隔离级别,以及不同隔离级别可能会存在的问题。事务隔离级别越高,多个事务在并发访问数据库时互相产生数据干扰的可能性越低,但是并发访问的性能就越差。(相当于牺牲了一定的性能去保证数据的安全性)下面这张表,展示了MySQL的四大隔离级别和伴随着的一些问题,下面详细介绍。事务隔离级别读未提交:多个事务同时修改一条记录,A事务对其的改动在A事务还没原创 2022-05-16 14:41:44 · 273 阅读 · 0 评论 -
同事问我Nacos集群架构到底怎么用?我笑了
前言由于在公司,注册中心和配置中心都是使用的Nacos,因为前一段时间比较忙(木有划水时间),没有精力仔细去研究,时间就像海绵里的水,挤一挤总会是有的,出于对技术的好奇心,今天挤了一点时间,终于到了我牧汉三出马的时候。今儿个就说一说Nacos集群架构是如何搭配,以及在企业中是如何使用的。Nacos集群架构在搭建Nacos集群之前,我们首先要了解一下Nacos的架构,工欲善其事必先利其器,磨刀不费砍材功,在上一节中,我们了解了Nacos基础功能,对Nacos的一些基本使用和配置,但是这些在实际..原创 2022-05-16 14:29:16 · 500 阅读 · 0 评论 -
字节面试真题:什么是伪共享?图文详解一番
大家好!周末的时候,有个读者跟我说,面试字节的时候被问到:「什么是伪共享?又该怎么避免伪共享的问题?」这个其实是考察 CPU 缓存的问题,我之前的图解系统也有提到过。今天,我再跟大家讲一下。正文CPU 如何读写数据的?先来认识 CPU 的架构,只有理解了 CPU 的 架构,才能更好地理解 CPU 是如何读写数据的,对于现代 CPU 的架构图如下:可以看到,一个 CPU 里通常会有多个 CPU 核心是,比如上图中的 1 号和 2 号 CPU 核心,并且每个 CPU 核心原创 2022-05-16 14:13:10 · 193 阅读 · 0 评论 -
Future机制,绝对是并发编程里必须跨过的坎
前言Java 5在concurrency包中引入了java.util.concurrent.Callable 接口,它和Runnable接口很相似,但它可以返回一个对象或者抛出一个异常。Callable接口使用泛型去定义它的返回类型。Executors类提供了一些有用的方法在线程池中执行Callable内的任务。由于Callable任务是并行的,我们必须等待它返回的结果。而线程是属于异步计算模型,所以不可能直接从别的线程中得到函数返回值。java.util.concurrent.Future对象原创 2022-05-16 13:56:25 · 712 阅读 · 0 评论 -
Cloudreve自建云盘实站:容量和速度自己来决定
一、前言为啥要用自建网盘,市面上的云盘不香了?每一个用户需求的背后都是因为有场景存在,而这些差异化的场景也都是因为不同的用户类型产生的。就像我作为技术号主想分享一些自己总结的资料,放到一些云盘以后有时候会被其他不知道从哪冒出来的小伙伴给举报,举报链接就取消了,取消了链接也就影响了我的资料分享。同时我可能还希望我的分享内容能被记录到下载次数、允许几次下载、下载时是否要做一些引流动作等等。所以类似这样的特殊场景下就需要自建网盘来维护个人需要的资料,与之类似的还有一些公司或者组织都会建相对私域的网原创 2022-05-14 16:09:27 · 924 阅读 · 0 评论 -
大厂程序员都在用的都在用的API管理神器,学到就是赚到
❝ 程序员最讨厌的两件事:1. 写文档,2. 别人不写文档。大多数开发人员不愿意写 API 文档的原因:写文档短期收益远低于付出的成本,然而并不是所有人都能够坚持做有长期收益的事情的。你因为写文档而耽误了当前项目进度,老板会直接找你麻烦;但是因为没写文档而带来的长期收益低,老板是看不见的。这就是现实,让人去做违反人性的事情是非常困难的。 ❞作为一个前后端分离模式开发的团队,我们经常会看到这样的场景:前端开发和后端开发在一起热烈的讨论“你这接口参数怎么又变了?”,“接口怎么又不通了?”,“稍等,我调试.原创 2022-05-14 15:48:07 · 2038 阅读 · 1 评论 -
常读常新,微服务最强内功心法,这些理论得吃透~
前言Building Microservices: Designing Fine Grained Systems 读书笔记。本书偏理论而非实现,可作为内功心法,适合架构师或有经验的系统工程师。常读常新。前言微服务是分布式系统提高细粒度服务(use of finely grained services)使用的一种 方式,在这种模式中,每个服务都有自己独立的生命周期,所有服务共同合作完成整体 的功能。微服务主要是针对业务领域建模的(modeled around business doma原创 2022-05-14 14:27:26 · 432 阅读 · 0 评论 -
面试大厂真题:怎么实现JVM性能调优?
对于工作3年左右的Java程序员来说,在面试大厂的过程中,面试官可能不会太关注你做了多少个项目、你的CRUD水平如何。更多的是关注你对某项技术点的理解深度,所以说,工作3年左右的小伙伴一定要把自己的重心放到技术的深度上来。今天,我们先一起聊聊关于JVM性能调优的话题,本文的主要结构如下所示。常见面试题关于JVM,一道常见的面试题就是:Java中创建的对象是存储在JVM中的哪个区域的?例如,这里,我们简单的列举一行代码,如下所示。User user = new User();原创 2022-05-13 20:44:12 · 394 阅读 · 0 评论 -
学Netty前,还是要先把JavaNIO编程模型掌握好
一、Java NIO 基本介绍Java NIO 全称 java non-blocking IO,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 New IO),是同步非阻塞的NIO 相关类都被放在 java.nio 包及子包下,并且对原 java.io 包中的很多类进行改写。NIO是面向缓冲区 ,或者面向 快 编程的。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动,这就增加了处理过程中的灵活性,使原创 2022-05-13 20:30:48 · 346 阅读 · 0 评论 -
596页阿里面试参考指南首发,助力斩获大厂offer
前言本文主要记录了我的同事能够拿到阿里的offer,一大部分功劳得益于这一本“阿里面试参考指南(恒山版)”,这本手册596页他整整狂刷了29天,收获颇丰。下面咱们就跟着文章一起来看看吧!内容大纲 阿里巴巴高并发秒杀架构 分布式 中间件 数据库 设计模式与实践 数据结构与算法 阿里巴巴面试真实场景还原 恒山版阿里巴巴高并发秒杀架构XA两阶段提交(2PC)原创 2022-05-13 20:06:41 · 410 阅读 · 0 评论 -
面试被SpringBoot问倒,那是你不知道它还可以这样学?
SpringBoot 以其轻量级、内嵌 Web 容器、一键启动、方便调试等特点被越来越多的微服务实践者所采用。然而知其然还要知其所以然,本 Chat 就来讲解 SpringBoot 核心模块的实现原理,在面试的时候也是会被经常问到的,核心内容主要包括: spring-boot-load 模块,正常情况下一个类加载器只能找到加载路径的 jar 包里面当前目录或者文件类里面的 *.class 文件,SpringBoot 允许我们使用 java -jar archive.jar 运行包含嵌套依赖 jar 的原创 2022-05-13 19:30:21 · 172 阅读 · 0 评论 -
字节面试复盘:大厂究竟会问些什么呢?
最近这段时间,身边的一个朋友刚刚拿到字节跳动的offer,一起来复盘一下他的offer之路,希望能给正在看机会的你有所帮助。这次面试总共经历了四轮,这四轮面试都是视频面试,其中前三轮是技术面试,最后一轮是hr面试。前三轮技术面试都有一个手动写代码的环节,在牛客网上写。情况也不完全一样,有的是先写代码后面试,有的是先聊一会儿再写代码。首轮面试1.1 算法题开始首先一道算法题,题目是链表上的数字相加。题目类似下面这道leetcode题。https://leetcode-cn.com/p原创 2022-05-13 15:36:17 · 204 阅读 · 0 评论 -
分享一次对我而言惊心动魄的Java面试
记录一次面试的题和自己的一些理解,通常一般都是自我介绍,项目介绍,问问业务以及后面就是吧拉吧拉的技术细节,反正一句话 “面试过程都是一连串的连环 Q”。如果大家觉得这些问题都能够游刃有余的回答大家出去拿一个高级的 title 问题不大。分布式锁部分redis 分布式锁超时后,第二个线程进入过后会有什么影响?无法保证幂等,可能发生未知问题。分布式锁锁超时如何实现?主线程中,增加延迟队线程池实现。2000 个线程持有锁如何续期呢?框架实现:应该是一个定时任务。 redisson 使用的是原创 2022-05-13 14:58:59 · 143 阅读 · 0 评论 -
美团OCTO,千亿级的分布式系统,到底牛在哪里?
OCTO 是美团千亿调用量的分布式服务通信框架及服务治理的系统,可实现服务注册、服务自动发现、服务管理、容错处理、数据可视化、服务监控报警、服务分组等。本文总结了 OCTO 架构原理、Java 应用的集成方法、以其控制台的使用。1 概述OCTO 是 octopus(章鱼) 的缩写。是美团公司级基础设施,为公司所有业务提供统一的高性能服务通信框架,使业务具备良好的服务运营能力,轻松实现服务注册、服务自动发现、负载均衡、容错、灰度发布、数据可视化、监控告警等功能,提升服务开放效率、可用性及服务运维效率。原创 2022-05-13 14:22:27 · 614 阅读 · 0 评论 -
字节面试题:「什么是伪共享?又该怎么避免伪共享的问题?」
大家好,我是小林。周末的时候,有个读者跟我说,面试字节的时候被问到:「什么是伪共享?又该怎么避免伪共享的问题?」这个其实是考察 CPU 缓存的问题,我之前的图解系统也有提到过。今天,我再跟大家讲一下。正文CPU 如何读写数据的?先来认识 CPU 的架构,只有理解了 CPU 的 架构,才能更好地理解 CPU 是如何读写数据的,对于现代 CPU 的架构图如下:可以看到,一个 CPU 里通常会有多个 CPU 核心是,比如上图中的 1 号和 2 号 CPU 核心,并且每个 CPU原创 2022-05-13 14:08:32 · 267 阅读 · 0 评论 -
都说字节的算法是天花板,那它究竟牛在哪里?
文章的开头大家先来看一看一道字节的算法题,看是否能做出来: 给定一个单链表的头节点 head,实现一个调整单链表的函数,使得每K个节点之间为一组进行逆序,并且从链表的尾部开始组起,头部剩余节点数量不够一组的不需要逆序。(不能使用队列或者栈作为辅助) 大家有没有一脸懵逼的感觉?(我也不会) 曾经有个说法,程序=数据结构+算法。这在面向过程的编程语言流行的年代是很受推崇的。 然而,随着时代的发展,各种编程语言的出现,各种编程模式的发明,面向对象、设计模式、框架、模型等各种概念出来之前那个说原创 2022-05-12 21:11:41 · 20916 阅读 · 14 评论 -
优雅代码的秘密,只因为我掌握了Java Stream 流操作
概念Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排序、聚合等。Stream` 的操作符大体上分为两种:`中间操作符`和`终止操作符中间操作符对于数据流来说,中间操作符在执行指定处理程序后,数据流依然可以传递给下一级的操作符。中间操作符包含8种(排除了parallel,sequential,这两个操作并不涉及到对数据流的加工操作):map(mapToInt,mapToLong,mapToDouble)原创 2022-05-12 20:21:58 · 224 阅读 · 0 评论 -
美团面试官:关于SpringCloud我就只问这35道题
1、什么是Spring Cloud?Spring cloud流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。2、使用Spring Cloud有什么优势?使用Spring Boot开发分布式微服务时,我们面临以下问题与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。 服务发现-服务发现工具管理群集中的流程和服务如.原创 2022-05-12 20:01:10 · 230 阅读 · 0 评论 -
阿里五月面试题:聊聊之前你用过哪些限流方案?
一、限流思路常见的系统服务限流模式有:熔断、服务降级、延迟处理和特殊处理四种。1、熔断将熔断措施嵌入到系统设计中,当系统出现问题时,若短时间内无法修复,系统会自动开启熔断开关,拒绝流量访问,避免大流量对后端的过载请求。除此之外,系统还能够动态监测后端程序的修复情况,当程序已恢复稳定时,就关闭熔断开关,恢复正常服务。常见的熔断组件有 Hystrix 以及阿里的 Sentinel。在Spring Cloud框架里,熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当原创 2022-05-12 14:41:59 · 317 阅读 · 0 评论 -
来预判下:Pulsar到底会不会超越Kafka?
Pulsar是一款分布式发布/订阅消息平台,近两年非常火,被称为下一代的消息流平台,大有取代Kafka的势头。今天我们就来比较一下Pulsar跟Kafka。历史背景Pulsar源自Yahoo,于2016年开源并捐献给Apache基金会,并在2018年9月升级成为Apache顶级项目。Kafka最初由Linkedin开发,并于2010年贡献给了Apache基金会,之后成为Apache顶级项目。架构KafkaKafka架构由broker和zookeeper组成,如下图:[1]原创 2022-05-12 13:59:41 · 158 阅读 · 0 评论 -
89个操作系统概念,看完我也是个成熟的程序员了
1. 操作系统(Operating System,OS):是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统需要处理管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。2. shell:它是一个程序,可从键盘获取命令并将其提供给操作系统以执行。在过去,它是类似 Unix 的系统上唯一可用的用户界面。如今,除了命令行界面(CLI)外,我们还具有图形用户界面(GUI)。原创 2022-05-12 13:34:25 · 180 阅读 · 0 评论 -
从基础到高级,看完这篇Java进阶文档,你会发现没有那么难
Java基础(对象+线程+字符+接口+变量+异常+方法) 面向对象和面向过程的区别? Java 语言有哪些特点? 关于 JVM JDK 和 JRE 最详细通俗的解答 Oracle JDK 和 OpenJDK 的对比 Java 和 C++的区别? 什么是 Java 程序的主类?应用程序和小程序的主类有何不同? Java 应用程序与小程序之间有哪些差别? 字符型常量和字符串常量的区别 构造器 Constructor 是否可被原创 2022-05-11 21:13:32 · 149 阅读 · 0 评论 -
想要跳出CRUD的苦海,阿里高工这本性能优化全栈小册是必备
性能优化性能优化可以说是我们程序员的必修课,如果你想要跳出CRUD的苦海,成为一个更“高级”的程序员的话,性能优化这一关你是无论无何都要去面对的。为了提升系统性能,开发人员可以从系统的各个角度和层次对系统进行优化。除了最常见的代码优化外,在软件架构上、JVM虚拟机层、数据库以及操作系统层面都可以通过各种手段进行调优,从而在整体上提升系统的性能。为了能让大家更好的入手性能优化,今天LZ为大家带来了一份阿里内部强推性能优化全栈小册,内容涵盖设计调优、代码调优、JVM调优。大家看了之后就知道,差距不原创 2022-05-11 16:57:15 · 160 阅读 · 0 评论 -
JDK源码难学?可能是因为你没看这本阿里技术官的源码笔记
灵魂一问,我们为什么要学习JDK源码?当然不是为了装,毕竟谁没事找事虐自己 ...1、面试跑不掉。现在只要面试Java相关的岗位,肯定或多或少会会涉及JDK源码相关的问题。2、弄懂原理才不慌。我们作为JDK的使用者,虽然说天天用得很开心,但是有时候遇到问题还是得跟到底层源码去看看,才能帮助我们更好的弄懂原理,3、学习优秀的代码、思想和模式。JDK毕竟是一个优秀的代码库,我们天天用,源码也就在里面,作为一个有志向的程序员,读一读源码也能让我们吸取到更多优秀的思想和模式。那么源码难吗?废原创 2022-05-11 16:38:50 · 244 阅读 · 0 评论 -
7年阿里Java人教你:秒杀活动就应该这样玩?
秒杀活动是指网络商家为促销等目的组织或网上限时抢购活动,这种活动具有瞬时并发量大、库存量少和业务逻辑简单等特点。设计一个秒杀系统需要考虑的因素很多,比如对现有业务的影响、网络带宽消耗以及超卖等因素。本文会讨论秒杀系统的各个环节可能存在的问题以及解决方案。秒杀系统傻瓜式秒杀系统秒杀系统的核心难点是并发量,如果不考虑并发问题,那么我们可以用如下图所示的简单的系统结构来实现秒杀系统,用户只有两个简单操作:刷新界面和秒杀按钮,服务端也只有两个服务接口:返回秒杀界面和处理秒杀逻辑。假设本文中秒杀商品有10原创 2022-05-11 15:59:49 · 471 阅读 · 0 评论 -
一篇入魂~看完你就掌握一个高级Java人必备的分布式RPC框架
一.概述什么是RPC?远程服务调用 官方:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想 通俗一点:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。 市面上常见的rpc框架:dobbo,springCloud,gRPC...那为什么要有 RPC,HTTP 不好么?因为 RPC 和 HTTP 就不是一个层级的东西,所以严格意义上这两个没有可比性,也不应该来作比较。 HTTP 只是传输协议,协议只是规范了一定的.原创 2022-05-11 15:31:30 · 144 阅读 · 0 评论 -
腾讯一面:一致性哈希是什么,使用场景,解决了什么问题?
大家好!在逛牛客网的面经的时候,发现有位同学在面微信的时候,被问到这个问题:第一个问题就是:一致性哈希是什么,使用场景,解决了什么问题?这个问题还挺有意思的,所以今天就来聊聊这个。发车!如何分配请求?大多数网站背后肯定不是只有一台服务器提供服务,因为单机的并发量和数据量都是有限的,所以都会用多台服务器构成集群来对外提供服务。但是问题来了,现在有那么多个节点(后面统称服务器为节点,因为少一个字),要如何分配客户端的请求呢?原创 2022-05-11 15:17:34 · 106 阅读 · 0 评论 -
面试官太喜欢问RocketMQ了?那我只好把这23点都刷下来挑战他了
1.为什么要使用消息队列呢?消息队列主要有三大用途,我们拿一个电商系统的下单举例:解耦:引入消息队列之前,下单完成之后,需要订单服务去调用库存服务减库存,调用营销服务加营销数据……引入消息队列之后,可以把订单完成的消息丢进队列里,下游服务自己去调用就行了,这样就完成了订单服务和其它服务的解耦合。 异步:订单支付之后,我们要扣减库存、增加积分、发送消息等等,这样一来这个链路就长了,链路一长,响应时间就变长了。引入消息队列,除了更新订单状态,其它的都可以异步去做,这样一来就来,就能降低响应时间。转载 2022-05-11 14:47:19 · 253 阅读 · 0 评论 -
Spring超级全家桶,学完绝对是惊艳面试官的程度
前言不知道各位Java好大哥们闲的时候会不会去关注Spring目前的官网,你会发现他的slogan是: Spring makes Java Simple。它让Java的开发变得更加简单。某种意义上来说:是Spring成就了Java!但随之而来的就是:由他之后诞生出来的各种组件;SpringBoot,SpringCloud,SpringSecurity啥的都成了我们Java程序员必须要掌握的技能;每次面试也都是必问。Spring家族有了SpringBoot这个亲儿子之后,我们摆脱了被无数xml支配的恐原创 2022-05-10 21:21:10 · 596 阅读 · 1 评论 -
大厂门槛高?阿里内部5份专属PDF带你激流勇进,勇夺offer
前言由于疫情关系,最近在后台收到很多同学的工作情况内心还是蛮触动的(降薪、变相裁员、辞退等)。可能这并不是当下一个普遍的现象,但仍然使我感受到前端这碗青春饭不好混。于此同时联系我内推的同学很多都处于待业状态,能感受到他们内心的迷茫和焦灼。于是内心一直有声音督促我,赶紧写点面试相关的东西出来吧,哪怕对大家只有一丝丝的帮助。所以这次我也是把自己之前在阿里的所有内部专属资料整理成册,在这里跟大家一起分享,希望能够帮到大家:五份阿里内部专属PDF展示注:由于这次分享的内容有点多,所以老师这里这原创 2022-05-10 19:51:45 · 193 阅读 · 0 评论 -
面试真题:为什么Redis要对一种数据类型存储两次呢?
前言在 Redis 中,有一种数据类型,当在存储的时候会同时采用两种数据结构来进行分别存储,那么 Redis 为什么要这么做呢?这么做会造成同一份数据占用两倍空间吗?五种基本类型之集合对象Redis 中的集合对象是一个包含字符串类型元素的无序集合,集合中元素唯一不可重复。集合对象的底层数据结构有两种:intset 和 hashtable。内部通过编码来进行区分:intset 编码intset(整数集合)可以保存类型为 int16_t,int32_t,int64_t 的整数值,原创 2022-05-10 15:46:31 · 158 阅读 · 0 评论 -
一篇入魂:SpringbBoot中如何集成参数校验框架?
在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数进行校验,例如登录的时候需要校验用户名和密码是否为空,添加用户的时候校验用户邮箱地址、手机号码格式是否正确。 靠代码对接口参数一个个校验的话就太繁琐了,代码可读性极差。Validator框架就是为了解决开发人员在开发的时候少写代码,提升开发效率;Validator专门用来进行接口参数校验,例如常见的必填校验,email格式校验,用户名必须位于6到12之间等等。接下来我们看看在SpringbBoot中如何集成参数校验框架。1|0S原创 2022-05-10 13:47:58 · 312 阅读 · 0 评论 -
MySQL的金科玉律:“不要使用SELECT *”
“不要使用SELECT *”几乎已经成为了MySQL使用的一条金科玉律,就连《阿里Java开发手册》也明确表示不得使用*作为查询的字段列表,更是让这条规则拥有了权威的加持。不过我在开发过程中直接使用SELECT *还是比较多的,原因有两个:因为简单,开发效率非常高,而且如果后期频繁添加或修改字段,SQL语句也不需要改变; 我认为过早优化是个不好的习惯,除非在一开始就能确定你最终实际需要的字段是什么,并为之建立恰当的索引;否则,我选择遇到麻烦的时候再对SQL进行优化,当然前提是这个麻...原创 2022-05-10 13:21:39 · 1443 阅读 · 1 评论 -
Java人必备高端摸鱼指南,教你靠本事摸鱼
哈喽大家好啊!虽然说五一假期结束了,不过我相信许多小伙伴们都和我一样,虽然人来上班了,但是心还留在了家里,需要一段时间从假期余额用尽的悲伤中释怀一下…所以,我昨天摸了一天鱼…就像老话说的那样,上班认真工作只能算用劳动从老板那里换取报酬,只有摸鱼才能叫赚老板的钱…我都已经给公司创造了那么多价值了,所以赚老板一点钱,应该没有特别过分吧?当然,上班用手机刷剧、打游戏这种摸鱼方式还是太低端了,不仅低着头对颈椎不好还容易被老板抓到, 那么,Hydra就来给大家分享一下高端程序员应该掌原创 2022-05-09 14:28:40 · 1234 阅读 · 0 评论 -
偷偷跟我学这个看源码的小技巧,早日解放双手
大家好!我在之前的文章里面不是经常叫大家拉源码,然后看代码提交记录吗。也就是看类似于这个界面:比如上面这个界面中,就可以看到 RedissonBaseLock.java 这个文件,由谁在什么时候进行过变更,以及变更对应的 commit 信息是什么。这样就能很直观的看到文件的演变过程。那么问题就来了,有好几个同学都问过我这个问题:怎么在 idea 里面查看 git 提交记录呢?这个界面是藏在哪里的呢,我的 idea 里面怎么没有呢?好的,是我疏忽了,我先入为主的认为这个大家应原创 2022-05-09 13:50:53 · 396 阅读 · 0 评论