自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 多线程-线程池(一分钟快速了解)

线程池是一种管理和复用线程的机制。它通过预先创建一组线程并维护它们的生命周期,以便在需要时重复使用这些线程,可以减少线程创建和销毁的开销。为什么要用线程池呢在我们使用多线程进行开发编程的时候,使用多线程确实可以进行并发编程,但是频繁的创建和销毁线程会消耗很多的资源,开销较大。所以我们引入线程池,将需要用的线程,在线程池中准备好,用的时候从线程池中拿,用完又放回到线程池中。这样就可以减小开销。2.标准库中的线程池在标准库中我们用ThreadPoolExecutor类来表示线程池。

2024-02-05 17:30:46 645

原创 多线程-定时器

定时器也是软件开发中的⼀个重要组件. 类似于⼀个 "闹钟". 达到⼀个设定的时间之后, 就执⾏某个指定好的代码.定时器是⼀种实际开发中⾮常常⽤的组件.

2024-02-03 20:28:16 785

原创 多线程-阻塞队列(超详细)

阻塞队列的⼀个典型应⽤场景就是 "⽣产者消费者模型". 这是⼀种⾮常典型的开发模型. ⽣产者消费者模式就是通过⼀个容器来解决⽣产者和消费者的强耦合问题。 ⽣产者和消费者彼此之间不直接通讯,⽽通过阻塞队列来进⾏通讯,所以⽣产者⽣产完数据之后不⽤ 等待消费者处理,直接扔给阻塞队列,消费者不找⽣产者要数据,⽽是直接从阻塞队列⾥取.

2024-02-02 20:57:30 1381 1

原创 多线程-单例模式

但是这个代码如果在多线程是不安全的,因为当多个线程同时调用 getInstance() 方法时,都发现 instance 为 null,则会同时创建多个实例,导致不符合单例模式的要求。而静态的 instance 成员变量在类加载时就被初始化,因此在整个程序中只会有一个 Singleton 的实例。我们上面的例子就是一个饿汉模式的例子,他的特点就是成员变量在被类加载的时候就被初始化了。懒汉模式是一种常见的单例模式实现方式,它的特点是在第一次使用时才会创建单例实例。单例模式是一种设计模式。

2024-01-26 22:02:48 864

原创 多线程-线程的等待通知wait、notify

线程的等待通知是多线程编程中常用的一种机制,用于线程之间的协作和同步。在Java中,线程的等待通知通过使用wait()notify()和方法来实现。由于线程之间是抢占式执⾏的, 因此线程之间执⾏的先后顺序难以预知. 但是实际开发中有时候我们希望合理的协调多个线程之间的执⾏先后顺序,所以我们需要wait()、notify()来实现这些功能。2.wiat()方法2.1 wait 做的事情:•使当前执⾏代码的线程进⾏等待. (把线程放到等待队列中)•释放当前的锁•。

2024-01-23 14:35:24 1146 2

原创 经典面试题-死锁

死锁是指在并发系统中,两个或多个进程(或线程)互相等待对方所占有的资源而无法继续执行的情况。这种情况下,每个进程都在等待其他进程释放资源,导致所有进程都无法向前推进。

2024-01-22 19:40:36 3522 4

原创 多线程-线程状态和线程安全(加锁-synchronized 关键字)

