小熊学Java
3年互联网金融方面的工作经验,CSDN Java领域优质创作者,阿里云社区博客专家,51CTO博客专家博主,担任过项目技术负责人,目前专攻于Java领域,也是全栈工程师哦!
展开
-
一次性下发100w的优惠券/短信/二维码,兼顾线程池参数可配置
针对6.18,11.11这种场景,平台一次性发布500w张优惠券,或者对于锁单用户统一发下100w张确认信息,同时我们平时有抢购茅台的场景,京东一次性发布10w个验证码,主要是针对高并发多线程大数据批处理任务的场景,一般用于二维码、优惠券、邮件、短信等场景。前面我们已经提到了其他的场景,比如二维码、优惠券、短信、邮件、理财产品收益等场景,那我们怎么才会坐到通用呢?能否做到通用的设计或工具类,给团队赋能,一开始我们肯定是一次性编写或思考不到,考虑不周的,需要我们先针对某个场景进行编写之后,后续再做到更完美!原创 2024-08-04 11:01:33 · 93 阅读 · 1 评论 -
如何看到 synchronized 背后的“monitor 锁”?
Java全能学习+面试指南:https://javaxiaobear.cn。原创 2024-04-05 20:05:46 · 268 阅读 · 0 评论 -
面试官:HashMap为什么是线程不安全的?
今天我们主要讲解为什么 HashMap 是线程不安全的?而对于 HashMap,相信你一定并不陌生,HashMap 是我们平时工作和学习中用得非常非常多的一个容器,也是 Map 最主要的实现类之一,但是它自身并不具备线程安全的特点,可以从多种情况中体现出来,下面我们就对此进行具体的分析。原创 2024-04-05 20:02:55 · 233 阅读 · 0 评论 -
ConcurrentHashMap在Java 7和Java 8中有何不同?
在 Java 8 中,对于 ConcurrentHashMap 这个常用的工具类进行了很大的升级,对比之前 Java 7 版本在诸多方面都进行了调整和变化。不过,在 Java 7 中的 Segment 的设计思想依然具有参考和学习的价值,所以在很多情况下面试官都会问你:ConcurrentHashMap 在 Java 7 和 Java 8 中的结构分别是什么?它们有什么相同点和不同点?所以本课时就对 ConcurrentHashMap 在这两个版本的特点和性质进行对比和介绍。原创 2024-04-04 03:45:50 · 142 阅读 · 0 评论 -
数据库分析查询语句Explain详解,一步一步带你分析字段的含义
EXPLAIN 关键字可以模拟优化器执行 SQL 语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字 ,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条 SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中官网:https://dev.mysql.com/doc/refman/5.7/en/explain-extended.html。原创 2024-03-31 11:43:45 · 147 阅读 · 0 评论 -
分享SQL的7种进阶用法
在MySQL中ORDER BY排序除了可以用ASC和DESC之外,还可以使用自定义排序方式来实现。('咱们结婚吧', '靳东', 43.2, '2013-04-12'),('四大名捕', '刘亦菲', 62.5, '2013-12-21'),('猎场', '靳东', 68.5, '2017-11-03'),('芳华', '范冰冰', 55.0, '2017-09-15'),('功夫瑜伽', '成龙', 91.8, '2017-01-28'),原创 2024-03-18 10:41:33 · 456 阅读 · 0 评论 -
Java Web 33道面试题汇总
jsp 本质上就是一个Servlet,它是 Servlet 的一种特殊形式(由 SUN 公司推出),每个 jsp 页面都是一个servlet实例。Servlet 是由 Java 提供用于开发 web 服务器应用程序的一个组件,运行在服务端,由 servlet 容器管理,用来生成动态内容。一个 servlet 实例是实现了特殊接口 Servlet 的 Java 类,所有自定义的 servlet 均必须实现 Servlet 接口。*区别:*jsp 是 html 页面中内嵌的Java 代码,侧重页面显示;原创 2023-10-17 21:36:29 · 389 阅读 · 0 评论 -
史上最强HashMap源码深度解析(3w字图文并茂)
HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。原创 2023-09-30 09:23:30 · 194 阅读 · 0 评论 -
2023最新整理的 Elasticsearch 21道面试题
系统中的数据, 随着业务的发展, 时间的推移, 将会非常多,而业务中往往采用模糊查询进行数据的 搜索,而模糊查询会导致查询引擎放弃索引, 导致系统查询数据时都是全表扫描,在百万级别的数据库中, 查询效率是非常低下的,而我们使用 ES 做一个全文索引, 将经常查询的系统功能的某些字段,比如说电 商系统的商品表中商品名,描述、价格还有 id 这些字段我们放入 ES 索引库里,可以提高查询速度。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。原创 2023-07-10 09:46:21 · 11241 阅读 · 0 评论 -
面试官:Spring MVC的执行流程是怎样的?
refresh 过程中会创建并初始化 SpringMVC 中的重要组件, 例如 MultipartResolver,HandlerMapping,HandlerAdapter,HandlerExceptionResolver、ViewResolver 等。① HandlerMapping 有多个,每个 HandlerMapping 会返回不同的处理器对象,谁先匹配,返回谁的处理器。容器初始化后,会将上一步初始化好的重要组件,赋值给 DispatcherServlet 的成员变量,留待后用。原创 2022-12-23 22:15:47 · 315 阅读 · 1 评论 -
Spring 事务失效的常见八大场景,注意避坑
synchronized 保证的仅是目标方法的原子性,环绕目标方法的还有 commit 等操作,它们并未处于 sync 块内。上面的代码实际上是有 bug 的,假设 from 余额为 1000,两个线程都来转账 1000,可能会出现扣减为负数的情况。原因:事务切面优先级最低,但如果自定义的切面优先级和他一样,则还是自定义切面在内层,这时若自定义切面没有正确抛出异常…原因:事务通知只有捉到了目标抛出的异常,才能进行后续的回滚处理,如果目标自己处理掉异常,事务通知无法知悉。好了,本文就到这里了!原创 2022-12-23 14:47:46 · 1016 阅读 · 0 评论 -
面试官:Spring Bean的生命周期,你知道吗?
bean 的生命周期从调用 beanFactory 的 getBean 开始,到这个 bean 被销毁,可以总结为以下七个阶段:处理名称,检查缓存处理父子容器处理 dependsOn选择 scope 策略创建 bean类型转换处理销毁 bean。原创 2022-12-19 11:19:10 · 522 阅读 · 0 评论 -
面试官:Spring refresh过程是怎样的?
embeddedValueResolvers 即内嵌值解析器,用来解析 @Value 中的 ${ },借用的是 Environment 的功能。BeanFactory 的作用是负责 bean 的创建、依赖注入和初始化,bean 的各项特征由 BeanDefinition 定义。BeanDefinition 作为 bean 的设计蓝图,规定了 bean 的特征,如单例多例、依赖关系、初始销毁方法等。原创 2022-12-17 12:19:43 · 694 阅读 · 0 评论 -
结合面试详细分析 HashMap 源码
hash 表的查找,更新的时间复杂度是 O(1),而红黑树的查找,更新的时间复杂度是 O(log_2n),TreeNode 占用空间也比普通 Node 的大,如非必要,尽量还是使用链表。容量是 2 的 n 次幂 这一设计计算索引效率更好,但 hash 的分散性就不好,需要二次 hash 来作为补偿,没有采用这一设计的典型例子是。e 头插节点 a,a 的 next 指向了 b(之前 a.next 一直是 null),b 的 next 指向 a,死链已成。线程2 扩容完成,由于头插法,链表顺序颠倒。原创 2022-12-13 14:49:51 · 637 阅读 · 0 评论 -
2022最新 MySQL事务面试题合集
小熊学Java网站:https://javaxiaobear.gitee.io/,每周持续更新干货,建议收藏! 事务都有 ACID 特性1 、原子性 atomicity过程的保证只做一个步骤:给钱 ——> 去买 ——> 交回来事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做2 、一致性 consistency结果的保证保证要吃完 刚张嘴挂了,失去一致性事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数原创 2022-12-07 22:20:31 · 874 阅读 · 0 评论 -
2022最新 MySQL 内部技术架构面试题
更多面试题:https://javaxiaobear.gitee.io/Connectors(客户端)MySQL服务器之外的客户端程序,与具体的语言相关,例如Java中的JDBC,图形用户界面SQLyog等。MySQL Server(服务器)第1层:连接层第2层:服务层Management Serveices & Utilities: 系统管理和控制工具SQL Interface:SQL接口:Parser:解析器:语法分析语法分析主要是把输入转化成若干个tokens,包含key和非key。在分析之后,会原创 2022-12-03 14:21:44 · 433 阅读 · 0 评论 -
2022最新1w字MySQL索引面试题(附md文档)
自适应哈希索引是Innodb引擎的一个特殊功能,当它注意到某些索引值被使用的非常频繁时,会在内存中基于B-Tree所有之上再创建一个哈希索引,这就让B-Tree索引也具有哈希索引的一些优点,比如快速哈希查找。这是一个完全自动的内部行为,用户无法控制或配置使用命令查看INSERT BUFFER AND ADAPTIVE HASH INDEX多叉树(multiway tree)允许每个节点可以有更多的数据项和更多的子节点。2-3树,2-3-4树就是多叉树,多叉树通过。原创 2022-11-30 15:38:03 · 520 阅读 · 0 评论 -
2022年最新 熬夜整理的Mybatis经典面试题
1、什么是MyBatis?Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。程序员直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高。MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO 映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。2、Mybatis的优缺点?优点:基于SQL原创 2021-09-08 22:56:01 · 611 阅读 · 2 评论 -
深入理解Java内存区域(最新版面试题)
JVM(Java Virtual Machine)是用于运行Java字节码的虚拟机,包括一套字节码指令集、一组程序寄存器、一个虚拟机栈、一个虚拟机堆、一个方法区和一个垃圾回收器。JVM运行在操作系统之上,不与硬件设备直接交互。Java源文件在通过编译器之后被编译成相应的.Class文件(字节码文件),.Class文件又被JVM中的解释器编译成机器码在不同的操作系统(Windows、Linux、Mac)上运行。每种操作系统的解释器都是不同的,但基于解释器实现的虚拟机是相同的,这也是Java能够跨平台的原因。原创 2022-11-05 20:57:59 · 531 阅读 · 0 评论 -
面试官:ArrayList扩容机制,你了解吗?
ArrayList() 会使用长度为0的数组ArrayList(int initialCapacity) 会初始化指定容量的数组extends E> c) 会初始化c的大小作为数组容量add(Object o):首次(空数组的情况下)扩容为10,之后为元容量的1.5倍addAll(Object c)没有元素时,扩容为Math.max(10,实际个数),有元素时,Math.max(原容量的1.5倍,实际个数)原创 2022-10-08 11:50:23 · 369 阅读 · 0 评论 -
计算机网络面试题 43问汇总,面试必问
MSL(Maximum Segment Lifetime),TCP允许不同的实现可以设置不同的MSL值。保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。原创 2022-10-03 22:28:09 · 1327 阅读 · 0 评论 -
2w字Spring Cloud最全面试题整理,全是硬货
首先微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WEB应用,来理解什么是微服务。官方解释:Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。原创 2022-09-16 10:08:45 · 1137 阅读 · 0 评论 -
MySQL面试题 硬核47问
为什么要使用视图?为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。什么是视图?视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成。存储过程,就是一些编译好了的SQL语句,这些SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后给这些代码块取一个名字,在用到这个功能的时候调用即可。存储过程是一个预编译的代码块,执行效率比较高存储过程在服务器端运行,减少客户端的压力。原创 2022-09-16 09:53:49 · 683 阅读 · 0 评论 -
RabbitMQ 26问,基本涵盖了面试官必问的面试题
RabbitMQ是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑RabbitMQ是一个快递站,一个快递员帮你传递快件。RabbitMQ与快递站的主要区别在于,它不处理快件而是接收,存储和转发消息数据。原创 2022-09-03 21:42:35 · 3638 阅读 · 0 评论 -
44道接近2w字Redis面试题,问麻了
string( 字符串)缓存功能计数共享Session限速hash( 哈希)缓存用户信息缓存对象list( 列表)消息队列文章列表set( 集合)标签(tag)共同关注zset(有序集合)用户点赞统计用户排序HyperLogLogpub/subRedis的应用一般会结合项目去问,以一个电商项目的用户服务为例:Token存储:用户登录成功之后,使用Redis存储Token登录失败次数计数:使用Redis计数,登录失败超过一定次数,锁定账号地址缓存:对省市区数据的缓存分布式锁:分布式环境下登录、注册等操作加分布原创 2022-07-05 23:56:18 · 1192 阅读 · 0 评论 -
三种方法构建Java树形结构,Stream真的厉害
平时大概率我们会构建一些树形结果返回给前端,比如菜单结构、部门列表、文件结构等,我们一般想到的就是利用递归来循环构建;现在,就我个人解决的方法如下:原始递归利用Java 8 Stream流进行处理(原理还是递归)Stream流升级构建场景构建public class TreeSelect implements Serializable{ /** 节点ID */ private Long id; /** 节点名称 */ private String la.原创 2022-04-08 23:01:29 · 10343 阅读 · 11 评论 -
一只学Java的小熊整理的最全笔记,免费下载
今天给大家推荐一份Java的学习笔记以及一份在线面试资料,适用于刚入门的,以及已经学会的查漏补缺;其中,里面也设计到很多面试提点;据说有不少小伙伴靠这份笔记拿到了offer。希望对能大家有帮助。这也是作为第一次与大家见面的见面礼!希望大家喜欢,后续会有更多资料与大家分享!第一份是平时学习的框架笔记,包含Java Web、SSM、微服务、redis等热门技术。先给大家看看内容:现在这PDF笔记 免费分享给你,你可以扫描下方二维码回复Java学习笔记 来领取!收藏即会!!!同时,也有在线文档,供大家阅原创 2022-04-04 22:01:45 · 668 阅读 · 2 评论 -
Spring MVC高频面试题总结,面试再也不怕了
1、什么是Spring MVC?Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。2、Spring MVC的优点?可以支持各种视图技术,而不仅仅局限于JSP与Spring 框架继承(IOC、AOP)清晰的角色分配:前端控制器(DispatcherServlet),请求到处理器映射(HandleMapping原创 2021-09-07 16:31:41 · 142 阅读 · 0 评论 -
最新52道 Spring 面试题汇总
1、什么是Spring?Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发。Spring可以做很多事情,它为企业级开发提供给了丰富的功能,但原创 2021-09-04 21:30:06 · 447 阅读 · 0 评论 -
Java内部类面试题汇总
1、静态内部类与非静态内部类有什么区别?静态内部类可以有静态成员(方法,属性),而非静态内部类则不能有静态成员(方法,属性)。静态内部类只能够访问外部类的静态成员和静态方法,而非静态内部类则可以访问外部类的所有成员(方法,属性)。实例化静态内部类与非静态内部类的方式不同调用内部静态类的方法或静态变量,可以通过类名直接调用2、静态内部类如何定义?定义在类内部的静态类,就是静态内部类。public class Out{ public static int a; priv原创 2021-08-21 12:37:45 · 373 阅读 · 0 评论 -
Java充电站:Java反射常见面试题总结
1、什么是Java反射机制?Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。 这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。1、除了使用new创建对象之外,还可以用什么方法创建对象?使用Java反射可以创建对象!2、Java反射创建对象效率高还是通过new创建对象的效率高?通过new创建对象的效率比较高。通过反射时,先找查原创 2021-08-21 12:36:30 · 199 阅读 · 0 评论 -
Java充电篇:Java IO常见的面试题
1、什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多少,各有什么区别?Bit最小的二进制单位 ,是计算机的操作部分取值0或者1。Byte是计算机中存储数据的单元,是一个8位的二进制数,(计算机内部,一个字节可表示一个英文字母,两个字节可表示一个汉字。) 取值(-128-127)Char是用户的可读写的最小单位,他只是抽象意义上的一个符号。如‘5’,‘中’,‘¥’等等。在java里面由16位bit组成Char 取值(0-65535)Bit 是最小单位 计算机他只能认原创 2021-08-21 12:34:05 · 195 阅读 · 0 评论 -
Java充电站:抽空整理的45道经典多线程面试题
1、什么是集合?集合就是一个放数据的容器,准确的说是放数据对象引用的容器集合类存放的都是对象的引用,而不是对象的本身集合类型主要有3种:set(集)、list(列表)和map(映射)。集合的特点主要有如下两点:集合用于存储对象的容器,对象是用来封装数据,对象多了也需要存储集中式管理。和数组对比对象的大小不确定。因为集合是可变长度的。数组需要提前定义大小2、常用的集合类有哪些?Collection集合主要有List和Set两大接口:List:一个有序(元素存入集合的原创 2021-08-20 11:38:01 · 279 阅读 · 0 评论 -
Java充电站:关于异常的面试题,你会吗
1、Java 中异常分为哪些种类?按照异常需要处理的时机分为编译时异常(也叫强制性异常)也叫 CheckedException 和运行时异常(也叫非强制性异常)也叫 RuntimeException。只有 java 语言提供了 Checked 异常,Java 认为 Checked异常都是可以被处理的异常,所以 Java 程序必须显式处理 Checked 异常。如果程序没有处理 Checked 异常,该程序在编译时就会发生错误无法编译。这体现了 Java 的设计哲学:没有完善错误处理的代码根本没有机会被原创 2021-08-20 11:28:33 · 148 阅读 · 0 评论 -
Java充电站:面试必知的15道Java数据类型题
1、Java 的基本数据类型都有哪些各占几个字节?2、String 是最基本的数据类型吗?不是,String是引用类型,底层是用char数组实现的。Java 中的基本数据类型只有8 个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type),剩下的都是引用类型(referencetype), Java 5 以后引入的枚举类型也算是一种比较特殊的引用类型。3、运行short s1 = 1, s1 = s1 + 1原创 2021-08-20 11:18:15 · 188 阅读 · 0 评论 -
Java充电站:Java SE的15道经典面试题
1、Java 有没有 goto 语句?goto是 Java 中的保留字,在目前版本的 Java 中没有使用。根据 James Gosling Java 之父)编写的《 The Java Programming Language 》一书的附录中给出了一个 Java 关键字列表,其中有 goto 和 const ,但是这两个是目前无法使用的关键字,因此有些地方将其称之为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉 C 语言的程序员都知道,在系统类库中使 用过的有特殊意义的单词或单词的组合都被视为保留原创 2021-08-20 11:13:54 · 284 阅读 · 0 评论 -
Java充电站:梳理10道经典面向对象的面试题
1、面向对象都有哪些特性以及你对这些特性的理解?继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的 类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段。封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,原创 2021-08-20 11:09:45 · 1146 阅读 · 0 评论