
java
文章平均质量分 85
xy29981
学习进阶技术,成就高薪
展开
-
实战:10 种实现延迟任务的方法,附代码!
顾明思议,我们把需要延迟执行的任务叫做延迟任务。延迟任务的使用场景有以下这些:红包 24 小时未被查收,需要延迟执退还业务;每个月账单日,需要给用户发送当月的对账单;订单下单之后 30 分钟后,用户如果没有付钱,系统需要自动取消订单。等事件都需要使用延迟任务。本文讲了延迟任务的使用场景,以及延迟任务的 10 种实现方式:手动无线循环;DelayQueue;Redis zset 数据判断的方式;Redis 键空间通知的方式;Netty 提供的 HashedWheelTimer 工具类;...原创 2022-08-04 14:26:23 · 535 阅读 · 1 评论 -
面试官:你天天用 Lombok,说说它什么原理?我竟然答不上来…
Lombok如何使用功能编译时注解注解处理工具apt定义注解定义注解处理器定义使用注解的类(测试类)相信大家在项目中都使用过Lombok,因为能够简化我们许多的代码,但是该有的功能一点也不少。那么lombok到底是个什么呢,lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter方法啊,构造函数啊之类的,lombok的作用就是为了省去我们手动创原创 2022-06-09 14:06:03 · 540 阅读 · 1 评论 -
聊聊领域驱动设计
最近体会到了反噬力,接下来在思想和行动上都要改改了。今天还是来聊编程相关的。每当看到结对编程、测试驱动开发、敏捷开发之类的字眼,我心中总是泛起一丝凉凉的感觉。这次我们来聊DDD(Domain Driven Design), 第一次听这概念还是从左耳朵耗子(陈皓先生)那里了解的,当时他还给我送了一本相关的书。在开始了解的阶段,我觉得这玩儿就是个鸡肋,可落地性很差。但是,随着我了解的深入,我发现了自己固有的偏见。于是,我私下问了几个大厂的同行,他们说DDD并没有使用起来,但正在探索引入和使用。下面,来聊一聊D原创 2022-06-05 16:31:15 · 330 阅读 · 0 评论 -
面试官:大量请求 Redis 不存在的数据,从而打倒数据库,你有什么方案?
大家都知道,在计算机中,IO一直是一个瓶颈,很多框架以及技术甚至硬件都是为了降低IO操作而生,今天聊一聊过滤器,先说一个场景:我们业务后端涉及数据库,当请求消息查询某些信息时,可能先检查缓存中是否有相关信息,有的话返回,如果没有的话可能就要去数据库里面查询,这时候有一个问题,如果很多请求是在请求数据库根本不存在的数据,那么数据库就要频繁响应这种不必要的IO查询,如果再多一些,数据库大多数IO都在响应这种毫无意义的请求操作。那么如何将这些请求阻挡在外呢?过滤器由此诞生!布隆过滤器(Bloom Filter)大原创 2022-06-02 14:40:29 · 229 阅读 · 0 评论 -
Kafka 万亿级消息实践之资源组流量掉零故障排查分析
一、Kafka集群部署架构为了让读者能与小编在后续的问题分析中有更好的共鸣,小编先与各位读者朋友对齐一下我们 Kafka 集群的部署架构及服务接入Kafka集群的流程。为了避免超大集群我们按照业务维度将整个每天负责十万亿级消息的 Kafka 集群拆分成了多个 Kafka 集群。拆分粒度太粗会导致单一集群过大,容易由于流量突变、资源隔离、限速等原因导致集群稳定性和可用性受到影响,拆分粒度太细又会因为集群太多不易维护,集群内资源较少应对突发情况的抗风险能力较弱。由于 Kafka 数...原创 2022-05-27 17:53:10 · 142 阅读 · 0 评论 -
一线大厂面试:你知道SpringBoot+RabbitMQ 死信队列?
前言 环境准备配置 队列达到最大长度 消息 TTL 过期 拒绝消息 前言死信:无法被消费的消息,称为死信。如果死信一直留在队列中,会导致一直被消费,却从不消费成功。所以我们专门开辟了一个来存放死信的队列,叫死信队列(DLX,dead-letter-exchange)。死信的几种来源: 消息 TTL 过期(time to live,存活时间,可以用在限时支付消息) 队列达到最大长度(队列满了,无法路由到该队列) 消息被拒..原创 2022-05-27 13:48:44 · 200 阅读 · 0 评论 -
小米面试官:听你说精通注册中心,我们来聊 3 天 3 夜
对于注册中心,在写这篇文章前,我其实只对ETCD有比较深入的了解,但是对于Zookeeper和其它的注册中心了解甚少,甚至都没有考虑过ETCD和Zookeeper是否适合作为注册中心。经过近2周的学习,原来注册中心除了ETCD和Zookeeper,常用的还有Eureka、Nacos、Consul,下面我们就对这些常用的注册中心,初探它们的异同,便于后续技术选型。全文接近8千字,有点长,建议先收藏,再慢慢看,下面是文章目录:注册中心基本概念什么是注册中心?注册中心主要有三种角色:.原创 2022-05-27 11:49:15 · 325 阅读 · 0 评论 -
从5秒优化到1秒,系统飞起来了...
前言 优化背景和目标 通过压缩让耗时急剧减少 并行获取数据,响应飞快 缓存分类,进一步加速 MySQL 索引的优化 JVM 优化 其他优化 总结 前言性能优化,有时候看起来是一个比较虚的技术需求。除非代码慢的已经让人无法忍受,否则,很少有公司会有觉悟投入资源去做这些工作。即使你有了性能指标数据,也很难说服领导做一个由耗时 300ms 降低到 150ms 的改进,因为它没有业务价值。这很让人伤心,但这是悲催..原创 2022-05-27 11:38:07 · 369 阅读 · 0 评论 -
面试官:你来说说RocketMQ的消费的启动过程?
今天周五,来聊聊 RocketMQ 中一个关键的知识点:消费者的启动过程。多数消息队列中,消费者和 Broker 通信的方式有两种,PUSH 模式和 PULL 模式: PUSH 模式:Broker 主动把消息推送给订阅的消费者; PULL模式:消费者主动从 Broker 拉取消息。 注意,RocketMQ 并没有真正实现 PUSH 模式, RocketMQ 中的 PUSH 模式,本质上也是 PULL 模式,只是消费端封装了轮询过程,相当于开启一个定时线程不停地从 Broker 拉取消原创 2022-05-27 09:20:07 · 332 阅读 · 0 评论 -
1.5W字Docker详解,从入门到下地干活一条龙
什么是 Linux 容器Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。更加详细地来说,请您假定您在开发一个应用。您使用的是一台笔记本电脑,而且您的开发环境具有特定的配置。其他开发人员身处的环境配置可能稍有不同。您正在开发的应用依赖于您当前的配置,还要依赖于某些特定文件。与此同时,您的企业还拥有标准化的测试和生产环境,且具有原创 2022-05-25 14:06:01 · 386 阅读 · 0 评论 -
面试官:用分库分表如何做到永不迁移数据和避免热点问题?
一、前言中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。正在上传…重新上传取消水平拆分的概念,是同一个业务数据量大之后,进行水平拆分。上图中订单数据达到了4000万,我们也知道mysql单表存储量推荐是百万级,如果不进行处理,mysql单表数据太大,会导致性能变慢。使用方案可以参考数据进行水平拆分。把4000万数据拆分4张表或原创 2022-05-25 11:41:12 · 253 阅读 · 0 评论 -
面试官:请你介绍一下缓存穿透、缓存空值、缓存雪崩、缓存击穿的,通俗易懂
雪崩是后端服务中的一个专业名词,为了理解它,我们循序渐渐地来介绍。雪崩是积累性的问题,雪崩之下,没有一片雪花是无辜的。今天,来聊聊缓存穿透、缓存击穿、缓存雪崩相关的问题。相信大家对这几个概念会有更清晰的认识。对于互联网开发人员来说,肯定会熟悉雪崩这个概念,貌似有点谈虎色变的感觉。如果后端服务雪崩了,那就GG了。今天写的这个主题内容,其实非常基础,但是作为高并发非常重要的几个场景,绝对绕不开,估计大家面试时,也经常会遇到。这个主题的文章,网上非常多,但是感觉没有合适的,要么文章不够精炼,要么就原创 2022-05-25 09:01:43 · 443 阅读 · 0 评论 -
一线大厂面试官问:你真的懂电商订单开发吗?
昨天有个朋友去面试,被问到订单系统如何设计,主要是因为他简历上有个电商相关的项目,然后就因为答得太过片面挂了。所以如果你的简历上也写了商城项目,那你一定要认真看完本文。很多同学都很疑惑为什么现在的商城项目都烂大街了,为什么还那么多人写?因为一个好的商城项目的的确确能把你所学的东西统合起来,而难度又不至于太高,所以一直都是很多刚毕业的学生首选。当然如果你的技术非常过硬,那肯定可以选择更多让人眼前一亮的项目。关于商城项目我之前也写过一篇文章推荐了,感兴趣的朋友可以去看看好了,闲话就说到这,本文主要讲原创 2022-05-25 08:55:12 · 652 阅读 · 1 评论 -
面试官:Spring Aop 与 AspectJ 有什么区别和联系?
区别AspectJAspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法,所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。spring aopSpring提供了四种类型的Aop支持 基于经典的SpringAOP 纯POJO切面 @ASpectJ注解驱动的切面 注入式AspectJ切面(其实与Spring并无多大的关系,这个就是使用AspectJ这个框架实现Aop编程) 基于经典的SpringA原创 2022-05-23 13:45:39 · 180 阅读 · 0 评论 -
2022年Java中高级工程师200道精选面试题学会就能进大厂
你好,相信你一定很期待这份面试题,这份面试题是我花数个月整理出来的,内容涵盖了各方各面,特别是JVM、Mysql、多线程高并发、Redis、Spring这几个专题,是博主精心整理的亲身被面过的阿里、京东、虾皮、蚂蚁等一些大厂的面试题,学会进大厂真的不是梦!评论区回复“1”,即可免费拿到这份面试题!目录:1、面试题1、JVM2、集合3、多线程4、Redis5、消息队列6、Mysql7、Spring8、Mybatis9、设计模式10、计算机网络11、数据结构12、其它13原创 2022-05-21 09:44:16 · 410 阅读 · 0 评论 -
大厂java程序员教你面试如何介绍项目经验
本文包含如下的内容。1 在Java面试时,如何介绍项目经验?2 在介绍项目经验时,如何引导面试官后继的提问。3 再进一步给出在面试前系统准备面试问题以及面试亮点的技巧。本人于3年前写的博文,如何在面试中介绍自己的项目经验,经过大家的捧场,陆续得到了将近7万个点击量,也得到了众多网站公众号的转载,不过自己感觉,这篇文章更多的是偏重于方法,没有具体给到Java方面相关的说辞。三年过去了,随着本人面试官经验的积累,也随着技术的进步,本人就用适合当下2021年Java初级开发的面试场景,改写原创 2022-05-21 09:35:01 · 5701 阅读 · 2 评论 -
Java程序员面试,一招教你如何不怕面试
面试官问的问题,无非就是两部分:技术问题和非技术问题技术问题不需要多说了,主要还是看你之前的水平了,面试之前再好好准备、好好突击一下。需要注意的是:如果再面试中遇到没听过的名词、问题,别不懂装懂,你以为面试官傻吗,根本糊弄不过去,还不如诚实点说不懂。如果你不甘心说不懂怎么办?有一次我面试一个新人,我问你用过 git 吗,他想了想说没用过,然后让我给他介绍一下,介绍完之后,他说之前一直用 svn,说了说 svn 的操作。到此为止,我觉得他这个问题回答的还 ok。但是,这还没结束,他又问我原创 2022-05-21 09:30:09 · 302 阅读 · 0 评论 -
Spring Boot 面试杀手锏:自动配置原理
不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外,如今的各行各业都在飞速的拥抱这个已经不是很新的Spring启动框架。当然,作为Spring Boot的精髓,自动配置原理的工作过程往往只有在“面试”的时候才能用得上,但是如果在工作中你能够深入的理解Spring Boot的自动配置原理,将无往不利。Spring Boot的出现,得益于“习惯优于配置”的理念,没有繁琐的配置、难以集成的内容(大多数流行第三方技术都被集成),这原创 2022-05-19 18:18:26 · 121 阅读 · 0 评论 -
招银一面:如何保障 MySQL 和 Redis 的数据一致性?
如何保障 MySQL 和 Redis 的数据一致性?这个问题很早之前我就遇到过,但是一直没有仔细去研究,上个月看了极客的课程,有一篇文章专门有过讲解,刚好有粉丝也问我这个问题,所以感觉有必要单独出一篇。之前也看了很多相关的文章,但是感觉讲的都不好,很多文章都会去讲各种策略,比如(旁路缓存)策略、(读穿 / 写穿)策略和(写回)策略等,感觉意义真的不大,然后有的文章也只讲了部分情况,也没有告诉最优解。我直接先抛一下结论:在满足实时性的条件下,不存在两者完全保存一致的方案,只有最终一致性方案。根据网上.原创 2022-05-18 13:25:41 · 5733 阅读 · 0 评论 -
面试官:1亿条数据批量插入 MySQL,哪种方式最快?
这几天研究mysql优化中查询效率时,发现测试的数据太少(10万级别),利用 EXPLAIN 比较不同的 SQL 语句,不能够得到比较有效的测评数据,大多模棱两可,不敢通过这些数据下定论。所以通过随机生成人的姓名、年龄、性别、电话、email、地址 ,向mysql数据库大量插入数据,便于用大量的数据测试 SQL 语句优化效率。、在生成过程中发现使用不同的方法,效率天差万别。1、先上Mysql数据库,随机生成的人员数据图。分别是ID、姓名、性别、年龄、Email、电话、住址。下图一共三千三百万..原创 2022-05-18 09:17:44 · 671 阅读 · 1 评论 -
阿里一面: 每秒 570000 的写入,如何实现?
一、需求一个朋友接到一个需求,从大数据平台收到一个数据写入在20亿+,需要快速地加载到MySQL中,供第二天业务展示使用。二、实现再分析对于单表20亿, 在MySQL运维,说真的这块目前涉及得比较少,也基本没什么经验,但对于InnoDB单表Insert 如果内存大于数据情况下,可以维持在10万-15万行写入。但很多时间我们接受的项目还是数据超过内存的。这里使用XeLabs TokuDB做一个测试。三、XeLabs TokuDB 介绍项目地址:https://github.com/原创 2022-05-18 08:52:23 · 139 阅读 · 0 评论 -
面试官:为什么数据库连接池不采用 IO 多路复用?我懵逼了。。
今天我们聊一个不常见的 Java 面试题:为什么数据库连接池不采用 IO 多路复用?这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用 DB 时,还是经常性采用c3p0,tomcat connection pool等技术来与 DB 连接,哪怕整个程序已经变成以Netty为核心。这到底是为什么?首先纠正一个常见的误解。IO多路复用听上去好像是多个数据可以共享一个IO(socket连接),实际上并非如此。「IO多路复用不是指多个服务共享一个连接,而仅仅是指多个连接的管理可以原创 2022-05-17 11:23:02 · 144 阅读 · 0 评论 -
大厂面试:ThreadLocal夺命11连问,你能过几问?
前言前一段时间,有同事使用ThreadLocal踩坑了,正好引起了我的兴趣。所以近期,我抽空把ThreadLocal的源码再研究了一下,越看越有意思,发现里面的东西还真不少。我把精华浓缩了一下,汇集成了下面11个问题,看看你能顶住第几个?1. 为什么要用ThreadLocal?并发编程是一项非常重要的技术,它让我们的程序变得更加高效。但在并发的场景中,如果有多个线程同时修改公共变量,可能会出现线程安全问题,即该变量最终结果可能出现异常。为了解决线程安全问题,JDK出现了很多技原创 2022-05-16 17:38:13 · 533 阅读 · 0 评论 -
面试官:怎么操作MyBatis批量插入几千条数据
近日,项目中有一个耗时较长的Job存在CPU占用过高的问题,经排查发现,主要时间消耗在往MyBatis中批量插入数据。mapper configuration是用foreach循环做的,差不多是这样。(由于项目保密,以下代码均为自己手写的demo代码)<insert id="batchInsert" parameterType="java.util.List"> insert into USER (id, name) values <foreach collection=原创 2022-05-16 15:06:21 · 2437 阅读 · 1 评论 -
几分钟处理完30亿个数据...牛叉大了
目录 场景说明 模拟数据 场景分析 读取数据 处理数据 遇到的问题 场景说明现有一个 10G 文件的数据,里面包含了 18-70 之间的整数,分别表示 18-70 岁的人群数量统计,假设年龄范围分布均匀,分别表示系统中所有用户的年龄数,找出重复次数最多的那个数,现有一台内存为 4G、2 核 CPU 的电脑,请写一个算法实现。23,31,42,19,60,30,36,........模拟数据Java 中...原创 2022-05-16 15:03:23 · 140 阅读 · 0 评论 -
面试官:为什么不建议在 MySQL 中使用 UTF-8?
记得去年我在往MySQL存入emoji表情😲😳时,一直出错,无法导入。后来找到办法 -- 通过把 utf8 改成 utf8mb4 就可以了,并没有深究。一年后,我看到一篇文章讲到emoji文字占4个字节,通常要用utf-8去接收才行,其他编码可能会出错。我突然想到去年操作MySQL把utf8改成utf8mb4的事儿。嗯?他本身不就是utf8编码么!那我当时还改个锤子?难道,MySQL的utf8不是真正的UTF-8编码吗??! 卧槽这。。MySQL有bug!带着疑问查询了很多相原创 2022-05-16 09:22:38 · 120 阅读 · 0 评论 -
面试官:单表6亿数据怎么做性能测试
最近由于项目需求使用到了 clickhouse 做分析数据库,于是用测试环境做了一个单表 6 亿数据量的性能测试,记录一下测试结果,有做超大数据量分析技术选型需求的朋友可以参考下。服务器信息 CPU:Intel Xeon Gold 6240 @ 8x 2.594GHz 内存:32G 系统:CentOS 7.6 Linux内核版本:3.10.0 磁盘类型:机械硬盘 文件系统:ext4 Clickhou原创 2022-05-16 09:19:40 · 710 阅读 · 0 评论 -
面试官:Spring Boot 定时任务开启后,怎么符合条件自动停止?
面试官问题大概就是:Spring Boot 定时任务开启后,怎么符合条件自动停止?当时我有空,虽然已经给出了参考答案,但可能还有一些细节地方要注意的,另外,我也觉得这个问题特别有意思,现在特别拿出来整理下,分享下给大家。1、自定义任务调度首先覆盖TaskSchedulingAutoConfiguration自动配置类里面的ThreadPoolTaskSchedulerBean:/***自定义任务调度*公众号:Java技术栈*/@Data@Componen...原创 2022-05-15 20:05:26 · 343 阅读 · 0 评论 -
面试官问:i++ 是线程安全的吗?
简介volatile关键字保证了在多线程环境下,被修饰的变量在别修改后会马上同步到主存,这样该线程对这个变量的修改就是对所有其他线程可见的,其他线程能够马上读到这个修改后值.Thread的本地内存 每个Thread都拥有自己的线程存储空间 Thread何时同步本地存储空间的数据到主存是不确定的 例子借用Google JEREMY MANSON 的解释,上图表示两个线程并发执行,而且代码顺序上为Thread1->Thread21、不用 volatile假如re原创 2022-05-15 20:04:10 · 179 阅读 · 0 评论 -
Kubernetes 架构核心点总结
一个目标:容器操作 两地三中心 四层服务发现 五种Pod共享资源 六个CNI常用插件 七层负载均衡 八种隔离维度 九个网络模型原则 十类IP地址 一个目标:容器操作;两地三中心;四层服务发现;五种Pod共享资源;六个CNI常用插件;七层负载均衡;八种隔离维度;九个网络模型原则;十类IP地址;百级产品线;千级物理机;万级容器;相如无亿,K8s有亿:亿级日服务人次。一个目标:容器操作Kubernetes(k8s)..原创 2022-05-14 13:55:34 · 116 阅读 · 0 评论 -
面试官:你天天用 Lombok,说说它什么原理?我答不上来…
Lombok如何使用 功能 编译时注解 注解处理工具apt 定义注解 定义注解处理器 定义使用注解的类(测试类) 相信大家在项目中都使用过Lombok,因为能够简化我们许多的代码,但是该有的功能一点也不少。那么lombok到底是个什么呢,lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情..原创 2022-05-14 13:52:40 · 155 阅读 · 0 评论 -
架构师之Mybatis面试专题及答案,大厂必问
1、什么是 MyBatis?答:MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。2、讲下 MyBatis 的缓存答:MyBatis 的缓存分为一级缓存和二级缓存,一级缓存放在 session 里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态),可在它的映射文件中配置<cache/>3、Mybatis 是如何进行分页的?分页插件的原理是什么?答:1)Mybat原创 2022-05-14 09:51:35 · 218 阅读 · 0 评论 -
面试官:如果让你作技术负责人,你会如何从0搭建公司后端技术栈
如何您是一名创业公司的负责人,如何从0搭建公司的后端技术栈。今天要说的后台是大后台的概念,放在服务器上的东西都属于后台的东西,比如使用的框架,语言,数据库,服务,操作系统等等。整个后台技术栈我的理解包括 4 个层面的内容:语言:用了哪些开发语言,如:C++/Java/Go/PHP/Python/Ruby 等等;组件:用了哪些组件,如:MQ 组件,数据库组件等等;流程:怎样的流程和规范,如:开发流程,项目流程,发布流程,监控告警流程,代码规范等等;系统:系统化建设,上面的流程需要有系统来.原创 2022-05-14 09:32:14 · 427 阅读 · 0 评论 -
RocketMQ超全指南,写得也太好了
1.为什么要使用消息队列呢?消息队列主要有三大用途,我们拿一个电商系统的下单举例: 解耦:引入消息队列之前,下单完成之后,需要订单服务去调用库存服务减库存,调用营销服务加营销数据……引入消息队列之后,可以把订单完成的消息丢进队列里,下游服务自己去调用就行了,这样就完成了订单服务和其它服务的解耦合。 消息队列解耦 异步:订单支付之后,我们要扣减库存、增加积分、发送消息等等,这样一来这个链路就长了,链路一长,响应时间就变长了。引入消息队列,除了更新订单状态,其它的都可以异步去做,这转载 2022-05-13 13:20:25 · 1644 阅读 · 2 评论 -
阿里一面:SQL 优化有哪些技巧?
MySQL 相信大家一定都不陌生,但是不陌生不一定会用!会用不一定能用好!今天就带大家复习一个高频面试考点,SQL 优化有哪些技巧?当然这个还是非常有实用价值的,工作中你也一定用的上。如果应用得当,升职加薪,指日可待1、创建索引一定要记得创建索引,创建索引,创建索引重要的事说三遍!执行没有索引的 SQL 语句,肯定要走全表扫描,慢是肯定的。这种查询毫无疑问是一个慢 SQL 查询。那么问题来了,是不是要收集所有的 where 查询条件,然后针对所有的组合都创建索引呢?原创 2022-05-13 09:33:46 · 168 阅读 · 0 评论 -
面试官:有一种数据类型,Redis 要存两次,为什么?
前言在 Redis 中,有一种数据类型,当在存储的时候会同时采用两种数据结构来进行分别存储,那么 Redis 为什么要这么做呢?这么做会造成同一份数据占用两倍空间吗?五种基本类型之集合对象Redis 中的集合对象是一个包含字符串类型元素的无序集合,集合中元素唯一不可重复。集合对象的底层数据结构有两种:intset 和 hashtable。内部通过编码来进行区分:intset 编码intset(整数集合)可以保存类型为int16_t,int32_t,int64_t的整数值,并且..原创 2022-05-13 09:30:43 · 273 阅读 · 0 评论 -
分享2022最新字节大数据开发面经
1.MySQL 引擎是什么,常用的是哪个,知道原理吗常用的是 InnoDB。大部分情况下选择 InnoDB,除非需要用到某些InnoDB不具备的特性,并且没有其他办法可以替代,否则都应该优先选择 InnoDB 引擎。 MyISAM: 用途:访问的速度快,以 SELECT、INSERT 为主的应用 索引:B tree,FullText,R-tree 锁:表锁 事务:不支持事务 其他:不支持外键。每个 MyISAM 在磁盘上存储原创 2022-05-12 10:19:11 · 496 阅读 · 0 评论 -
某小厂面试题:深拷贝和浅拷贝区别了解吗?什么是引用拷贝?
今天给大家分享一个比较基础也是非常常见的 Java 面试题:“深拷贝和浅拷贝区别了解吗?什么是引用拷贝?”。关于深拷贝和浅拷贝区别,我这里先给结论: 浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。 深拷贝:深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。 上面的结论没有完全理解的话也没关系,我们来看一个具体的案例!浅拷贝浅拷贝的.原创 2022-05-12 09:12:56 · 176 阅读 · 0 评论 -
招银网络二面:Exception 和 Error 有什么区别?
今天来分享一道群友面试招银网络遇到的Java 异常面试真题。原面试题:Exception 和 Error 有什么区别?Checked Exception 和 Unchecked Exception 有什么区别?finally 中的代码一定会执行吗?这篇文章我除了会对群友面试遇到的面试真题进行了解答,还会顺带总结一下 Java 异常部分其他比较常见的问题,希望对你有帮助。马上秋招就来了,最近一直在抽时间更新面试真题(原创不易,有帮助的话,点赞分享就是对 Guide 最大的鼓励):Java ..原创 2022-05-12 09:08:42 · 6829 阅读 · 0 评论 -
一文搞懂 UDP 和 TCP 高频面试题
找工作面试,经常会被问到 UDP 和 TCP,今天给大家总结其中的核心高频面试题,再有面试官问你相关的知识点,看这篇就够了!PS:文章有点长,请耐心阅读。目录:1、UDP 和 TCP 的特点与区别2、UDP 、TCP 首部格式3、TCP 的三次握手和四次挥手4、TCP 的三次握手(为什么三次?)5、TCP 的四次挥手(为什么四次?)6、TCP 长连接和短连接的区别7、TCP粘包、拆包及解决办法8、TCP 可靠传输9、TCP 滑动窗口10、TCP 流量控原创 2022-05-11 11:48:44 · 186 阅读 · 0 评论