Java基础、IO
文章平均质量分 86
Java基础、IO
真理剑客
认知你自己
展开
-
Java.md
三次握手过程: 客户端——发送带有SYN标志的数据包——服务端 一次握手 Client进入syn_sent状态 服务端——发送带有SYN/ACK标志的数据包——客户端 二次握手 服务端进入syn_rcvd 客户端——发送带有ACK标志的数据包——服务端 三次握手 连接就进入Established状态 为什么三次: 主要是为了建立可靠的通信信道,保证客户端与服务端同时具备发送、接收数据的能力 为什么两次不行? 1、防止已失效的请求原创 2022-11-25 10:57:29 · 1667 阅读 · 1 评论 -
2、Linux多路复用技术 select poll epoll
I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。为什么需要操作系统级的多路复用假如在...原创 2020-03-11 14:11:08 · 207 阅读 · 0 评论 -
1、BIO NIO AIO
一、常见I/O模型所有的系统I/O都分为两个阶段:等待就绪和操作。等待就绪动作是不使用CPU的;而真正读和写的操作(将数据从内核拷贝到用户空间)的阻塞是使用CPU的,不过这个过程很快,属于memory copy,可以理解为不耗时。二、传统的BIOBIO在服务器端 同步阻塞处理IO:主要是因为socket.accept()、socket.read()、socket.write()三个函数都是...原创 2020-03-11 10:23:13 · 218 阅读 · 0 评论 -
Java代码风格
1、换行1.1、一个项目可以选择一行80个字符或100个字符的限制,除了下述例外不可能满足列限制的行(例如,Javadoc中的一个长URL,或是一个长的JSNI方法参考)。package和import语句。注释中那些可能被剪切并粘贴到shell中的命令行。1.2、换行的基本准则是:倾向于在更高的语法级别处断开。如果在非赋值运算符处断开,那么在该符号前断开:点分隔符(.)、一个方法...原创 2018-11-19 17:32:54 · 656 阅读 · 0 评论 -
Java 8 函数式接口 : Supplier、Function、Consumer、Predicate
函数式接口特点1、三种方法唯一的抽象方法使用default定义普通方法(默认方法),通过对象调用。使用static定义静态方法,通过接口名调用。2、一个新注解@FunctionInterface如果某一个接口就是为了函数式接口而生的,使用注解@FunctionalInterface告诉编译器这是一个函数式接口,明确这个函数中只有一个抽象方法,当你尝试在接口中编写多个抽象方法的时候编...原创 2018-11-02 16:39:03 · 1814 阅读 · 0 评论 -
Java 8 函数式编程 Lambda
Lambda表达式a function (or a subroutine) defined, and possibly called, without being bound to an identifier。一段带有输入参数的可执行语句块。在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行代码。而定义行为最重要的那行代码,却混在中间不够突出。lambda表达式取代了匿...转载 2018-11-01 14:54:51 · 176 阅读 · 0 评论 -
Java 8 函数式编程 如何优雅的使用Optional
Optional是Java8提供的为了解决null安全问题的一个API。善用Optional可以使我们代码中很多繁琐、丑陋的设计变得十分优雅。这篇文章是建立在你对Optional的用法有一定了解的基础上的,如果你还不太了解Optional,可以先去看看相关教程,或者查阅Java文档。使用Optional,我们就可以把下面这样的代码进行改写。public static String getNam...原创 2018-10-31 10:55:32 · 812 阅读 · 0 评论 -
序列化与反序列化,序列化协议与二进制序列
1.什么是序列化和反序列化序列化:将对象的状态信息转换成便于存储或者传输的格式的过程,保证对象的完整性和可传递性。常见的序列化格式有字节数组,json字符串,xml字符串等。反序列化:将字节数组,json字符串,xml字符串等转换成对象的过程java的序列化就是将对象转化为字节流,以便在不同进程或网络之间进行传输,而在接收方,需要以相同的方式对字节流进行反序列化,得到传输的对象。jdk提供了...原创 2018-10-17 16:59:43 · 341 阅读 · 0 评论 -
String、StringBuffer、StringBuilder的区别
1.值可变String不可变 private final char value[];StringBuilder与StringBuffer可变 都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串 char[] value;2.线程安全String值不可变,线程安全。AbstractStringBuild...原创 2018-10-18 11:45:18 · 115 阅读 · 0 评论