自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 全网全牛批的java八股面试文(最全)堪称2022最强

前言2022秋招即将来临,很多同学会问Java面试八股文有必要背吗?我的回答是:很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。国内的互联网面试,恐怕是现存的、最接近科举考试的制度。而且,我国的八股文确实是独树一帜。以美国为例,北美工程师面试比较重视算法(Coding),近几年也会加入Design轮(系统设计和面向对象设计OOD)和BQ轮(Behavioral question,行为面试问题)。那么为什么国内面试不采取这样的考察方式呢?简单来说,互联网IT行业的求职

2022-04-19 13:36:51 38091 1267

原创 手撸架构,Nginx 面试40问

Nginx是一个 轻量级/高性能的反向代理Web服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中国使用nginx网站用户有很多,例如:新浪、网易、 腾讯等。

2022-09-28 14:08:16 1495 1

原创 SpringBoot 整合 Neo4j,图数据库 YYDS!

知识图谱的概念诞生于 2012 年,由谷歌公司首先提出。大家都知道,谷歌是做搜索引擎的,所以他们最早提出了后,首先利用知识图谱技术改善了搜索引擎核心。注意上面的说法,虽然知识图谱诞生于 2012 年,但其实在更早的时间它还有另外一个名字,那就是语义。那么语义又是什么呢?引用《统计自然语言处理基础》中的两句话来解答这个问题:语义可以分成两部分,研究单个词的语义(即词义)以及单个词的含义是怎么联合起来组成句子(或者更大的单位)的含义。语义研究的是词语的含义、结构和说话的方式。

2022-09-19 20:10:57 3031

转载 面向对象分析与设计的底层逻辑

01人是怎么认识事物的在面向对象出现之前,已有面向过程的分析方法,为什么面向对象被提出了呢?究其本质原因,人们发现面向过程并不是按照人正常认识事物的方式去分析软件,那么人究竟是怎么认识事物的呢,Yourdon 在《面向对象的分析》一书中提到,人类认识事物是遵循分类学的原理,分类学主要包含三点:区分对象及其属性;区分整体对象及其组成部分;不同对象类的形成及区分。我们现在可以回想下我们认识事物的过程,是不是和分类学所提到的 3 个要点很相似,看到一个事物,大概会感知到它的组成结构是怎样的,形状是怎样的,属于什么

2022-09-18 16:03:31 1584 2

转载 阿里一面:Spring Bean 默认是单例的,高并发情况下,如何保证并发安全?

Spring的bean默认都是单例的,某些情况下,单例是并发不安全的,以Controller举例,问题根源在于,我们可能会在Controller中定义成员变量,如此一来,多个请求来临,进入的都是同一个单例的Controller对象,并对此成员变量的值进行修改操作,因此会互相影响,无法达到并发安全(不同于线程隔离的概念,后面会解释到)的效果。

2022-09-07 20:09:42 1085

原创 面试官:多线程硬核50问!能回答一半就让你过

CPU的缓存是以缓存行(cache line)为单位进行缓存的,当多个线程修改相互独立的变量,而这些变量又处于同一个缓存行时就会影响彼此的性能。这就是伪共享现代计算机计算模型:CPU执行速度比内存速度快好几个数量级,为了提高执行效率,现代计算机模型演变出CPU、缓存(L1,L2,L3),内存的模型。CPU执行运算时,如先从L1缓存查询数据,找不到再去L2缓存找,依次类推,直到在内存获取到数据。为了避免频繁从内存获取数据,聪明的科学家设计出缓存行,缓存行大小为64字节。也正是因为缓存行的存在。

2022-09-07 16:37:08 1905 3

原创 美团二面:加密后的数据如何进行模糊查询??被问懵了。。

我们到这里对加密数据的检索方案全部介绍完了,我们首先提到的是网上搜索随处可见的沙雕做法,在这里也讲了不推荐使用这些沙雕做法,尽量使用常规做法,如果公司有专业算法方向人才的话不妨可以考虑基于算法层面的超神做法。总的来说从投入、产出比、及实现、使用成本来算的话常规做法二是非常推荐的。学习更多JAVA知识与技巧,关注博主学习JAVA 课件,源码,安装包,还有最新大厂面试资料等等等咱们下期见。

2022-09-06 15:43:44 903 2

原创 Spring Boot 实现接口幂等性的 4 种方案