例如,一个线程在读取一个共享变量的同时,另一个线程正在修改该变量,这就可能导致读取到的数据是。(脏数据是指在并发环境下,一个线程正在修改某个共享变量的同时,另一个线程正在读取同一个变量的值,从而导致读取到的值不正确或者不符合预期。3.直接原因:上述多线程修改操作,本身不是“原子的”(原子性是指一个操作是不可中断的,在执行过程中不能被其他线程或事件打断,要么全部执行成功,要么全部不执行。在Java中,线程有几种不同的状态,可以通过Thread类的getState()方法获取线程的当前状态。

2024-01-21 15:19:12 1072 1

原创 多线程-Thread类及常见方法

Thread类是Java编程语言中的一个重要类,用于支持多线程编程。它是java.lang包中的一部分,提供了创建和管理线程的方法和功能。通过使用Thread类,可以同时执行多个任务,实现并行处理。每个线程都有独立的执行路径,可以在不同的时间段内独立运行。这使得程序能够更高效地利用计算机的资源,并提高应用程序的响应速度。Thread类提供了许多方法来管理线程的行为,例如start()方法用于启动线程,join()方法用于等待线程的结束,sleep()方法用于暂停线程的执行等等。

2024-01-20 20:42:04 1146 2

原创 初识多线程(超详细)

多线程是指在一个程序中同时执行多个线程的并发编程技术。线程是程序的基本执行单元,一个进程可以包含多个线程。每个线程都有自己的执行路径,可以独立地执行特定的任务或代码块.多线程的主要目的是提高程序的并发性和效率。通过在一个程序中使用多个线程,可以实现同时执行多个任务,从而充分利用多核处理器和计算资源,加快程序的运行速度。举例:有一个项目你一个人做的话费时费力,你可以和几个朋友一起组队完成项目。每个人负责不同的任务,比如设计、编程和测试。

2024-01-18 13:12:39 1024

原创 软件工程-(可行性分析、需求分析)

本可行性分析报告旨在评估一个特定项目或计划的可行性,包括技术、经济和市场等方面的考虑。通过对项目的详细分析和评估,我们可以确定其潜在的成功和可行性,并提供相关建议。

2023-11-28 17:00:50 1696 6

原创 快速了解软件工程学概述(5种软件过程模型)

什么是软件?特点有哪些?1.软件是程序、数据和文档的完整集合。2.特点:软件是一种逻辑实体。是人类的智力产品软件需要长期维护软件开发过程复杂软件成本昂贵软件可以复制定义软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机包含下述两方面的问题:1.如何开发软件,以满足对软件日益增长的需求。2.如何维护数量不断膨胀的已有软件。软件危机的一些典型表现(超重要)1.对软件开发成本和进度的估计常常很不准确。2.

2023-11-27 10:00:00 1714 7

原创 Java的JDBC编程

JDBC,即java数据库连接。是一种用于执行SQL语句的Java API,它是 Java中的数据库连接规范。这个API由包中的一些类和接口组成,它为Java 开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。JDBC为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问API的一种高级抽象,它主要包 含一些通用的接口类。JDBC访问数据库层次结构JDBC优势:Java语言访问数据库操作完全面向抽象接口编程。

2023-11-19 15:00:52 552 10

原创 MySQL索引事务

索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引, 并指定索引的类型,各类索引有各自的数据结构实现。

2023-11-16 13:51:27 1073 9

原创 一分钟带你了解反射

Java的反射(reflflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信 息以及动态调用对象方法的功能称为java语言的反射。

2023-11-15 10:23:51 83 4

原创 MySQL数据库-查询

三大范式: 创建课程表 创建学生课程中间表,考试成绩表 初始化测试数据: 语法语法语法语法

2023-11-15 09:00:00 104 1

原创 图书管理系统

总体来说,这段代码实现了借阅图书的功能,当用户输入要借阅的图书名称后,会在图书列表中查找该图书并进行借阅操作。如果找到了用户要借阅的图书,则将该图书的借阅状态设置为true,并输出借阅成功的提示信息,同时打印出借阅的图书信息。当用户输入要查找的图书名称后,会在图书列表中查找该图书并输出相应的信息。在找到图书并确定要删除后,使用另一个循环从pos开始,将后面的图书依次向前移动一位,覆盖掉前一个位置的图书。如果找到了对应名称的图书,将该图书的借阅状态设置为false,表示已归还,并输出相应的成功归还信息。

2023-11-14 18:05:53 116

原创 MySQL数据库约束

指示某列不能存储NULL值。保证某列的每行必须有唯一的值。规定没有给列赋值时的默认值。- NOT NULL和UNIQUE的结合。确保某列(或两个列多个列的结合)有唯一标 识,有助于更容易更快速地找到表中的一个特定的记录。保证一个表中的数据匹配另一个表中的值的参照完整性。保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句。创建表时,可以指定某列不为空:--重新设置学生表结构DROP TABLEstudent (idINTNOT。

2023-11-14 17:32:16 76

原创 MySQL数据库

存储数据用文件就可以了,为什么还要弄个数据库?文件保存数据有以下几个缺点:1.文件的安全性问题2.文件不利于数据查询和管理3.文件不利于存储海量数据4.文件在程序中控制不方便数据库存储介质:磁盘内存为了解决上述问题,专家们设计出更加利于管理数据的软件——数据库,它能更有效的管理数据。数据 库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。

2023-11-13 20:07:00 468

原创 数据结构-(Map和Set)超详细

Map是一个接口类,该类没有继承自Collection,该类中存储的是结构的键值对,并且K一定是唯一的,不能重复。1.2关于的说明是Map内部实现的用来存放键值对映射关系的内部类,该内部类中主要提供了 的获取,value的设置以及Key的比较方式。不包含重复元素的集合。更正式地说,设置 不包含一对元素,并且最多包含一个 null 元素。

2023-11-09 14:31:13 253 2

原创 数据结构-搜索树

个结点的二叉搜索树,若每个元素查找的概率相等,则二叉搜索树平均查找长度是结点在二叉搜索树的深度的函数,即结点越深,则比较次数越多。通过比较父节点的值和待插入值的大小关系来确定应该将新节点插入到左子树还是右子树上。如果父节点的值大于待插入值,则将新节点插入到左子树上,即。如果循环结束仍未找到合适位置,则说明待插入值应该插入到当前节点的父节点下面。这段代码假设了二叉搜索树中不存在重复的节点值,因为在相等的情况下,直接返回。首先,判断二叉搜索树是否为空。),用它的值填补到被删除节点中,再来处理该结点的删除问题。

2023-10-31 17:15:05 100 4

原创 数据结构-(堆)PriorityQueue

队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该中场景下,使用队列显然不合适,比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话;初中那会班主任排座位时可能会让成绩好的同学先挑座位。在这种情况下,数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。这种数 据结构就是优先级队列。希望大家多多支持。给个三连吧。

2023-10-31 12:42:55 147 3

原创 数据结构-二叉树(超详细)

首先我们手动快速创建一棵简单的二叉树4.1二叉树的遍历在遍历二叉树时,如果没有进行某种约定,每个人都按照自己的方式遍历,得出的结果就比较混乱,如果按照某种规则进行约定,则每个人对于同一棵树的遍历结果肯定是相同的。如果N代表根节点,L代表根节点的左子树,R代表根节点的右子树,则根据遍历根节点的先后次序有以下遍历方式:NLR:前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点--->根的左子树--->根的右子树。LNR:中序遍历(Inorder Traversal)—

2023-10-17 18:28:09 80 2

原创 栈(Stack)详细讲解

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。

2023-10-12 20:19:51 2778 7

原创 带你详细了解链表

链表(Linked List)是一种常见的数据结构,它由节点(Node)组成,每个节点包含两部分:数据域(存储元素值)和指针域(指向下一个节点)。链表使用指针来连接各个节点,形成一个逻辑上的序列。常见的链表类型有单向链表、双向链表和循环链表。单向链表(Singly Linked List):每个节点只包含一个指针,指向下一个节点。最后一个节点指向 null,表示链表的结束。双向链表(Doubly Linked List):每个节点包含两个指针,分别指向前一个节点和后一个节点。

2023-10-09 09:00:00 183 2

原创 一篇文章让你轻松理解ArrayList

以上就是今天要讲的内容,希望大家多多支持。

2023-10-08 11:57:46 68 9

原创 梦开始的地方:leetcode第一题两数相加

博主第一次开始刷题,看到第一题一时半会还不会做,经过自己一段时间的学习可以做出来。给大家分享一下做题思路。

2023-09-25 16:49:05 74 1

原创 如何在IDEA上提交代码到gitee上保姆级教学

文章目录。

2023-09-05 17:42:44 871 2

原创 (C语言)字符串函数及模拟实现相应函数

需要注意的是,为了保证安全性,应确保目标字符串的缓冲区足够大,能够容纳源字符串及其结束符。是一个 C 语言中非常常用的字符串拷贝函数,用于将一个字符串(源字符串)复制到另一个字符数组(目标字符串)中。的实际类型可能因编译器和操作系统而异,但通常被定义为一个无符号整数类型,足够大以容纳任何可能的对象大小。是 C 语言中一种无符号整数类型,用于表示对象的大小或索引的范围。函数会从源字符串的起始位置开始,逐个字符拷贝到目标字符串中,直到遇到字符串结束符。,这是一种无符号整数类型,用于表示非负的数组索引或大小值。

2023-08-09 16:12:22 113 2

原创 经典扫雷游戏(C语言)

在每次循环中,请求用户输入要清除的坐标,并判断输入的坐标是否合法。如果输入的坐标超出了合法范围,则提示输入错误并重新输入。对于合法的坐标,首先检查该位置是否有地雷。游戏的胜利条件是清除除地雷以外的所有格子,当已经清除的格子数等于总格子数减去地雷数时,游戏胜利。另外,为了使随机数取值范围正确,生成的行号和列号需要加 1。如果没有地雷,则根据周围地雷的数量更新显示状态,并调用。初始化好后,我们要看看我们的0是否已经在棋盘里的呢。函数内部使用一个循环来随机选择地雷所在的位置,并将对应位置的元素设置为。

2023-07-27 23:00:56 90 5

原创 手把手教你如何实现三子棋(五子棋)小游戏

我们有三种结果玩家赢,电脑赢,平局。我们每下一步棋都要判断一次。当返回值为*就是玩家赢,当返回值是#就是电脑赢。如果横着的三个格子里是相同的符号且不是空格那么就返回其中一个格子里的值。如果竖着的三个格子里是相同的符号且不是空格那么就返回其中一个格子里的值。如果斜着的三个格子里是相同的符号且不是空格那么就返回其中一个格子里的值。这里返回的值所对应的就是‘*’和‘#’。就能判断出胜负了。还有判断是否平局。我们遍历每一行每一列。如果有空格的话就继续游戏。如果没有空格的话,就平局。int i = 0;

2023-07-25 21:53:31 135 4

原创 九九乘法表(c语言)

代码中的循环语句使用了两个嵌套的for循环,外层循环控制乘法表的行数,内层循环控制乘法表的列数。通过在内层循环中使用printf函数输出每个乘法表的项,再在外层循环中换行,就可以得到完整的九九乘法表。

2023-07-20 10:18:11 117 1

原创 数字小游戏(c语言)

小时候大家应该都玩过猜数字小游戏。今天带大家用C语言来完成这个小游戏。伪随机数是指在计算机程序中生成的一系列数字,看起来表现出随机性的特征,但实际上是通过确定性的算法生成的。与真正的随机数不同,伪随机数序列是可预测的,并且在给定相同的种子值的情况下会生成完全相同的序列。伪随机数的范围是0~RAND_MAX(32767).当我们给srand函数一个种子的时候他随机出来的数也是固定的,于是我们也要给srand函数一个随机数。那我们就要用到time函数。time函数会返回一个时间戳。

2023-07-18 17:45:29 91 5

原创 VS2022监视窗口如何打开?

当我们的代码出现问题的时候我们就需要用监视窗口去检查自己的代码哪里出错了或者代码难以理解我们可以去观察代码的运行过程。博主第一次使用监视窗口的时候发现找不到,打不开监视窗口。希望可以帮助到大家。

2023-07-18 10:54:29 6657 2

原创 快速了解spring框架

Spring 是一款主流的Java EE 轻量级开源框架,Spring 由“Spring 之父“RodJohnson 提出并创立,其目的是用于简化java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何ava应用都可以从Spring中受益。Spring 框架除了自己提供功能外,还提供整合其他技术和框架的能力。spring 自诞生以来备受青睐,一直被广大开发人员作为Java 企业级应用程序开发的首选。

2023-07-10 18:58:02 100 14

原创 快速了解四种排序算法:希尔排序,堆排序,快速排序,冒泡排序(c语言)

1.输入:一个算法应以待解决的问题的信息作为输入。2.输出:输入对应指令集处理后得到的信息。3.可行性:算法是可行的,即算法中的每一条指令都是可以实现的,均能在有限的时间内完成。4.有穷性:算法执行的指令个数是有限的,每个指令又是在有限时间内完成的,因此整个算法也是在有限时间内可以结束的。5.确定性:算法对于特定的合法输入,其对应的输出是唯一的。即当算法从一个特定输入开始,多次执行同一指令集结果总是相同的。简单的说,算法就是计算机解题的过程。

2023-07-09 23:45:22 1572 5

原创 以梦为马,不负韶华

博主是一名即将大三的学生,时光荏苒,大学生活已经过了一半,回想自己大学前半段的学习,一直浑浑噩噩。没有专注投身到学习中去。想想少年的自己意气风发。自己本不应该如现在如此。以梦为马,不负韶华。趁现在时间还不算太晚。可以弥补之前浪费的时间。之前还是犹豫不决,家里人劝我考公。自己想了很久。小时候打着电脑游戏,就想着自己或许也能做出一款游戏来。于是我坚定了学计算机的这条道路。作为一名软件工程的学生作为一名软件工程的学生,学习java是我学习的重中之重,在长达一年的学习过程中,我也对java也有新的认识。

2023-07-08 10:59:50 96 4

原创 Dev如何配置C++11

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2023-06-14 18:02:49 3729

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除