Java网络编程中的Socket通信优化
什么是Socket通信?
Socket,中文译为套接字,它是网络编程中用于实现进程间通信的一种方式。在Java中,我们主要通过java.net.Socket和java.net.ServerSocket这两个类来实现Socket通信。想象一下,Socket就像是一个电话插座,客户端和服务器端通过它建立起连接,然后就可以开始通话了。
2025年05月22日
Socket,中文译为套接字,它是网络编程中用于实现进程间通信的一种方式。在Java中,我们主要通过java.net.Socket和java.net.ServerSocket这两个类来实现Socket通信。想象一下,Socket就像是一个电话插座,客户端和服务器端通过它建立起连接,然后就可以开始通话了。
2025年05月22日
终于,在小林的努力下,获得了王哥公司那边的offer,但是因为薪水没有谈妥,小林又重新进入了求职的旅途,在经历了多次求职过程之后,小林也大概地对求职的考点掌握地七七八八了,于是这次他重新书写了简历,投递了一家新的互联网企业。
距离面试开始还有大约十分钟,小林已经抵达了面试现场,并开始调整自己的状态。
过了不久,一个稍显消瘦,戴着黑色眼镜框的男人走了过来,估计这家伙就是小林这次的面试官了。
面试官:你好,请简单先做个自我介绍吧。
2025年05月22日
LongAdder 是 Java 中
java.util.concurrent.atomic 包下的一个类,从 Java 8 开始引入。它是一个可伸缩的并发累加器,适用于高并发场景下对长整型(long)数值进行高效的递增、递减或加法操作。其核心设计通过分散热点竞争提升性能。
LongAdder 的设计目的是为了在高并发写入的情况下提供比 AtomicLong 更好的性能。
2025年05月22日
在现代软件开发中,多线程编程已成为提升程序性能的重要手段之一。然而,如果你认为创建和销毁线程是一个轻而易举的事情,那么你可能低估了它的成本。Java为我们提供了一种高效的解决方案——线程池。本文将带您深入了解线程池的概念、使用方法以及它为何如此重要。
2025年05月22日
在介绍线程池之前,我们先回顾下线程的基本知识。其中线程池包括ThreadPoolExecutor 默认线程和
ScheduledThreadPoolExecutor 定时线程池 ,本篇重点介绍ThreadPoolExecutor线程池。
2025年05月22日
在Java中,Semaphore(信号量)是位于java.util.concurrent包中的一个同步工具类。它用于控制同时访问某一资源的线程数量,或者是同时执行某一任务的线程数量。信号量通常用来限制可以访问某些资源(物理或逻辑的)的线程数量。
许可机制
Semaphore 维护一组虚拟许可,初始化时指定许可数量。线程通过 acquire() 尝试获取许可(支持阻塞或非阻塞方式),资源使用后通过 release() 释放许可。若许可数为 0,后续线程将阻塞直至有可用许可。
2025年05月22日
对应从事后端开发的同学来说,线程是必须要使用了,因为使用它可以提升系统的性能。但是,创建线程和销毁线程都是比较耗时的操作,频繁的创建和销毁线程会浪费很多CPU的资源。此外,如果每个任务都创建一个线程去处理,这样线程会越来越多。我们知道每个线程默认情况下占1M的内存空间,如果线程非常多,内存资源将会被耗尽。这时,我们需要线程池去管理线程,不会出现内存资源被耗尽的情况,也不会出现频繁创建和销毁线程的情况,因为它内部是可以复用线程的。
2025年05月22日
一、线程是什么?
线程是程序执行的最小单元,是进程内的一个独立控制流。一个进程可以包含多个线程,共享进程的内存和资源(如文件句柄、全局变量等),但每个线程有自己的程序计数器、栈和局部变量。线程的创建、切换和销毁成本比进程低得多,因此更适合并发任务。