在HTTP/1.1中,对幂等性进行了定义。它描述了一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外),即第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用。这里的副作用是不会对结果产生破坏或者产生不可预料的结果。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。幂等性是开发当中很常见也很重要的一个需求,尤其是支付、订单等与金钱挂钩的服务,保证接口幂等性尤其重要。

2022-09-04 16:53:00 815

原创 分布式系统设计模式,你用过哪些?

三到五个节点的集群,就像在实现共识的系统中一样,领导者选举可以在数据集群本身内实施,而不依赖于任何外部系统。在读取操作期间修复过时的数据,因为此时,我们可以从多个节点读取数据以进行比较并找到具有过时数据的节点。一旦已知具有旧数据的节点,读取修复操作就会将较新版本的数据推送到具有较旧版本的节点。当系统存储某些数据时,它会计算数据的校验和,并将校验和与数据一起存储。通过对数据项的键进行哈希处理以产生其在环上的位置,然后顺时针遍历环以查找位置大于该项位置的第一个节点,将每个由键标识的数据项分配给节点。

2022-09-04 16:02:57 698

原创 看了我的MyBatis-Plus用法,同事也开始悄悄模仿了...

本文主要介绍mybatis-plus这款插件,针对springboot用户。包括引入,配置,使用,以及扩展等常用的方面做一个汇总整理,尽量包含大家常用的场景内容。关于mybatis-plus是什么,不多做介绍了,看官方文档:baomidou.com ,咱们直接代码撸起来。本文基于springboot、maven、jdk1.8、mysql开发,所以开始前我们需要准备好这套环境。我的环境使用了nacos作为注册中心新建如下数据库: 建议大家选择utf8mb4这种字符集,做过微信的同学应该会知道,微信用户名称的

2022-09-04 14:51:18 787

原创 架构师细谈八种架构“设计模式“及其优缺点

这个问题我问过的面试者不下于数十次,回答五花八门,在我看来,模式就是经验,设计模式就是设计经验,有了这些经验,我们就能在特定情况下使用特定的设计、组合设计,这样可以大大节省我们的设计时间,提高工作效率。作为一个工作10年以上的老码农,经历的系统架构设计也算不少,接下来,我会把工作中用到的一些架构方面的设计模式分享给大家,望大家少走弯路。总体而言,共有八种,分别是:单库单应用模式:最简单的,可能大家都见过内容分发模式:目前用的比较多查询分离模式:对于大并发的查询、业务。

2022-09-01 21:38:40 894

原创 面试官:int(1) 和 int(10) 有什么区别?

zerofill的作用一般可以用在一些编号相关的数字中,比如学生的编号 001 002 ... 999这种,如果mysql没有零填充的功能,但是你又要格式化输出等长的数字编号时,那么你只能自己处理了。我们知道在mysql中 int占4个字节,那么对于无符号的int,最大值是2^32-1 = 4294967295,将近40亿,难道用了int(1),就不能达到这个最大值吗?可以看到成功了,说明int后面的数字,不影响int本身支持的大小,int(1)、int(2)...int(10)没什么区别。

2022-09-01 21:15:50 767

原创 JVM类加载子系统

jvm类加载子系统

2022-09-01 21:03:12 728

原创 一文快速上手 Nacos 注册中心+配置中心!

Nacos 致力于帮助开发者发现、配置和管理微服务。它提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 具有以下特性:服务发现和服务健康监测:支持基于DNS和基于RPC的服务发现,支持对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。动态配置服务:动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。...

2022-08-31 15:42:42 1186

原创 Java多态的本质—动态分派

Java语言的一大特性是多态性,所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。举个简单的例子,比如。...

2022-08-28 21:42:49 1121

原创 深入剖析Spring Boot 的SPI机制

{}本文详细的讲解了java和Spring的SPI机制,SPI技术将服务接口与服务实现进行分离实现解耦,从而提升程序的可扩展性。如有疑问,请随时反馈。

2022-08-28 17:14:07 929

原创 SpringBoot热更新和相关配置

何为热部署(hotswap)?热部署是在不重启 Java 虚拟机的前提下,能自动侦测到 class 文件的变化,更新运行时 class 的行为。Java 类是通过 Java 虚拟机加载的,某个类的 class 文件在被 classloader 加载后,会生成对应的 Class 对象,之后就可以创建该类的实例。默认的虚拟机行为只会在启动时加载类,如果后期有一个类需要更新的话,单纯替换编译的 class 文件,Java 虚拟机是不会更新正在运行的 class。本质是JVM运行时字节码替换技术。...

