
网络编程
文章平均质量分 50
介绍网络编程相关的知识
LSZXZNJ
这个作者很懒,什么都没留下…
展开
-
NIO/BIO本地文件copy对比
//耗时:147801139000copyUseBIO(copyFile, file);//耗时:160264982300nioCopy(copyFile, file);//耗时:155988801199nio_mapCopy(copyFile, file);//耗时:133744337900nio_transCopy(copyFile, file); private static void nio_transCopy(String copyFile, File fil...原创 2021-01-23 21:31:37 · 124 阅读 · 0 评论 -
NIO笔记
一、一个Buffer对象是固定数量的数据的容器。1. 固定数量2. 容器二、缓冲区的工作与通道紧密联系IO通道三、属性容量(Capacity):类似数组的容量缓冲区能够容纳的数据元素的最大数量。这一容量在缓冲区创建时被设定,并且永远不能被改变。上界(Limit):类似数组中存储的最后一个元素的下标缓冲区的第一个不能被读或写的元素。或者说,缓冲区中现存元素的计数。位置(Position):类似数组中当前位置的指针下一个要被读或写的元素的索引。位置会自动由相应的 get( )和 put(原创 2021-01-23 21:27:50 · 94 阅读 · 0 评论 -
读取文件流的几种方式
计算机只认识 0 1 这种二进制流,不论是网络传输还是磁盘文件,在被计算机的程序处理之前,都是以二进制流的形式 进入计算机程序的,计算机程序获取到二进制流之后,再进行转换,也就是 序列化和反序列化。对于网络上的二进制流,通常是用 Socket 来获取 InputStream 和 OutputStream 进行 输入和输出流的处理。对于磁盘上来说,需要将 磁盘上的 文件 (例如:文本文件、视频文件、音频文件、图片等) 读取到程序中,这个过程 有哪些方法来实现呢?1. JDK 提供的 Inp原创 2022-02-10 15:32:38 · 3614 阅读 · 0 评论 -
简述Java序列化的几种方式
使用 protobuf,首先需要创建 .proto 文件, 该文件 定义了 将 序列化的 结构 数据。需要根据 规范 来创建 定义 .proto 文件,这个是首先需要 掌握的。可以封装到公共的包来使用步骤:1. 创建 .proto 文件2. protoc 生成 代码 或者 maven 插件生成代码3. 使用,比如 使用 proto文件 生成了一个RequestWxj,就可以来完成 数据的序列化反序列化// 序列化RequestWxj.newBuilder().build().toByteArray原创 2022-06-09 15:33:29 · 2249 阅读 · 0 评论 -
IO泛泛而谈
一般来说,网卡数据读取到内存、内存数据写入到网卡,在传统的IO操作中,需要多次的系统调用、内核态的切换、数据在内核态和用户态内存中的Copy等,这些操作 无疑 降低了网络IO的性能。众所周知,硬盘的读写速度是很慢的,当然,这里是指机械硬盘,在读取或写入数据时,由于寻道、盘片旋转等机械运动,导致耗时是比较长的。有一种情况,磁盘的性能比内存要高,那就是 顺序写。同时,操作系统 利用 页缓存 来 缓存预读的磁盘数据,并且对磁盘数据的操作也是在页缓存中直接操作的,再某个时机下,再将页缓存中的数据写入磁盘。原创 2022-09-05 20:04:46 · 179 阅读 · 0 评论 -
反序列化常用
【代码】反序列化常用。原创 2024-02-19 09:47:15 · 160 阅读 · 0 评论 -
HttpURLConnection使用基本操作
http请求 一般包括 请求参数/header/cookie等参数的设置。原创 2024-04-26 17:12:21 · 2133 阅读 · 0 评论 -
几种反序列化方式的性能比较
【代码】几种反序列化方式的性能比较。原创 2024-04-28 22:37:15 · 188 阅读 · 0 评论 -
protobuf protostuff 区别
如果你正在构建一个需要跨语言通信的大型系统,或者你希望在编译时就定义好数据结构,那么protobuf可能是更好的选择。如果你正在寻找一个更轻量级、更灵活的解决方案,或者你的应用程序需要在运行时动态定义数据结构,那么Protostuff可能更适合你。protobuf 在 进行反序列化时,如果是 String -> long ,那么得到的是 0protostuff 在进行反序列化时,如果是 String -> long ,那么得到的是 string 最后一个 char 的 ASCII吗。原创 2024-07-23 15:48:58 · 561 阅读 · 0 评论 -
BIO是怎么实现的
需要注意的是,这里accept 和 socket的读写操作都是 阻塞型的,也就是 会消耗掉一个 线程。这也就是 BIO 效率低的原因。操作系统 此时 仍然在 1440 上监听 连接请求,如果有新的连接过来,会再返回一个 新的数字,比如 1880,以此类推。操作系统就会在 1440 上监听 连接请求,当接收到连接请求时,会返回一个 新的数字,比如 1864。1440 是固定的 一个用于服务端监听连接的,新的连接生成的 是 随机的。一个网络连接,就是 一个 int 型的 数字,一个数字 代表一个连接。原创 2024-11-07 15:59:18 · 164 阅读 · 0 评论 -
网站架构一点点
最近看了关于软件架构的书。从宏观角度介绍了网站的结构、要求、模式。其中有一句话,值得好好琢磨琢磨,大型网站都是从小型网站发展而来的。...原创 2019-12-03 22:44:47 · 119 阅读 · 0 评论 -
Java 如何发起 HTTP请求
1. JDK提供了 网络编程的 基础类,SocketSocket socket = new Socket();socket.connect(new InetSocketAddress(8081));2. JDK 提供的 发送 http 请求的 工具类: HttpURLConnectionURL url = new URL("http://localhost:8081/hello/world");URLConnection urlConnection = url.openConn...原创 2021-08-18 11:13:34 · 206 阅读 · 0 评论 -
NIO编程从入门到...
小学生,用最简单的方式 写一个 NIO 服务端package com.lingshi.callback;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;impo原创 2021-08-19 16:38:57 · 129 阅读 · 0 评论 -
网络相关知识
HTTPhttp/0.9支持命令: GET服务器响应格式:只能是 HTML服务器发送完毕,关闭 TCP连接http/1.0支持命令:GET、POST、HEAD服务器响应格式:增加了很多,content-type 指定响应格式请求、响应数据:增加 信息头可以使用Connection: keep-alive 复用连接,由客户端或者服务器 主动关闭连接http/1.1引入持久连接:TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: ..原创 2021-12-23 11:30:19 · 1381 阅读 · 0 评论 -
JavaNet
两个基本的类:IP地址的表示类:InetAddress表示的是 IP 地址IPV4子类:Inet4AddressIPV6子类:Inet6AddressIP + 端口 的表示类:SocketAddress 是一个 抽象类,表示一个 socket 地址,没有任何方法。可以算是 一个标识 类子类 InetSocketAddress ,表示 一个 IP + PORT总结:IP地址是单独的一个类表示的,IP+PORT 是单独一个类表示的。在网络编程中,PORT 就是一个..原创 2022-01-20 18:06:30 · 370 阅读 · 0 评论 -
关于web服务的几种实现方式
第一次听说 websocket 是在一次面试中。当然,第一次听说 肯定是 不知道。后来 就开始 百度 websocket。如果不知道它是什么,就自行百度一下。反正,它就是一个协议,可以完成 全双工 通信,也就是 客户端 服务端可以同时互相 发消息,比如 你进入了一个 推销 产品的页面,突然弹个 框出来 问你要不要 买什么什么的,那个 就是 用 websocket 来实现的 由服务器主动推送消息到浏览器。大多浏览器 已经 实现了 websocket 协议。web容器,像 tomcat.原创 2021-08-26 13:38:19 · 915 阅读 · 0 评论