- 博客(67)
- 收藏
- 关注
原创 QuickList
Redis在3.2版本引入数据结构,是一个双端链表,每个节点都是一个ZipList。引入的原因:ZipList申请内存空间是连续的,如果内存占用较多,申请内存效率很低。1:QuickList的首位各有1个节点不压缩,中间节点压缩。2:QuickList的首位各有2个节点不压缩,中间节点压缩。值未负:代表ziplist的内存大小 默认值: -2。可以限制ziplist的大小。值为正:代表entry个数。可以对ziplist做压缩。思想:属于分片存储的思想。
2025-05-12 16:51:06
202
原创 volatile缓存可见性实现原理
MESI 协议确保了当一个缓存行的状态发生变化时(例如,被标记为“已修改”或“无效”),其他缓存中的相应数据也会被更新或标记为失效。架构中,每个核心都有自己的缓存(Cache),而主内存是所有核心共享的。当一个线程在某个核心上修改了一个共享变量时,这个修改可能只会更新到该核心的缓存中,并不会立刻写回到。底层是通过汇编lock前缀指令,它会锁定这块内存区域的缓存(缓存行锁定),并回写到主内存。其他核心上的线程读取这个变量时,可能会从它们自己的缓存中读取旧值,而不是最新的值。
2025-04-25 17:24:00
450
原创 MySQL锁
出现在Repeatable read 级别, 进行范围查询时,会锁住范围之间的内容,即使之间没数据,且在其她事务在范围内进行插入/删除操作时是操作不了的。意向锁:表锁,无需手动加,在加行锁(共享锁/排他锁)之前,InnoDB会先加一个意向锁,是为了提醒那些要全量查询的语句,不要浪费时间了,等着吧。如果范围的是包含表的最后一行数据,则比最后一行数据大的所有数据插入也是加不成功的。加在select 语句之后会强制加上排他锁。
2025-04-25 17:08:43
251
原创 双重检查锁DCL对象半初始化问题?
对象半初始化问题的根本原因是指令重排序,可能导致线程看到未完全初始化的对象。解决方法包括:使用 volatile 关键字禁止指令重排序。使用静态内部类实现单例模式。使用 enum 实现单例模式(推荐)。
2025-04-25 16:42:00
790
原创 JDK 1.7 和 JDK 1.8 中 ConcurrentHashMap 的底层实现差异对比
JDK 1.7 的 ConcurrentHashMap 采用分段锁机制,将哈希表划分为多个 Segment,每个 Segment 独立加锁,降低了锁竞争,但并发度受限于 Segment 数量。其哈希冲突处理仅支持链表,极端情况下查询复杂度退化为 O(n)。JDK 1.8 的 ConcurrentHashMap 摒弃了分段锁,改为对单个桶加锁,结合 CAS 实现无锁化插入,并发度与桶数量动态关联。引入红黑树优化哈希冲突处理,查询复杂度优化为 O(\log n)。
2025-04-17 17:30:53
758
原创 spring面试题
根据当前环境(如类路径、已有 Bean、配置文件)动态决定是否启用配置。:Maven/Gradle 自动下载 Starter 及其所有传递依赖。的核心机制,能快速集成特定功能模块,无需手动配置复杂依赖和xml文件。:若条件满足,自动创建 Bean(如数据源、模板引擎)。,加载 Starter 中的自动配置类。:Spring Boot 启动时扫描。:在项目中添加 Starter(如。Starter是一种。
2025-04-15 11:57:49
160
原创 MySQL8的索引跳跃扫描原理
索引跳跃扫描(Index Skip Scan)是 MySQL 8.0.13 引入的一种优化技术,允许在某些情况下跳过联合索引的最左前缀字段,仍然可以利用联合索引进行查询。7. 如何查看是否使用了索引跳跃扫描?在传统的 B-Tree 索引中,查询条件必须遵循“最左前缀匹配原则”,即查询条件必须包含联合索引的第一个字段,才能有效利用索引。• 联合索引的非最左前缀字段查询:查询条件中不包含联合索引的第一个字段,但包含后续字段。• 查询字段必须是索引中的列:查询的字段必须是联合索引中的列,否则无法利用索引。
2025-04-10 18:27:51
450
原创 truncate,drop,delete分析
• DELETE :用于删除表中满足特定条件的数据,可恢复,逐行删除,性能较低,触发触发器。• TRUNCATE :用于快速清空表中的所有数据,保留表结构,性能高效,不可恢复。• 如果需要清空表中的所有数据,但保留表结构,使用 TRUNCATE。• DROP :用于删除整个表及其所有数据和结构,性能高效,不可恢复。• 如果需要删除表中满足特定条件的数据,使用 DELETE。• 如果需要删除整个表及其所有数据和结构,使用 DROP。**是否保留表结构**
2025-04-10 17:59:16
356
原创 深度分页及优化建议
深度分页是指在分页查询中,当用户请求非常靠后的页面时,数据库需要处理大量数据,导致查询性能显著下降的情况。例如,一个查询结果有 100 万条记录,而用户要查询第 999 页(每页 10 条记录),这就需要跳过前面 9980 条记录,这种场景就属于深度分页。```sql```这种方法的前提是主键必须自增,且前端需要传递上一页的最大主键`maxId`。此方法不支持随机跳页,只能上下翻页。
2025-04-10 17:34:44
427
原创 cookie和session哪个生成的时间早
在实际应用中,Session 的创建先于 Cookie 的生成。服务器先创建 Session 并生成 Session ID,然后通过 Cookie 将 Session ID 发送给客户端,客户端存储 Cookie 并在后续请求中携带它,以便服务器识别用户的会话状态。
2025-04-10 15:23:54
320
原创 Java面试题总结
因此,除非是在进行非常精细的性能调优或者了解具体的调度行为对应用有直接影响的情况下,一般不会频繁使用 sleep(0) 或 yield()。并发:某个时间段内处理多个任务的思想,这些任务不是真正的同一时刻的任务执行,而是通过cpu的快速切换,使得宏观(逻辑上)看起来是同时执行的。yield是直接让此线程再次进入可运行状态,参与与其他同优先级的线程的cpu资源竞争,不需要设置参数,此方法属于提示性方法,无强制性。,让其他等待的任务有机会执行,在多线程,多任务环境可以提高程序效率。
2025-04-02 22:01:58
497
原创 为什么现在项目的实体类属性用Integer而不用int
Integer是包装类可以存储null值,数据库中的整数字段可能允许null值,如果实体类使用int,int会被初始化为0,会无法区分无值和值为0的情况。,不能直接存储基本数据类型,如果实体类的属性是int,在存入集合时需要自动进行装箱为Integer,增加不必要的性能开支。:框架要求实体类的属性是引用类型,可以更好的处理数据库中null值,使用Integer可以正确的进行映射。:可根据条件进行某个字段的赋值,使用int,即使不赋值,也会有一个默认0,可能不符合业务要求。:泛型只支持引用类型。
2025-04-01 12:20:54
213
原创 分布式服务的熔断和降级
防止故障扩散的一种策略,服务出现故障时(即一个服务在某个时间段内被请求的失败次数达到一定的比例)调用方会暂停对该服务的继续调用,是对微服务雪崩的一种链路保护机制。:并发高峰期,由于服务器的资源有限,为保证核心功能的可用性,对某些非核心的功能进行进行关闭或者简化处理,保证核心功能的可用性。2,管理的·目标层次的不一样,熔断属于框架层次处理,降级属于业务层次。1,触发原因不一样,熔断属于某个服务,降级是基于对整体的考虑。熔断和降级是分布式系统中的保障稳定和可靠性的重要机制。:请求超过某个阈值的拒绝策略。
2025-03-26 22:03:58
194
原创 为什么不建议使用Executors 类提供的线程池
线程池是一种管理和复用技术:是为了减少创建和销毁线程的开销,可以限制并发线程数量,防止资源耗尽,统一管理监控线程的状态和执行。
2025-03-25 01:28:56
415
原创 spring和maven
提供的功能有:一依赖注入、面向切面编程、事务管理、测试等Spring框架的核心是IoC容器,负责管理应用程序对象和生命周期。在进行项目开发时兼顾项目管理的工作(添加依赖包,编译源码,单元测试,项目部署)等操作就称为项目构建(让程序员专注于编写代码)1,Maven是Apache软件基金会组织维护的一款自动化构建工具,专注于Java平台的项目构建和依赖管理。程序员构建基于spring的应用程序时,通常会使用Maven来管理项目依赖和构建流程。他们经常一起使用来构建和管理企业级应用。编译-测试-打包-部署。
2025-03-24 22:42:50
876
原创 MySQL/索引
3,全文索引:可在字符列上创建(TEXT,CHAR,VERCHAR)支持MyISAM和InnoDB,自然语言搜索。:基于哈希表实现,只支持等值查询 ,只有Memory存储引擎和NDB Cluster存储引擎显示支持哈希索引。唯一性:一个表只能有一个聚集索引,因为数据行按照一个特定的顺序进行物理存储。主键与聚集索引:通常聚集索引就是表的主键 在InnoDB引擎中。决定表中数据的物理存储顺序,索引结构和数据存储在一起。物理排序:数据行按照聚集索引键值的顺序存储在磁盘。
2025-03-11 16:06:16
297
原创 this和super的使用场景
3,调用当前类的构造器方法: 在同一个类中,一个构造器内调用另一个构造器方法。2,调用当前类的方法,如果子类重写了父类的方法,在子类中可以通过。1,引用当类的实例变量:局部变量和实例变量同名时,可用来区分。调用当前类版本的方法。不过这种情况较少见,因为直接调用即可。1,引用父类实例变量 :在子父类中有相同实例变量时。都不能在静态方法如main中使用。4,返回当前对象实例:用于链式调用。3,调用父类构造函数。
2025-03-07 17:11:28
190
原创 Spring事务的传播级别
7,NESTED : 没有事务,创建一个新事务,有事务则嵌套在这个事务中运行(嵌套事务)类似REQUIRED;1,REQUIRED :如果当前存在事务,则加入事务,不存在则新创建一个事务。4,REQUIRES_NEW : 创建一个新事务,如果当前事务存在则暂停(挂起)当前事务。5,NOT_SUPPORTED :只能以非事务方式运行,如果存在事务,则挂起事务。2,SUPPORTS : 如果当前存在事务则加入事务,不存在则以非事务方式运行。3,MANDATORY :强制事务执行,事务不存在抛异常。
2025-03-07 14:19:38
160
原创 Freemarker是一款 模板引擎
SpringBoot整合FreeMarker生成word表格文件(使用FTL模板)Freemarker基本指令语法和集合指令语法
2024-12-27 10:40:51
112
原创 安装postgreSQL后登录报错
C:/Program Files/PostgreSQL/17/data/pg_hba.conf 文件 最后几行。框中的地方在添加本机ip的时候可能删除了一部分字段,所以报错了,加上就好了。2,添加本机ip 就可以使用本机ip进行数据库连接了。报错意思已经很明确了。
2024-11-28 14:07:35
245
原创 在线解析工具链接
字数统计,字符统计,字节统计,字数计算,统计字数,统计字节数,统计字符数,统计word字数,在线字数统计,在线查字数,计算字数,字数统计工具,支持手机移动端查询多少字数,英文:Calculate the number of words,Count the number of words.json解析视图查看器工具:提供json解析工具,json视图查看器,json在线视图,视图支持json解析,json格式化校验,可控制缩进量的Json在线解析工具,json视图工具大全。
2024-11-22 14:53:00
541
原创 svn拉下来的项目启动报错
E:Application.java:5:46 java: 程序包org.springframework.boot.autoconfigure不存在 Application.java:6:46 java: 程序包org.springframework.context.annotation不存在 Application.java:12:2 java: 找不到符号 符号: 类 SpringBootApplication。设置好之后,File -> Invalidate Caches…
2024-08-20 15:41:11
243
原创 mysql索引相关命令
命令来查看表上的索引信息。这可以帮助您确认索引是否存在。如果您想要保留索引以备将来重建,您可以使用。在MySQL中,您可以使用。为您的MySQL用户名,
2024-08-20 11:50:03
269
原创 mysql创建quartz定时任务相关表sql
-存储Cron触发器的cron表达式和其他信息。--接下来,创建索引以提高性能;--存储简单触发器的额外属性。--存储复杂触发器的简单属性。--存储触发器的blob数据。--存储已触发的触发器信息。--存储调度器的状态信息。--存储暂停的触发器组。--存储触发器信息。
2024-08-20 11:26:26
818
原创 plsql 断网恢复后连接超时
是 Oracle 提供的一个命令行工具,用于管理和控制监听器。你可以使用它来启动、停止监听器以及检查其状态。3,要确定你的 TNS 服务名,你需要查看 Oracle 客户端配置文件。是你所使用的 TNS 服务名。
2024-07-30 11:10:00
463
原创 @RequestParam和@PathVariable 处理 HTTP 请求参数的注解
可解析前端get请求路径后以问号拼接的参数,查询参数是 URL 后面的问号 (// 在这里,name 和 age 将从 URL 的查询参数中获取。将 URL 路径中的变量绑定到控制器方法的参数上。可以设置参数是否是必需的(使用。) 后跟的一系列键值对,
2024-07-24 09:17:42
705
原创 String 类 判断null或者空字符串
Apache Commons Lang 库的一部分,它提供了一个方便的方式来检查集合(如 List, Set 或 Map)是否为空或为。是 Apache Commons Lang 库中的一个实用方法,用于检查一个字符串是否为。方法是在 Java 7 中引入的。) 或仅包含空白字符(如空格、制表符、换行符等)检查一个字符串是否为空或仅包含空白字符。{ // 字符串是null或空字符串 }类中,用于检查给定的对象是否为。// 字符串是null或空字符串。类引入了一个新的方法。
2024-07-23 15:57:03
329
原创 @JsonFormat注解的作用
将这些Java对象转换为JSON字符串(序列化)或从JSON字符串转换回Java对象(反序列化)时改变日期的格式。- 该注解仅在使用如Jackson这样的JSON处理库时生效,而不会影响数据库操作本身。- 如果你期望客户端能够发送符合特定格式的日期,你需要确保客户端知道并遵循该格式。- 在反序列化时,提供的JSON日期字符串必须与。指定的模式兼容,否则可能抛出异常。
2024-07-19 10:00:35
423
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人