2022-08-28 16:14:57 1195

原创 面试题:海量数据处理利器,布隆过滤器

概念原理布隆过滤器的使用场景简单模拟布隆过滤器Guava布隆过滤器Redis布隆过滤器布谷鸟过滤器。

2022-08-28 15:17:29 880

原创 Spring 依赖注入有几种?各有什么优缺点?

在 Spring 中实现依赖注入的常见方式有以下 3 种:属性注入(Field Injection);Setter 注入(Setter Injection);构造方法注入(Constructor Injection)。它们的具体使用和优缺点分析如下。依赖注入的常见实现方式有 3 种:属性注入、Setter 注入和构造方法注入。其中属性注入的写法最简单,所以日常项目中使用的频率最高,但它的通用性不好;...

2022-08-26 14:52:37 880

原创 浅谈一下 MyBatis 批量插入的 3 种方法!

本文我们介绍了 MyBatis 批量插入的 3 种方法,其中循环单次插入的性能最低,也是最不可取的;使用 MyBatis 拼接原生 SQL 一次性插入的方法性能最高,但此方法可能会导致程序执行报错(触发了数据库最大执行 SQL 大小的限制),所以综合以上情况,可以考虑使用 MP 的批量插入功能。

2022-08-24 19:35:04 1118

原创 RocketMQ保姆级教程

RocketMQ是阿里巴巴旗下一款开源的MQ框架,经历过双十一考验、Java编程语言实现,有非常好完整生态系统。RocketMQ作为一款纯java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等,总之就是葛大爷的一句话整篇文章可以大致分为三个部分,第一部分属于一些核心概念和工作流程的讲解;第二部分就是纯手动搭建了一套环境;第三部分是基于环境进行测试和集成到SpringBoot,因为整个过程讲的比较细,所以我称之为“保姆级教程”。好了,废话补多少,直接进入主题。

2022-08-22 21:18:15 2951

原创 公司新来了一个同事,把权限系统设计的炉火纯青!

RBAC 全称为用户角色权限控制,通过角色关联用户,角色关联权限,这种方式,间阶的赋予用户的权限,如下图所示对于通常的系统而言,存在多个用户具有相同的权限,在分配的时候,要为指定的用户分配相关的权限,修改的时候也要依次的对这几个用户的权限进行修改,有了角色这个权限,在修改权限的时候,只需要对角色进行修改,就可以实现相关的权限的修改。这样做增加了效率,减少了权限漏洞的发生。权限是资源的集合,这里的资源指的是软件中的所有的内容,即,对页面的操作权限,对页面的访问权限,对数据的增删查改的权限。举个栗子。

2022-08-19 19:28:16 220

原创 接口调用幂等性问题+解决方案

现如今我们的系统大多拆分为分布式架构、微服务架构,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者RESTFUL,既然是通信,那么就有可能在服务器处理完毕后返回结果的时候挂掉,这个时候用户端发现很久没有反应,那么就会多次点击按钮,这样请求有多次,那么处理数据的结果是否要统一呢?那是肯定的!...

2022-08-12 20:14:03 800

原创 面试官:RocketMQ 如何保证消息不丢失,如何保证消息不被重复消费?

Kafka 实际上有个 offset 的概念,就是每个消息写进去,都有一个 offset,代表消息的序号,然后 consumer 消费了数据之后,每隔一段时间(定时定期),会把自己消费过的消息的 offset 提交一下,表示“我已经消费过了,下次我要是重启啥的,你就让我继续从上次消费到的 offset 来继续消费吧”。但是凡事总有意外,比如我们之前生产经常遇到的,就是你有时候重启系统,看你怎么重启了,如果碰到点着急的,直接 kill 进程了,再重启。重启之后,少数消息会再次消费一次。...

2022-08-12 20:12:17 413

原创 MyBatis-Plus 高级功能:多租户功能实现

