- 博客(28)
- 收藏
- 关注
原创 线程与进程的区别
进程(Process)是操作系统分配资源的基本单位。它包含了程序执行所需的所有资源,如代码、数据、文件描述符、内存空间等。每个进程都有其独立的内存空间和系统资源,这意味着进程之间是相互隔离的。进程之间的通信(IPC,Inter-Process Communication)需要通过特定的机制来实现,如管道、消息队列、共享内存等。独立性:进程拥有独立的内存空间和系统资源,互不干扰。并发性:操作系统可以同时运行多个进程,实现并发执行。动态性:进程在其生命周期内会经历创建、运行、阻塞、就绪和终止等状态变化。
2025-03-03 00:46:36
236
原创 联合索引(最左前缀原则)
联合索引,又称为复合索引,是指在数据库表的多个列上建立的索引。与单列索引不同,联合索引的排序依据是索引中列的顺序,即先按第一列排序,如果第一列相同,则再按第二列排序,以此类推。:当查询的列恰好是联合索引的一部分时,数据库可以直接从索引中获取数据,而无需访问表中的数据行,这称为覆盖索引。:在创建联合索引时,要确保不会与现有的单列索引或其他联合索引产生冗余。:数据库管理员应定期监控索引的使用情况,包括查询性能、索引命中率和索引碎片等。通常,这些列应该是查询条件中经常出现的列,或者是用于排序和分组的列。
2025-03-03 00:30:40
368
原创 了解什么是红黑树
红黑树和我们以前学过的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。不过自从红黑树出来后,AVL树就被放到了博物馆里,据说是红黑树有更好的效率,更高的统计性能。主要是AVL树在查询上有更好的性能,而红黑树在插入方面有更好的表现。红黑树因其高效性和自平衡特性,被广泛应用于需要频繁进行插入、删除和查找操作的场景中。这些特性确保了红黑树在插入和删除操作后依然保持近似平衡,从而保证了高效的查找性能。红黑树的删除操作相对复杂,因为删除节点可能会破坏树的平衡。
2025-03-03 00:11:31
916
原创 慢sql治理
慢SQL通常指的是执行时间超过合理阈值的SQL语句。这个阈值可以根据系统的实际情况进行设定,例如1秒或更长。慢SQL会导致系统响应时间延迟、资源占用增加、数据库连接池被占满、锁竞争增加等一系列问题,严重影响系统的稳定性和用户体验。慢SQL治理是一个持续的过程,需要不断地监控、分析和优化。通过启用慢查询日志、分析执行计划、优化索引和SQL语句、数据库分片与分区、优化数据库配置以及使用专业的治理工具等方法,可以有效地减少慢SQL的产生并提高数据库的性能。
2025-03-02 23:46:00
552
原创 HashMap如何实现线程安全
在Java中,HashMap本身是非线程安全的。如果在多线程环境下使用HashMap,可能会导致数据不一致和其他线程安全问题。
2025-03-02 21:33:29
238
原创 HashMap与HashTable的区别
HashMap和Hashtable各有优缺点,选择使用哪一个取决于具体的需求。在单线程环境中,如果追求高性能和低内存使用,HashMap是更好的选择。而在多线程环境中,如果需要线程安全的数据结构,则应选择Hashtable。开发者应根据实际应用场景和需求来选择合适的数据结构。在Java编程中,HashMap和Hashtable都是用于存储键值对的数据结构,但它们在多个方面存在显著的差异。本文将详细探讨HashMap与Hashtable的区别,以便开发者在实际应用中能够做出明智的选择。
2025-03-02 21:24:02
793
原创 Hashmap
HashMap是Java中一种非常强大且灵活的数据结构,它提供了高效的键值对存储和检索功能。通过理解其工作原理、掌握其使用方法以及注意其性能特点和注意事项,你可以更好地利用HashMap来优化你的Java应用程序。希望本文能帮助你深入理解HashMap,并在实际开发中灵活运用这一数据结构。
2025-03-02 21:21:29
789
原创 128陷阱
128陷阱”并非一个具体的编程错误或数学难题,而是一个象征性的说法,它代表着那些容易被忽视、难以预测且可能导致严重后果的隐蔽挑战。这些陷阱可能源于算法设计的微妙缺陷、数据处理的边界条件、思维模式的固化,或是生活中的人际交往、决策制定等方面。例如,在Java中,将大整数赋值给较小范围的数据类型时,会发生截断,导致数据丢失。对象时,如果缓存中已经有了对应的值,就会直接返回缓存中的对象,而不是创建一个新的对象。:多线程编程中,竞态条件、死锁和数据不一致等问题,如同隐藏在代码深处的陷阱,难以捉摸且破坏力巨大。
2025-03-02 21:11:58
300
原创 Java异常
掌握Java异常处理机制是成为高效Java开发者的重要一步。通过合理设计异常结构、精确捕获异常、妥善管理资源、记录日志以及避免滥用异常,你可以编写出更加健壮、易于维护和调试的代码。希望本文能帮助你深入理解Java异常处理,并在实际开发中灵活运用这些技巧。
2025-03-02 20:49:14
283
原创 Java类加载器
当一个类加载器需要加载一个类时,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成。每一层的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器(Bootstrap ClassLoader)中。在Java的世界里,类加载器(ClassLoader)是一个至关重要的组件,它负责在运行时动态地将Java类加载到JVM(Java虚拟机)中。通过深入理解类加载器的工作原理、类型以及应用,开发者可以更好地掌握Java应用的动态行为,实现更加高效、安全和可维护的Java应用。
2025-03-02 20:29:23
862
原创 Java中的Object类
对于对象集合的判重,如果一个集合含有100个对象实例,仅仅使用equals()方法的话,那么对于一个对象判重就需要比较4950次,随着集合规模的增大,时间开销是很大的。但是同时使用哈希表的话,就能快速定位到对象的大概存储位置,并且在定位到大概存储位置后,后续比较过程中,如果两个对象的hashCode不相同,也不再需要调用equals()方法,从而大大减少了equals()比较次数。所以从程序实现原理上来讲的话,既需要equals()方法,也需要hashCode()方法。
2025-02-28 23:29:32
300
原创 Java代理
在软件开发中,设计模式是解决常见问题的经典方案,而代理模式作为结构型设计模式的重要成员,广泛应用于各种场景中。无论是日志记录、权限校验,还是延迟加载、远程调用,代理模式都能在不修改原始代码的情况下,优雅地扩展功能。Java作为一门面向对象的编程语言,提供了多种实现代理的方式,包括静态代理和动态代理。本文将深入探讨Java代理模式的原理、应用及优化策略,帮助读者全面理解并掌握这一强大的设计模式。在Java中,代理模式是一种结构型设计模式,它给目标对象提供一个代理对象,并由代理对象控制着对目标对象的引用。
2025-02-28 23:18:30
555
原创 Java反射
Java反射机制虽然强大,但也需要谨慎使用。理解其工作原理和基本操作,结合实际应用场景合理设计,可以极大地提升开发效率和灵活性。希望本文能帮助你更好地掌握Java反射,并在实际项目中灵活运用。使用反射时需要注意安全问题,因为它可以绕过 Java 的访问控制机制。例如,可以访问私有字段或方法,因此在开发中使用反射要特别小心。
2025-02-28 23:03:55
689
原创 Java接口
使用 interface 关键字定义接口定义接口时,可以包含抽象方法和常量。实现接口的类需要提供这些方法的具体实现。// 定义接口// 实现接口的类@OverrideSystem.out.println("汪汪");@OverrideSystem.out.println("喵喵");
2025-02-28 22:52:28
670
原创 Java包装类
Java的包装类是将基本数据类型封装成对象的类。每个基本数据类型都有一个对应的包装类,它们位于java.lang包中。基本数据类型byte对应包装类Byte基本数据类型short对应包装类Short基本数据类型int对应包装类Integer基本数据类型long对应包装类Long基本数据类型float对应包装类Float基本数据类型double对应包装类Double基本数据类型char对应包装类Character基本数据类型boolean对应包装类Boolean。
2025-02-28 17:54:32
611
原创 java抽象类
抽象类,顾名思义,是一种不能实例化的类。它存在的主要目的是为了被其他类继承,从而提供一种模板或框架,让子类去实现具体的方法。抽象类中可以包含抽象方法(没有方法体的方法)和具体方法(有方法体的方法)。定义抽象类在Java中,使用abstract关键字来定义一个抽象类。// 抽象方法// 具体方法在这个例子中,Animal是一个抽象类,它包含一个抽象方法和一个具体方法eat()。抽象类是Java面向对象编程中的一个强大工具,它允许我们定义一种通用的模板或框架,让子类去实现具体的方法。
2025-02-28 11:10:50
402
原创 java中的多态
多态,简而言之,就是“一种接口,多种实现”。它允许程序在运行时根据对象的实际类型来调用相应的方法,而不是在编译时确定。这种特性使得我们可以使用父类的引用来指向子类对象,从而在运行时决定调用哪个子类的方法。多态是OOP中实现接口重用的重要手段,也是实现“开闭原则”(对扩展开放,对修改封闭)的关键。多态是Java面向对象编程中的核心概念之一,它极大地提升了程序的灵活性和可扩展性。通过理解多态的原理和实现方式,我们可以编写出更加模块化、易于维护和扩展的代码。
2025-02-28 10:14:57
624
原创 java中的继承
简单来说,就是子类继承父类的属性和行为,使得子类对象具有父类相同的属性和行为(除构造方法外,全部继承);(举例说明:相当于徒弟拜师学艺,师傅将自己的武功进行传授,这样,徒弟就继承了与师傅相同的武功,当然徒弟也可以对所学武功进行扩展);它是面向对象程序设计中代码复用采取的重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加新功能,以产生新的类,产生的新类又称为派生类,同时继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程;
2025-02-28 09:44:11
975
原创 java中的类与对象
class为定义类的关键字;ClassName是类的名字;{ }中的是类的主体类中包含的内容称为类的成员,可分为成员变量(也称为字段或成员属性)和成员方法,成员变量用来描述类具有哪些性质,成员方法用来描述类可实现的功能。
2025-02-27 10:08:12
391
原创 解决后端传递“success”,但前端收不到的问题
以此来判断是否后端向前端传递了error,在运行后发现并没有传递error,那就说明后端传递了success但前端接受错了,在询问了其他人得知前端。我删除了内容,同时数据中的表格内容也删除了,但是页面一直显示删除失败,所以我在后端。这样就解决了前端的接收问题了。这是前端有关删除的代码。
2025-01-11 21:45:52
190
原创 Mybatis一级缓存与二级缓存(结尾附完整代码)
-mybatis核心包-->--mysql驱动包-->-- 单元测试 -->-- 日志 --></project>
2024-11-15 13:49:11
832
原创 Mybatisx的使用
百利而无一害的帮助工具。不仅可以帮你创建select语句还可以创建Update、Delete、Insert语句,非常的方便。
2024-10-28 21:45:36
230
原创 Mybatis框架的好处
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。简单来说就是为了简化jdbc的操作。给出我们项目总的框架同时还要满足下列条件在这里我用了一个mybatis,mysql,junit以及一个log4j的依赖们
2024-10-28 20:47:23
642
原创 idea创建项目
其中xml需要改配置,1是需要该本地仓库的位置,2是需要更改镜像,为了更快捷的下载jar包,市面一般为阿里云的镜像。Groupld一般为公司的域名的倒置,Artifactld为你在公司的项目名。WEB包下放css等,WEB-INF是不能被外部所访问的。基本跟之前差不多最后会出现这个sucess就算是成功了。其中web.xml中的内容可以固定(注释已省略)可以选择此选项,也可以直接next。
2024-10-18 23:07:32
281
原创 类与对象的关系
类是对象的数据类型,由属性和行为构成,对象则是一个客观存在的实体。为了更好地描述类和对象之间的关系,我们举例来说明,买车时,我们想要了解到关于车的信息,此时,车便作为对象,而属性则为车子的品牌,价位,行为就是上路奔跑。总而言之,类是对于属性和行为的抽象,对象是真是存在的实体。2.在类当中有一个默认的不显示的无参数的构造器。一旦你在类当中写一个构造器,那么那个无参构造器就会被覆盖。1.在类当中构造函数必须与类名相同。4.一个类当中可以有多个构造函数。构造器创建一个类的实例化对象。3.构造器不需要写返回类型。
2024-08-26 15:29:25
224
原创 static关键字
static修饰的代码属于类,定义的变量存储在方法区的静态常量池当中。A{name='张三'address='上海'}A{name='李四'address='天津'}因为要方便类去使用自己的方法和变量。1.static关键字修饰变量。
2024-08-26 15:16:21
596
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人