<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_42362007的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_42362007</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_42362007]]></copyright><item><title><![CDATA[多线程解决大数据批量导出问题（demo）]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134551052</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134551052</guid><author>qq_42362007</author><pubDate>Wed, 22 Nov 2023 13:30:44 +0800</pubDate><description><![CDATA[1.首先从网上找一个到工具类，我这里是ExcelUtils，如下。具体代码示例包在次处。]]></description><category></category></item><item><title><![CDATA[使用多线程导入大批量数据的过程中，某个线程出现异常导致这一部分数据导入失败，如何处理？]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134545931</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134545931</guid><author>qq_42362007</author><pubDate>Wed, 22 Nov 2023 09:31:13 +0800</pubDate><description><![CDATA[1.  如果业务对这块的数据的精准度要求的比较高的话，可以把多线程调用方法抽象出来加上事务，一个线程异常后整体回滚，保证一批数据的一致性。2. 如果对一批数据要求比较低的话直接可以在各个线程加事务，一个线程出了问题不影响其他的数据。个人觉得这个应该根据业务场景来选择不同的解决方案。]]></description><category></category></item><item><title><![CDATA[为什么 ConcurrentHashMap 中 key 不允许为null]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134530009</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134530009</guid><author>qq_42362007</author><pubDate>Tue, 21 Nov 2023 13:57:43 +0800</pubDate><description><![CDATA[我们没办法判断，它是 put(k,v)的时候，value 本身为 null 值，还是这个 key 本身就不。也就是说，当一个线程从 ConcurrentHashMap 获取某个 key，如果返回的结果是 null。但是在 T1 线程返回之前，正好有一个 T2 线程插入了这个 key，但是 value 为 null。这种现象我们可以认为是线程安全性问题，而 ConcurrentHashMap 又是一个线程安。这个线程无法确认，这个 null 表示的是确实不存在这个 key，还是说存在 key，但是。]]></description><category></category></item><item><title><![CDATA[请简要说明 Mysql 中 MyISAM 和 InnoDB 引擎的区别]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134527421</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134527421</guid><author>qq_42362007</author><pubDate>Tue, 21 Nov 2023 11:13:44 +0800</pubDate><description><![CDATA[一个是.MYD 文件，D 代表 Data，是 MyISAM 的数据文件，存放数据记录，第三个，对于锁的支持不同，MyISAM 只支持表锁，而 InnoDB 可以根据不同的。在 Mysql 里面，存储引擎是可以自己扩展的，它的本质其实是定义数据存储的方式。（如图），它的整体结构如图所示，在 B+树的叶子节点里面存储了索引对应的数据，因为索引和数据是分离的，所以在进行查找的时候，先从索引文件中找到数据的磁盘位。第一个，数据存储的方式不同，MyISAM 中的数据和索引是分开存储的，]]></description><category></category></item><item><title><![CDATA[你是否在面试中也被过 MySQL 优化相关的问题呢？]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134396769</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134396769</guid><author>qq_42362007</author><pubDate>Tue, 14 Nov 2023 14:44:56 +0800</pubDate><description><![CDATA[主从集群或者主主集群可以保证服务。在高并发和高性能的场景中.MySQL 数据库必然会承受巨大的并发压力，而此时，我们 的优化方式可以分为几个部分。在硬件基础资源的优化中，我们重点应该关注服务本身承载的体量，然后提出合理的指 标要求，避免出现资源浪费！MySQL 的性能优化主要在于对 SQL 执行的优化,因为慢的 SQL 执行会带来不好的用户。身的优化，一般是通过 Mysql 中的配置文件 my.cnf 来完成的，比如。，在读多写少的场景中，通过读写分离的方案，可以避免读写冲突导 致的性能影响。]]></description><category></category></item><item><title><![CDATA[聊一下面试题的记忆方法]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134393326</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134393326</guid><author>qq_42362007</author><pubDate>Tue, 14 Nov 2023 10:30:31 +0800</pubDate><description><![CDATA[另外，技术的学习和掌握更多地是一个积累的过程。在实际编写代码的过程中，我们并不是把每一行代码都背下来，而是根据已有的知识和经验，通过思考和查阅文档等方式来解决问题。虽然记忆这些知识是有帮助的，但更重要的是理解其背后的原理和概念。总结起来，记忆是技术学习的一部分，但更重要的是理解和实践。通过深入理解技术原理和不断实践，我们可以提高自己的技术水平，更好地应对各种技术问题和挑战。最后，技术的学习和掌握是一个持续的过程。在技术领域，记忆是重要的一部分，但并不是唯一的关键因素。技术的掌握更多地依赖于理解和实践。]]></description><category></category></item><item><title><![CDATA[死锁的发生原因和怎么避免]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134391226</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134391226</guid><author>qq_42362007</author><pubDate>Tue, 14 Nov 2023 10:05:22 +0800</pubDate><description><![CDATA[线程 T1 等待线程 T2 占有的资源，线程 T2 等待线程 T1 占有 的资源，就是循环等待。，线程 T1 已经取得共享资源 X，在等待共享资源 Y 的时候，不释放共享资源 X；(如图)，死锁，简单来说就是两个或者两个以上的线程在执行的过程中，争夺同一个共。按照死锁发生的四个条件，只需要破坏其中的任何一个，就可以解决，但是，互斥条件。越是底层的设计，对于知识面的要求就越多。当大家理解了死锁发生的条件，那么对于这些条件的破坏，]]></description><category></category></item><item><title><![CDATA[Spring Bean 生命周期的执行流程]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134376058</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134376058</guid><author>qq_42362007</author><pubDate>Mon, 13 Nov 2023 14:56:50 +0800</pubDate><description><![CDATA[Spring Bean 的生命周期，可以分为单例、多实例。这些类或者配置其实是 Spring 提供给开发者，用来实现 Bean 加载过程中的扩展机制，同时，在这个阶段会触发一些扩展的调用，比如常见的扩展类：BeanPostProcessors。这个阶段涉及到的操作，常见的有，`init-method`这个属性配置的方法， 会在这个阶。我记得 Bean 的生命周期会有加载、实例化、销毁这些阶段，其他的记得不是很清晰。（把这张图按照阶段截断，当我说第一个阶段时，就显示第一个阶段的图片，依次往后..）]]></description><category></category></item><item><title><![CDATA[关于“谈谈你对 ES 的理解”]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134375183</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134375183</guid><author>qq_42362007</author><pubDate>Mon, 13 Nov 2023 13:40:46 +0800</pubDate><description><![CDATA[它是建立在全文搜索引擎库 Apache Lucene 基础之上的一个开源的搜索引擎，也可以作为 NoSQL 数据库，存储任意格式的文档和数据。4. 第四、ES 提供的 Restful API，不仅简化了 ES 的操作，还支持任何语言的客户端。3. 避免深分页查询，ES 集群的分页查询支持 from 和 size 参数，查询的时候，每个。最好是先在 Java 系统。本期的普通人 VS 高手系列就到这里就结束了，喜欢的朋友一键三连，加个关注。体系非常庞大，你还想听哪些 ES 的相关内容，请在下方的评论区留言！]]></description><category></category></item><item><title><![CDATA[Spring 是如何解决循环依赖问题的？]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134335167</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134335167</guid><author>qq_42362007</author><pubDate>Mon, 13 Nov 2023 11:38:49 +0800</pubDate><description><![CDATA[第二种三者间依赖：A 依赖 B，B 依赖 C，C 又依赖 A，形成了循环依赖。第一种互相依赖：A 依赖 B，B 又依赖 A，它们之间形成了循环依赖。代理工厂来创建，此时会将创建好的实例保存到三级缓存，最终也会将赋值好的 Bean。本期普通人 VS 高手系列的视频就到这里就结束了，喜欢的朋友一键三连，加个关注，好的，看完高手的回答后，相信每位看完视频的小伙伴循环依赖有了更深刻的理解，，否则，便会标记该 Bean 存在循环依赖，的 Bean 的情况，不能解决循环依赖问题。，同时，加上标记是否存在循环依赖。]]></description><category></category></item><item><title><![CDATA[Redis 和 Mysql 如何保证数据一致性]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134337136</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134337136</guid><author>qq_42362007</author><pubDate>Fri, 10 Nov 2023 17:24:57 +0800</pubDate><description><![CDATA[（如图）在这样一个架构中，会出现一个问题，就是一份数据，同时保存在数据库和 Redis 里面，当数据发生变化的时候，需要同时更新 Redis 和 Mysql，由于更新是有先后顺序的，并且它不像 Mysql 中的多表事务操作，可以满足 ACID 特性。里面的数据是空的，就从数据库加载保存到 Redis 里面，那么数据是一致的。好的，好的，本期的普通人 VS 高手面试系列的视频就到这里结束了，喜欢的朋友记得。先不用慌，技术是为业务服务的，所以不同的业务场景，对于技术的选择和方案的设计。]]></description><category></category></item><item><title><![CDATA[程序员的“护城河”]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134331078</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134331078</guid><author>qq_42362007</author><pubDate>Fri, 10 Nov 2023 13:30:53 +0800</pubDate><description><![CDATA[4. 代码质量和安全意识：程序员应该注重编写高质量的代码，遵循规范和最佳实践，确保系统的稳定性和安全性。1. 技术能力的深度：程序员需要具备扎实的技术功底和深入的专业知识，能够熟练运用各种编程语言和开发工具，解决复杂的技术问题。2. 创新的追求：程序员应该具备创新思维和不断学习的精神，能够在解决问题的过程中提出新的想法和方法，推动技术的发展和进步。5. 解决问题的能力：程序员需要具备良好的问题分析和解决能力，能够快速定位和解决各种技术难题，保障系统的正常运行。]]></description><category></category></item><item><title><![CDATA[Spring Boot 中自动装配机制的原理]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134311729</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134311729</guid><author>qq_42362007</author><pubDate>Thu, 09 Nov 2023 15:09:39 +0800</pubDate><description><![CDATA[其实，自动装配的思想，在 SpringFramework3.x 版本里面的@Enable 注解，就有了。@Enable 注解是模块驱动的意思，我们只需要增加某个@Enable 注解，就自动打开某个功能，而不需要针对这个功能去做 Bean 的配置，@Enable 底层也是。在我看来，SpringBoot 是约定优于配置这一理念下的产物，所以在很多的地方，都会。它的出现，让开发人员更加聚焦在了业务代码的编写上，而不需要去。]]></description><category></category></item><item><title><![CDATA[能谈一下 CAS 机制吗]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134310426</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134310426</guid><author>qq_42362007</author><pubDate>Thu, 09 Nov 2023 14:35:03 +0800</pubDate><description><![CDATA[定义了一个方法 doSomething()，这个方法的逻辑是，判断 state 是否为 0 ，如果为。但是，加同步锁，会带来性能上的损耗，所以，对于这类场景，我们就可以使用 CAS。否则，返回 false，表示修改失败，而这个过程是原子的，不会存在线程安全问题。]]></description><category></category></item><item><title><![CDATA[b 树和 b+树的理解]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134293862</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134293862</guid><author>qq_42362007</author><pubDate>Wed, 08 Nov 2023 17:15:42 +0800</pubDate><description><![CDATA[个子树，子树的数量取决于关键字的数量，比如这个图中根节点有两个关键字 3 和 5，（如图），而 B 树是一种多路平衡查找树，它满足平衡二叉树的规则，但是它可以有多。（如图所示）这个是 B+树，B+树的所有数据是存储在叶子节点，并且叶子节点的数据。很明显，磁盘 IO 这个过程的性能开销是非常大的，特别是查询的数据量比较多的情况。a. B 树的数据存储在每个节点上，而 B+树中的数据是存储在叶子节点，并且通。二叉查找树，在二叉树的基础上增加了一个规则，左子树的所有节点的值都小于它的根。]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap 底层具体实现知道吗？实现原理是什么？]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134291634</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134291634</guid><author>qq_42362007</author><pubDate>Wed, 08 Nov 2023 16:36:52 +0800</pubDate><description><![CDATA[如果在并发性能和数据安全性之间做好平衡，在很多地方都有类似的设计，比如 cpu 的三级缓存、mysql 的 buffer_pool、Synchronized 的锁升级等等。在 JDK1.8 中，ConcurrentHashMap 锁的粒度是数组中的某一个节点，而在JDK1.7，锁定的是 Segment，锁的范围要更大，因此性能上会更低。ConcurrentHashMap 中有一个 size()方法来获取总的元素个数，而在多线程并发场景中，在保证原子性的前提下来实现元素个数的累加，性能是非常低的。]]></description><category></category></item><item><title><![CDATA[Dubbo 的服务请求失败怎么处理？]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134291376</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134291376</guid><author>qq_42362007</author><pubDate>Wed, 08 Nov 2023 15:49:56 +0800</pubDate><description><![CDATA[Dubbo 是一个 RPC 框架，它为我们的应用提供了远程通信能力的封装，同时，Dubbo。除此之外，Dubbo 还提供了更多的容错策略，我们可以根据不同的业务场景来进行选。要注意的是，默认基于重试策略的容错机制中，需要注意幂等性的处理，否则在事务型。这类的问题，并不需要去花太多时间去背，如果你对于整个技术体系有一定的了解，你。我记得， Dubbo 请求处理失败以后，好像是会重试。今天分享的面试题，几乎是 90%以上的互联网公司都会问到的问题。，服务消费者只发起一次请求，如果请求失败，就直接把错误抛出去。]]></description><category></category></item><item><title><![CDATA[什么叫做阻塞队列的有界和无界]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134288754</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134288754</guid><author>qq_42362007</author><pubDate>Wed, 08 Nov 2023 14:31:20 +0800</pubDate><description><![CDATA[1. （如图），阻塞队列，是一种特殊的队列，它在普通队列的基础上提供了两个附加。2. 其中，阻塞队列中能够容纳的元素个数，通常情况下是有界的，比如我们实例化一。3. 而无界队列，就是没有设置固定大小的队列，不过它并不是像我们理解的那种元素。有界队列就是说队列中的元素个数是有限制的，而无界对接表示队列中的元素个数没有。阻塞队列在生产者消费者模型的场景中使用频率比较高，比较典型的就是在线程池中，b. 当队列满了的时候，向队列中添加元素的生产者线程被阻塞，同时唤醒消费者。组的阻塞队列中能够容纳的元素个数。]]></description><category></category></item><item><title><![CDATA[Dubbo 的服务请求失败怎么处理？]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134282062</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134282062</guid><author>qq_42362007</author><pubDate>Wed, 08 Nov 2023 09:59:00 +0800</pubDate><description><![CDATA[5. 广播调用策略，逐个调用服务提供者集群，只要集群中任何一个节点出现异常，就 表示本次请求失败要注意的是，默认基于重试策略的容错机制中，需要注意幂等性的处理，否则在事务型。Dubbo 是一个 RPC 框架，它为我们的应用提供了远程通信能力的封装，同时，Dubbo。而对于 Dubbo 服务请求失败的场景，默认提供了重试的容错机制，也就是说，如果基。这类的问题，并不需要去花太多时间去背，如果你对于整个技术体系有一定的了解，你。，服务消费者只发起一次请求，如果请求失败，就直接把错误抛出去。]]></description><category></category></item><item><title><![CDATA[HashMap 是怎么解决哈希冲突的？]]></title><link>https://blog.youkuaiyun.com/qq_42362007/article/details/134281173</link><guid>https://blog.youkuaiyun.com/qq_42362007/article/details/134281173</guid><author>qq_42362007</author><pubDate>Wed, 08 Nov 2023 09:37:09 +0800</pubDate><description><![CDATA[b. Hash 表又叫做“散列表”，它是通过 key 直接访问在内存存储位置的数据结 构，在具体实现上，我们通过 hash 函数把 key 映射到表中的某个位置，来获 取这个位置的数据，从而加快查找速度。c. 所谓 hash 冲突，是由于哈希算法被计算的数据是无限的，而计算后的结果范围有限，所以总会存在不同的数据经过计算后得到的值相同，这就是哈希冲突。a. Hash 算法，就是把任意长度的输入，通过散列算法，变成固定长度的输出，这个输出结果是散列值。]]></description><category></category></item></channel></rss>