举个实际例子:小编曾经开发过一套H5程序,这套程序应用在不同医院的APP上,当医院患者下载医院APP,并且进入相对应的H5页面,APP则会把用户相关数据传输到小编这里。使用同一个数据库,同一个Schema,但是在表中增加了租户ID的字段,这种共享数据程度最高,隔离级别最低。这里采用方案三,即共享数据库,共享数据架构,因为这种方案服务器成本最低,但是提高了开发成本。多租户是一种软件架构技术,在多用户的环境下,共有同一套系统,并且要注意数据之间的隔离性。解析器,如果配置SQL很多,比较麻烦,不建议。...

2022-08-11 15:42:14 485

原创 SpringSecurity+JWT 身份验证及动态权限解决方案(很实用)

核心其实就是前面贴出的一、二(认证和授权),其实还是有优化空间的,我本人对于没有了解很深,所以只能写成这样。学习更多JAVA知识与技巧,关注博主学习JAVA 课件,源码,安装包,还有最新大厂面试资料等等等咱们下期见。...

2022-08-11 15:39:53 1056 1

原创 Controller层代码这么写,简洁又优雅!

原来的代码中可以看到有几个问题:抛出的异常不够具体,只是简单地把错误信息放到了 Exception 中抛出异常后,Controller 不能具体地根据异常做出反馈虽然做了参数自动校验,但是异常返回结构和正常返回结构不一致自定义异常是为了后面统一拦截异常时,对业务中的异常有更加细颗粒度的区分,拦截时针对不同的异常作出不同的响应。...

2022-08-09 16:35:22 334 1

原创 聊聊Spring事务控制策略以及@Transactional失效问题避坑

在大部分涉及到数据库操作的项目里面,。比如,需要对SQL执行过程进行事务的控制与处理的时候,其整体的处理流程会是如下的示意:首先是要开启事务、然后执行具体SQL,如果执行异常则回滚事务,否则提交事务,最后关闭事务,完成整个处理过程。不难发现,上面大段的代码逻辑并不复杂,对于业务而言其实仅仅只是执行了一个insert操作而已。但是杂糅的事务控制代码,显然。常规项目的代码中,涉及到DB处理的场景很多,如果每个地方都有这么一段事务控制的逻辑,那么整体代码的可维护性将会比较差,想想都令人窒息。...

2022-08-09 16:11:19 353

原创 字节跳动|后端|提前批|一面+二面+三面+HR 面

最后反问的时候面试官也说这个问题没有固定的答案,这个问题涉及的方面非常多,从接入到怎么去存储以及怎么去实现一些具体的逻辑功能,这些方面很难一下子就能想出一个很全面方案。最后反问的时候面试官也说这个问题没有固定的答案,这个问题涉及的方面非常多,从接入到怎么去存储以及怎么去实现一些具体的逻辑功能,这些方面很难一下子就能想出一个很全面方案。如果没过就等其他的部门来捞,过了的话会先发意向书,十月份左右谈薪资。有可能还有加面的情况(忘记问这个加面是好还是不好了,网上有的说会刷人,有的说是看看你能不能拿更高的等级)。.

2022-08-07 20:45:08 1925 1

原创 大数据开发:Kafka日志结构

在实际存储时一条消息总长度还包括12字节额外的开销,其中8字节长度记录消息的偏移量,消息的偏移量是相对该分区下第一个数据文件的基准偏移量而言,用来确定消息在分区下的逻辑位置,同一个分区下的消息偏移量按序递增,另外4字节表示消息总长度。而Kafka在数据生产和消费上,日志是主要的场景。时间戳索引文件与数据文件同名,以.timeindex后缀,该索引文件包括一个8字节长度的时间戳字段和一个4字节的偏移量字段,其中时间戳记录的是该日志段目前为止最大时间戳,偏移量则记录的是插入新的索引条目时,当前消息的偏移量。..

2022-08-07 20:01:11 159

原创 从哪些维度评判代码质量的好坏?如何具备写出高质量代码的能力?

如何评价代码质量的高低?实际上,咱们平时嘴中常说的“好”和“烂”,是对代码质量的一种描述。“好”笼统地表示代码质量高,“烂”笼统地表示代码质量低。对于代码质量的描述,除了“好”“烂”这样比较简单粗暴的描述方式之外,我们也经常会听到很多其他的描述方式。这些描述方法语义更丰富、更专业、更细化。我搜集整理了一下,罗列在了下面。这些几乎涵盖我们所能听到的描述代码质量的所有常用词汇,你可以看一看。看到如此多的描述词,你可能要问了,我们到底该用哪些词来描述一段代码的质量呢?实际上,我们很难通过其中的某个或者某几个词汇来

