- 博客(39)
- 收藏
- 关注
原创 javaEE 多线程4
wait() 必须在 synchronized 同步块中使用,以确保线程安全。它使当前线程阻塞并释放锁,直到其他线程调用 notify() 或 notifyAll() 唤醒。为防止唤醒过早,需配合标记变量(如 w)判断条件是否满足。多个 wait() 线程可被 notify() 唤醒,但建议使用 notifyAll() 避免死锁。阻塞队列、线程池、定时器等均基于生产者-消费者模型实现,提升并发效率与资源复用。
2026-10-21 14:05:04
225
原创 javaEE 多线程3
线程安全问题主要源于原子性、可见性和有序性。a++等操作非原子,多线程并发修改共享变量会导致结果不一致;内存可见性问题因线程缓存导致主内存修改不可见,需用volatile保证即时读取;指令重排序也可能破坏正确性。锁(如synchronized)可保障临界区互斥访问,但嵌套锁或锁顺序不一致易引发死锁。通过合理使用锁、volatile关键字及避免锁嵌套,可有效解决线程安全问题。
2026-10-15 10:48:40
174
原创 javaEE 多线程2
本文系统介绍了Java线程的重命名、属性获取(如ID、名称、状态、优先级)、生命周期及线程安全问题。通过实例演示线程创建、启动、中断、join等待与sleep休眠机制,重点分析多线程并发导致的共享变量竞争(如a++非原子操作),并提出使用join实现串行执行以保障结果正确性,强调线程同步的重要性。
2026-10-09 21:06:11
234
原创 javaEE 多线程1
进程是资源调度的基本单位一个程序的运行叫做进程而进程里怎么识别认识有独特的标识吗站着操作系统角度理解进程进程是怎么创建的通过结构体来表述PCB是线程的唯一标识PCB是线程的控制块 当有很多进程时 为了方便 通过数据结构组织起来 方便管理PCBpid进程的标识。
2026-10-07 21:57:33
172
原创 java 数据结构 链表
本文介绍了链表的基本概念、实现与应用。首先对比了链表与顺序表的特性差异:链表插入删除O(1)但访问O(n),空间不连续;顺序表访问O(1)但插入删除O(n),空间连续。重点演示了单链表的Java实现,包括节点结构、头插尾插、任意位置插入、删除等核心操作,并给出力扣203题(删除指定节点)和206题(反转链表)的解题思路。随后介绍了双向链表的优势(双向遍历、O(1)头尾操作)及其实现,最后对比LinkedList的特性与遍历方式,强调根据实际场景选择合适的数据结构(频繁增删选链表,随机访问选顺序表)。
2026-07-26 16:28:17
247
原创 理解顺序表:Java数据结构
顺序表在物理内存结构是连续的 通常用数组 完成增删查改 我们需要删除和修改的时候 必须要遍历整个数组 效率不高 于是引出来链表。
2026-07-13 19:07:28
436
原创 java 数据结构 泛型
摘要:Java为基本类型提供了对应的包装类(如Integer、Double等),支持自动/显示装箱拆箱操作。包装类在-128~127范围内会缓存对象,超出则新建对象。泛型通过类型参数<T>规范容器存储类型,需使用包装类而非基本类型。泛型类可定义上界约束(如<T extends Number>),确保类型安全性。泛型数组需通过反射创建,避免运行时错误。泛型机制提高了代码复用性和类型安全性。
2026-03-15 17:34:43
382
原创 java list介绍
本文介绍了Java中List接口及其实现类的使用。List作为Collection的子接口,提供了线性表数据结构的基本操作,包括增删改查等方法。重点讲解了ArrayList的实现原理,包括动态扩容机制和使用方式。通过模拟实现List接口展示了顺序表的基本操作,如add、remove、contains等。文章还演示了ArrayList的实际应用场景,包括洗牌游戏和杨辉三角的实现,展示了List在集合框架中的灵活运用。最后比较了ArrayList与Vector的线程安全性差异,指出ArrayList适用于单线程
2026-03-15 17:34:21
737
原创 java 异常
Java异常处理机制摘要:异常是程序运行时的错误反应,分为Error(JVM无法处理)和Exception(程序员可解决)。Exception包含编译时异常(受查异常)和运行时异常。处理方式有:1)事前防御(LBYL);2)事后处理(EAFP)。核心关键字:throw(抛出异常)、throws(声明异常)、try-catch(捕获处理)、finally(必须执行)。异常处理顺序:方法内→主方法→JVM。自定义异常通常继承Exception或RuntimeException,前者为受查异常,后者为非受查异常。
2026-03-03 10:05:33
676
原创 java String类
摘要:本文介绍了Java中String类的多种赋值方式(直接赋值、构造方法、字符数组),以及字符串比较方法(==比较地址,equals比较内容)。详细讲解了字符串常用操作:大小写转换、查找索引、字符串与数值转换、数组转换、格式化、替换、分割和截取等。同时指出String类方法不会改变原字符串,而StringBuilder/StringBuffer可以修改原字符串。最后提供了一个统计字符串字符出现次数的编程示例。这些内容涵盖了Java字符串处理的核心知识点。
2026-02-27 17:21:13
772
原创 java 图书管理系统
这是一个基于Java的图书管理系统,采用面向对象设计。系统包含用户和管理员两种角色,通过多态和接口实现不同操作功能。核心类包括Book(书籍信息)、Bookclass(书架管理)、user(抽象用户类)及其子类guanli(管理员)和putong(普通用户)。系统通过IA接口实现各类功能操作,包括查找、借阅、归还、新增、删除等。采用模块化设计,将不同功能封装为独立类,通过接口数组实现动态绑定。管理员可进行书籍增删操作,普通用户可借阅归还书籍,体现了良好的封装性和扩展性。
2026-02-25 21:37:14
1713
原创 java 数组
摘要:本文介绍了数组的基本概念和使用方法。数组是存储相同类型变量的集合,分为静态初始化和动态初始化两种创建方式。作为引用类型,数组变量存储在栈中,实际内容存放在堆上。文章详细讲解了数组的创建、初始化、遍历等基本操作,以及作为函数参数和返回值的应用。此外还介绍了数组常见操作如转字符串、拷贝、求平均值、二分查找、排序等实用方法,最后简要提及了二维数组的打印方式。通过具体代码示例展示了数组在实际编程中的多种应用场景。
2026-02-11 20:04:20
550
原创 C语言 结构体
摘要:整型数据在内存中以补码形式存储,便于统一处理符号位和数值运算。正数的原码、反码、补码相同,负数则需转换。大端和小端是两种字节序存储方式,区别在于高低位的存放顺序。浮点数存储采用IEEE 754标准,分为符号位、指数位和尾数位,其读取规则与整型不同。通过代码示例展示了整型和浮点型数据在内存中的存储差异及读取方式。
2026-01-31 23:19:23
665
原创 C语言 数据在内存中的存储
摘要:整型数据在内存中以补码形式存储,便于统一处理符号位和数值运算。正数的原码、反码、补码相同,负数则需转换。大端和小端是两种字节序存储方式,区别在于高低位的存放顺序。浮点数存储采用IEEE 754标准,分为符号位、指数位和尾数位,其读取规则与整型不同。通过代码示例展示了整型和浮点型数据在内存中的存储差异及读取方式。
2026-01-31 23:19:01
859
原创 C语言 内存函数
本文介绍了memcpy函数的使用与模拟实现。memcpy用于将源地址的指定字节数数据复制到目标地址,示例展示了其基本用法。模拟实现通过类型转换逐字节复制数据。当源地址和目标地址存在重叠时,建议使用memmove函数,其模拟实现根据地址关系选择从前向后或从后向前复制。文章还简要提及memset设置内存内容和memcmp比较内存区域的功能。这些内存操作函数都需要注意地址重叠问题,确保数据正确复制。
2026-01-27 10:18:34
593
原创 c语言 指针运用
本文通过多个示例分析了C语言中strlen和sizeof的区别及使用场景。strlen是库函数,计算字符串'\0'前的字符个数;sizeof是操作符,计算内存空间大小。文章通过数组和指针示例展示了不同情况下sizeof的返回值:单独数组名返回整个数组大小,其他情况返回指针或元素大小。strlen示例演示了如何计算字符串长度及地址操作的注意事项。最后通过二维数组和指针运算的题目,进一步说明了内存地址计算和类型转换的影响。这些示例清晰展示了两个关键概念在不同上下文中的行为差异。
2026-01-25 17:51:37
885
原创 C语言 作业3
摘要:本文包含多个C语言编程问题及解法:1) 数组越界导致死循环;2) 汽水兑换问题(20元可换39瓶);3) 打印菱形图案;4) 计算数字序列前5项和(如2+22+222...);5) 递归实现斐波那契数列、数字幂运算和数字各位求和;6) 异或操作找出数组中唯一出现数字("单身狗"问题);7) 打印整数的二进制奇偶位。重点展示了递归的应用和位操作技巧。
2026-01-15 15:03:37
940
原创 C语言 扫雷游戏
摘要:本文介绍了通过C语言实现控制台版扫雷游戏的过程。采用模块化编程思想,将代码分为头文件、实现文件和测试文件。游戏使用9x9棋盘,随机布置10个雷,通过二维数组存储雷区信息和显示界面。实现功能包括:初始化棋盘、随机布雷、计算周围雷数、排雷判断及游戏胜负判定。重点分析了数组在函数中的运用,以及如何通过逐步实现来完善代码功能。文章强调从看懂代码到自主实现的思维转变过程,展示了小型项目的开发思路和调试方法。
2026-01-08 21:54:01
483
原创 C语言 题目2
摘要:本文包含多个C语言编程示例,包括循环控制(break/continue)、字符串处理(strlen/sizeof)、九九乘法表、最大公约数(辗转相除法)、素数判断(100-200)、图形打印(X图案/空心正方形)、矩阵转置、数组逆序输出、数组交换以及平均值计算。重点展示了各种基础算法的实现方法,如通过嵌套循环控制流程、利用取模运算求公约数、使用标志位判断素数等。所有示例均采用标准C语法,包含完整的main函数结构和基本输入输出操作。(149字)
2025-12-30 18:10:15
917
原创 猜数字游戏 C语言
本文介绍了C语言实现猜数字游戏的方法。重点讲解了随机数生成的原理:使用rand()函数配合srand()设置随机种子,通过time()函数确保每次运行生成不同随机序列。文中给出了1-100随机数的生成公式,并展示了完整的猜数字游戏代码实现。游戏提供5次猜测机会,具有大小提示功能,采用菜单驱动方式(开始/退出)。程序使用srand((unsigned int)time)解决rand()默认固定序列的问题,实现了真正的随机数生成。
2025-12-27 18:03:00
792
原创 java 继承和多态
Java继承机制摘要:继承是面向对象编程的核心概念,通过extends关键字实现类之间的层次关系。子类继承父类的成员变量和方法,实现代码复用并支持多态特性。继承规则包括:1)子类优先访问自身成员,同名时遵循就近原则;2)方法重写需参数相同,可通过super调用父类方法;3)构造方法中隐式调用super()初始化父类。多态实现需满足继承体系、方法重写和父类引用调用三个条件,通过向上转型(父类引用子类对象)体现运行时动态绑定。注意final修饰的类/变量不可继承/修改,避免在构造方法中调用重写方法。继承优化了代
2025-12-12 07:47:47
546
原创 java 封装
本文摘要:文章系统介绍了Java中的封装机制与相关概念。重点讲解了封装原理(隐藏实现细节,暴露必要功能)、包的组织管理作用、static关键字的特性(修饰成员变量/方法,实现类共享访问)以及三种初始化方式。详细分析了代码块(静态/实例/普通)的执行顺序和特性,指出静态代码块优先执行且仅执行一次。同时阐述了静态成员与非静态成员的访问规则,强调静态方法不能直接访问非静态成员。全文通过具体示例说明了封装与限定符的结合使用,为Java面向对象编程提供了基础性指导。(149字)
2025-12-01 16:46:53
800
原创 java 类和对象
本文摘要:面向对象是一种以对象为中心的编程思想,Java中通过类实现面向对象。类定义使用class关键字,采用大驼峰命名,包含属性和方法。对象通过new实例化,成员变量默认初始化为null或0。使用this引用当前对象,解决变量命名冲突和方法调用问题。构造方法用于对象初始化,需与类同名且无返回值,支持重载和this调用。编译器会对未初始化的变量赋予默认值。面向对象强调对象间的协作,与关注过程的面向过程形成对比。
2025-11-28 21:11:16
997
原创 Java数据类型与变量
字节型变量bytebyte在内存中占1个字节范围 -2*2-1到2*2包装类 Byte浮点型变量单精度浮点数float在内存中占4个字节包装类 Float。
2025-11-22 23:18:57
728
原创 初识java
随着1995年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布,并提出“Write once, Run anywhere" 的口号。动手实践是最好的学习方式,赶快安装好JDK和IDE,开始你的Java编程之旅吧!不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。多行注释 /** */
2025-11-21 21:48:18
508
原创 函数的创建和销毁
本文探讨了编程中函数的创建与销毁过程,重点分析了函数调用时的栈帧管理机制。在创建阶段,系统通过移动栈指针分配空间存储局部变量和参数,并详细介绍了寄存器(如ebp、esp等)在函数调用中的关键作用。销毁阶段则通过弹出栈帧回收资源,防止内存泄漏。文章通过C语言示例展示了从main函数到Add函数的完整调用过程,包括参数传递、栈帧切换和返回值处理,同时解释了汇编指令如push、mov、lea等在内存操作中的具体应用。理解这一机制对程序优化和资源管理至关重要。
2025-11-01 14:40:44
1341
原创 C语言题目1
列如 数组 int arr[] = { 1,2,3,4,5,6,7,8,9,10 }//编写程序数一下 1到 100 的所有整数中出现多少个数字9。编写程序数一下 1到 100 的所有整数中出现多少个数字9。++c 先++后使用 b=7 c=7。要在{‘b’,'i','t','\0'}计算长度是3。a/b 因为a是int类型 b是int类型。++a 先++后使用 c=6 a=6。main内是局部变量 所以打印 为1。所谓二分查找 就是折半思想。
2025-10-30 18:05:54
896
原创 C语言操作符
算术操作符: + 、- 、 * 、• 移位操作符: >> <<• 位操作符: & | ^• 赋值操作符: = / 、 % 、 += 、-= 、 *= 、• 单⽬操作符: /= 、 %= 、 >= 、!、 ++ 、- 、 & 、 * 、 + 、 、 ~ 、 sizeof 、 ( 类型 )• 关系操作符: > 、 >= 、 < 、• 逻辑操作符:&& ||• 条件操作符:?• 逗号表达式: ,• 下标引⽤: []• 函数调⽤: ()结构成员访问: . 、->⼆进制和进制转换。
2025-10-19 16:15:32
726
原创 C语言指针2
我们对数组的理解 在指针中 数组名是首元素的地址但是在sizeof(数组名) &数组名 是整个数组将*(p+i)换成p[i]也是能够正常打印的,所以本质上p[i]是等价于*(p+i)。同理arr[i] 应该等价于*(arr+i),数组元素的访问在编译器处理的时候,也是转换成⾸元素的地址+偏移 量求出元素的地址,然后解引⽤来访问的。为什么 在主函数中 sz1打印出的是3而自定义函数所打印的函数是2?因为 在主函数中 sizeof(a)所计算的是整个数组的值。
2025-09-10 10:44:51
679
原创 C语言 指针1
内存和地址内存和地址生活中我们在酒店为了找到对应的酒店和房间 有酒店名称和酒店房门牌号 在这里也可以用类比思想 我们的内存和地址我们电脑中中央处理器(CPU)把我们的电脑内存划分几个单元 我们运行内存 通常有8G/16G/32G 越高的处理器它的性能就越好每个内存单元取一字节1Byte字节 = 8bit 比特一个字节中有8比特 对应这8个学生入住每个内存单元也都有⼀个编号(这个编号就相当 于宿舍房间的⻔牌号),有了这个内存单元的编 号,CPU就可以快速找到⼀个内存空间。
2025-09-05 21:43:17
1210
原创 vs调试技巧
本文介绍了程序调试的基本概念和VS调试工具的使用。首先解释了bug(程序漏洞)和调试(debug)的含义,即发现并修复程序问题的过程。详细说明了VS中Debug(调试版本)和Release(用户版本)的区别,以及常用调试快捷键(F5/F9/F10/F11等)的功能。还介绍了监视窗口和内存观察的调试方法,强调调试需要反复练习以增强对代码的理解。最后列举了编程中的三类常见错误:编译型错误(语法问题)、链接型错误(标识符问题)和运行时错误(需调试解决)。掌握调试技能能帮助开发者更有效地定位和修复程序问题。
2025-08-27 18:48:57
2014
原创 C语言函数
C语言中的函数分为库函数和自定义函数两类。库函数是编译器根据C标准提供的现成函数(如printf),可直接调用;自定义函数由程序员编写,需声明返回值类型、函数名和参数。函数参数包括形参(定义时)和实参(调用时),二者独立存储。return语句用于返回值,可包含表达式或数值。数组可作为函数参数传递。函数可嵌套调用或链式访问。若函数定义在调用之后,需先声明。大项目中常将函数声明和实现分别放在.h和.c文件中。static和extern是重要关键字,用于变量和函数的修饰与声明。
2025-08-25 13:57:50
2249
原创 C语言中分支与循环 2
分支与循环是编程的基础 。刚刚学习的人难以运用 需要我们一遍又一遍去练习 相信极少数人一边就学会了 学会了并不代表会运用 不出错误 将自己 所学的代码一遍的在电脑上敲一遍 将思维学会 有助于更理解代码 各种代码之间关系与联系 。正所谓 不积硅步,无以至千里。 不积小河,无以成江海。积累的重要性相信自己 一起努力吧
2025-08-19 09:55:18
425
原创 个人心得生活篇
每天将学习听到的东西记录下来 晚上将自己所学到东西输出 自己看不懂的 就多看 正是因为看不懂 才让计算机有了门槛 让我们有所成就 相信美好的生活不会辜负最努力的自己 今天的努力让未来更加不后悔。我们将自己目标细化到每天做什么 而不是每周 每月 那么长的时间会失去动力希望 每天花三四小时 每个人都会逆袭 在于能不能克服自我 让自己有成就感 会让自己越来越热爱。我的目标希望我在计算机里能找到一份符合自己预期的工作 充满斗志。自主学习一定非常重要 自律的人一定十分强大。
2025-08-18 10:23:23
324
原创 C语言中分支与循环 1
if语句是编程基础,用于实现决策逻辑,提高代码的灵活性和可读性。掌握其语法、用法和注意事项,能有效避免错误,并编写更高效的代码。在实际开发中,结合其他控制结构(如循环),可以构建强大的程序逻辑。
2025-08-17 15:24:02
1920
原创 c语言中printf和scanf函数
printf:printf是C语言标准库中的一个输出函数,用于将格式化数据打印到标准输出设备(通常是屏幕)。该函数定义在stdio.h头文件中 scanf:scanf是C语言标准库中的输入函数,用于从标准输入设备(通常是键盘)读取格式化数据。同样定义在stdio.h头文件中
2025-08-15 17:52:42
788
1
原创 c语言2天 数据类型收获成长
摘要:本文总结了数据类型的基础知识,包括内置类型(整型、浮点型、布尔型、字符型)和自定义类型。重点讲解了有符号/无符号类型的区别、布尔类型的真值判断、浮点数的精度分类,以及printf格式说明符的使用。同时介绍了sizeof运算符和变量定义方法,并对比了单目/双目运算符的特性,特别强调了前置/后置++的操作差异。作者通过记录每日学习内容来加深理解,并指出需要继续改进不足之处。
2025-08-14 16:09:07
589
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