- 博客(16)
- 收藏
- 关注
原创 【线程】线程启动方法详解
Java线程启动机制解析:Thread.start()方法通过调用native方法start0()请求操作系统创建原生线程(如Linux的pthread_create或Windows的CreateThread),将线程状态设为就绪态。start0()由JVM底层C/C++实现,负责线程对象与系统线程的绑定。注意调用start()后线程进入可运行状态,实际执行时机由CPU调度决定,而非立即执行。方法包含线程状态检查(threadStatus!=0时抛出异常)和线程组管理逻辑,确保线程创建过程的可靠性。
2025-07-26 14:43:55
72
原创 【Mysql+Redis】如何通过mysql或者redis实现一个排行榜
sorted set中的每个元素(member)都关联着一个分数(score),redis会根据分数自动对成员进行排序。:在分布式系统中,如果多个节点对sorted set进行写操作,则需要通过redis集群或者分布式锁等手段来保证数据的一致性,否则可能出现竞态条件。:添加、删除、更新成员的分数时间复杂度只有O(logN)(N是集合中的成员数量),获取排名和指定分数范围的成员等操作也非常高效。:虽然支持范围查询,但如果频繁的遍历整个集合(全量导出),性能可能不如专门用于遍历的数据结构(例如List)
2025-07-24 17:09:16
134
原创 【Redis】Redis持久化机制,RDB和AOF
Redis 的持久化机制和是保证数据不丢失的核心功能,但两者的实现原理、性能开销和适用场景差异显著。把一次性保存成一个,默认文件名dump.rdb。
2025-07-23 10:54:22
1130
原创 【Java基础】private、static、final关键字作用,Java类加载过程
的类加载器(ClassLoader)协同完成。三大阶段组成,其中连接又细分为。这三个关键字组合在一起时,从。Java 的类加载过程是从。
2025-07-22 10:46:47
506
原创 【Redis】如何保证数据库缓存一致性
在更新数据库后,先删除缓存,再延迟几百毫秒(根据业务耗时调整)再次删除缓存,确保并发读操作拉取到最新数据后,旧缓存被彻底清除。:某个 Key 被高频访问(如秒杀商品库存),导致缓存击穿(缓存失效瞬间大量请求穿透到数据库)。:写操作性能低(需等待数据库更新完成),不适合高并发写场景。:直接读缓存(缓存未命中则从数据库加载并写入缓存)。:解耦数据库和缓存,支持异步更新,适合大规模系统。:缓存和数据库始终同步,读操作永远获取最新数据。:强耦合数据库和缓存,触发器性能可能影响数据库。要求高,写操作频率较低。
2025-07-22 10:44:33
962
原创 【Mysql】mysql分层+mysql优化
MySQL知识总结:MySQL分为连接层、服务层(核心)和存储引擎层。存储引擎包括InnoDB(支持事务)、MyISAM(高性能)等。SQL优化建议:1)索引优化,但要避免函数操作、运算等导致失效;2)避免SELECT*,使用JOIN替代子查询;3)减少函数和表达式使用;4)批量操作数据;5)合理设计表结构。其他优化包括缓存(Redis/Memcached)和定期分析查询性能。优化核心是减少I/O和CPU消耗,提高查询效率。
2025-07-14 10:53:49
781
原创 【Java基础】线程的三种实现方式详解(底层实现原理)
Java线程实现方式与原理总结 Java线程有三种实现方式: 继承Thread类 实现Runnable接口 实现Callable接口 线程是进程的执行单元,具有优先级但默认并行执行。start()方法会启动新线程,而直接调用run()是顺序执行。Thread.start()通过调用native方法start0()创建原生线程,具体执行由CPU调度决定。Runnable接口实现采用静态代理模式,Thread类作为代理对象执行真实对象的run方法。 线程生命周期包括:新建、就绪、运行、阻塞和死亡状态。常用方法有
2025-07-11 10:39:57
456
原创 【Java基础】栈内存和堆内存,链表、数组、队列、栈
文章摘要:本文介绍了两种内存分配方式(栈和堆)以及四种数据结构(链表、数组、队列和栈)。栈内存由操作系统自动管理,存储函数调用帧,速度快但空间小;堆内存需手动分配,空间大但管理复杂。链表适合动态数据,数组适合随机访问;队列遵循FIFO原则,适用于任务调度;栈遵循LIFO原则,适用于函数调用和DFS算法。每种结构各有优缺点,应根据具体场景选择使用。
2025-07-10 09:36:17
841
原创 【Java基础】集合——Collection(各类型的特点)
Java集合框架主要分为Collection和Map两大类。Collection包含List、Set、Queue三种子类型: List接口实现类包括: ArrayList:动态数组实现,查询快(O1)但增删慢(On) LinkedList:双向链表实现,增删快(O1)但查询慢(On) Vector:线程安全的ArrayList,但性能较低 Set接口实现类包括: HashSet:基于HashMap,无序高效(O1) LinkedHashSet:保持插入顺序 TreeSet:基于TreeMap,自动排序(Ol
2025-07-09 14:47:12
1063
原创 【Docker】Docker快速入门(docker安装(linux+window)、docker基础命令)
新手快速入门安装docker,了解docker基础命令
2025-04-22 17:15:34
516
原创 【Spring】SpringBoot实现接口测试的多种方式
适合测试Controller接口,模拟HTTP请求。(已在你的pom.xml中):</</</</适合测试真实HTTP请求(需要启动嵌入式服务器)。轻量级测试,只加载Controller相关Bean。适合微服务场景,定义接口契约。</</</</虽然不属于自动化测试,但开发阶段常用。
2025-04-15 16:32:30
1636
原创 【蓝桥杯】蓝桥杯拉马车问题——简单解决思路(模拟)
拉马车是一种经典纸牌游戏,本文通过Java代码实现其核心逻辑。游戏规则如下:两名玩家轮流出牌当牌堆中出现与当前打出的牌相同的牌时,玩家收取两者之间的所有牌(含相同牌)收取的牌需要反序添加到玩家手牌末尾当一方手牌耗尽时游戏结束。
2025-04-10 14:54:06
364
原创 【Mybatis】Mybatis入门
它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低什么是ORM?Object Relation Mapping,对象关系映射。对象指的是Java对象,关系指的是数据库中的关系模型,对象关系映射,指的就是在Java对象和数据库的关系模型之间建立一种对应关系,比如用一个Java的Student类,去对应数据库中的一张student表,类中的属性和表中的列一一对应。
2024-12-11 09:30:27
1112
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