2022-08-07 19:55:08 584

原创 美团一面:Thread、Runnable、Callable、Future ... 的关系?

当执行 Thread.run() 时,

2022-08-03 21:33:13 228

原创 设计模式——单例模式

一般情况下,不建议使用两种懒汉式实现单例模式;明确使用静态方法和实现懒加载效果时,会采用静态内部类方式;涉及到反序列化创建对象的时候,可以使用枚举方式;一般而言,饿汉式以及双重校验锁比较常用。...

2022-08-03 17:27:12 214

原创 分布式系统架构理论与组件

它根据数据的时间戳,将数据分为冷数据和热数据,分别存储于不同的存储设备中,有效地解决了存储成本的问题。HBase 良好的分布式架构设计为海量数据的快速存储、随机访问提供了可能,基于数据副本机制和分区机制可以轻松实现在线扩容、缩容和数据容灾,是大数据领域中 Key-Value 数据结构存储最常用的数据库方案。相比传统的 Paxos 算法,Raft 将大量的计算问题分解成简单的相对独立的子问题,并且和 Multi-Paxos 有同样的性能,数据库是一个悠久历史的行业,从诞生到现在也有接近五十年的历史了。...

2022-08-03 15:09:20 464

原创 大白话解析 Dubbo3.0

总结一下3.0关键几点借助SPI实现相关探针,使得生命周期可以被容器感知,即生命周期与容器对齐。接入KubernetesServiceAPI,使得注册中心相关功能下沉,而不用额外利用ZK等第三方注册中心。将接口级别的服务发现改成应用级别,解决了大规模微服务架构体系下,元数据膨胀的瓶颈,并对其市面常见的发现级别,便于异构的实现。升级通信协议为Triple,选择了HTTP2+ProtocolBuffer的形式,丰富了请求模型。httpshttpshttps。...

2022-08-01 20:12:57 548

原创 这几个方法,直接让你的API接口飞起来

我负责的系统到2021年初完成了功能上的建设,开始进入到推广阶段。随着推广的逐步深入,收到了很多好评的同时也收到了很多对性能的吐槽。刚刚收到吐槽的时候,我们的心情是这样的当越来越多对性能的吐槽反馈到我们这里的时候,我们意识到,接口性能的问题的优先级必须提高了。然后我们就跟踪了1周的接口性能监控,这个时候我们的心情是这样的有20多个慢接口,5个接口响应时间超过5s,1个超过10s,其余的都在2s以上,稳定性不足99.8%。这个问题的答案非常多,需要根据自己的业务场景具体分析。这里做一个不完全的总结。...

2022-08-01 16:55:31 1909

原创 Java 是值传递还是引用传递?

在Java语言中只有值传递,方法传参时只会传递副本信息而非原内容。httpshttpshttpshttpshttpshttpshttps。

2022-08-01 14:19:00 159

原创 去腾讯面试,直接让人出门左拐 :幂等性都不知道!

幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。在HTTP/1.1中,对幂等性进行了定义。幂等性是开发当中很常见也很重要的一个需求,尤其是支付、订单等与金钱挂钩的服务,保证接口幂等性尤其重要。方案名称适用方法实现复杂度。...

2022-08-01 14:02:00 130

原创 20位大厂面试官推荐的《Java面试八股文》到底有多牛?

很多同学会问Java面试八股文有必要背吗?我的回答是很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。国内的互联网面试,恐怕是现存的、最接近科举考试的制度。而且,我国的八股文确实是独树一帜。以美国为例,北美工程师面试比较重视算法(Coding),近几年也会加入Design轮(系统设计和面向对象设计OOD)和BQ轮(Behavioralquestion,行为面试问题)。那么为什么国内面试不采取这样的考察方式呢?......

2022-07-31 14:45:46 423

原创 600+ 道 Java面试题及答案整理(2022最新版)

整理了2022年最新、最全的Java面试题,题目涉及Java基础、集合、多线程、IO、分布式、Spring全家桶、MyBatis、Dubbo、缓存、消息队列、Linux…等等。题库共600+道,带全部答案,非常齐全!

2022-07-31 13:32:07 1221 8

空空如也

空空如也

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

TA关注的人

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