呆萌宝儿姐
CSDN专家博主、阿里云开发者社区专家博主、51CTO社区专家博主、360书馆认证博主、知乎掘金B站等平台受邀作者。
如遇开发、程序等需求,博客首页下拉加入公众号,私信博主
展开
-
深入了解 @Transactional(rollbackFor = Exception.class) 注解
是 Spring 提供的一个注解,用于声明方法或类需要在事务上下文中执行。该注解可以应用于业务层方法,在方法执行过程中自动开启和管理事务。原创 2024-05-17 14:34:56 · 133 阅读 · 1 评论 -
京东面试题:JVM内存模型与Java线程内存模型的区别
总的来说,JVM内存模型和Java线程内存模型是Java程序运行时的两个重要方面,它们共同构建了一个稳定、高效的Java运行环境。JVM内存模型提供了整体的框架,而Java线程内存模型则在多线程情境下保证了数据的正确性和可见性。它是线程私有的,随着线程的创建而创建,随着线程的销毁而销毁。JVM内存模型主要关注Java程序在运行时的内存组织,而Java线程内存模型关注多线程环境下的数据共享和同步机制。JVM内存模型是整个Java虚拟机的内存结构,而Java线程内存模型则是在多线程环境下对内存的一种抽象。原创 2024-01-03 16:24:16 · 925 阅读 · 0 评论 -
CSDN自定义模块广告位html代码
【代码】CSDN自定义模块广告位html代码。原创 2023-10-09 16:29:59 · 135 阅读 · 0 评论 -
面试必背:Spring、Mybatis模块大厂面试题收录
实行查询方法,进入Executor的查询方法,取出SqlBould,如果开启了二级缓存,使用CachingExecutor的查询方法,先看二级缓存中是否有数据,有直接返回,如果没有调用被装饰的SimpleExecutor,然后插叙一级缓存,如果一级缓存中有数据直接响应数据,无数据然后进行数据库查询。在容器进行初始化时候,首先将definetion转化为实例,然后进行依赖注入(包含属性和对象),然后有前置处理器执行前置处理器,如果配置了innit方法,执行init方法。有后置处理器,然后执行后置处理器。原创 2022-10-30 21:06:32 · 41 阅读 · 0 评论 -
面试必背:多线程模块大厂面试题收录
即:Conditon中的await()对应Object的wait(),Condition中的signal()对应Object的notify(),Condition中的signalAll()对应Object的notifyAll()。并且因为当前线程可能会等待多个线程的锁,如果通过线程来操作,就非常复杂了。LongAdder是根据锁分段来实现的,它里面维护一组按需分配的计数单元,并发计数时,不同的线程可以在不同的计数单元上进行计数,这样减少了线程竞争,提高了并发效率。原创 2022-10-27 13:52:08 · 27 阅读 · 0 评论 -
场景应用:ThreadLocal会出现内存泄露吗?有什么其他的解决方案?
ThreadLocal是一个有用的工具,它可以帮助我们在多线程环境中管理线程局部变量,避免了同步的开销。然而,它也需要谨慎使用,以避免内存泄漏。了解ThreadLocal的工作原理,手动清理ThreadLocal变量,以及使用内存分析工具来排查内存泄漏问题,都是保持应用程序性能和稳定性的关键步骤。在高并发场景中,考虑使用其他解决方案,如参数传递或上下文容器,以减轻ThreadLocal可能带来的风险。原创 2023-10-11 08:33:07 · 618 阅读 · 0 评论 -
面试必背:Java有几种文件拷贝方式,哪一种效率最高?
文件拷贝是日常编程任务中常见的操作,Java提供了多种文件拷贝方式,每种方式都有其适用的场景和效率特点。在本篇博文中,我将探讨常见的Java文件拷贝方式,并评估它们的效率。原创 2023-10-10 15:24:03 · 707 阅读 · 0 评论 -
场景应用:订单表每天新增500W数据,分库分表的方案应该如何设计?
请注意,这个示例还包括数据库初始化、连接池配置、分片策略等方面的详细代码,混在一起了,别直接贴,看看逻辑就好。我们需要实现数据库路由和分片管理逻辑,确保每笔订单数据都正确地分布到相应的数据库和表中。这个示例演示了如何在分库分表的情况下使用Spring Boot和Seata来处理分布式事务,确保订单数据的一致性。考虑分库分表后的分布式事务处理,可能需要采用分布式事务管理工具,如Seata或TCC事务等,以确保数据的一致性。实施分库分表后,需要有可靠的数据迁移工具,确保现有数据顺利迁移到新的架构。原创 2023-10-10 15:15:35 · 715 阅读 · 0 评论 -
面试必背:Java数据转化为String类型时,使用toString()、String.valueOf()、(String)的区别
toString()方法是对象的通用方法,用于提供对象的字符串表示形式。通过覆盖toString()方法,你可以自定义对象的字符串表示,以便更好地满足你的需求。如果对象没有覆盖toString()方法,它将返回默认的字符串表示形式,通常是类名@哈希码。是String类的静态方法,用于将任何数据类型转换为字符串。这个方法非常通用,适用于各种数据类型,包括基本数据类型和对象。它是一个安全的方法,即使参数为null,也会返回字符串"null"。强制类型转换(String)原创 2023-10-09 16:28:22 · 6135 阅读 · 0 评论 -
面试必备:牛客14次模拟面试解析
4 4 8 16 4版本号 4首部长度 8服务类型 16总长度16 3 13 16标识位 3标志位 13片偏移8 8 16 8生存时间 8协议 16首部校验和32 32源ip地址32 32目的ip地址一共是20字节 每一段4个字节 分为5段标准回答。原创 2023-10-09 15:23:25 · 5999 阅读 · 0 评论 -
面试必背:Synchronized和Volatile的相同点与不同点
在多线程编程中,了解和volatile的相同点和不同点至关重要。选择正确的同步机制取决于您的具体需求。如果您需要保证变量的可见性,而且操作是独立的,那么volatile是一个不错的选择。但如果您需要更复杂的同步,或者需要执行复合操作,那么可能更适。原创 2023-10-09 15:22:09 · 5890 阅读 · 0 评论 -
场景应用:微服务金融项目,如果从A账户扣钱,转给B,需要考虑哪些问题?
在微服务架构下进行资金转账是一个复杂的任务,需要仔细考虑事务性、并发性、安全性、容错性、监控性能、合规性和数据一致性等多个方面。通过采用适当的解决方案和最佳实践,可以确保资金转账操作在微服务环境中顺利执行,为用户提供安全、可靠的服务。在这种背景下,资金转账是一个常见的业务场景,需要考虑多个关键问题,以确保操作的安全性、可靠性和性能。在微服务架构中,资金转账通常涉及多个服务,例如扣款服务和存款服务。如果转账过程中的一个服务失败,必须回滚所有相关操作,以防止数据不一致。在分布式环境中,数据一致性是一个挑战。原创 2023-10-09 09:43:12 · 5916 阅读 · 0 评论 -
场景应用:从数据库中查询1亿条数据供后端进行条件判断处理时,如何提高查询效率?
过综合考虑这些数据库层和代码层的优化策略,我们可以高效地查询和处理1亿条数据,并在后端进行条件判断处理。请根据具体需求和应用程序的架构选择合适的策略,并根据性能测试和监控结果进行调整和优化。这将确保系统在高负载条件下保持稳定性和性能。数据库层优化策略:为查询字段建立索引,以提高查询速度。如果数据库支持,根据日期或其他标准进行表分区,以减少查询的数据量。编写高效的SQL查询,只检索需要的数据字段,避免全表扫描。配置数据库服务器的参数,如缓冲池大小、查询缓存和连接池,以优化查询性能。原创 2023-10-09 09:26:46 · 6043 阅读 · 0 评论 -
场景应用:设定一个调用后台接口场景,RT 10ms,需要调用十次并等待全部返回,设置几个线程合适,需不需要考虑cpu核数?
多线程的使用:考虑使用多线程来同时执行接口调用,以节省总体执行时间。线程数量:可以创建与任务数量相等或稍多的线程。在这种情况下,可以考虑创建10个线程,每个线程负责一个接口调用。线程池:使用线程池来管理线程是一个良好的实践,因为它可以帮助控制并发线程数量,避免不必要的资源浪费。CPU核心数:由于接口调用RT较短,任务数量相对较小,通常不需要过多担心CPU核心数的限制。这是因为这些调用不会长时间占用CPU核心。性能测试:最终的线程数量选择应基于性能测试和实际情况。原创 2023-10-08 16:54:59 · 6004 阅读 · 0 评论 -
场景应用:你了解的XXX框架原理对你实际写代码提供了哪些帮助
这类问题通常需要深入探讨一个特定框架或概念的原理,并且提供与实际编写代码相关的帮助。引言:简要介绍你将要讨论的框架或概念,以及它在实际编写代码中的重要性。核心原理:详细解释框架或概念的核心原理,包括它的工作方式和设计哲学,以此来类比我们代码过程中的编写要素。实际应用:说明了解这一原理如何帮助开发人员在实际编写代码时更高效、更质量和更灵活。具体示例:如果可能的话,提供具体的代码示例或案例,以更好地说明原理如何应用于实际项目中。总结:简要总结了解这一原理的好处,以及它对成为一名资深开发人员的重要性。原创 2023-10-08 15:51:28 · 5986 阅读 · 0 评论 -
场景应用:java如何处理并发资源访问?
这篇让我们深入探讨Java如何处理并发资源访问这一重要而复杂的话题。在当今高度并发的应用中,正确处理多线程之间的资源共享至关重要。我们将通过概念、示例和最佳实践来阐述这个问题,以帮助开发者更好地理解和应对并发挑战。原创 2023-10-08 15:28:13 · 6016 阅读 · 0 评论 -
漫威电影/剧集上映播出时间顺序梳理
11.《复仇者联盟2:奥创纪元》(2015)Disney+剧集《旺达·幻视》(2021)Disney+剧集《猎鹰与冬兵》(2021)Disney+剧集《洛基第一季》(2021)Disney+剧集《我是格鲁特》(2022)Disney+特别篇《暗夜狼人》(2022)Disney+剧集《月光骑士》(2022)Disney+剧集《惊奇女士》(2022)Disney+剧集《秘密入侵》(2023)5.《美国队长:复仇者先锋》(2011)Disney+剧集《女浩克》(2022)30.《黑豹2:瓦坎达万岁》(2022)原创 2023-10-08 13:02:01 · 5990 阅读 · 0 评论 -
场景应用:为什么SpringBoot使用cglib作为默认动态代理 ?AOP使用jdk动态代理会有什么问题 ?
现在,让我们看看为什么Spring Boot默认选择CGLIB作为动态代理方式以及AOP中使用JDK动态代理可能会引发问题。这些示例帮助解释了为什么Spring Boot选择CGLIB作为默认动态代理方式,并强调了AOP使用JDK动态代理可能引发的一些问题。让我们首先考虑性能。当涉及到Spring Boot的默认动态代理选择和AOP使用JDK动态代理可能引发的问题时,让我们通过具体的代码示例来更好地理解这些概念。如果目标类没有实现接口,或者需要代理非接口类的方法,那么JDK动态代理就无法胜任。原创 2023-10-07 15:08:45 · 6218 阅读 · 0 评论 -
场景应用:消息积压怎么解决?
消息积压是消息队列系统中常见的问题,但可以通过多种策略来解决。根据您的具体需求和系统情况,您可以选择消费者扩展、消息分区、消息优先级、消息限流等方法,或结合使用这些方法,以确保消息队列系统的高可靠性和高性能。选择适合您应用程序的策略并根据需要实施它们,将有助于减轻消息积压问题的影响。让我们考虑一个电子邮件队列系统的案例,其中消息代表待发送的电子邮件。在这个案例中,我们将探讨消息积压问题以及如何解决它,最后分析问题产生的原因。原创 2023-09-12 15:59:01 · 6263 阅读 · 0 评论 -
场景应用:怎么解决消息被重复消费的问题?
解决消息被重复消费的问题对于构建可靠的消息系统至关重要。通过消息去重、消息确认、超时机制以及全局唯一ID等方法,我们可以有效地保证消息的可靠传递。根据具体场景和需求,可以选择合适的解决方案或结合多种方法以确保消息不被重复消费。在实际应用中,合理选择和实施这些解决方案可以为我们的消息系统提供可靠的保障。原创 2023-09-12 15:48:19 · 6252 阅读 · 0 评论 -
场景应用:使用MQ的时候,怎么确保消息100%不丢失?
在构建可靠的消息系统时,结合以上示例和最佳实践,可以确保您的应用在各种情况下都能处理消息,并最大程度地减少消息丢失的风险。在上述示例中,我们使用RabbitMQ的Java客户端创建了一个持久的队列,并将订单消息标记为持久化,以确保即使MQ服务器宕机,订单消息也能被保留。例如,在使用RabbitMQ时,可以设置消息队列为持久化模式,这样消息将被写入磁盘,即使MQ服务器宕机,消息也能在服务器恢复后重新投递。在处理消息之前,将多个操作包装在事务中,只有在事务成功提交时,消息才会被确认。原创 2023-09-12 15:08:18 · 6245 阅读 · 0 评论 -
场景应用:订单支付超时未支付,关闭订单的解决方案
综上所述,使用定时任务和数据库触发器的方案在某些场景下可能更具优势,现实中用的最多的是消息队列的方案(死信队列,这里不多叙述,主要提供方案的思路)。然后,在支付超时时间到达之前,如果订单还未支付,就从消息队列中取出这条订单信息,然后关闭这个订单。如果订单已经超过了指定的支付超时时间,那么我们就将这个订单的状态标记为“已关闭”,并执行关闭订单的操作。在电子商务或在线支付的场景中,当用户下订单并选择支付方式后,如果订单在限定时间内未完成支付,就会触发超时未支付订单处理流程。原创 2023-09-11 17:26:05 · 6620 阅读 · 0 评论 -
场景应用:SpringBoot可以同时处理多少请求?
Springboot内嵌的是Tomcat服务器,这个大家都知道,Tomcat服务器是有自己的线程池管理的,所以我们其实可以通过设置线程数的相关配置进行控制接受请求的数量。因为这是我们设置的是40,如果不设置的话SpringBoot的最大请求应该就是他们两个的默认值相加,那么我们再去找找,一般这个在SpringBoot的元数据配置文件。新建了一个Springboot项目,我们设置一下Tomcat的最大连接数与最大等待数。然后去jmeter去进行测试探究,首先我们针对于我们的测试项目 ,给他200的QPS。原创 2023-09-09 14:03:54 · 6394 阅读 · 0 评论 -
场景应用:如何设计一个本地缓存?(附加代码实现)
我们使用缓存的目的就是因为被缓存的数据生成比较费时,比如调用对外的接口,查询数据库,计算量很大的结果等等。最简单的就直接用Map来存储数据,或者复杂的如redis一样提供了多种数据类型哈希,列表,集合,有序集合等,底层使用了双端链表,压缩列表,集合,跳跃表等数据结构。分布式缓存如redis是有持久化功能的,memcached是没有持久化功能的。提供一个傻瓜式的对外接口是很有必要的,对使用者来说使用此缓存不是一种负担而是一种享受,提供常用的get,put,remove,clear,getSize等方法即可。原创 2022-09-05 16:00:26 · 6759 阅读 · 0 评论 -
场景应用:用SpringSecurity实现登录时记住我的功能
Spring Security 中 Remember Me 为“记住我”功能,用户只需要在登录时添加 remember-me 复选框,取值为 true。在客户端登录页面中添加 remember-me 的复选框,只要用户勾选了复选框下次就不需要进行登录了。用户只需要向 Spring Security 项目中发送/logout 退出请求即可。Spring Security 会自动把用户信息存储到数据源中,以后就可以不登录进行访问。常简单,只要在页面中添加/logout 的超链接即可。有效时间默认为 2 周。原创 2022-09-18 16:49:57 · 6684 阅读 · 0 评论 -
场景应用:图解扫码登录流程
百度百科是这么说的:二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。比如说下面这个二维码我猜你刚才肯定拿出微信扫一扫给扫了。在商品上,一般都会有条形码,条形码也称为一维码,条形码只能表示一串数字。二维码要比条形码丰富很多,可以存储数字、字符串、图片、文件等,比如我们可以把存储在二维码中,扫码二维码我们就可以获取到 我博客的地址。原创 2022-09-04 23:50:18 · 7473 阅读 · 0 评论 -
场景代码题:用Java写三个线程轮流打印1-100的程序
最近身体不太舒服,只贴代码了,打了注释,不再解读了,不忙了再来多写几种方法。原创 2022-11-10 19:42:28 · 6869 阅读 · 0 评论 -
场景应用:如何实现MySQL的分库分表?
分库分表有 垂直切分 和 水平切分 两种方式,在复杂的业务场景中,也可能会选择两者结合的方式。切分方式定义优点缺点应用场景垂直切分数据表列的拆分,把一张列比较多的表拆分为多张表,具体地,根据数据库里面数据表的相关性进行拆分可以使行数据变小,在查询时减少读取的 Block 数,减少 I/O 次数;简化表结构,更易于维护主键会出现冗余,需要管理冗余列;会引起 JOIN 操作;加大事务管理的难度适合表多且各项 业务逻辑 划分清晰、低耦合情景水平切分数据表行。原创 2022-09-14 10:09:53 · 7451 阅读 · 0 评论 -
场景应用:Spring容器是一个什么样的概念?有什么作用?应用上下文呢?举个代码示例讲解一下
是的,容器的概念在java中你最熟悉的莫过于Tomcat了,它正是一个运行Servlet的web容器,而Spring要想实现依赖注入功能,就离不开对象生产的容器——如果没有容器负责对象的创建管理,你的程序代码只是喊要对象了,Spring也无处给你啊。实际上,Spring容器里面什么都没有,决定容器里面放什么对象的是我们自己,决定对象之间的依赖关系的,也是我们自己,容器只是给我们提供一个管理对象的空间而已。在Spring中,通过依赖注入的方式,我们的业务代码不用自己管理关联对象的生命周期。原创 2022-10-14 20:16:52 · 7134 阅读 · 0 评论 -
场景应用:利用反射机制在这个泛型为Integer的ArrayList中存放一个String类?
【代码】场景应用:利用反射机制在这个泛型为Integer的ArrayList中存放一个String类?原创 2022-09-26 23:05:00 · 6497 阅读 · 0 评论 -
场景应用:键盘敲入字母a时,期间发生了什么?
键盘的中断处理程序是在键盘驱动程序初始化时注册的,那键盘中断处理函数的功能就是从键盘控制器的寄存器的缓冲区读取扫描码,再根据扫描码找到用户在键盘输入的字符,如果输入的字符是显示字符,那就会把扫描码翻译成对应显示字符的 ASCII 码,比如用户在键盘输入的是字母 a,是显示字符,于是就会把扫描码翻译成 a 字符的 ASCII 码。首先 CPU 里面的内存接口,直接和系统总线通信,然后系统总线再接入一个 I/O 桥接器,这个 I/O 桥接器,另一边接入了内存总线,使得 CPU 和内存通信。(懒得画图了,见谅)原创 2022-11-13 20:21:58 · 7062 阅读 · 0 评论 -
场景程序题:Java设计一个彩票生成程序
文章目录任务描述相关知识编程要求测试说明输入提示及输入示例:输出:代码任务描述本关任务:编写实现彩票生成的小程序。相关知识参考上一关相关知识。编程要求根据提示,在右侧编辑器补充代码,模仿福利彩票23选5,随机生成5个不同的1~23的整数。注意输出两位数,格式为:01-08-09-02-19测试说明平台会对你编写的代码进行测试,输入数据为随机种子。测试用例:输入提示及输入示例:请输入种子:2输出:04-12-08-19-21开始你的任务吧,祝你成功!注意:彩票里不能有00,所原创 2021-04-08 16:04:13 · 9701 阅读 · 0 评论 -
场景应用:Redis如何做消息队列?
好了,到这里可以知道基于 List 类型的消息队列,满足消息队列的三大需求(消息保序、处理重复的消息和保证消息可靠性)。消息保序:使用 LPUSH + RPOP;阻塞读取:使用 BRPOP;重复消息处理:生产者自行实现全局唯一 ID;消息的可靠性:使用 BRPOPLPUSHList 作为消息队列有什么缺陷?List 不支持多个消费者消费同一条消息,因为一旦消费者拉取一条消息后,这条消息就从 List 中删除了,无法被其它消费者再次消费。转载 2022-10-29 15:47:13 · 6496 阅读 · 0 评论 -
场景应用:short s1 = 1; s1 = s1 + 1;有错吗? short s1 = 1; s1 += 1;有错吗?
由于 1 是 int 类型,因此 s1+1 运算结果也是 int 型,需要强制转换类型才能赋值给 short 型。可以正确编译,因为 s1+= 1;相当于 s1 = (short)(s1 + 1);其中有隐含的强制类型转换。原创 2022-11-13 21:47:02 · 6673 阅读 · 0 评论 -
场景应用:如果你设计一个分布式系统将会如何保证数据的最终一致性?
太多了记不住啊,我的天啊,太难了,枯了,啊啊啊啊!转载 2022-09-03 21:03:29 · 6093 阅读 · 0 评论 -
场景应用:你知道 i = i++;的含义么?
i++是先被操作数栈拿去用了(先执行的load指令),然后再在局部变量表中完成了自增,但是操作数栈中还是自增前的值而++1是先在局部变量表中完成了自增(先执行innc指令),然后再被load进了操作数栈,所以操作数栈中保存的是自增后的值注意:innc指令是局部变量指令。原创 2022-11-02 20:23:54 · 6863 阅读 · 2 评论 -
场景应用:设计一个论坛的评论回复功能
嵌套型的评论方式我们可以联想到所需要的数据结构是树状型的,但是我们如果要用树进行设计的话,评论多起来的话层级结构会变得很复杂,对于性能消耗也是很巨大,所以。【parent_id】字段,定义评论和回复为父子级的关系,评论为父级,回复为子级,默认为【-1】,表示为没有父级,没有父级别就说明这个评论是一级评论。嵌套型评论方式会对有回复的评论进行递归,会造成后端性能不佳,而且对于前端的展示也不是很友好。两层型评论方式就是除了一级评论之外,无论是对于该评论的回复还是对于回复的回复都统一在第二层。原创 2022-09-06 21:56:38 · 7776 阅读 · 0 评论 -
场景应用:请你设计实现一个单点登录系统(图解)
相比于单系统登录,sso需要一个独立的认证中心,只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。间接授权通过令牌实现,sso认证中心验证用户的用户名密码没问题,创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌,即得到了授权,可以借此创建局部会话,局部会话登录方式与单系统的登录方式相同。我们想要另一种登录体验:一家企业下的服务只要一次注册,登录的时候只要一次登录,退出的时候只要一次退出。这就用到了我们的单点登录系统。原创 2022-09-05 14:22:22 · 6724 阅读 · 0 评论 -
场景应用:你在平时把什么样的类注入SpringBean?为什么?
AOP只是其中一个,其余还包括,注解Spring缓存,Spring的事物,甚至是监听器等等。再举个需要交由Spring管理的例子:比如,我要在本地上传一个文件,需要一个文件路径,然而我的路径配置信息存放在配置文件中,这时该属性通过 @Value 注解从配置文件获取。假如,一个对象需要依赖Spring的其他依赖,或者Spring的特性,包括但不限于 AOP,事务,缓存等。比如你说的例子一看就知道ssh框架,其中user实例应该是用户录入的,从页面表单传来的,是struts2帮你注入的。原创 2022-10-14 21:15:32 · 6373 阅读 · 0 评论 -
场景应用:用SpringBoot手写一个登录拦截器
【代码】场景应用:用SpringBoot手写一个登录拦截器。原创 2022-09-12 18:02:32 · 6497 阅读 · 0 评论