- 博客(30)
- 收藏
- 关注
原创 面试官:MySQL自增主键为什么不是连续的?
提出这个问题,是因为在工作中发现 mysql 中的 user 表的 id 默认是自增的,但是数据库存储的结果却不是连续的。`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '递增id',`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
2022-12-26 14:45:56
449
原创 面试官:Docker 有几种网络模式?5 年工作经验都表示答不上来。
自定义docker0桥的网络属性信息需要修改配置文件{}EOF在客户端上向dockerd直接传递“-H|--host”选项指定要控制哪台主机上的docker容器创建新网络创建一个额外的自定义桥,区别于docker0/ # ls。
2022-12-26 14:45:04
197
原创 SpringBoot 时间格式化的 5 种实现方法,你用的是哪种?
本文我们介绍了 5 种时间格式化的实现方法,其中第 1 种为前端时间格式化的方法,后 4 种为后端格式化的方法,和格式化的方法更适用普通的 Java 项目,其中是非线程安全的,而是线程安全的,但它们都不是 Spring Boot 项目中最优的时间格式化方案。
2022-12-26 14:42:34
278
原创 Spring Boot + Disruptor = 王炸
Disruptor 是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于 Disruptor 开发的系统单线程能支撑每秒 600 万订单,2010 年在 QCon 演讲后,获得了业界关注。Disruptor是一个开源的Java框架,它被设计用于在生产者—消费者(producer-consumer problem,简称PCP)问题上获得尽量高的吞吐量(TPS)和尽量低的延迟。
2022-12-26 14:40:34
277
原创 如何优雅依赖多个版本的jar包?
由于是一个迭代比较久的项目,项目中已经存在poi-tl 1.5.x的依赖,poi-tl v1.5.x是构建在Apache poi3.16上的版本,而我们现在要使用到easyexcel来处理导出,而easyexcel最低的Apache poi版本要求是4.1.2,将项目中已有poi的3.16升级到4.12时,旧代码出错,但是不升级就无法使用easyexcel。这时target目录中会有两个包,一个是original开头的原本包,因为我们没有新建类,所以这个包是空的。优点:对原来的功能无影响,代码改动量小;
2022-12-26 14:38:57
1968
1
原创 熬夜搞了 17000 字,终于把你这个 ES 玩明白了
会将旧的文档在 .del 文件中标记删除,然后文档的新版本被索引到一个新的段中。ES 是使用 Java 编写的一种开源搜索引擎,它在内部使用 Lucene 做索引与搜索,通过对 Lucene 的封装,隐藏了 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。在决定使用 Elasticsearch 的时候首先要考虑的是版本问题,Elasticsearch (排除 0.x 和 1.x)目前有如下常用的稳定的主版本:2.x,5.x,6.x,7.x(current)。
2022-12-26 14:37:42
181
原创 手撸一个动态Feign,实现一个“万能”接口调用
Feign,在微服务框架中,是的服务直接的调用变得很简洁、简单,而不需要再编写Java Http调用其他微服务的接口。
2022-12-26 14:36:23
329
原创 万字+图解 Redis,面试不用愁了
本文在一次面试的过程中讲述了 Redis 是什么,Redis 的特点和功能,Redis 缓存的使用,Redis 为什么能这么快,Redis 缓存的淘汰策略,持久化的两种方式,Redis 高可用部分的主从复制和哨兵的基本原理。只要功夫深,铁杵磨成针,平时准备好,面试不用慌。虽然面试不一定是这样问的,但万变不离其“宗”。
2022-12-26 14:34:49
112
原创 面试必备:Spring 面试63问
一个Spring Bean 的定义包含容器必知的所有配置元数据,包括如何创建一个bean,它的生命周期详情及它的依赖。Spring元数据配置方式XML配置文件基于注解的配置基于java的配置在Spring框架中,当一个bean仅被用作另一个bean的属性时,它能被声明为一个内部bean。内部bean可以用setter注入“属性”和构造方法注入“构造参数”的方式来实现,内部bean通常是匿名的,它们的Scope一般是prototype。Spring 依赖注入四种方式构造器注入。
2022-12-25 14:52:10
139
原创 oppo后端16连问
那为什么MySQL官方默认隔离级别是RR,而有些大厂选择了RC作为默认的隔离级别呢?提升并发RC 在加锁的过程中,不需要添加Gap Lock和的,只对要修改的记录添加行级锁就行了。因此RC的支持的并发度比RR高得多,减少死锁正是因为RR隔离级别增加了Gap Lock和锁,因此它相对于RC,更容易产生死锁。先回忆下什么是不可重复读。假设现在有两个事务A和B:事务A先查询Jay的余额,查到结果是100这时候事务B 对Jay的账户余额进行扣减,扣去10后,提交事务。
2022-12-25 14:48:52
136
原创 分布式锁用 Redis 还是 Zookeeper?
Curator是一个zookeeper的开源客户端,也提供了分布式锁的实现。{try {= null ) {}// 获取当前所有节点排序后的集合// 获取当前节点的名称// 判断当前节点是否是最小的节点// 获取到锁} else {// 没获取到锁,对当前节点的上一个节点注册一个监听器= null ){= null ){break;}}}
2022-12-25 14:46:03
103
原创 7 种提升 Spring Boot 吞吐量神技!
四、默认tomcat容器改为Undertow(Jboss下的服务器,Tomcat吞吐量5000,Undertow吞吐量8000)(守护)线程,所以,当主线程结束时,这些线程无论执行完毕都会退出系统。这两个方法如果在不指定线程池的情况下,都是在。我们用休眠1秒来模拟一个长时间的计算过程,并将计算结果告诉。方法中,它会在一个新线程中,执行传入的参数。方法,这个方法可能是比较慢的,但这并不影响。线程池中执行,而这个线程池中的所有线程都是。还有一个不需要返回值的异步调用方法。在该示例中,启动一个线程,此时。
2022-12-25 14:44:35
210
原创 优秀后端都应该具备的开发好习惯
很多小伙伴,判断一个list}这样写呢,逻辑是没什么问题的。}日常开发中,我们既要会用工具类,更要学会自己去总结工具类。比如去文件处理工具类、日期处理工具类等等。这些都是优秀后端开发的一些好习惯。
2022-12-25 14:41:39
116
原创 Docker踩坑,又涨知识了
但笔者又遇到另外一个问题,就是Docker中应用的日志,由于之前的失误默认通过root用户创建的,此时使用了testuser来启动应用程序,发现Docker无法启动,原因很简单testuser启动的应用无法向root创建的日志文件写日志。而问题的排查过程也很有意思,不仅涉及到了Docker的操作命令,也涉及到了Linux的一些基础知识,知识和技能就是在出现问题、解决问题的过程中增长的。既然找到问题的原因解决起来就比较容易了,下面记录一下解决问题及涉及到的一些Docker命令和Linux操作。
2022-12-25 14:40:33
357
原创 Spring 最常用的 7 大类注解,史上最强整理!
此注解使用在Spring的组件类上。此注解也可以使用在被@Configuration注解的类上,表示其中所有被@Bean注解的方法都会延迟初始化。当此注解用在Class上时,就创造了一个基础url,其所有的方法上的@RequestMapping都是在此url之上的。当在构造方法上使用此注解的时候,需要注意的一点就是一个类中只允许有一个构造方法使用此注解。此注解用在请求handler方法的参数上,用于将web请求中的属性(request attributes,是服务器放入的属性值)绑定到方法参数上。
2022-12-25 14:37:05
107
原创 Spring纯注解开发,简直太哇塞了!
在set注入的基础上配置文件写的更加简洁,因为在Service里写了set方法把Dao的对象搞到了Service里,所以在配置Bean的时候我们通过自动装配,在xml文件里实现了Service和Dao自动结合,不再需要去Service里通过property标签来指定相应的name-ref。在配置好MyBatis的基础上(不熟悉的可以去看一下以前写的MyBatis文章),Spring的整合工作就变的非常简单,主要工作就是管理MyBatis中的SqlSessionFactory和Mapper接口的扫描。
2022-12-25 14:35:46
170
原创 面试官:讲讲new对象的流程!
在看这篇文章之前,啰嗦一句:如果你死记硬背下面所说的流程等于白看,就算现在记住了,一个礼拜后呢,一个月后你又能记得多少,因为对象创建过程这个知识点平常的工作中基本不会涉及到,太底层了,背熟的知识点不经常加以运用容易遗忘,所以我的建议是什么呢,流程做到心里大概有个数,其中涉及到关键的知识点记牢就可以了。堆内存 存放创建的对象和数组,会由java虚拟机的自动垃圾回收来管理(GC),创建一个对象放入堆内的同时也会在栈中创建一个指向该对象堆内存中的地址引用变量,下面说的对象就是存在该内存中。
2022-12-25 14:34:08
395
原创 List 的10个坑,真坑!
今天我们主要来说一说List操作在实际使用中有哪些坑,以及面对这些坑的时候我们要怎么解决。由于篇幅的限制,我们只对一些在业务开发中常见的关键点进行梳理和介绍在实际的工作中,我们不单单是要清除不同类型容器的特性,还要选择适合的容器才能做到事半功倍。我们主要介绍了转换过程中的一些坑,以及因为操作不当造成的OOM和异常,到最后介绍了线程安全类的一些坑,让我们认识到在丰富的API下藏着许多的陷阱。在使用的过程中,需要更加充分的考虑避免这些隐患的发生。最后一张思维导图来回顾一下~
2022-12-25 14:33:04
127
原创 腾讯6问分库分表
今天跟大家聊聊分库分表。什么是分库分表为什么需要分库分表如何分库分表什么时候开始考虑分库分表分库分表会导致哪些问题分库分表中间件简介分库:就是一个数据库分成多个数据库,部署到不同机器。分表:就是一个数据库表分成多个表。
2022-12-24 10:53:53
188
原创 10道中厂JVM面试题
❝❞进行垃圾回收的过程中,会涉及对象的移动。为了保证对象引用更新的正确性,必须暂停所有的用户线程,像这样的停顿,虚拟机设计者形象描述为。在HotSpot中,有个数据结构(映射表)称为「OopMap」。一旦类加载动作完成的时候,HotSpot就会把对象内什么偏移量上是什么类型的数据计算出来,记录到OopMap。在即时编译过程中,也会在「特定的位置」生成 OopMap,记录下栈上和寄存器里哪些位置是引用。这些特定的位置主要在:1.循环的末尾(非 counted 循环)
2022-12-24 10:51:49
111
原创 JVM高频面试题八股文集合
双亲委派机制是面试中非常高频的一个知识点,需要牢牢掌握双亲委派机制:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一层次的类加载器都是这样,所以所有的加载请求最终都应该传送到顶层的启动类加载容器,只有当父类加载器无法完成加载时,子加载器才会尝试自己去加载,如下图正在上传…重新上传取消这里有个问题,类加载器中的父类加载器和子类加载器是继承关系吗?
2022-12-24 10:50:00
303
原创 Redis高频面试集合44问
Redis是一个高性能的非关系型的键值对数据库,使用C编写实现的。与传统的数据库不同的是Redis是存在内存中的,所以读写速度非常快,每秒可以处理超过10万次的读写操作,这也是Redis常常被用作缓存的原因。因为Redis是基于内存的,为了让防止一些意外情况导致数据丢失,需要将数据持久化到磁盘上。Redis的事务是一个单独的隔离操作,事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断,所以Redis事务是在一个队列中,一次性、顺序性、排他性地执行一系列命令。
2022-12-24 10:47:39
194
原创 ThreadLocal高频面试题
无论是工作还是面试中,我们都会跟打交道,今天就跟大家聊聊的八个关键知识点哈~ThreadLocal是什么?为什么要使用ThreadLocal一个ThreadLocal的使用案例ThreadLocal的原理为什么不直接用线程id作为ThreadLocalMap的key为什么会导致内存泄漏呢?是因为弱引用吗?Key为什么要设计成弱引用呢?强引用不行?InheritableThreadLocal保证父子线程间的共享数据ThreadLocal的应用场景和使用注意点。
2022-12-24 10:46:30
195
原创 76 张图,剖析 Spring AOP 源码
AOP 的全称是 “Aspect Oriented Programming”,即面向切面编程。在 AOP 的思想里面,周边功能(比如性能统计,日志,事务管理等)被定义为切面,核心功能和切面功能分别独立进行开发,然后把核心功能和切面功能“编织”在一起,这就叫 AOP。AOP 能够将那些与业务无关,却为业务模块所共同调用的逻辑封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。我们再小节一下,文章先介绍了什么是 AOP,以及 AOP 的原理和示例。
2022-12-24 10:45:15
85
原创 61 张图,剖析 Spring 事务,就是要钻到底!
我们再小节一下,文章先介绍了事务的使用示例,以及事务的执行流程。之后再剖析了事务的源码,分为 2 块:先匹配出 louzai 对象所有关于事务的切面列表,并将匹配成功的事务属性保存到缓存;从缓存取出事务属性,然后创建、启动事务,执行业务逻辑,最后提交或者回滚事务。这篇文章,是 Spring 源码解析的第 4 篇,如果之前已经看过 AOP 的源码解析,这篇就要容易很多,但是如果上来就直接肝,可能会有那么一丢丢难度。
2022-12-24 10:42:36
86
原创 SQL优化实战经典案例分析
今天和大家聊聊SQL优化的场景。SQL调优这块呢,大厂面试必问的。最近金九银十嘛,所以整理了SQL的调优思路,并且附几个经典案例分析。
2022-12-24 10:39:24
248
原创 源码深度解析系列之 Spring IOC
IOC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试。有了 IOC 容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,便于测试和功能复用,整个体系结构更加灵活。
2022-12-24 10:34:56
98
原创 万字总结,体系化带你全面认识 Nginx !
Nginx是开源、高性能、高可靠的Web和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。性能是Nginx最重要的考量,其占用内存少、并发能力强、能支持高达 5w 个并发连接数,最重要的是,Nginx是免费的并可以商业化,配置使用也比较简单。同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。通常不允许不同源间的读操作。
2022-12-24 10:32:44
128
原创 金九银十!2022年Java面试真题整理,一共343道,堪称大厂面试直通车!
又是一年秋招季,这几天“小镇做题家”的事闹得沸沸扬扬的,同为做题家的我表示真的有冒犯到,而我们程序员与别的行业还不一样,除了上学的时候要做题,我们上班了找工作还得做题,甚至Java面试八股文都变成一个热词,由此可见一斑。
2022-09-15 22:50:24
750
原创 秋招来了,离上岸还远吗?这份2022年最新Java面试真题,一共343道,句句经典,直通大厂之门!!
又是一年秋招季,这几天“小镇做题家”的事闹得沸沸扬扬的,同为做题家的我表示真的有冒犯到,而我们程序员与别的行业还不一样,除了上学的时候要做题,我们上班了找工作还得做题,甚至Java面试八股文都变成一个热词,由此可见一斑。
2022-09-06 00:38:29
149
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人