<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[W3434qq的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/W3434qq</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; W3434qq]]></copyright><item><title><![CDATA[【Java】期末大作业：实现简单的通讯软件]]></title><link>https://blog.youkuaiyun.com/W3434qq/article/details/148950164</link><guid>https://blog.youkuaiyun.com/W3434qq/article/details/148950164</guid><author>W3434qq</author><pubDate>Fri, 27 Jun 2025 12:12:49 +0800</pubDate><description><![CDATA[仅用Java标准库和SQLite数据库，从零开发一款具备基本通信功能的桌面应用。这款软件实现了：✅ 用户注册与登录系统✅ 实时消息通信✅ 离线消息存储与转发✅ 直观的图形界面简单即是美：SQLite作为嵌入式数据库，完美契合小型桌面应用异常处理的重要性：数据库操作必须有完善的错误处理Swing仍具生命力：对于轻量级桌面应用，Swing开发效率极高离线能力是基础：网络不可靠环境下，本地存储确保核心功能可用。]]></description><category></category></item><item><title><![CDATA[【Java】手写基于链表数据结构实现的LinkedList的add方法]]></title><link>https://blog.youkuaiyun.com/W3434qq/article/details/146444409</link><guid>https://blog.youkuaiyun.com/W3434qq/article/details/146444409</guid><author>W3434qq</author><pubDate>Sat, 22 Mar 2025 19:15:50 +0800</pubDate><description><![CDATA[双向链表中的每一个node都存储了我们的元素值，下一个元素以及前一个元素。但我们可以很明显的看出，头节点以及尾节点是不同的，头节点的prev应为null，尾节点的next也应为null。所以我们在定义我们的LinkedList时也需要定义出这两个不同的节点。可以看到，我们使用链表增加时，不用再像ArrayList那样去扩容我们的数组，也不用一个个去遍历了。这样，我们就能定义出每个Node了，但是要想再动态增加更多Node，需要我们来写add方法。方法，它的作用就是为了实现我们上文中的每一个node。]]></description><category></category></item><item><title><![CDATA[【Java】学生管理系统]]></title><link>https://blog.youkuaiyun.com/W3434qq/article/details/146295860</link><guid>https://blog.youkuaiyun.com/W3434qq/article/details/146295860</guid><author>W3434qq</author><pubDate>Sun, 16 Mar 2025 16:15:09 +0800</pubDate><description><![CDATA[4.使用异常结束此循环(不建议此方法，(1)使用异常结束难度较大且会导致明显的性能下降，耗时长(2)降低代码的可读性与维护性(3)可能会导致我们忽略掉真正的异常(4)对于我们程序员而言，对异常是避之不及了，反而要来利用异常是违反我们的设计原则的。这个菜单很好的展示了我们学生管理系统的功能，那么下一步我们应该创建一个学生类，它包含了学生的名字，年龄，地址，学号。好了，这样之后，我们的增删查改都已经写完了，接下来的退出系统对我们而言也是小菜一碟了，这里有四种方法。这下再看我们的删除学生代码，更加清晰明了了。]]></description><category></category></item><item><title><![CDATA[【Java】 final 关键字]]></title><link>https://blog.youkuaiyun.com/W3434qq/article/details/146111615</link><guid>https://blog.youkuaiyun.com/W3434qq/article/details/146111615</guid><author>W3434qq</author><pubDate>Sat, 08 Mar 2025 10:23:54 +0800</pubDate><description><![CDATA[当用final修饰成员属性时，它的值无法被修改；当我们用final修饰局部变量时，我们得将其分为基本数据类型与引用数据类型，当我们修饰基本数据类型时，它的值无法被修改，但是如果我们修饰引用数据类型，却可以改变它的成员属性值，这是因为我们new出来的对象都是存放在堆空间中，而当main方法启动时就会创建一个栈空间，在main栈帧中，我们的引用数据类型是指向了堆空间中new出来的对象的地址，所以其实我们引用数据类型的值都为new出来对象它的地址，所以我们可以改变其成员变量属性值，但无法改变其地址。]]></description><category></category></item><item><title><![CDATA[【C】初步实现简易的三子棋]]></title><link>https://blog.youkuaiyun.com/W3434qq/article/details/145925531</link><guid>https://blog.youkuaiyun.com/W3434qq/article/details/145925531</guid><author>W3434qq</author><pubDate>Fri, 28 Feb 2025 13:52:39 +0800</pubDate><description><![CDATA[首先创建一个test.c，它的作用是用来运行程序，再创建一个game.c，它的作用是用来实现游戏的逻辑，再创建一个game.h，这是一个头文件，我们可以把game.c中的函数的声明写在其中，使得test.c可以访问这些函数，进而实现三子棋；既然已经设置好了棋盘，那棋盘中的元素也得来思考，玩家下棋使用的是‘*’，电脑下棋使用的是‘#’，如果没有棋盘的这个坐标没棋的话，就应该是‘ ’。基本的操作我们已经完成的差不多了，对于游戏而言，胜利与否是十分重要的，所以我们需要编写判断谁输谁赢的函数。]]></description><category></category></item><item><title><![CDATA[【C】猜数字小游戏]]></title><link>https://blog.youkuaiyun.com/W3434qq/article/details/145823412</link><guid>https://blog.youkuaiyun.com/W3434qq/article/details/145823412</guid><author>W3434qq</author><pubDate>Mon, 24 Feb 2025 11:23:02 +0800</pubDate><description><![CDATA[这里我们利用了rand函数，它的作用是根据一个种子生成一个序列，这样就可以实现生成游戏所需的数字的功能，因为rand的最大值就为32767，所以我们需要将其除以100取模，这样就可以将生成的数字限制在0-99之间，在将其加1，得到的数字范围为1-100。主函数先根据玩家输入的值利用switch判断下一步行为，1为游戏开始，0为退出游戏，输入其他为输入错误，在每个case下都应加上break，避免输出我们不要的结果。]]></description><category></category></item><item><title><![CDATA[【C】遍历素数的三种方法]]></title><link>https://blog.youkuaiyun.com/W3434qq/article/details/145805331</link><guid>https://blog.youkuaiyun.com/W3434qq/article/details/145805331</guid><author>W3434qq</author><pubDate>Sun, 23 Feb 2025 10:00:33 +0800</pubDate><description><![CDATA[素数即为质数，除了一之外只能被自己整除。
这里我们用寻找100到200中的素数作为例子。
方法一：试除法
定义一个i，它的作用是用来遍历从100到200的数，在此循环中，再次定义一个j，它的功能是从2开始，到i结束，以此来判断每一个i有无除了i本身与1还有无其他约数，
当j能被i整除时，说明此时i除了本身与1两个约数，还有另外一个约数，也就不是素数，结束循环。方法二：
方法一中有大量多余的运算，因为如果一个数大于i/2，那么它一定无法被i整除，所以我们仅需计算j<=i/2的情况。如果j>i/2则说明j在2到]]></description><category></category></item><item><title><![CDATA[【C】如何不使用“*”实现乘法的功能]]></title><link>https://blog.youkuaiyun.com/W3434qq/article/details/145672530</link><guid>https://blog.youkuaiyun.com/W3434qq/article/details/145672530</guid><author>W3434qq</author><pubDate>Mon, 17 Feb 2025 00:24:26 +0800</pubDate><description><![CDATA[则会导致x的值会不断跟着i的增加而增加，从而实现不了y个x相加的功能。要想x保持不变，我们可以在循环外定义一个参数z初始化为0，它可用于记录每次相加后x的值，但由于没有直接对x进行运算，x的值保持不变，才能成功实现y个x相加的功能，最后才能不用“*”实现乘法的功能。我在复习函数的时候，遇到了这道有趣的题目，它很好的锻炼了我的逻辑，遂与各位大佬分享我的思路，如果有更好的思路，欢迎各位大佬在评论区分享。]]></description><category></category></item><item><title><![CDATA[我的第一篇博客]]></title><link>https://blog.youkuaiyun.com/W3434qq/article/details/145658005</link><guid>https://blog.youkuaiyun.com/W3434qq/article/details/145658005</guid><author>W3434qq</author><pubDate>Sat, 15 Feb 2025 23:16:50 +0800</pubDate><description><![CDATA[对于编程的目标而言，肯定是要能帮助我赚钱，但要实现这个目标，我得根据各种各样的信息，自己选择出一条对于我这种低学历能走的通的路 ，就目前而言，我先得筑牢C语言基础，再学习Java，最后再学习数据结构，以争取在大一暑假的时候，能自己写出自己的Java项目，并提供我支持参加各种比赛与考取相关证书的能力，为实习与专升本加分奠定一定的基础，谈到专升本，我也需要额外学习英语，数学，政治，当然，这些优先级还是低于专业课基础。在听从我哥的建议后，我还是重新找C语言有关的课程，开始夯实自己的程序基础。]]></description><category></category></item></channel></rss>