
理论
文章平均质量分 76
java相关理论知识
影子落人间
机会是给有准备的人
展开
-
JAVA基础知识
序列化是将对象的状态转换为字节流的过程,以便可以将对象存储到文件中,或者通过网络传输对象。反序列化则是将字节流恢复为对象的过程。原创 2024-11-20 14:04:26 · 815 阅读 · 0 评论 -
Docker常用命令
-------------------------------------docker状态。#-------------------------------------docker帮助。#-------------------------------------镜像(增)#-------------------------------------镜像(查)#-------------------------------------镜像(删)原创 2024-10-21 17:05:57 · 656 阅读 · 0 评论 -
TCP连接的三次握手与四次挥手详解
TCP(传输控制协议)是实现可靠数据传输的重要协议之一。TCP协议的设计之初就考虑到了数据在传输过程中的可靠性和完整性,而三次握手和四次挥手就是实现这一目的的基础机制。原创 2024-10-11 19:18:55 · 793 阅读 · 0 评论 -
MyBatis 分页的实现方式
MyBatis 提供了多种分页方式,主要包括基于 List 结果集的分页、基于 SQL 参数的分页、基于 RowBounds 的分页以及基于插件的分页。下面将分别介绍这些分页方式的实现原理及步骤。原创 2024-10-10 20:23:51 · 1276 阅读 · 0 评论 -
MyBatis的动态标签详解
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis通过XML或注解的方式将对象与存储过程或SQL语句关联起来,以实现数据的持久化。MyBatis的强大特性之一是动态SQL,它允许根据不同的条件动态地构建SQL语句,从而避免了在代码中手动拼接SQL语句的复杂性,提高了代码的可读性和可维护性,并减少了SQL注入的风险。原创 2024-10-10 20:11:45 · 1285 阅读 · 0 评论 -
Synchronized锁的升级流程详解
在Java多线程编程中,synchronized关键字用于确保在同一时刻只有一个线程可以访问被锁定的资源,从而维护数据的一致性和安全性。然而,在多线程环境中,锁的频繁获取和释放会带来性能开销。为了提高性能,Java虚拟机(JVM)在JDK 1.6及以后的版本中引入了锁的升级机制,通过动态调整锁的策略来减少同步操作的开销。本文将详细解释synchronized锁的升级流程,包括无锁状态、偏向锁、轻量级锁和重量级锁四种状态及其转换过程。原创 2024-10-09 20:18:48 · 1583 阅读 · 0 评论 -
MySQL深度分页
在现代Web应用中,数据的逐步展示除了增强用户体验外,还有效提高了系统性能。然而,随着数据集的不断增大,尤其是在数据库表中记录数量达到百万甚至千万级别时,处理深度分页(即访问较后页的数据)就成为一个重要的挑战。本文将详细探讨MySQL中的深度分页,包括其内在机制、性能问题、优化策略及示例,以帮助开发者更有效地管理数据请求。原创 2024-09-30 16:00:11 · 803 阅读 · 0 评论 -
Redis五种基本数据结构的使用
查:获取hash的所有字段(hgetall)、获取特定的key值对应value(hget)、获取hash表长度(hlen)、查看hash中是否存在特定的key值对应的数据(hexists)、查看hash表所有key值(hkeys)、查看hash表所有value值(hvals)。Redis具有五种基本数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、SortedSet(有序集合),下面示意它们的使用。删:删除指定元素(srem key data)、随机删除元素(spop)原创 2024-09-18 22:44:39 · 618 阅读 · 0 评论 -
HashMap扩容机制,头插法和尾插法图解
HashMap的死循环只发生在JDK1.7版本中主要原因:头插法+链表+多线程并发+扩容,累加到一起就会形成死循环多线程下:建议采用ConcurrentHashMap替代JDK1.8,HashMap改用尾插法,解决了链表死循环问题,但是可能会数据覆盖。原创 2024-09-18 19:35:40 · 2074 阅读 · 0 评论 -
Linux常用命令大全
Linux系统中拥有大量的命令,这里列举一些常用的命令,覆盖了文件管理、系统监控、网络操作、用户管理。原创 2024-09-15 23:54:25 · 1170 阅读 · 0 评论 -
HashMap集合的扩容机制
3)如果该位置下的元素个数没有超过8,那么则生成一个链表,并将链表的头节点添加到新数 组的对应位置。2)如果该位置下的元素个数超过了8,则生成一个新的红黑树,并将根节点添加到新数组的对 应位置。4、如果是红黑树,则先遍历红黑树,先计算出红黑树中每个元素对应在新数组中的下标位置。3、获取每个元素的key,并基于新数组长度,计算出每个元素在新数组中的下标。3、如果是链表,则直接将链表中的每个元素重新计算下标,并添加到新数组中去。2、遍历老数组中的每个位置上的链表上的每个元素。原创 2024-09-10 23:51:05 · 286 阅读 · 0 评论 -
JAVA自定义异常
在调用可能抛出自定义异常的方法时,使用 try-catch 块捕获异常。try {throw new CustomException(e,"转换失败");// ......控制台打印结果自定义异常提供了更具体的错误消息、更灵活的异常处理逻辑以及更好的代码可读性和可维护性。合理地使用自定义异常可以提高Java应用程序的质量和健壮性。原创 2024-09-11 09:49:27 · 320 阅读 · 0 评论 -
JAVA自定义注解
JAVA提供了4个元注解来定义自定义注解,但是通常只用两个元注解来满足基本的条件。指定注解作用范围(比如说:该注解是作用在类上,还是方法,或者是属性上等等)指定注解的生命周期(也就是注解的保留时间,是在编译器有效,还是运行时有效等等)是一个标记注解,里面没有任何属性,用 @Documented 注解修饰的注解类会被 JavaDoc 工具提取成文档。(不常用,可选项)一个标记注解,,没有定义属性,作用是为了表示该注解可以被继承。(不常用,可选项)/**原创 2024-09-11 19:02:03 · 542 阅读 · 0 评论