
java
文章平均质量分 91
java技巧和教程
flydean程序那些事
懂程序更懂你!微信公众号:程序那些事 个人主页:www.flydean.com 最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧,尽在程序那些事!
展开
-
这样也行,在lambda表达式中优雅的处理checked exception
最近发现很多小伙伴还不知道如何在lambda表达式中优雅的处理checked exception,所以今天就重点和大家来探讨一下这个问题。lambda表达式本身是为了方便程序员书写方便的工具,使用lambda表达式可以让我们的代码更加简洁。可能大多数小伙伴在使用的过程中从来没有遇到过里面包含异常的情况,所以对这种在lambda表达式中异常的处理可能没什么经验。不过没关系,今天我们就来一起探讨一下。以上就是如何在lambda表达式中优雅的进行异常转换的例子了。大家使用的过程中一定要注意最后对异常的捕获。原创 2023-04-12 20:27:52 · 855 阅读 · 1 评论 -
还在stream中使用peek?不要被这些陷阱绊住了
自从JDK中引入了stream之后,仿佛一切都变得很简单,根据stream提供的各种方法,如map,peek,flatmap等等,让我们的编程变得更美好。事实上,我也经常在项目中看到有些小伙伴会经常使用peek来进行一些业务逻辑处理。那么既然JDK文档中说peek方法主要是在调试的情况下使用,那么peek一定存在着某些不为人知的缺点。一起来看看吧。peek方法接受一个Consumer参数,返回一个Stream结果。accept对传入的参数T进行处理,但是并不返回任何结果。.toList();原创 2023-03-21 15:22:38 · 835 阅读 · 3 评论 -
还不知道如何在java中终止一个线程?快来,一文给你揭秘
工作中我们经常会用到线程,一般情况下我们让线程执行就完事了,那么你们有没有想过如何去终止一个正在运行的线程呢?今天带大家一起来看看。线程不能调用stop来终止主要是因为不会抛出异常,从而导致一些安全和数据不一致的问题。所以,最好的方式就是调用interrupt方法来处理。本文的例子更多文章请看。原创 2023-03-09 11:04:12 · 161 阅读 · 0 评论 -
netty系列之:在netty中使用proxy protocol
我们知道proxy protocol是haproxy提出的一个代理协议,通过这个协议,所有实现这个协议的proxy或者LBS,都可以附带真实客户端的IP地址和端口号,这使得proxy protocol在实际应用中非常有用。这么优秀的协议,没有理由netty不支持。本文将会谈一下netty中对proxy protoco代理协议的支持。上面的代码只是一个简单的模拟proxy protocol在netty中的使用情况,并不代表上面的代码就可以在实际的项目中应用了。原创 2022-11-21 18:37:21 · 943 阅读 · 0 评论 -
netty系列之:来,手把手教你使用netty搭建一个DNS tcp服务器
在前面的文章中,我们提到了使用netty构建tcp和udp的客户端向已经公布的DNS服务器进行域名请求服务。基本的流程是借助于netty本身的NIO通道,将要查询的信息封装成为DNSMessage,通过netty搭建的channel发送到服务器端,然后从服务器端接受返回数据,将其编码为DNSResponse,进行消息的处理。那么DNS Server是否可以用netty实现呢?原创 2022-11-14 17:18:34 · 1196 阅读 · 0 评论 -
网络协议之:redis protocol 详解
redis是一个非常优秀的软件,它可以用作内存数据库或者缓存。因为他的优秀性能,redis被应用在很多场合中。redis是一个客户端和服务器端的模式,客户端和服务器端是通过TCP协议进行连接的,客户端将请求数据发送到服务器端,服务器端将请求返回给客户端。这样一个请求流程就完成了。当然在最开始的时候,因为用的人很少,系统还不够稳定,通过TCP协议传输的数据不规范的。但是当用的人越来越多,尤其是希望开发适用于不同语言和平台的redis客户端的时候,就要考虑到兼容性的问题了。原创 2022-11-07 21:55:56 · 383 阅读 · 0 评论 -
netty系列之: 在netty中使用 tls 协议请求 DNS 服务器
在前面的文章中我们讲过了如何在netty中构造客户端分别使用tcp和udp协议向DNS服务器请求消息。在请求的过程中并没有进行消息的加密,所以这种请求是不安全的。那么有同学会问了,就是请求解析一个域名的IP地址而已,还需要安全通讯吗?事实上,不加密的DNS查询消息是很危险的,如果你在访问一个重要的网站时候,DNS查询消息被监听或者篡改,有可能你收到的查询返回IP地址并不是真实的地址,而是被篡改之后的地址,从而打开了钓鱼网站或者其他恶意的网站,从而造成了不必要的损失。所以DNS查询也是需要保证安全的。原创 2022-11-04 14:49:28 · 882 阅读 · 1 评论 -
netty系列之:kequeue传输协议详解
在前面的章节中,我们介绍了在netty中可以使用kequeue或者epoll来实现更为高效的native传输方式。那么kequeue和epoll和NIO传输协议有什么不同呢?本章将会以kequeue为例进行深入探讨。在上面我们介绍的native的例子中,关于kqueue的类有这样几个,分别是KQueueEventLoopGroup,KQueueServerSocketChannel和KQueueSocketChannel,通过简单的替换和添加对应的依赖包,我们可以轻松的将普通的NIO netty服务替换成为原创 2022-07-04 15:25:32 · 561 阅读 · 0 评论 -
netty系列之:在netty中使用native传输协议
对于IO来说,除了传统的block IO,使用最多的就是NIO了,通常我们在netty程序中最常用到的就是NIO,比如NioEventLoopGroup,NioServerSocketChannel等。我们也知道在IO中有比NIO更快的IO方式,比如kqueue和epoll,但是这两种方式需要native方法的支持,也就是说需要在操作系统层面提供服务。如果我们在支持Kqueue或者epoll的服务器上,netty是否可以提供对这些优秀IO的支持呢?答案是肯定的。但是首先kqueue和epoll需要JNI支持原创 2022-06-29 20:17:08 · 746 阅读 · 0 评论 -
netty系列之:HashedWheelTimer一种定时器的高效实现
定时器是一种在实际的应用中非常常见和有效的一种工具,其原理就是把要执行的任务按照执行时间的顺序进行排序,然后在特定的时间进行执行。JAVA提供了java.util.Timer和java.util.concurrent.ScheduledThreadPoolExecutor等多种Timer工具,但是这些工具在执行效率上面还是有些缺陷,于是netty提供了HashedWheelTimer,一个优化的Timer类。一起来看看netty的Timer有何不同吧。Timer是JAVA在1.3中引入的。所有的任务都存储在原创 2022-06-20 18:36:47 · 781 阅读 · 0 评论 -
SpringBoot之:SpringBoot的HATEOAS基础
SpringBoot提供了HATEOAS的便捷使用方式,前面一篇文章我们也讲了如何在SpringBoot中使用HATEOAS。本文将会对这些内容进行扩展深入,详细讲解SpringBoot提供的这些基本方法。HATEOAS的一个非常重要的特征就是在resources资源中包含超媒体,而超媒体最简单的表示就是链接。Spring HATEOAS为我们简化了封装Links的功能。我们看一个HTML中的link标签的例子:可以看到一个link有两个比较重要的属性,一个是href代表link的链接,还有一个属性是re原创 2022-06-17 17:37:37 · 377 阅读 · 0 评论 -
SpringBoot之:SpringBoot中使用HATEOAS
HATEOAS是实现REST规范的一种原则,通过遵循HATEOAS规范,可以解决我们实际代码实现的各种个问题。作为java最流行的框架Spring当然也会不缺席HATEOAS的集成。本文将会通过一个具体的例子来讲解如何在SpringBoot中使用HATEOAS。HATEOAS规则中,返回的数据会带有链接。我们以熟悉的Book为例,来展示这次的HATEOAS,首先创建一个Book entity:我们希望能够通过下面的链接来获取到Book的详细数据:返回的数据如下:可以看到在返回的数据中除了conten原创 2022-06-15 15:55:50 · 541 阅读 · 0 评论 -
netty系列之:给ThreadLocal插上梦想的翅膀,详解FastThreadLocal
JDK中的ThreadLocal可以通过get方法来获得跟当前线程绑定的值。而这些值是存储在ThreadLocal.ThreadLocalMap中的。而在ThreadLocalMap中底层的数据存储是一个Entry数组中的。那么从ThreadLocalMap中获取数据的速度如何呢?速度有没有可以优化的空间呢?一起来看看。ThreadLocalMap作为一个Map,它的底层数据存储是一个Entry类型的数组:我们再来回顾一下ThreadLocal是怎么获取数据的:首先根据ThreadLocal对象中的th原创 2022-06-01 13:51:16 · 263 阅读 · 0 评论 -
可能有人听过ThreadLocal,但一定没人听过ThreadLocal对象池
文章目录简介ThreadLocalThreadLocalMapRecycler总结简介JDK中的Thread大家肯定用过,只要是用过异步编程的同学肯定都熟悉。为了保存Thread中特有的变量,JDK引入了ThreadLocal类来专门对Thread的本地变量进行管理。ThreadLocal很多新人可能不明白ThreadLocal到底是什么,它和Thread到底有什么关系。其实很简单,ThreadLocal本质上是一个key,它的value就是Thread中一个map中存储的值。每个Thread中原创 2022-05-25 17:55:17 · 206 阅读 · 0 评论 -
netty系列之:protobuf在UDP协议中的使用
文章目录简介UDP在netty中的表示DatagramPacketEncoderDatagramPacketDecoder总结简介netty中提供的protobuf编码解码器可以让我们直接在netty中传递protobuf对象。同时netty也提供了支持UDP协议的channel叫做NioDatagramChannel。如果直接使用NioDatagramChannel,那么我们可以直接从channel中读写UDP对象:DatagramPacket。但是DatagramPacket中封装的是ByteBu原创 2022-05-23 15:22:22 · 810 阅读 · 2 评论 -
netty系列之:netty对marshalling的支持
文章目录简介netty中的marshalling providerMarshalling编码器Marshalling编码的另外一种实现总结简介在之前的文章中我们讲过了,jboss marshalling是一种非常优秀的java对象序列化的方式,它可以兼容JDK自带的序列化,同时也提供了性能和使用上的优化。那么这么优秀的序列化工具可不可以用在netty中作为消息传递的方式呢?答案当然是肯定的,在netty中一切皆有可能。netty中的marshalling provider回顾一下jboss ma原创 2022-05-20 15:52:19 · 287 阅读 · 0 评论 -
netty系列之:使用Jboss Marshalling来序列化java对象
文章目录简介添加JBoss Marshalling依赖JBoss Marshalling的使用总结简介在JAVA程序中经常会用到序列化的场景,除了JDK自身提供的Serializable之外,还有一些第三方的产品可以实现对JAVA对象的序列化。其中比较有名的就是Google protobuf。当然,也有其他的比较出名的序列化工具,比如Kryo和JBoss Marshalling。今天想给大家介绍的就是JBoss Marshalling,为什么要介绍JBoss Marshalling呢?用过googl原创 2022-05-18 16:16:50 · 315 阅读 · 0 评论 -
netty系列之:netty中常用的对象编码解码器
文章目录简介什么是序列化重构序列化对象序列化不是加密使用真正的加密使用代理Serializable和Externalizable的区别netty中对象的传输ObjectEncoderObjectDecoderObjectEncoderOutputStream和ObjectDecoderInputStream总结简介我们在程序中除了使用常用的字符串进行数据传递之外,使用最多的还是JAVA对象。在JDK中,对象如果需要在网络中传输,必须实现Serializable接口,表示这个对象是可以被序列化的。这样就可原创 2022-05-17 13:56:59 · 985 阅读 · 0 评论 -
netty系列之:netty中常用的xml编码解码器
文章目录简介XmlFrameDecoderXmlDecoder总结简介在json之前,xml是最常用的数据传输格式,虽然xml的冗余数据有点多,但是xml的结构简单清晰,至今仍然运用在程序中的不同地方,对于netty来说自然也提供了对于xml数据的支持。netty对xml的支持表现在两个方面,第一个方面是将编码过后的多个xml数据进行frame拆分,每个frame包含一个完整的xml。另一方面是将分割好的frame进行xml的语义解析。进行frame拆分可以使用XmlFrameDecoder,进行x原创 2022-05-13 14:09:17 · 719 阅读 · 0 评论 -
netty系列之:netty中常用的字符串编码解码器
文章目录简介netty中的字符串编码解码器不同平台的换行符字符串编码的实现总结简介字符串是我们程序中最常用到的消息格式,也是最简单的消息格式,但是正因为字符串string太过简单,不能附加更多的信息,所以在netty中选择的是使用byteBuf作为最底层的消息传递载体。虽然底层使用的ByteBuf,但是对于程序员来说,还是希望能够使用这种最简单的字符串格式,那么有什么简单的方法吗?netty中的字符串编码解码器为了解决在netty的channel中传递字符串的问题,netty提供了针对于字符串的编原创 2022-05-12 16:10:59 · 1377 阅读 · 0 评论 -
java高级用法之:绑定CPU的线程Thread-Affinity
文章目录简介Java Thread Affinity简介AffinityLock的使用使用API直接分配CPU总结简介在现代计算机系统中,可以有多个CPU,每个CPU又可以有多核。为了充分利用现代CPU的功能,JAVA中引入了多线程,不同的线程可以同时在不同CPU或者不同CPU核中运行。但是对于JAVA程序猿来说创建多少线程是可以自己控制的,但是线程到底运行在哪个CPU上,则是一个黑盒子,一般来说很难得知。但是如果是不同CPU核对同一线程进行调度,则可能会出现CPU切换造成的性能损失。一般情况下这种损原创 2022-05-11 15:36:45 · 384 阅读 · 0 评论 -
java高级用法之:JNA中的回调
文章目录简介JNA中的Callbackcallback的应用callback的定义callback的获取和应用在多线程环境中使用callback总结简介什么是callback呢?简单点说callback就是回调通知,当我们需要在某个方法完成之后,或者某个事件触发之后,来通知进行某些特定的任务就需要用到callback了。最有可能看到callback的语言就是javascript了,基本上在javascript中,callback无处不在。为了解决callback导致的回调地狱的问题,ES6中特意引入了原创 2022-05-10 14:35:43 · 1191 阅读 · 0 评论 -
java高级用法之:JNA中的Structure
文章目录简介native中的structStructure特殊类型的Structure结构体数组作为参数结构体数组作为返回值结构体中的结构体结构体中的数组结构体中的可变字段结构体中的只读字段总结简介前面我们讲到了JNA中JAVA代码和native代码的映射,虽然可以通过TypeMapper来将JAVA中的类型和native中的类型进行映射,但是native中的数据类型都是基础类型,如果native中的数据类型是复杂的struct类型该如何进行映射呢?不用怕,JNA提供了Structure类,来帮助我们原创 2022-05-09 16:27:34 · 2749 阅读 · 0 评论 -
java高级用法之:JNA中的Function
文章目录简介function的定义Function的实际应用总结简介在JNA中,为了和native的function进行映射,我们可以有两种mapping方式,第一种是interface mapping,第二种是direct mapping。虽然两种方式不同,但是在具体的方法映射中,我们都需要在JAVA中定义一个和native方法进行映射的方法。而这个JAVA中的映射在JNA中就是一个function。通过或者function对象,我们可以实现一些非常强大的功能,一起看看吧。function的定义原创 2022-05-06 14:11:14 · 494 阅读 · 0 评论 -
java高级用法之:JNA中的Memory和Pointer
文章目录简介Pointer特殊的Pointer:OpaqueMemory总结简介我们知道在native的代码中有很多指针,这些指针在JNA中被映射成为Pointer。除了Pointer之外,JNA还提供了更加强大的Memory类,本文将会一起探讨JNA中的Pointer和Memory的使用。PointerPointer是JNA中引入的类,用来表示native方法中的指针。大家回想一下native方法中的指针到底是什么呢?native方法中的指针实际上就是一个地址,这个地址就是真正对象的内存地址。所原创 2022-05-05 14:14:11 · 1244 阅读 · 0 评论 -
网络协议之:Domain name service DNS详解
文章目录简介DNS的功能DNS的组成域名空间Domain name spaceName serversDNS的工作流程DNS资源记录DNS消息的结构总结简介现在是互联网的世界,大家从各种网站中获取各类资源和信息,通常我们只需要牢记一个网站地址即可,至于这个网站后台的服务器在什么地方,我们并不需要关心。当我们的请求指向这个网址之后,接下来就只需要等待请求被转发到该网址的后端服务器上,得到返回的处理结果即可。这个将网站名称解析成为服务IP地址的服务就是DNS服务,它的全称是Domain Name Syst原创 2022-04-29 13:53:01 · 955 阅读 · 0 评论 -
netty系列之:netty中的frame解码器
文章目录简介LineBasedFrameDecoderDelimiterBasedFrameDecoderFixedLengthFrameDecoderLengthFieldBasedFrameDecoder总结简介netty中的数据是通过ByteBuf来进行传输的,一个ByteBuf中可能包含多个有意义的数据,这些数据可以被称作frame,也就是说一个ByteBuf中可以包含多个Frame。对于消息的接收方来说,接收到了ByteBuf,还需要从ByteBuf中解析出有用而数据,那就需要将ByteBu原创 2022-04-28 13:53:12 · 1204 阅读 · 0 评论 -
netty系列之:netty中的自动解码器ReplayingDecoder
文章目录简介ByteToMessageDecoder可能遇到的问题ReplayingDecoder的实现原理总结简介netty提供了一个从ByteBuf到用户自定义的message的解码器叫做ByteToMessageDecoder,要使用这个decoder,我们需要继承这个decoder,并实现decode方法,从而在这个方法中实现ByteBuf中的内容到用户自定义message对象的转换。那么在使用ByteToMessageDecoder的过程中会遇到什么问题呢?为什么又会有一个Replaying原创 2022-04-27 13:51:21 · 1378 阅读 · 0 评论 -
netty系列之:netty中的核心解码器json
文章目录简介java中对json的支持netty对json的解码总结简介程序和程序之间的数据传输方式有很多,可以通过二进制协议来传输,比较流行的像是thrift协议或者google的protobuf。这些二进制协议可以实现数据的有效传输,并且通过二进制的形式可以节省数据的体积,在某些速度和效率优先的情况下是非常有效的。并且如果不同的编程语言之间的相互调用,也可以通过这种二进制的协议来实现。虽然二进制更加快速和有效,但是对于程序员来说不是很友好,因为一个人很难直接读取二进制文件,虽然也存在一些一些文本的原创 2022-04-26 13:56:05 · 1513 阅读 · 0 评论 -
netty系列之:netty中的核心编码器bytes数组
文章目录简介byte是什么netty中的byte数组的工具类netty中byte的编码器总结简介我们知道netty中数据传输的核心是ByteBuf,ByteBuf提供了多种数据读写的方法,包括基本类型和byte数组的读写方法。如果要在netty中传输这些数据,那么需要构建ByteBuf,然后调用ByteBuf中对应的方法写入对应的数据,接着套用netty中标准的模板即可使用。对于byte数组来说,如果每次都将其封装进ByteBuf中,再进行传输显得有些麻烦。于是netty提供了一个基于bytes的核心原创 2022-04-25 13:50:14 · 2131 阅读 · 0 评论 -
netty系列之:netty中的核心编码器base64
文章目录简介netty codec的实现逻辑netty中Base64的实现netty中的base64编码和解码器Base64EncoderBase64Decoder总结简介我们知道数据在netty中传输是以ByteBuf的形式进行的,可以说ByteBuf是netty的数据传输基础。但是对于现代的应用程序来说,通常我们需要用到其他的数据结构或者类型。为了方便我们在程序中的编写,一种方式就是在将数据传入到netty中的时候由程序员自身将数据格式进行转换,然后再调用netty的系统方法。另外一种方式就是定义原创 2022-04-22 14:07:38 · 601 阅读 · 0 评论 -
netty系列之:netty中的核心MessageToByte编码器
文章目录简介MessageToByte框架简介MessageToByteEncoderByteToMessageDecoderByteToMessageCodec总结简介之前的文章中,我们讲解了netty中从一个message转换成为另外一个message的框架叫做MessageToMessage编码器。但是message to message只考虑了channel中消息在处理过程中的转换,但是我们知道channel中最终传输的数据一定是ByteBuf,所以我们还需要一个message和ByteBuf相原创 2022-04-20 15:21:18 · 1202 阅读 · 0 评论 -
netty系列之:netty中的核心MessageToMessage编码器
文章目录简介框架简介MessageToMessageEncoderMessageToMessageDecoderMessageToMessageCodec总结简介在netty中我们需要传递各种类型的消息,这些message可以是字符串,可以是数组,也可以是自定义的对象。不同的对象之间可能需要互相转换,这样就需要一个可以自由进行转换的转换器,为了统一编码规则和方便用户的扩展,netty提供了一套消息之间进行转换的框架。本文将会讲解这个框架的具体实现。框架简介netty为消息和消息之间的转换提供了三个类原创 2022-04-18 13:56:52 · 1475 阅读 · 0 评论 -
java高级用法之:JNA类型映射应该注意的问题
文章目录简介StringBuffers,Memory,数组和Pointer可变参数总结简介JNA提供JAVA类型和native类型的映射关系,但是这一种映射关系只是一个大概的映射,我们在实际的应用中还有很多需要注意的事项,本文将会为大家详细讲解在使用类型映射中可能会出现的问题。一起来看看吧。String首先是String的映射,JAVA中的String实际上对应的是两种native类型:const char* 和 const wchar_t*。默认情况下String会被转换成为char* 。ch原创 2022-04-15 14:44:25 · 1995 阅读 · 0 评论 -
java高级用法之:在JNA中使用类型映射
文章目录简介类型映射的本质TypeMapperNativeMapped总结简介JNA中有很多种映射,library的映射,函数的映射还有函数参数和返回值的映射,libary和函数的映射比较简单,我们在之前的文章中已经讲解过了,对于类型映射来说,因为JAVA中的类型种类比较多,所以这里我们将JNA的类型映射提取出来单独讲解。类型映射的本质我们之前提到在JNA中有两种方法来映射JAVA中的方法和native libary中的方法,一种方法叫做interface mapping,一种方式叫做direct原创 2022-04-14 15:12:58 · 1845 阅读 · 0 评论 -
java高级用法之:在JNA中将本地方法映射到JAVA代码中
文章目录简介Library MappingFunction MappingInvocation Mapping防止VM崩溃性能考虑总结简介不管是JNI还是JNA,最终调用的都是native的方法,但是对于JAVA程序来说,一定需要一个调用native方法的入口,也就是说我们需要在JAVA方法中定义需要调用的native方法。对于JNI来说,我们可以使用native关键字来定义本地方法。那么在JNA中有那些在JAVA代码中定义本地方法的方式呢?Library Mapping要想调用本地的native原创 2022-04-13 14:51:12 · 1287 阅读 · 0 评论 -
netty系列之:java中的base64编码器
文章目录简介JAVA对base64的支持JDK中Base64的分类和实现Base64的高级用法总结简介什么是Base64编码呢?在回答这个问题之前,我们需要了解一下计算机中文件的分类,对于计算机来说文件可以分为两类,一类是文本文件,一类是二进制文件。对于二进制文件来说,其内容是用二进制来表示的,对于人类是不可立马理解的。如果你尝试用文本编辑器打开二进制文件,可能会看到乱码。这是因为二进制文件的编码方式和文本文件的编码方式是不一样的,所以当文本编辑器尝试将二进制文件翻译成为文本内容的时候,就会出现乱码。原创 2022-04-08 18:06:33 · 1093 阅读 · 0 评论 -
网络协议之:socket协议详解之Unix domain Socket
文章目录简介什么是Unix domain Socket使用socat来创建Unix Domain Sockets使用ss命令来查看Unix domain Socket使用nc连接到Unix domain Socket服务总结简介之前的文章我们讲到了Socket中的Stream Socket和Datagram Socket,这两种Socket通常分别是基于tcp和udp协议来进行数据的传输。这两种Socket都有一个共同的特点,那就是需要一个IP地址和端口来建立客户端和服务器端的连接。那么今天我们会来讲原创 2022-04-06 15:04:43 · 5897 阅读 · 0 评论 -
网络协议之:socket协议详解之Datagram Socket
文章目录简介什么是Datagram Socket使用socat来创建UDP服务使用ss命令来监控Datagram Sockets使用nc建立和UDP Socket的连接总结简介上一篇文章我们讲解了Socket的分类和最常用到的Stream Socket,Stream Socket一般是基于TCP协议的,所以我们经常在web服务中能够看到他们的身影。当然TCP协议有个孪生兄弟叫做UDP,那么基于UDP来做传输协议的socket协议就叫做Datagram Socket,今天我们一起来详细了解一下Datagr原创 2022-04-01 18:33:22 · 4437 阅读 · 0 评论 -
网络协议之:socket协议详解之Socket和Stream Socket
文章目录简介Socket是什么Stream Socket使用socat创建一个TCP服务器使用ss检查TCP连接使用nc连接socket总结简介不管是在普通的网络编程中还是在netty中,都经常会提到一个词叫做socket,好像socket是一个神奇的东西,使用socket我们可以建立客户端到服务器端的连接,并且和进行客户端和服务器端的通讯,那么socket到底是什么呢?它有哪些分类呢?一起来看看吧。Socket是什么socket的中文翻译是套接字,个人觉的这个翻译真的是太差劲了,套接字听起来毫无意原创 2022-03-30 20:40:30 · 8488 阅读 · 0 评论