- 博客(30)
- 收藏
- 关注
原创 Java线程知识(五)
Callable是Java中用于表示可返回结果和抛出异常的任务的接口如图尝试直接传入Callable将报错如图使用了FutureTask作为了“粘合剂”
2025-11-17 18:42:56
990
原创 Java线程知识(四)
随着线程创建与销毁的频率提高,为解决该问题引入了虚拟线程(协程/纤程)与线程池等概念在Java标准库中用ThreadPollExecutor类表示线程池线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。
2025-11-17 18:41:36
687
原创 Java线程知识(三)
例如线程A需要等待线程B完成一系列操作后才执行,如果使用不带超时时间的wait方法,B线程出现问题将进入死等从而发生问题,我们可以通过使用带超时时间的wait方法,并添加一系列逻辑得知此时是超时了,从而便于我们检查问题。外层的if可以避免重复尝试或许synchronized锁,仅在第一次操作时尝试获取synchronized锁。优点:线程安全,延迟加载,性能较好(体现在实例仅在需要使用时创建,区别于饿汉模式,代码加载时就创建实例)如果不是第一次调用,避免了获取锁的资源浪费,提高了运行效率。
2025-10-14 16:47:23
719
原创 Java线程知识(二)
当多个线程同时访问一个对象或资源时,无论运行时环境如何调度线程,或者这些线程如何交替执行,这个类(对象)都能表现出正确的行为,那么这个类就是线程安全的。反之,如果一个类在多线程环境下不能表现出正确的行为,我们就说它存在线程安全问题,或者它是非线程安全的监视器锁(Monitor Lock),这是 Java 中最基本、最常用的锁机制。它通过 synchronized 关键字实现,可以用于修饰方法或代码块语法规则:synchronized(一个对象){加锁内容//1.自建锁对象。
2025-10-14 16:47:12
875
原创 Java线程知识(一)
为了确保系统的稳定性和安全性,操作系统必须防止用户应用程序直接访问和操作关键的硬件资源(如CPU、内存、磁盘、网络设备等)。写代码时,可以使用多线程并发编程,也可以使用多进程并发编程,而Java中多线程并发编程提供的api较为完善,更适于使用多线程并发编程。主要目的:稳定性,通过限制应用程序的访问能力,确保了操作系统的核心服务不会被破坏,从而保证了整个系统的稳定运行。Priority:字面意思,即线程调度的优先级,优先级⾼的线程理论上来说更容易被调度到。5.执行一项任务的解决方案,
2025-08-21 15:34:33
1000
原创 排序算法(二)
选择一个「基准元素」,将数组分为两部分:左半部分元素均小于基准,右半部分均大于基准;然后递归对左右两部分重复此操作,直至子数组长度为 1(天然有序)是哈希表(Hash Table)中常见的现象,指两个不同的键(Key)通过哈希函数(Hash Function)计算后,得到了相同的哈希值(Hash Value),导致它们需要映射到哈希表中的同一个位置。哈希函数(Hash Function)是哈希表的 “核心引擎”,它负责将任意类型的键(Key) 转换为哈希值(Hash Value)—— 一个固定范围的整数,最终映射为哈希表数组的索引。哈希函数的设计目标是减少哈希冲突(不同键映射到同一哈希值),同时保证计算高效。
2025-08-06 20:36:06
948
原创 部分排序算法的Java模拟实现(复习向,非0基础)
排序其本质是将一组无序的数据元素(如数字、字符、对象等)按照某种特定的规则(称为 “排序依据”)重新排列成有序序列的过程核心目的:排序的核心目的是降低数据的无序性,使数据满足 “可快速检索”“可按规律处理” 等需求假设有一组数据,其中包含两个值相等的元素(记为 a 和 b),且在排序前 a 位于 b 之前(即 a 的索引 < b 的索引)如果排序后,a 仍然在 b 之前,则称该排序算法是稳定的;如果排序后,b 跑到了 a 之前,则称该排序算法是不稳定的。
2025-07-16 22:05:13
1223
原创 MySQL中表的增删改查(CRUD)
可以用select * 查询所有数据但数据过多时可能造成性能问题。查询特定列时select 列1,列2即可如图仅查询了id与age。可以第一对多列进行操作,并可配合一系列条件筛选否则为更改每一行。可以结合limit进行分页查询,并可以运用offset,其中desc为降序(从大到小)asc为升序(从小到大)进行条件筛选(where类比编程语言中的if语句)可以用order by排序,可以结合where,
2025-05-16 17:55:49
834
原创 MySQL基础
数据库(Database)是什么:存放数据的“仓库”,类似一个Excel文件,但功能更强大。作用:集中管理大量数据(如用户信息、订单记录)
2025-05-16 13:05:49
1063
原创 Java——异常
在 Java 里,系统自带的异常类型有时无法满足特定的业务需求,这时候就可以创建自定义异常创建异常类:自定义异常类需要继承 Exception 或者 RuntimeException。// 自定义受检查异常类// 自定义非受检查异常类添加构造方法:一般会添加一个带字符串参数的构造方法,用于传入异常信息// 自定义异常类,继承自 Exception// 带字符串参数的构造方法try {// 抛出自定义异常,并传入异常信息。
2025-03-26 23:08:45
886
原创 Java——内部类
成员内部类是定义在另一个类的内部,但在方法外部的类。它可以访问外部类的所有成员(包括私有成员),并且每个成员内部类的实例都与一个外部类的实例相关联内部类又称为嵌套类,外部类又称为封闭类Java中内部类分为四类地位类似一般成员属性可看为外部类的一个成员属性,无static修饰,可以使用任何访问修饰符例内部类利用外部类的this引用访问外部类成员常用于内部类与外部类中的变量重名时,如果内部与外部类成员重名,直接通过名字访问成员将访问内部类中成员2)外部类访问内部类成员这将涉及到内部类的实例化
2025-03-09 14:22:20
1249
原创 Java——接口,抽象类
抽象类(Abstract Class)是一种特殊的类,它不能被实例化,主要用于为子类提供通用模板和约束规范语法:被abstract修饰,其中被abstract修饰的方法为抽象方法。
2025-02-25 21:51:59
688
原创 Java——继承,组合,多态
继承是面向对象编程中的一个机制,它允许一个类(子类)继承另一个类(父类)的属性和方法。通过继承,子类可以复用父类的代码,并且可以在子类中添加新的属性和方法,或者重写父类的方法。
2025-02-10 14:56:48
1102
原创 Java——类与对象,数组
对象是对现实世界中具体事物或抽象概念的一种模拟和表示,它具有自己的状态(属性)和行为(方法)。比如,若将“汽车”定义为一个类,那么每一辆具体的汽车,如“红色的宝马X5”“白色的丰田卡罗拉”等,就是“汽车”类的对象。简单来说类是使用类这一蓝图(模板)创建出的变量数据类型+[]+数组名//例如//int[]整体是array的数据类型。
2025-01-17 14:23:16
1049
原创 C语言——动态内存管理
栈是一种具有后进先出(LIFO)特性的数据结构。栈区主要用于局部变量,函数参数,函数调用时的返回地址,返回数据等信息。它的内存分配和释放是自动进行的当一个函数被调用时,系统会在栈上为该函数的局部变量和参数分配内存空间;当函数执行结束后,这些内存空间会自动释放。柔性数组(flexible array member)是 C99 标准中引入的一个特性。它是一个在结构体中最后一个成员,其大小在编译时可以是不指定的(不完整类型),并且可以根据实际需要动态地分配内存来确定其大小。
2024-12-26 17:38:21
1047
原创 Java语法部分基础
在Java语言中,用关键字final来定义一个常量(举例final int COUNT=10;将常量值赋值给常量)。常量一旦被初始化后,在程序执行的过程中,其值不可以发生改变的量。常量不同于常量值,它可以在程序中用符号来代替常量值使用,因此在使用前必须先定义。常量和常量值是不同的概念,常量值又称为字面常量,它是通过数据直接表示的。
2024-12-23 14:17:41
1395
原创 多分支选择的控制流语句switch case
switch(表达式) {case 值1:// 代码块1break;case 值2:// 代码块2break;case 值N:// 代码块Nbreak;default:// 默认代码块。
2024-12-23 12:40:08
2101
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