什么情况下消息会成为死信 ?
当一个队列中的消息满足下列情况之一时,就会成为死信(dead letter): ● 消费者使用basic.reject或 basic.nack声明消费失败,并且消息的requeue参数设置为false ● 消息是一个过期消息,超时无人消费 ● 要投递的队列消息满了,无法投递
什么情况下索引会失效 ?
MySQL 索引通常是被用于提高 WHERE 条件的数据行匹配时的搜索速度,编写合理化的SQL能够提高SQL的执行效率 1. 不要在列上使用函数和进行运算 2. 不要在列上使用函数,这将导致索引失效而进行全表扫描。 3. 尽量避免使用 != 或 not in或 <> 等否定操作符 4. 尽量避免使用 or 来连接条件 5. 多个单列索引并不是最佳选择,建立组合索引代替多个单列索引, 可以避免回表查询 6. 查询中的某个列有范围查询,则其右边所有列都无法使用索引优化查找 7. 索引不会包含有NULL值的列 8. 当查询条件左右两侧类型不匹配的时候会发生隐式转换,隐式转换带来的影响就是可能导致索引
什么叫覆盖索引
覆盖索引是指只需要在一棵索引树上就能获取SQL所需的所有列数据 , 因为无需回表查询效率更高 实现覆盖索引的常见方法是:将被查询的字段,建立到联合索引里去。 执行如下查询语句 : select name,age from user where name='Alice' 因为要查询 name和 age二个字段 , 那么我们可以建立组合索引 create index index_name_age on user(name,age) 那么索引存储结构如下 : 这种情况下, 执行select name,age from user where name='Alice' , 会先根据name='Ali
java常见的集合类有哪些
Map接口和Collection接口是所有集合框架的父接口: 1. Collection接口的子接口包括:Set接口和List接口 2. Map接口的实现类主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap以及 Properties等 3. Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等 4. List接口的实现类主要有:ArrayList、LinkedList、Stack以及Vector等
加锁的方式有哪些 ?
使用synchronized关键字 使用Lock锁 synchronized和Lock有什么区别 ? 首先synchronized是Java内置关键字,在JVM层面,Lock是个Java类; synchronized 可以给类、方法、代码块加锁;而 lock 只能给代码块加锁。 synchronized 不需要手动获取锁和释放锁,使用简单,发生异常会自动释放锁,不会造成死锁; 而 lock 需要自己加锁和释放锁,如果使用不当没有 unLock()去释放锁就会造成死锁。 通过 Lock 可以知道有没有成功获取锁,而 synchronized 却无法办到。
== 和 equals 的区别是什么
== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数 据类型 == 比较的是值,引用数据类型 == 比较的是内存地址) equals() : 它的作用也是判断两个对象是否相等。
HashMap的实现原理?
HashMap的数据结构: HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。 HashMap 基于 Hash 算法实现的 1. 当我们往HashMap中put元素时,利用key的hashCode重新hash计算出当前对象的元素在数 组中的下标 2. 存储时,如果出现hash值相同的key,此时有两种情况。 a. 如果key相同,则覆盖原始值; b. 如果key不同(出现冲突),则将当前的key-value放入链表中 3. 获取时,直接找到hash值对应的下标,在进一步判断key是否相同,从而找到对应值。 HashMap JDK1.8之前 JDK1.8之前
凌晨急诊室诞生的疫苗系统:一个宝妈的AI破局之路
本文分享了一位妈妈在急诊室经历后,将技术与母爱结合的心路历程。从凌晨抱着高烧儿子就医,同时处理工作告警的崩溃时刻,到意识到妈妈和程序员都是“运维工程师”,作者逐步构建了宝宝疫苗管理系统。文章介绍了系统从静态命令行工具升级为动态智能预警系统的全过程,包括环境搭建、核心代码解析及家庭协同功能实现,并总结了碎片时间开发法与防坑指南。最终,作者通过技术赋予母爱温度,为其他妈妈提供了实用资源包,展现了代码背后的人文关怀。
通义灵码2.0评测报告
通义灵码是一款强大的编程助手,首次使用是在参加天池大赛云原生编程挑战赛时。它以插件形式集成于IDE中,极大简化了理解项目的过程。只需基于代码提问,即可快速获取相关信息,大大提高了开发效率。近期推出的2.0版本支持Deep Seek模型,AI程序员功能更加强大,提供上下文和需求解析,使编程更加便捷高效。随着AI在各行业的普及,掌握AI工具成为程序员不可或缺的技能。加油!