- 博客(12)
- 收藏
- 关注
原创 Java线程池的作用
Java中的线程池通常通过ExecutorService接口来实现,可以使用Executors工厂类来创建不同类型的线程池,如newFixedThreadPool()、newCachedThreadPool()、newSingleThreadExecutor()等。通过合理配置线程池参数,可以根据应用需求来提高程序的性能和效率。提高性能:线程池中的线程可以被重复利用,避免了线程创建和销毁的开销,从而提高了程序的性能。管理任务:线程池可以管理等待执行的任务队列,按照设定的策略执行任务,如先进先出、优先级等。
2024-02-29 16:18:39
281
原创 Java创建多线程
2.实现Runnable接口:创建一个实现了Runnable接口的类,实现run()方法来定义线程执行的任务。然后,创建一个Thread对象,将实现了Runnable接口的类作为参数传递给Thread对象,并调用start()方法启动线程。1.继承Thread类:创建一个新的类并继承Thread类,然后重写run()方法来定义线程执行的任务。最后,创建该类的实例并调用start()方法启动线程。
2024-02-29 16:15:24
205
原创 注解的实例化和注册
当Spring扫描到一个带有@Service注解的类时,它会根据配置的组件扫描规则自动实例化该类,并将其注册到Spring容器中。这意味着在应用程序启动时,Spring会自动识别@Service注解,并为标记的类创建实例,并将这些实例添加到Spring容器中,以便在需要时进行依赖注入和管理。除了@Service注解外,Spring还提供了其他一些元数据注解,如@Repository、@Controller和@Component等,它们都有不同的作用和用途。
2024-01-27 18:44:22
61
原创 spring组件扫描规则
指定包含特定类的包:使用@ComponentScan注解的basePackageClasses属性来指定需要扫描的特定类所在的包及其子包,例如:@ComponentScan(basePackageClasses = {ExampleService.class})。在Spring中,可以使用@ComponentScan注解来指定组件扫描规则,以告诉Spring框架在哪些包下搜索带有特定注解的类,并将其注册为Spring容器的组件。
2024-01-27 18:40:54
145
原创 MySQL 最左前缀原则
举例来说,假设有一个复合索引 (col1, col2, col3),如果查询条件中只涉及到 col1,那么索引可以被用于加速查询。但如果查询条件中只涉及 col2 或 col3,那么索引就无法被用于加速查询,因为 MySQL 会遵循最左前缀原则,只使用索引的最左边的列。在 MySQL 中,最左前缀原则通常是指在使用索引时,索引的最左前缀会被用于匹配查询条件。在设计表结构和索引时,需要考虑到最左前缀原则,以确保能够充分利用索引的性能优势。
2024-01-10 15:46:42
598
原创 HashMap扩容
当向 HashMap 中添加元素时,如果元素数量达到了桶的负载因子(默认情况下是 0.75),HashMap 将会进行扩容操作。HashMap 的扩容机制是指在哈希表中的数据量增加时,会自动扩大哈希表的容量以保持性能和效率。但是,扩容操作也会带来一定的开销,因为需要重新计算哈希值并将元素重新分布到新的桶数组中。因此,在使用 HashMap 时,可以通过调整初始容量和负载因子来优化性能,以减少扩容操作的频率。将原来的桶数组中的所有键值对重新分配到新的桶数组中。创建一个新的、更大的桶数组。
2024-01-10 15:34:11
357
原创 ArrayList 和 LinkedList
在 ArrayList 中,插入和删除元素的操作可能会导致数组的重新分配和数据的复制,因此在列表的中间或开头进行插入和删除操作时可能会比较耗时。综上所述,ArrayList 适合需要频繁访问元素的场景,而 LinkedList 适合需要频繁插入和删除元素的场景。LinkedList 在存储大量数据时可能会占用更多的内存空间,因为它需要为每个元素额外存储指向前后元素的指针。在 LinkedList 中,插入和删除元素的操作更加高效,因为它只需要调整链表中相邻元素的指针。
2024-01-10 15:28:21
458
原创 ==和equals
而 “equals” 方法是用于比较两个对象的内容是否相同。通常情况下,“equals” 方法是在类中被重写以比较对象的内容,而不是引用。例如,对于字符串对象,“equals” 方法会比较字符串的内容是否相同。在Java中,“==” 是用于比较两个对象的引用是否相同,也就是比较它们是否指向内存中的相同位置。换句话说,它用于检查两个对象是否是同一个对象。“equals” 方法用于比较对象的内容是否相同。在使用时需要根据具体的需求选择合适的比较方式。“==” 用于比较对象的引用是否相同。
2024-01-10 15:23:32
307
原创 List和Set的区别
总的来说,List适合存储有序的、可以包含重复元素的数据集合,而Set适合存储唯一的、无序的数据集合。Set是无序的数据结构,其中的元素没有特定的顺序,因此无法通过索引来访问元素。List是有序的数据结构,其中的元素按照它们被添加的顺序进行存储和访问。Set通常是基于哈希表或红黑树实现的,以确保其中的元素是唯一的。在大多数编程语言中,List通常是基于数组或链表实现的。List中可以包含重复的元素,同一个元素可以出现多次。Set中不允许包含重复的元素,每个元素都是唯一的。
2024-01-09 21:57:42
487
原创 HashMap和Hashtable的区别
HashMap和Hashtable都是用于存储键值对的数据结构,它们之间的主要区别在于线程安全性和性能。这意味着在多线程环境中,Hashtable可以直接使用而无需担心同步问题,而HashMap需要额外的同步措施来确保线程安全。HashMap是非线程安全的,不适合在多线程环境中使用,如果需要在多线程环境中使用,可以使用Collections.synchronizedMap方法来创建一个同步的HashMap。Hashtable是线程安全的,它的方法都是同步的,因此可以直接在多线程环境中使用。
2024-01-09 21:49:14
297
原创 Java中抽象类和接口之间有几个重要的区别
抽象类可以包含成员变量和非抽象方法的实现,而接口只能包含常量和抽象方法的声明。抽象类在设计时用于建模"is-a"关系,而接口用于建模"has-a"关系。抽象类的方法可以有访问修饰符,而接口的方法默认为public。一个类只能继承一个抽象类,但可以实现多个接口。接口可以用于实现多态,而抽象类不能直接实例化。
2024-01-07 13:45:59
322
原创 Spring MVC 的基本工作流程
DispatcherServlet 接收请求:请求首先被 DispatcherServlet 接收,它是 Spring MVC 的中央调度器。处理程序处理请求:找到匹配的处理程序后,DispatcherServlet 将请求发送给处理程序,处理程序执行业务逻辑并返回相应的模型数据。视图解析:DispatcherServlet 使用视图解析器来解析处理程序返回的模型数据,并选择适当的视图进行渲染。这是 Spring MVC 的基本工作流程,它允许开发人员通过配置和编码来控制请求的处理和响应的生成。
2024-01-05 20:05:55
386
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人