自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构核心内容

◦ 线性结构:元素间呈一对一关系,包括数组(固定大小、随机访问快)、链表(动态大小、插入删除快)、栈(先进后出,栈顶操作)、队列(先进先出,首尾操作)、哈希表(键值映射,平均O(1)查询)。◦ 排序核心:冒泡排序(O(n²),稳定)、快速排序(O(nlogn),不稳定,分治思想)、归并排序(O(nlogn),稳定,分治+合并)、堆排序(O(nlogn),不稳定,利用堆特性)。◦ 基础操作:增(插入)、删(删除)、改(更新)、查(查找)、排序(调整元素顺序)。

2025-12-03 15:05:06 650

原创 Java教室管理系统

4. 设计原则:采用 MVC 架构(分离视图、控制、数据层),提高代码可维护性;数据库设计需包含教室表(id、名称、容量、状态)、用户表(id、账号、密码、角色)、预约表(id、用户id、教室id、预约时间段、审核状态)。1. 核心功能模块:教室信息管理(新增、查询、修改、删除教室规格/状态)、预约管理(学生预约申请、管理员审核、预约冲突检测)、使用记录统计(按时间段/教室类型导出使用数据)、权限控制(区分学生/管理员账号权限)。大量数据查询可添加索引(如预约表的教室id、时间段字段);

2025-12-03 15:03:12 149

原创 数据结构-哈希表

• 核心原理:通过 哈希函数(Hash Function) 将键转换为数组索引,直接访问对应值,实现 O(1) 级别的平均查找、插入、删除效率。◦ 优化:当链表长度超过阈值(如8),转为红黑树(Java HashMap的实现方式),提升查询效率。◦ 过程:创建新的更大数组(通常是原长度的2倍,且为质数),重新计算所有键的哈希值并迁移到新数组。• 键值对存储:数据库索引、哈希映射(HashMap)、哈希集合(HashSet,仅存键)◦ 作用:将任意类型的键(字符串、数字等)映射为固定范围的整数(数组索引)

2025-12-02 08:14:49 273

原创 数据结构-图结构

• 由 顶点(Vertex) 和 边(Edge) 组成的非线性结构(记为 G = (V, E),V 是顶点集,E 是边集)◦ 有向图:入度(指向顶点的边数,in-deg(v))+ 出度(从顶点出发的边数,out-deg(v))◦ 算法:Prim算法(适合稠密图,贪心选邻接最小边)、Kruskal算法(适合稀疏图,按权重选边避环)◦ 有向图(Digraph):边有方向(如 <u, v> 表示从 u 到 v,例:交通单向路)◦ 原理:顶点用数组存储,每个顶点对应一个链表/数组,存储其邻接顶点(及边权重)

2025-12-02 08:13:08 312

原创 数据结构-树结构

树的核心术语包括:父节点(直接上层节点)、子节点(直接下层节点)、兄弟节点(同一父节点的子节点)、叶子节点(无子女的节点)、节点的度(子节点个数)、树的深度(从根到最远叶子的层数,根为第1层)、树的高度(从叶子到根的最大层数)、路径(从根到某节点的节点序列)。• 二叉搜索树(BST):左子树所有节点值<根节点值,右子树所有节点值>根节点值,支持高效的查找、插入、删除操作(理想情况时间复杂度O(logn));• 多叉树:节点可以有多个子节点,典型例子是B树(多路平衡查找树),常用于数据库索引;

2025-12-01 08:14:33 595

原创 数据结构-栈与队列

实际应用中,队列常衍生出优先级队列(按优先级排序,而非入队顺序)、双端队列(Deque,两端均可入队出队)等变体,多用于任务调度、消息队列、广度优先搜索(BFS)等场景,Java 的 Queue 接口、C++ 的 std::queue 均为标准实现。其核心操作仅围绕栈顶进行:入栈(push)是将元素添加到栈顶,出栈(pop)是移除栈顶元素, peek 操作可查看栈顶元素而不删除,同时支持 isEmpty(判断是否为空)和 size(获取元素个数)等基础功能。二、队列(Queue)一、栈(Stack)

