java
文章平均质量分 89
所遇皆随风
这个作者很懒,什么都没留下…
展开
-
多线程-线程池(一分钟快速了解)
线程池是一种管理和复用线程的机制。它通过预先创建一组线程并维护它们的生命周期,以便在需要时重复使用这些线程,可以减少线程创建和销毁的开销。为什么要用线程池呢在我们使用多线程进行开发编程的时候,使用多线程确实可以进行并发编程,但是频繁的创建和销毁线程会消耗很多的资源,开销较大。所以我们引入线程池,将需要用的线程,在线程池中准备好,用的时候从线程池中拿,用完又放回到线程池中。这样就可以减小开销。2.标准库中的线程池在标准库中我们用ThreadPoolExecutor类来表示线程池。原创 2024-02-05 17:30:46 · 651 阅读 · 0 评论 -
多线程-定时器
定时器也是软件开发中的⼀个重要组件. 类似于⼀个 "闹钟". 达到⼀个设定的时间之后, 就执⾏某个指定好的代码.定时器是⼀种实际开发中⾮常常⽤的组件.原创 2024-02-03 20:28:16 · 795 阅读 · 0 评论 -
多线程-阻塞队列(超详细)
阻塞队列的⼀个典型应⽤场景就是 "⽣产者消费者模型". 这是⼀种⾮常典型的开发模型. ⽣产者消费者模式就是通过⼀个容器来解决⽣产者和消费者的强耦合问题。 ⽣产者和消费者彼此之间不直接通讯,⽽通过阻塞队列来进⾏通讯,所以⽣产者⽣产完数据之后不⽤ 等待消费者处理,直接扔给阻塞队列,消费者不找⽣产者要数据,⽽是直接从阻塞队列⾥取.原创 2024-02-02 20:57:30 · 1423 阅读 · 1 评论 -
多线程-单例模式
但是这个代码如果在多线程是不安全的,因为当多个线程同时调用 getInstance() 方法时,都发现 instance 为 null,则会同时创建多个实例,导致不符合单例模式的要求。而静态的 instance 成员变量在类加载时就被初始化,因此在整个程序中只会有一个 Singleton 的实例。我们上面的例子就是一个饿汉模式的例子,他的特点就是成员变量在被类加载的时候就被初始化了。懒汉模式是一种常见的单例模式实现方式,它的特点是在第一次使用时才会创建单例实例。单例模式是一种设计模式。原创 2024-01-26 22:02:48 · 874 阅读 · 0 评论 -
多线程-线程的等待通知wait、notify
线程的等待通知是多线程编程中常用的一种机制,用于线程之间的协作和同步。在Java中,线程的等待通知通过使用wait()notify()和方法来实现。由于线程之间是抢占式执⾏的, 因此线程之间执⾏的先后顺序难以预知. 但是实际开发中有时候我们希望合理的协调多个线程之间的执⾏先后顺序,所以我们需要wait()、notify()来实现这些功能。2.wiat()方法2.1 wait 做的事情:•使当前执⾏代码的线程进⾏等待. (把线程放到等待队列中)•释放当前的锁•。原创 2024-01-23 14:35:24 · 1205 阅读 · 2 评论 -
经典面试题-死锁
死锁是指在并发系统中,两个或多个进程(或线程)互相等待对方所占有的资源而无法继续执行的情况。这种情况下,每个进程都在等待其他进程释放资源,导致所有进程都无法向前推进。原创 2024-01-22 19:40:36 · 3533 阅读 · 4 评论 -
多线程-线程状态和线程安全(加锁-synchronized 关键字)
例如,一个线程在读取一个共享变量的同时,另一个线程正在修改该变量,这就可能导致读取到的数据是。(脏数据是指在并发环境下,一个线程正在修改某个共享变量的同时,另一个线程正在读取同一个变量的值,从而导致读取到的值不正确或者不符合预期。3.直接原因:上述多线程修改操作,本身不是“原子的”(原子性是指一个操作是不可中断的,在执行过程中不能被其他线程或事件打断,要么全部执行成功,要么全部不执行。在Java中,线程有几种不同的状态,可以通过Thread类的getState()方法获取线程的当前状态。原创 2024-01-21 15:19:12 · 1076 阅读 · 1 评论 -
初识多线程(超详细)
多线程是指在一个程序中同时执行多个线程的并发编程技术。线程是程序的基本执行单元,一个进程可以包含多个线程。每个线程都有自己的执行路径,可以独立地执行特定的任务或代码块.多线程的主要目的是提高程序的并发性和效率。通过在一个程序中使用多个线程,可以实现同时执行多个任务,从而充分利用多核处理器和计算资源,加快程序的运行速度。举例:有一个项目你一个人做的话费时费力,你可以和几个朋友一起组队完成项目。每个人负责不同的任务,比如设计、编程和测试。原创 2024-01-18 13:12:39 · 1025 阅读 · 0 评论 -
多线程-Thread类及常见方法
Thread类是Java编程语言中的一个重要类,用于支持多线程编程。它是java.lang包中的一部分,提供了创建和管理线程的方法和功能。通过使用Thread类,可以同时执行多个任务,实现并行处理。每个线程都有独立的执行路径,可以在不同的时间段内独立运行。这使得程序能够更高效地利用计算机的资源,并提高应用程序的响应速度。Thread类提供了许多方法来管理线程的行为,例如start()方法用于启动线程,join()方法用于等待线程的结束,sleep()方法用于暂停线程的执行等等。原创 2024-01-20 20:42:04 · 1180 阅读 · 2 评论 -
Java的JDBC编程
JDBC,即java数据库连接。是一种用于执行SQL语句的Java API,它是 Java中的数据库连接规范。这个API由包中的一些类和接口组成,它为Java 开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。JDBC为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问API的一种高级抽象,它主要包 含一些通用的接口类。JDBC访问数据库层次结构JDBC优势:Java语言访问数据库操作完全面向抽象接口编程。原创 2023-11-19 15:00:52 · 553 阅读 · 10 评论 -
MySQL索引事务
索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引, 并指定索引的类型,各类索引有各自的数据结构实现。原创 2023-11-16 13:51:27 · 1074 阅读 · 9 评论 -
一分钟带你了解反射
Java的反射(reflflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信 息以及动态调用对象方法的功能称为java语言的反射。原创 2023-11-15 10:23:51 · 86 阅读 · 4 评论 -
MySQL数据库-查询
三大范式: 创建课程表 创建学生课程中间表,考试成绩表 初始化测试数据: 语法语法语法语法原创 2023-11-15 09:00:00 · 105 阅读 · 1 评论 -
图书管理系统
总体来说,这段代码实现了借阅图书的功能,当用户输入要借阅的图书名称后,会在图书列表中查找该图书并进行借阅操作。如果找到了用户要借阅的图书,则将该图书的借阅状态设置为true,并输出借阅成功的提示信息,同时打印出借阅的图书信息。当用户输入要查找的图书名称后,会在图书列表中查找该图书并输出相应的信息。在找到图书并确定要删除后,使用另一个循环从pos开始,将后面的图书依次向前移动一位,覆盖掉前一个位置的图书。如果找到了对应名称的图书,将该图书的借阅状态设置为false,表示已归还,并输出相应的成功归还信息。原创 2023-11-14 18:05:53 · 119 阅读 · 0 评论 -
MySQL数据库约束
指示某列不能存储NULL值。保证某列的每行必须有唯一的值。规定没有给列赋值时的默认值。- NOT NULL和UNIQUE的结合。确保某列(或两个列多个列的结合)有唯一标 识,有助于更容易更快速地找到表中的一个特定的记录。保证一个表中的数据匹配另一个表中的值的参照完整性。保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句。创建表时,可以指定某列不为空:--重新设置学生表结构DROP TABLEstudent (idINTNOT。原创 2023-11-14 17:32:16 · 77 阅读 · 0 评论 -
MySQL数据库
存储数据用文件就可以了,为什么还要弄个数据库?文件保存数据有以下几个缺点:1.文件的安全性问题2.文件不利于数据查询和管理3.文件不利于存储海量数据4.文件在程序中控制不方便数据库存储介质:磁盘内存为了解决上述问题,专家们设计出更加利于管理数据的软件——数据库,它能更有效的管理数据。数据 库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。原创 2023-11-13 20:07:00 · 470 阅读 · 0 评论 -
梦开始的地方:leetcode第一题两数相加
博主第一次开始刷题,看到第一题一时半会还不会做,经过自己一段时间的学习可以做出来。给大家分享一下做题思路。原创 2023-09-25 16:49:05 · 79 阅读 · 1 评论 -
栈(Stack)详细讲解
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。原创 2023-10-12 20:19:51 · 2889 阅读 · 7 评论 -
数据结构-(堆)PriorityQueue
队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该中场景下,使用队列显然不合适,比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话;初中那会班主任排座位时可能会让成绩好的同学先挑座位。在这种情况下,数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。这种数 据结构就是优先级队列。希望大家多多支持。给个三连吧。原创 2023-10-31 12:42:55 · 149 阅读 · 3 评论 -
数据结构-搜索树
个结点的二叉搜索树,若每个元素查找的概率相等,则二叉搜索树平均查找长度是结点在二叉搜索树的深度的函数,即结点越深,则比较次数越多。通过比较父节点的值和待插入值的大小关系来确定应该将新节点插入到左子树还是右子树上。如果父节点的值大于待插入值,则将新节点插入到左子树上,即。如果循环结束仍未找到合适位置,则说明待插入值应该插入到当前节点的父节点下面。这段代码假设了二叉搜索树中不存在重复的节点值,因为在相等的情况下,直接返回。首先,判断二叉搜索树是否为空。),用它的值填补到被删除节点中,再来处理该结点的删除问题。原创 2023-10-31 17:15:05 · 108 阅读 · 4 评论 -
数据结构-(Map和Set)超详细
Map是一个接口类,该类没有继承自Collection,该类中存储的是结构的键值对,并且K一定是唯一的,不能重复。1.2关于的说明是Map内部实现的用来存放键值对映射关系的内部类,该内部类中主要提供了 的获取,value的设置以及Key的比较方式。不包含重复元素的集合。更正式地说,设置 不包含一对元素,并且最多包含一个 null 元素。原创 2023-11-09 14:31:13 · 260 阅读 · 2 评论 -
带你详细了解链表
链表(Linked List)是一种常见的数据结构,它由节点(Node)组成,每个节点包含两部分:数据域(存储元素值)和指针域(指向下一个节点)。链表使用指针来连接各个节点,形成一个逻辑上的序列。常见的链表类型有单向链表、双向链表和循环链表。单向链表(Singly Linked List):每个节点只包含一个指针,指向下一个节点。最后一个节点指向 null,表示链表的结束。双向链表(Doubly Linked List):每个节点包含两个指针,分别指向前一个节点和后一个节点。原创 2023-10-09 09:00:00 · 195 阅读 · 2 评论 -
一篇文章让你轻松理解ArrayList
以上就是今天要讲的内容,希望大家多多支持。原创 2023-10-08 11:57:46 · 69 阅读 · 9 评论 -
快速了解spring框架
Spring 是一款主流的Java EE 轻量级开源框架,Spring 由“Spring 之父“RodJohnson 提出并创立,其目的是用于简化java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何ava应用都可以从Spring中受益。Spring 框架除了自己提供功能外,还提供整合其他技术和框架的能力。spring 自诞生以来备受青睐,一直被广大开发人员作为Java 企业级应用程序开发的首选。原创 2023-07-10 18:58:02 · 103 阅读 · 14 评论