- 博客(37)
- 收藏
- 关注
原创 TCP 与 UDP 的区别
TCP和UDP是两种不同的传输层协议:TCP是面向连接的可靠协议,通过三次握手、数据确认、重传等机制保证数据正确传输,适合Web、文件传输等场景;UDP是无连接的快速协议,不保证可靠性但延迟极低,适合游戏、直播等实时应用。现代应用常混合使用二者:UDP处理实时数据,TCP处理关键数据。理解这两种协议的本质差异(可靠VS快速)是网络编程的重要基础。
2025-11-18 16:08:07
502
原创 单例模式与线程池的实际应用
单例模式是一种确保全局唯一对象的设计模式,主要应用于配置管理、日志系统、连接池等需要统一访问点的场景。核心实现包含私有构造器、静态实例和访问方法,并通过同步控制保证线程安全。常见实现方式包括:饿汉式(类加载时初始化)、懒汉式(延迟初始化+同步锁)、双重检查锁(volatile防止指令重排)、静态内部类(利用类加载机制)和枚举式(反射安全)。该模式在提升系统可控性和资源复用性的同时,需权衡初始化时机与线程安全的关系。
2025-10-20 12:51:58
589
原创 线程池相关内容与操作
线程池是管理并发任务的一种机制,通过复用线程资源提升效率。它的核心思想是限制线程数量,避免频繁创建销毁线程的开销。创建线程池时需配置核心线程数、最大线程数、任务队列和拒绝策略等参数,这些参数决定了系统的处理能力和行为方式。线程池会按需调度任务执行,空闲线程会保持待命状态。使用完毕后需要显式关闭线程池,否则可能造成资源浪费。线程池性能受限于硬件资源,过多线程会导致内存消耗和上下文切换开销。总体而言,线程池通过有序的资源管理实现了高效的任务处理,体现了对系统资源的节制使用。
2025-10-20 12:42:40
822
原创 如何制作手感良好的移动算法?
本文探讨了游戏中移动算法的设计要点,分析了不同游戏类型对移动手感的影响。文章首先定义了良好移动算法的要素,包括加速、减速、最高速度限制和冲刺功能。接着通过《CS:GO》《第五人格》等游戏案例,说明不同游戏对移动算法的特殊需求。文章还详细讨论了动作优先级的设计原则,以及如何通过调整参数优化游戏体验。最后提供了一个可配置的Java模拟器,允许开发者测试不同移动参数的效果。全文强调了移动算法对游戏手感的重要性,并提供了实用的设计思路和工具。
2025-08-29 15:45:21
942
1
原创 差点膨胀成微信的小型支持私聊的聊天软件的实现与Java联机基础
这篇文章介绍了一个基于Java开发的小型聊天软件实现过程。作者通过构建"服务器-客户端"模型,逐步实现了用户登录、好友管理、消息收发等核心功能。服务器作为中转站管理在线用户信息,客户端负责用户交互,使用Socket通信、对象序列化和多线程处理等技术实现数据传输和并发处理。文章详细阐述了功能模块设计、实现思路和Java网络编程的关键技术点,如Socket连接、对象流传输、多线程处理等,并分享了开发过程中遇到的挑战和功能扩展的思考,最终形成一个具备基础聊天功能的简化版微信。
2025-08-29 13:16:40
564
原创 Java是如何实现通信的,在空气之外?
本文介绍了Java网络通信的核心原理与实现方法。通过聊天室程序示例,重点阐述了Socket编程中"收发对应"的基本原则:服务器端监听与客户端连接必须匹配,每个write操作对应read操作。文章还讲解了多线程处理客户端连接、消息广播机制以及异常处理等关键技术,强调网络通信的本质在于维护严格的输入输出对应关系。这些对应原则确保了Java网络应用的可靠性和稳定性,使开发者能够构建高效的通信系统。
2025-08-26 12:02:14
507
原创 当你红温砸手柄时候,游戏执行的存档:
游戏几乎都有存档功能,连泡泡堂和秋山坦克大战也有。那么它是如何执行的?又如何避免不被修改的?这是一个企业级的实现方案,至少用到三种技术栈,有些过于复杂了。其实有三个核心过程:写入,加密,读取。
2025-08-17 16:29:30
222
原创 Java 图片像素碰撞检测
摘要:ImageIconCrack类实现了2D图形应用中精确的像素级碰撞检测,解决了传统矩形边界检测在透明区域误判的问题。该方法通过读取图片的像素数据,先进行快速矩形碰撞预判,再对重叠区域逐像素检查透明度,仅当两个非透明像素重叠时才判定为碰撞。适用于格斗游戏、精确拖拽等需要高精度交互的场景,相比矩形检测更耗时但准确度更高。建议对频繁检测的图片使用内存缓存,并控制图片尺寸以优化性能。
2025-08-14 18:32:50
441
原创 JavaSwing监听器的原理及使用
本文系统介绍了Java GUI编程中的事件驱动模型和Swing监听器机制。核心内容包括:1) Java事件本质是用户与GUI组件的交互行为,通过事件监听器实现响应;2) 重点解析了MouseListener、KeyListener和ActionListener三类常用监听器及其方法;3) 详细说明了通过实现接口或继承适配器类两种监听器调用方式;4) 深入探讨了事件驱动编程的精髓、线程安全(EDT)和焦点管理等关键概念。
2025-08-10 12:44:55
887
原创 Daisy —— 轻量级 Java 消息广播与订阅工具
本人的一个轻量级开源项目,用于Java近乎于scratch一般方便的广播和消息接收系统而不用受改static变量之苦。Daisy 是一个单文件、零依赖的 Java 工具类,用于实现跨类的线程安全消息广播与订阅。空主题安全处理:修复了 null 作为键时的 hashCode() 问题。特性 单文件:下载 Daisy.java 放进项目即可用。灵活订阅:支持订阅指定主题或全部主题。零依赖:纯 Java SE 实现。
2025-08-08 13:20:29
362
原创 基于文件存储的键值对管理系统实现与分析
本文介绍了一个基于Java实现的键值对存储系统,采用文本文件作为持久化存储介质。系统通过控制台交互提供增删查功能,核心功能由KVKeyHash类实现。数据以"key=数值-value=字符串"格式存储于kvs.txt文件中。系统采用单类封装设计,包含用户交互、文件操作和业务处理模块。新增功能采用追加写入方式,查询通过逐行解析文件实现,删除则采用"读入-过滤-重写"策略。系统在程序退出时会清空文件内容,确保会话独立性。虽然实现简单直观,但存在大规模数据效率低、缺乏并发控
2025-08-06 18:09:18
444
原创 用 JavaSwing 开发经典横版射击游戏:从 0 到 1 实现简易 Contra-like 游戏
通过上述设计,我们实现了一个具备基础玩法的横版射击游戏框架。这个简易版本虽然功能有限,但包含了 2D 游戏开发的核心要素:场景管理、角色控制、碰撞检测、游戏循环和用户输入。增加多种敌人类型和 Boss 战实现道具系统(武器升级、生命值恢复)添加关卡切换与进度保存加入音效与背景音乐优化 AI 逻辑,实现更复杂的敌方行为JavaSwing 虽然不是游戏开发的首选工具,但通过这个案例可以看出,利用其基础组件和绘图能力,完全可以构建出具有可玩性的小型游戏。
2025-08-02 16:56:34
1032
原创 基于 LFU 策略的存储缓存系统设计与实现
本文探讨了StorageCacheSystem的设计实现,这是一个结合磁盘持久化与内存缓存的存储系统。系统采用LFU缓存策略,通过"缓存优先"访问机制和双重备份存储策略,实现数据的高效管理。核心设计包括数据生命周期管理、访问频率统计、缓存容量控制与淘汰机制。文章还讨论了频率统计优化方案(时间窗口衰减)以及应对缓存击穿、雪崩等问题的解决方案。该系统在保证数据安全性的同时,通过智能缓存策略显著提升了热点数据的访问效率。
2025-08-02 16:40:31
645
原创 内存、硬盘与缓存的技术原理及特性解析
计算机存储系统由内存、硬盘和缓存构成层次化架构,各司其职又协同工作。内存作为易失性存储器,为CPU提供高速数据访问;硬盘实现数据持久化存储,从机械硬盘发展至固态硬盘;缓存则利用局部性原理,在CPU与内存间建立高速桥梁。三者通过虚拟内存、缓存一致性协议等技术协同工作,形成完整的存储体系。随着3D堆叠、非易失性内存等新技术发展,存储系统正朝着更高速度、更大容量和存算一体方向演进,为计算机性能提升奠定基础。
2025-08-02 16:27:05
1254
原创 生命游戏,模拟生命的诞生和生存(Java)
摘要:本文介绍了使用Java实现康威生命游戏的方法。系统采用三层架构:GameUI类负责图形界面展示,GameOfLife类管理网格状态,DieDaiGuiZe类实现核心算法。算法基于二维网格中细胞的邻域状态(3×3范围内)进行迭代更新,存活细胞在2-3个活邻居时存活,死亡细胞在恰好3个活邻居时复活。实现采用双矩阵策略避免状态污染,通过嵌套循环完成每代演化,展现了复杂系统自组织的特性。该实现有效模拟了生命游戏的基本规则和动态特征。
2025-07-29 17:28:02
912
原创 使用Object继承和泛型处理一个复杂多变还要多层套用还要变成无限拓展链的数据结构————————(示例)利用 Object 继承和泛型处理员工职位多层嵌套的无限拓展信息链
本文探讨了Java中equals、toString和clone三个方法的必要性及标准重写模式。equals方法需重写以比较内容而非地址,标准流程包括基础校验、类型转换和字段比较;toString重写应返回类名及属性值的格式化字符串;clone方法需实现深拷贝,对引用类型属性进行递归克隆。文章通过员工管理系统的示例,展示了如何正确实现这三个方法,并验证克隆对象的独立性。掌握这些重写模式能有效处理复杂对象的比较、打印和复制需求。
2025-07-26 17:43:43
932
原创 2D游戏背景滚动教程(JavaSwing)
2D游戏视口滚动控制技术摘要:本文介绍了一个2D游戏视口滚动系统的实现方案。核心思路是将游戏窗口作为显示大世界的"视口",通过计算角色位置与屏幕边缘触发区域的关系来控制背景滚动。系统包含视口初始化、滚动触发区域设置、边界约束等关键模块,实现了当角色接近屏幕边缘时平滑滚动背景,并确保视口不会超出世界边界。代码示例展示了如何计算角色屏幕坐标、处理键盘输入、更新视口位置以及优化绘制性能,最终实现角色在超大世界中自由移动的效果。
2025-07-26 12:51:07
363
原创 Java线程初步(2)
本文展示了一个基于Java多线程的小球碰撞动画系统,主要包含三个核心组件:1)UI框架负责创建窗口和面板;2)ThreadListener类处理鼠标点击添加小球和键盘控制(S键暂停/D键恢复);3)BallClass实现小球物理系统,包括运动轨迹、边界反弹和碰撞检测。系统通过ThreadBall线程实现动画循环,采用2毫秒休眠控制帧率,在保持性能的同时实现流畅动画效果。该案例完整演示了多线程编程、图形绘制和用户事件处理的综合应用,为开发交互式动画提供了实用参考。
2025-07-23 19:00:31
869
原创 水流走迷宫的Java实现
这段Java代码实现了一个迷宫生成与路径搜索可视化系统。系统采用改进的Prim算法随机生成30x30的迷宫,并强制保证从左上角起点到右下角终点的路径存在。可视化功能使用不同颜色标示起点(绿色)、终点(红色)、路径(蓝色)和已探索区域(青色)。通过BFS算法实现路径搜索过程的动画展示,用户可点击"生成新迷宫"创建新的迷宫,或点击"开始求解"观看搜索过程。技术亮点包括采用A*算法确保路径存在、优先队列优化搜索效率,以及动态调整动画速度提升用户体验。
2025-07-22 16:18:04
324
原创 Java线程初步
本文介绍了Java多线程编程的基本方法,以一个Swing界面中球体移动的案例进行演示。主要内容包括:1)通过继承Thread类创建线程(ThreadBall示例);2)线程核心操作在run()方法中实现(如球体向右移动);3)通过start()方法启动线程执行。该案例展示了如何利用多线程实现简单的动画效果,为Java多线程编程提供了入门实践。
2025-07-22 13:47:39
225
原创 日麻役种计算器的java雏形实现
可以看到,里面主要有诸如主页面牌的位置,54张牌的可供选择的点击地点,和已经被选择的牌的显示(当然还有一个答案显示和背景Panel)本项目实现了一个简易的日麻役种计算器,技术栈为Java Swing。包括前端的选牌,看你选的牌,根据你选的牌计算等部分。(本人并不懂全部的规则,所以计算部分的完善只能后人补充了)包括是否是宝牌,牌面数字,牌种类,是牌堆中第几张等等。通过这些内容,我们可以实现日麻役种的简易计算。各种各样的“是与非”
2025-05-25 15:34:46
190
原创 Java图像二值化处理与简易UI实现
本项目包含两个核心类,实现了图像的二值化处理和简易可视化功能:2. ImageUI.java(可视化界面类) 二、核心功能解析1. 图像读取与矩阵转换方法实现图像到二维数组的转换:使用读取图片文件遍历每个像素获取RGB值存储为二维数组方法核心逻辑: 灰度计算:RGB平均值法阈值分割:128为临界值生成二进制字符串表示(1白/0黑)方法实现特性:遍历指定目录的图片文件生成所有图片的二值化编码通过字符对比计算差异度输出相似度统计结果类特性:继承JFrame创建窗口程序使用方
2025-03-30 17:20:22
321
原创 Java 接口设计,书写,调用
当我们的指尖在键盘上敲击出interface这个词时,便悄然叩响了数字世界与理念世界的共振。这看似寻常的语法符号,实则是柏拉图洞穴外投射的永恒投影——它不执着于石壁上的影子,而直指万物运行的元型。那些在字节流中浮沉的接口,恰似《周易》六十四卦的爻变之相。每个方法签名为一道卦象,不涉具体,却暗藏万般可能。正如"乾"卦可化龙在天,亦可为马行地,同一接口在不同实现中演绎着形态的嬗变与本质的恒常。在编译器的凝视下,接口成为一场精妙的二律背反:它既是牢不可破的契约,又是虚无缥缈的承诺。
2025-03-26 22:12:44
660
原创 Java的继承
今天来聊一个快被说烂了的话题,继承。继承是面向对象编程中的一个重要概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。通过继承,子类可以复用父类的代码,并且可以添加自己的特性。对多个类的操作如果同时存在多个类,这些类都具备很多相同的属性、特征、方法,那么我们可以实现将相同部分的属性和方法定义在一个父类中,这些类都来继承父类,可以直接继承父类的属性和方法。1如果父类中的属性和方法使用了受限制的访问权限修饰符修饰,同样子类也不一定可以直接调用.2。
2025-03-23 17:21:48
252
原创 Java编程————面向对象
简单来说,类就是类别的意思,用class表示。面向对象编程,万物皆可编程 ,在程序中表示一个事物时,往往回因为事物的复杂导致编程的代码非常的复杂。或者更深层次的理解,你创建一个类,你就是创建了一个新的,专属于你的数据类型。int age;int height;int weight;//等等等等......以及它所能进行的方法,比如List有add,remove等,我们也可以给类里写上方法。int age;int height;int weight;//等等等等......
2025-03-16 16:14:25
688
原创 代码中那些你以为不是很重要的细节 之 运算符与逻辑控制
从运算符的隐式类型转换,到逻辑控制的边界条件,再到引用类型的地址传递,这些细节看似琐碎,却直接影响程序的正确性与性能。明确类型:避免混合类型运算的意外结果。防御性编程:利用短路特性、边界检查等手段预防潜在错误。理解内存机制:区分值类型与引用类型的底层行为差异。只有重视这些“不起眼”的细节,才能写出健壮、高效的代码。
2025-03-09 20:27:08
1152
原创 代码中那些你以为不是很重要的细节 之 运算符与逻辑控制
从运算符的隐式类型转换,到逻辑控制的边界条件,再到引用类型的地址传递,这些细节看似琐碎,却直接影响程序的正确性与性能。明确类型:避免混合类型运算的意外结果。防御性编程:利用短路特性、边界检查等手段预防潜在错误。理解内存机制:区分值类型与引用类型的底层行为差异。只有重视这些“不起眼”的细节,才能写出健壮、高效的代码。
2025-03-09 20:23:58
1485
原创 从咖啡杯到字节码:我的Java世界观与那些你可能忽略的细节
它原本是Java的“扩展包抽屉”,装着Swing、XML处理这些“非核心工具”。有趣的是,Java最初是为嵌入式系统设计的,结果阴差阳错成了互联网的“基建狂魔”。这个命令,本质上是把你的Java代码“降维”成字节码。:从Spring的“全家桶”到Hadoop的大数据王国,Java的世界永远不缺轮子。(Write Once, Run Anywhere),靠的是JVM这层“翻译官”。所以真正的“一次编写,到处运行”,其实是“一次编写,到处调试”。了
2025-03-04 20:48:41
535
原创 使用Java构建简单的图像查看器和处理器
在本篇博客中,我们将介绍如何使用Java开发一个简单的图像查看器和处理器,主要功能包括加载图像、应用灰度和二值化滤镜,以及保存处理后的图像。该项目采用Java的Swing库构建图形用户界面,并采用面向对象的方法,使代码模块化,易于扩展。
2025-02-18 19:22:24
231
原创 c++简易仓库管理系统概念代码暨内存管理与智能指针使用
在现代C++编程中,内存管理一直是开发者关注的重点。传统的裸指针虽然灵活,但容易导致内存泄漏和悬挂指针等问题。为了解决这些问题,C++11引入了智能指针,提供了更安全、自动化的内存管理方式。本文将深入探讨如何利用智能指针设计一个高效的库存管理系统,展示其强大的自学能力和技术实力。智能指针是C++标准库中用于自动管理动态分配内存的工具。
2025-02-15 22:16:13
610
原创 JAVA贪吃蛇
贪吃蛇是一款经典的街机游戏,玩家控制一条蛇在屏幕上移动,吃掉食物以增长身体长度,同时避免撞墙或撞到自己。在本项目中,我们将使用Java的Swing库来构建图形用户界面,并实现游戏的核心逻辑。运行上述代码后,您将看到一个窗口,显示一个黑色的游戏区域。您可以使用键盘的方向键控制蛇的移动,目标是吃掉红色的食物,避免撞墙或撞到自己。在这篇博客中,我们将深入探讨如何使用Java编程语言实现经典的贪吃蛇游戏。通过这次实践,您将体验到从零开始构建一个完整游戏的过程,提升您的编程能力和对面向对象设计的理解。
2025-02-15 22:04:38
1481
1
原创 Java创作有关简易状态机函数用于二分预测
状态机核心函数,用于二分预测,使用tanh函数来避免在某一区域内函数过平的问题。learningRate:学习率。用于每次进行矫正,此数越低越准确但学习更慢。偏置率用于调整模型输出,提升拟合能力,避免预测偏差。numInputsPublic:输入数据。用于输入“每一部分的得分”。这些代码实现了严格封装的感知机,用于进行简易预测,也可搭建神经网络。weights:权重,每一部分在计算中所占的重要性。中间类,用于更严实的封装,在外部直接填入数字就能用。ui界面(其实只有控制台)。epoches:校正次数。
2025-01-23 19:27:07
207
原创 有关Java制作五子棋(Gobang)的代码与心得
五子棋是一个非常好的java开发练手项目(对于所有开发语言都是)。我将展示一系列的代码,实现建议的绘制棋盘,落子,判定胜负,人机对战等操作。mousePressed是下棋的实现,actionPerformed是按键的监听。我们使用一种策略,extend JFrame来让棋盘固定,成为整个图案最底色的一部分。如所示,GoFrame让JFrame多了绘制基本页面,移动时重绘两个功能。所有的函数,包装类,图形都在上面被调度。开始游戏,中断游戏,悔棋,pvp/pve。这是一个棋子类,用来存放棋子行,列,颜色。
2025-01-15 02:45:00
189
原创 Java利用JFrame简单的软件页面UI开发(无修饰版)
这一部分创建了一个JFrame的ui界面,有注册登录两个按钮,账号密码两栏。用户信息栏部分:用户的名字,密码,管理员专属名字密码,此处可连接SQL。关于java进行软件开发的登陆页面的最简单版本@Alicea_Wind。按钮动作部分:按完按钮,调用数据库来找查信息并进行注册和登录两种操作。对于那些想直接抄代码的朋友:记得改变量。
2024-11-26 23:57:49
167
原创 c语言有关qsort排序的一些心得
这里只简单地展示了可以用来Ctrl+C/V的代码,用于帮助初学者快速上手算法的数字游戏题。如果想要更详细的认知这个函数,请认真研究它们之间的指针关系。
2024-11-24 18:35:22
506
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