2025-12-01 08:13:13 481

原创 线性表核心内容

• 核心操作:初始化(创建空线性表)、插入(在指定位置添加元素)、删除(移除指定位置/值的元素)、查找(按索引或值定位元素)、更新(修改指定位置元素值)、判空(检查是否为空)、求长度(统计元素个数)。元素(节点)分散存储在内存中,每个节点包含“数据域”(存储元素值)和“指针域”(存储下一个/前后节点的内存地址),通过指针串联形成线性结构,无需物理地址连续。• 循环链表:表尾节点的后继指针指向表头(单循环链表)或表头的前驱指针指向表尾(双循环链表),适合环形场景(如约瑟夫环问题)。需避免数组扩容的拷贝开销。

2025-11-30 11:19:04 402

原创 数据结构基本知识

• 队列:“先进先出”(FIFO),允许在队尾入队、队首出队,支持enqueue(入队)、dequeue(出队),基础队列O(1)操作,优先级队列(按优先级排序)O(logn)操作,常用于任务调度、广度优先搜索(BFS)。• 栈:“先进后出”(LIFO),仅允许在栈顶操作,支持push(入栈)、pop(出栈)、peek(查看栈顶),时间复杂度均为O(1),常用于递归、表达式求值、括号匹配。• 表示方法:邻接矩阵(二维数组,适合稠密图)、邻接表(链表数组,适合稀疏图)。

2025-11-30 11:17:18 620

原创 Java 资料查询系统

Resource 类封装资料核心属性,包括资料编号(唯一标识)、标题、作者、类型(文献/教程/报告等)、发布时间、关键词、存储路径(本地文件或网络链接)、摘要等,提供 getter/setter 方法,重写 equals() 和 hashCode() 方法确保数据唯一性判断,新增 matchKeyword() 方法用于关键词匹配查询;ResourceQuerySystem 作为核心管理类,封装数据存储源(集合/文件/数据库),提供资料的添加、删除、修改、查询等核心业务方法。

2025-11-29 09:31:44 364

原创 Java 道路信息系统

核心功能实现中,查询功能支持按道路编号、起点终点、道路类型等条件检索,通过遍历数据集合或执行 SQL 查询语句实现,可结合 HashMap 优化查询效率(以道路编号为键);系统核心数据模型以面向对象思想设计,核心类包括 Road(道路实体)、Intersection(路口实体)、RoadSystem(系统管理类)。Java 道路信息系统是基于 Java 语言开发的地理信息相关应用,核心围绕道路数据的存储、管理、查询与展示,整合面向对象编程、数据结构及 IO 操作等核心技术,适用于交通导航、路径规划等场景。

2025-11-29 09:06:00 896

原创 Java 异常核心

◦ 运行时异常(unchecked异常):继承自RuntimeException,编译不校验(如NullPointerException、ArrayIndexOutOfBoundsException、ArithmeticException)4. throw:手动抛出单个异常对象(如throw new NullPointerException("空指针异常"))◦ 编译时异常(checked异常):编译器强制要求捕获/声明(如IOException、SQLException)// 打印异常堆栈信息。

2025-11-28 10:39:05 260

原创 Java 信息采集系统

• 主流框架:OkHttp(轻量、高效,支持GET/POST、表单提交、文件上传,自动处理连接池、重定向)、HttpClient(Apache出品,功能全面,适合复杂请求场景)。• 网页解析(HTML/XML):Jsoup(强大的DOM解析,支持CSS选择器、XPath,简化HTML元素提取)、Dom4j(专注XML解析,适合结构化XML数据)。• 典型场景:网页数据爬取(新闻、商品信息)、接口数据采集(API接口返回的JSON/XML数据)、本地文件数据提取(Excel、CSV)。

2025-11-28 08:45:01 375

原创 Java 计时系统

