- 博客(12)
- 收藏
- 关注
原创 双缓冲实现图像的传输
我们微信的视频是怎么实现的?就是靠我们的ImageIO去实现的,小桂在这里会为大家简单说一下我们如何去传输一个图像或者自己画的东西,提前给大家说一下,小桂会在下期用缓存的方式给大家展示一下如何实现传输,因为是缓存,所以传输的速度肯定要比我们在这里说的快。System.out.println("客户端已启动");jf.setTitle("客户端");具体代码就是这些,下期小桂会为大家带来缓存的写法。
2025-08-06 17:07:16
292
原创 新手有感而发写的一点点双缓冲
大家在听到双缓冲是不是觉得好高级,哇什么是双缓冲这个名字太高级了,实际上就是两个画板,一个主画板JFrame,一个缓冲区的画板BuffedImage,我们要在这个buffedimage上画画,然后呈现到主画板上,详细代码如下。用这个画笔gp去画东西,当然全部都画在了缓冲画板上面,所以最后我们还要用主画板的画笔将缓冲区的画画到主画板上。我们要在这个画板上面获取一个画笔。就可以实现所谓双缓冲的现象了。这个就创造了一个缓冲区画板。
2025-08-06 12:04:51
147
原创 深入理解线程饥饿:原因、影响与解决方案
System.out.println(Thread.currentThread().getName() + "获得锁");System.out.println(Thread.currentThread().getName() + "获得锁");| **线程状态** | 完全阻塞 | 持续活动 | 可能运行 |System.out.println("执行任务: " + taskId);| **资源占用** | 持有资源不释放 | 不长期占用资源 | 可能获得部分资源 |
2025-08-05 15:48:43
708
原创 活锁:并发编程中的“礼貌死锁“问题深度解析
活锁是指多个线程都在执行各自的操作,但由于彼此间的"协调不当",导致系统整体无法取得进展的一种状态。死锁:线程被阻塞,完全不执行活锁:线程仍在执行,但无法完成有效工作活锁是并发系统中一种隐蔽而棘手的问题,它比死锁更难被发现,因为系统表面看起来仍在"工作"。通过理解活锁的本质、掌握诊断方法并实施有效的预防策略,我们可以构建出更健壮的并发系统。记住以下关键点:活锁是"太忙而无法工作"的状态引入随机性是打破活锁的有效手段合理的重试策略和超时机制至关重要监控和日志是发现活锁的第一道防线。
2025-08-05 15:40:27
373
原创 带你深入了解死锁的机制
死锁是指两个或多个线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉,这些线程都将无法继续执行下去。死锁是多线程编程中难以完全避免的问题,但通过良好的设计规范和预防策略,我们可以显著降低其发生的概率。记住:编写代码时要时刻警惕死锁的可能性使用工具检测和分析死锁遵循锁使用的最佳实践在系统设计阶段就考虑死锁预防希望本文能帮助你更好地理解死锁问题,在并发编程的道路上走得更稳更远!
2025-08-05 15:34:41
548
原创 一个新手的观点说线程基础
*线程(Thread)**是操作系统能够进行运算调度的最小单位。当多个线程访问共享资源时,可能会引发**竞态条件**(Race Condition),导致数据不一致。4. **提高资源利用率**:当一个线程等待I/O时,其他线程可以继续执行。4. **阻塞(Blocked)**:线程等待某个条件(如I/O操作完成)2. **就绪(Runnable)**:线程准备运行,等待CPU调度。4. **内存可见性**:一个线程的修改对其他线程不可见。- **进程**:独立的执行环境,有自己独立的内存空间。
2025-08-05 15:31:03
394
原创 通信工程2.0
首先我们需要一个UI界面,老生常谈的东西,小桂在这里就不多赘述了。接下来我们还需要一个监听器,这个是为什么呢,因为我们每次输入东西的时候,电脑都要监听你的按钮,然后再做出相应的反应,我们要做的就是做出一个监听器来监测我们的行动,我们先写一个简单的监听器。这就是一个最简单的监听器,只有监测你按下的按钮是不是发送即可,在以后我们的代码中这个监听器要频繁使用,我们需要不断往里面加东西来满足我们的需求,下期小桂会为大家带来更详细和复杂的写法,请大家准备好一个清醒的大脑。
2025-08-05 14:04:21
834
原创 通信的基础
这就可以与服务端连接了,连接之后我们要说话要沟通啊,这一步怎么办呢,我们首先需要了解输入流,输出流,在服务端和客户端都需要输入流和输出流,而且在你创建Socket对象后你需要用你创建的对象去接受相应客户端的输入与输出,这样两者的消息才能互通,例子代码如下。首先,我们可以把我们和好友的聊天抽象成服务端和客户端,我们是服务端,负责去点击好友的头像和他们聊天,而好友这个客户端则是接受我们的消息,并开始和我们聊天,所以我们需要一个Server类和一个Client类(最基础的两个类)
2025-08-03 13:35:05
203
原创 java线程池的讲解和分享
今天小桂要给大家讲一下java中的线程池,首先我们要了解概念,线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池中的线程可以重复使用,减少了创建和销毁线程的开销。所以我们要创造线程然后进行操作,那线程池是怎么实现的呢,Java通过工厂类提供了一系列创建线程池的静态方法,底层都是通过类实现的。下面我们来介绍一下他最核心的类----ThreadPoolExecutor,他是这么构成的具体的含义如下。
2025-08-02 15:37:22
664
原创 java中的图形重绘
小桂和大家说,其实我们每改变一次界面,系统都会调用一个paint方法,就是这个方法覆盖了我们的图形,他重新搞了一遍,覆盖了我们的图形,所以解决他的最好办法就是我们也在paint中重写一个绘编五子棋方法的代码不就完事了,说干就干,那么我们如何搞一个保存五子棋数据的代码呢。这样继承了原代码的数据之后,我们需要对原代码进行改变,因为原代码用的是原代码的类,而我们用的是现代码的类,所以我们要用现代码的类去创建对象。这就搞完了,但我们要在原五子棋数据中保存一下这些数据,并且这些数据都是整型,即为用数组保存他们。
2024-08-07 09:04:34
263
原创 java中继承小科普
那么,如果父类中的方法功能不能满足子类的需求怎么办,什么意思呢,就是,假如父类为交通工具,方法为出行,那么子类可以为车和飞机,飞机出行为飞,而车则为跑(陆地上的)那么就会出现我父类一个单独的方法不能满足他们的具体需求,我父类为出行,而子类是要飞和跑,这时候就需要另一个小方法,即为方法重写。咱们先创造一个人类类,都知道这肯定是一个父类,那我就是其中的一个子类呗,人会干什么,玩肯定是其中之一对吧,这就是一个小方法,我要继承玩这个动作,即为。子类继承的元素就是他的元素,下面我们要来了解其中小小的规则。
2024-07-28 11:58:16
185
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