• 核心功能:启动计时、暂停计时、继续计时、停止计时、重置计时、获取累计时长,支持毫秒/秒/分钟级精度展示。• 设计原则:封装计时状态与核心数据,通过状态控制避免非法操作(如未启动时暂停),用时间戳保证计时准确性。• 多单位适配:提供毫秒/秒/分钟级获取方法,满足不同场景展示需求(如秒杀计时用毫秒,考试计时用分钟)。• 状态流转:启动→暂停→继续→停止→重置的全流程状态一致性,非法操作(如暂停未启动的计时)无异常。// 计时状态:运行中/暂停/停止。// 累计已计时长(毫秒)// 启动时时间戳(毫秒)

2025-11-27 09:32:19 921

原创 Java 停车场系统

• 出场逻辑:根据车牌号查找车位 → 计算停车时长(exitTime - entryTime)→ 按计费规则算费 → 释放车位 → 保存停车记录。• 核心功能:车辆入场(登记信息、分配车位)、出场(计算费用、释放车位)、车位查询、记录统计,需支持多车辆类型(小型车、大型车)和不同计费规则。// 车辆类型(小型车/大型车)• 基础规则:小型车 2 元/小时,大型车 3 元/小时,不足 1 小时按 1 小时算。// 入场时间(毫秒级时间戳)// 构造方法、getter/setter、占用/释放方法。

2025-11-27 09:30:07 232

原创 Java 签到系统

" 连续签到:" + user.getContinuousSignDays() + "天");"签到成功" : "签到失败");封装用户的基础信息与签到相关数据,包括用户ID、用户名、累计签到天数、连续签到天数及最后签到时间,提供更新签到状态的方法。System.out.println("请输入指令(1-签到 2-查询签到信息 0-退出):");处理签到的核心业务逻辑,包括验证用户签到状态、执行签到操作、查询用户签到记录,是业务层的核心实现。System.out.println("请输入用户ID:");

2025-11-26 16:30:51 791

原创 Java 实现斗兽棋

核心方法为判断棋子间的克制关系,依据斗兽棋规则,鼠能吃象,虎能吃猫等,同时需考虑陷阱、河流等场景的特殊规则。System.out.println(currentPlayer + "方行动,请输入棋子位置和目标位置(如:1 2 3 4):");"蓝" : "红";管理棋盘的格子状态、棋子布局与地形(草地、河流、陷阱、兽穴),提供方法实现棋子的移动、放置与位置合法性检查。// 地形,如"草地""河流""陷阱"// 棋子类型,如"鼠""猫"// 阵营,如"红""蓝"currentPlayer = "红";

2025-11-26 16:28:00 291

原创 Java 实现象棋

System.out.println(currentPlayer + "方回合,请输入走棋指令(格式:原横坐标 原纵坐标 新横坐标 新纵坐标):");"黑" : "红";// 当前回合玩家("红"/"黑")board[0][0] = new Chariot("黑", 0, 0);board[0][8] = new Chariot("黑", 8, 0);board[9][0] = new Chariot("红", 0, 9);board[9][8] = new Chariot("红", 8, 9);

2025-11-25 09:36:58 376

原创 Java 实现五子棋

采用面向对象思想,将五子棋拆分为棋盘类(Chessboard)、棋子类(ChessPiece)、游戏逻辑类(GobangGame)和主程序类(GobangMain),各司其职降低耦合。currentPlayer = currentPlayer.equals("黑")?"白" : "黑";} else if (board[i][j].getColor().equals("黑")) {System.out.print("请" + currentPlayer + "棋落子:");

2025-11-25 08:17:12 924

原创 Java 制作小程序

• 核心组件:JFrame(主窗口)、JPanel(面板)、JButton(按钮)、JTextArea(文本域)、JLabel(标签)• 布局管理:优先使用 FlowLayout(流式)、BorderLayout(边界),复杂布局用 GridLayout(网格)• 基础依赖:理解 Java 面向对象(类、接口、继承)、IO 流、集合框架(ArrayList、HashMap)• 界面组件不显示:检查组件是否添加到容器、布局是否合理、窗口大小是否设置(setSize())

2025-11-24 10:44:41 592

原创 Java 图书馆管理系统

• 数据库操作:设计数据表(用户表、图书表、借阅记录表),使用JDBC或MyBatis实现CRUD,处理事务(如借阅时库存减少与记录添加原子性)。• 图书管理模块:图书信息录入(书名、作者、ISBN、分类、库存等)、查询(按多条件筛选)、修改、删除、库存更新。• 借阅归还模块:借阅登记(关联读者与图书、设置归还日期)、归还登记(校验是否超期)、超期罚款计算、借阅记录查询。• 用户管理模块:实现读者注册、登录、信息查询/修改(姓名、联系方式等)、权限区分(普通读者/管理员)。

2025-11-24 08:42:43 393

原创 Java 学生管理系统

• 实体类(Student):封装学生属性(private修饰学号、姓名等字段),提供getter/setter方法、无参/有参构造器、toString()方法(方便打印信息)。• 数据库存储(实用版):使用JDBC连接MySQL,设计student表(字段对应Student类属性),通过SQL语句实现增删改查,需处理数据库连接、异常和事务(可选)。return "学号:" + id + ",姓名:" + name + ",年龄:" + age + ",成绩:" + score;

2025-11-21 23:34:56 410 2

原创 Java 扫雷游戏

• 右键功能:需要禁用按钮的默认右键菜单(btn.setComponentPopupMenu(null))if (i == 0 && j == 0) continue;◦ 二维数组 boolean[][] mineMap:标记地雷位置(true 为地雷)• 游戏面板:棋盘(二维数组存储格子状态)、计时器、剩余地雷数显示、重置按钮。• 核心逻辑:地雷随机生成、点击格子数字计算、空白格子自动展开、胜负判定。• 格子状态:未点击、已点击(数字/空白)、标记地雷、疑问标记。

2025-11-19 16:56:44 839

原创 用Java写数独游戏

System.out.println("输入操作(格式:行 列 数字,如 1 1 5;行列为1-9):");System.out.println("选择难度(1-简单/2-中等/3-困难):");System.out.println("该格为固定数字,不可修改!System.out.println("数字冲突,重新输入!• 用 int[][] board = new int[9][9] 存储棋盘(0 表示空白格)• 辅助数组 boolean[][] isFixed 标记固定数字(生成时的初始数,不可修改)

2025-11-18 10:30:23 312

原创 Java Set实验

4、定义一个Employee类,属性:工号-empId、姓名-empName、性别-empSex、部门-department、工资-slalary,创建多个Employee对象,存储在Set集合中,要求员工信息不能重复(所有信息相同视为重复),根据要求完成以下功能:(部门可以为:人事部、研发部、财务部、咨询部)在main方法中测试:添加 5 本图书(含 2 本重复 ISBN),删除 1 本,查找 1 本,最后展示所有图书。5、创建一个商品(Product)类,属性:商品名,商品单价,商品的数量,商品产地。

2025-11-17 08:28:17 250

原创 Java Set

1. 去重逻辑:HashSet/LinkedHashSet 中,若元素未重写 hashCode() 和 equals(),会默认使用 Object 类的方法(仅判断地址值),导致无法去重。• 删除:remove(Object o)、removeAll(Collection c)、clear()(清空集合)。• 判断:contains(Object o)(判断是否包含元素)、isEmpty()(判断是否为空)。• 其他:size()(获取元素个数)、toArray()(转为数组)。

2025-11-15 12:56:05 274

原创 Java Collection

遍历集合的标准方式,避免索引操作的局限(如Set无索引),核心方法hasNext()(是否有下一个元素)、next()(获取下一个元素)、remove()(删除当前元素)。• 排序:sort(List<T> list)(自然排序)、sort(List<T> list, Comparator<?◦ 查询:size()(元素个数)、contains(Object o)(是否包含元素)、iterator()(获取迭代器)◦ 删除:remove(Object o)(删除单个元素)、clear()(清空集合)

2025-11-12 09:55:02 273

原创 Java 异常分类

• 典型示例:NullPointerException(空指针访问)、ArrayIndexOutOfBoundsException(数组下标越界)、ClassCastException(类型转换错误)、ArithmeticException(算术错误,如除数为0)。• 典型示例:IOException(文件读写、网络连接异常)、SQLException(数据库操作异常)、ClassNotFoundException(类加载失败异常)。1. 受检异常(Checked Exception)

2025-11-11 10:49:41 438

原创 Java 结构

,break 用于跳出分支,否则穿透执行。• finally:无论是否发生异常,都会执行的代码块(常用于关闭资源),语法为 try { 代码 } catch (异常类型 e) { 处理代码 } finally { 释放资源 }。• if-else:单条件判断,语法为 if (条件) { 代码块1 } else { 代码块2 },可嵌套 if-else if-else 实现多条件判断。• 整数型:byte(1字节)、short(2字节)、int(4字节,默认整数类型)、long(8字节,需加后缀 L)。

2025-11-10 08:31:54 685

原创 Java 多线性进程

线程的生命周期包含5个核心状态:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked/Waiting/Timed Waiting)、终止(Terminated),状态转换由线程调度器和wait()、notify()、sleep()等方法触发。自定义类继承java.lang.Thread,重写run()方法(线程执行逻辑),通过start()方法启动线程(底层调用start0()native方法,由JVM创建操作系统线程并执行run())。

2025-11-07 10:22:23 949

原创 Java 线程池

• CachedThreadPool:核心线程数0,最大线程数不限,超时短,适合短期、突发任务。• 最大线程数:线程池能容纳的最多线程,核心线程忙时会临时创建,直到达此上限。线程池是管理线程的容器,复用线程、控制并发数,避免频繁创建/销毁线程的开销。2. 队列满了,判断当前线程数是否小于最大线程数,是则创建非核心线程执行。• 任务队列:核心线程忙时,新任务先存到队列,队列满了才创建非核心线程。• 核心线程数:长期存活的线程数,任务来了优先用这些线程。• DiscardPolicy:默默丢弃新任务。

2025-11-03 09:38:55 153

原创 Java 线性同步核心内容

Java 6后有锁升级机制,从无锁依次升级为偏向锁、轻量级锁,竞争激烈时最终升级为重量级锁,以此优化性能。需手动通过lock()获取锁,且要在finally块中用unlock()释放锁。◦ 性能优化:synchronized有锁消除、锁粗化优化,锁消除会移除无逃逸对象的同步操作,锁粗化会合并连续的锁操作减少开销;◦ 可重入性:synchronized和ReentrantLock均为可重入锁,同一线程可多次获取同一把锁,锁会通过计数器记录获取次数,释放时计数器递减至0才完全释放,避免线程自身死锁。

2025-11-01 12:54:58 350

原创 Java 线性进程核心内容

线性表是n个数据元素的有序序列,元素间呈“一对一”逻辑关系(除首尾元素外,每个元素有唯一前驱和后继),常见实现:数组(顺序表)、链表。• 存储特点:元素(节点)分散存储,每个节点含数据域和指针域(指向下一节点),无需连续内存。• 优先用链表:插入删除频繁、元素数量不确定(如增删购物车商品)。2. 插入/删除:O(n)(需移动后续元素腾出位置或填补空缺);2. 插入/删除:O(1)(找到节点后,仅需修改指针指向);• 优先用顺序表:查询频繁、元素数量稳定(如查询成绩排名);三、链表(节点链式存储)

2025-10-29 12:04:08 222

原创 Java线性结构核心内容

◦ 优先级队列(PriorityQueue):元素按优先级排序,出队时优先弹出最小(或最大)元素,底层是堆结构(非严格线性存储,但逻辑线性)• 核心规则:先进先出(FIFO),元素从队尾(rear)入队(offer),从队首(front)出队(poll)。• 核心规则:先进后出(LIFO),仅允许在栈顶(顶端元素)进行压栈(push)和弹栈(pop)操作。• 核心特点:增删效率高(只需修改指针,O(1)),但查询慢(需从头遍历,O(n))。• 本质:在内存中占据连续整块空间,通过索引(下标)直接访问元素。

2025-10-27 11:03:37 260

原创 Java 线程核心内容

• 线程状态:共6种,分别是NEW(新建)、RUNNABLE(可运行)、BLOCKED(阻塞)、WAITING(等待)、TIMED_WAITING(计时等待)、TERMINATED(终止),状态转换需通过start()、wait()、sleep()等方法触发。◦ volatile:修饰变量,保证变量的“可见性”(一个线程修改后,其他线程能立即看到)和“禁止指令重排序”,但不保证原子性(如i++仍需额外同步)。• 核心作用:管理线程生命周期,避免频繁创建/销毁线程的开销,控制并发线程数量,防止资源耗尽。

2025-10-26 16:29:48 429

原创 Java File类

1. 绝对路径:从根目录(如C盘、/Users)开始的完整路径,例:new File("D:/test.txt")(Windows)、new File("/Users/test.txt")(Mac/Linux)。• getName():获取文件/目录的名称(不含路径),例:new File("D:/test/a.txt").getName() 返回“a.txt”。• mkdir():创建单层目录,若父目录不存在则创建失败(返回false),例:想创建“D:/a/b”,若D:/a不存在则失败。

2025-10-23 10:49:06 232

原创 Java 字符流进阶

• InputStreamReader:将字节输入流(如FileInputStream)转换为字符输入流,可指定编码(如UTF-8、GBK)。• StringReader/StringWriter:以字符串为数据源/目标,无需操作文件,常用于字符串的IO风格处理(如解析字符串内容)• BufferedReader:自带8KB缓冲区,新增readLine()方法,可直接读取整行文本(无需自己拼接字符)。Java字符流进阶核心是处理字符编码与高效缓冲流的应用,解决字节流可能出现的中文乱码问题,并提升IO性能。

2025-10-21 13:03:17 241

原创 Java字符流

字符流以字符(char) 为基本操作单位(1个字符=2个字节),专为处理文本数据(如.txt、.java文件)设计,能自动处理不同编码格式的字符转换,避免字节流处理文本时出现乱码。2. Writer:字符输出流的顶层父类,定义了写入字符的核心方法(如write()、flush()、close()),负责将字符写入目标(文件、控制台等)。1. Reader:字符输入流的顶层父类,定义了读取字符的核心方法(如read()、close()),负责从数据源(文件、网络等)读取字符。

2025-10-20 08:33:30 364

原创 Java IO核心内容

Java IO(Input/Output)用于处理设备间的数据传输,核心是“流”(Stream),即数据按顺序流动的通道,分为输入流(读数据)和输出流(写数据),且所有流都实现了 AutoCloseable 接口,推荐用 try-with-resources 自动关闭,避免资源泄漏。• 核心父类:InputStream(输入字节流,读数据)、OutputStream(输出字节流,写数据),均为抽象类,需用子类实例化。• 特点:可处理任何二进制数据(如图片、视频、音频、文件),是 IO 流的基础;

2025-10-18 09:28:05 288

原创 Java核心进阶语法

• 对象流:ObjectInputStream/ObjectOutputStream,用于实现“对象序列化”(将对象写入文件)和“反序列化”(从文件读取对象),要求被序列化的对象必须实现Serializable接口(标记接口,无实际方法),实现对象持久化存储。IO流是“数据传输的通道”,核心作用是实现“设备间数据交互”(如文件读写、网络数据传输),按流向分为输入流(从外部读数据到程序)和输出流(从程序写数据到外部),按数据单位分为字节流(操作所有类型文件)和字符流(仅操作文本文件,处理编码问题)。

2025-10-15 11:54:27 820

原创 Java核心基础语法

◦ 基本类型(8种):byte、short、int(默认)、long、float、double(默认)、char、boolean。• 关键字:Java预留的特殊单词,不可作为变量名(如class、int、if、static)。◦ 算术运算符:+、-、*、/(整数除法取整)、%(取余)、++(自增)、--(自减)。◦ 赋值运算符:=、+=、-=(如a += 3等价于a = a + 3,自动类型转换)。• 注释:// 单行注释、/* 多行注释 /、/* 文档注释 */(可生成API文档)。

2025-10-12 19:10:05 402

空空如也

空空如也

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

TA关注的人

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