首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

netty系列之:搭建自己的下载文件服务器

简介 上一篇文章我们学习了如何在netty中搭建一个HTTP服务器,讨论了如何对客户端发送的请求进行处理和响应,今天我们来讨论一下在netty中搭建文件服务器进行文件传输中应该注意的问题。...,需要比较文件的最后修改时间和If-Modified-Since中自带的时间,如果没有发送变化,则发送304状态: FullHttpResponse response = new DefaultFullHttpResponse...首先要设置的是ContentLength,也就是响应的文件长度,这个可以使用file的length方法来获取: RandomAccessFile raf; raf = new RandomAccessFile...对于HTTP传递的文件来说,有两种处理方式,第一种方式情况下如果知道整个响应的content大小,则可以在后台直接进行整个文件的拷贝传输。...本文的例子可以参考:learn-netty4 本文已收录于 http://www.flydean.com/20-netty-fileserver/ 最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现

1.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    netty系列之:自建客户端和HTTP服务器交互

    简介 上一篇文章,我们搭建了一个支持中文的HTTP服务器,并且能够从浏览器访问,并获取到相应的结果。虽然浏览器在日常的应用中很普遍,但是有时候我们也有可能从自建的客户端来调用HTTP服务器的服务。...使用客户端构建请求 在上一篇文章中,我们使用浏览器来访问服务器,并得到到了响应的结果,那么如何在客户端构建请求呢?...直到接收到服务器端的响应之后再发送请求body。...总结 本文介绍了如何在client构建HTTP请求,并详细讲解了HTTP server对HTTP请求的解析流程。...本文的例子可以参考:https://github.com/ddean2009/learn-netty4 本文已收录于 http://www.flydean.com/19-netty-http-client-request

    1.6K10

    netty系列之:搭建自己的下载文件服务器

    简介 上一篇文章我们学习了如何在netty中搭建一个HTTP服务器,讨论了如何对客户端发送的请求进行处理和响应,今天我们来讨论一下在netty中搭建文件服务器进行文件传输中应该注意的问题。...,我们首先需要返回一个响应中通常需要的日期字段,如Date、Last-Modified、Expires、Cache-Control等: SimpleDateFormat dateFormatter =...,需要比较文件的最后修改时间和If-Modified-Since中自带的时间,如果没有发送变化,则发送304状态: FullHttpResponse response = new DefaultFullHttpResponse...首先要设置的是ContentLength,也就是响应的文件长度,这个可以使用file的length方法来获取: RandomAccessFile raf; raf = new RandomAccessFile...对于HTTP传递的文件来说,有两种处理方式,第一种方式情况下如果知道整个响应的content大小,则可以在后台直接进行整个文件的拷贝传输。

    1.3K10

    netty系列之:自建客户端和HTTP服务器交互

    简介 上一篇文章,我们搭建了一个支持中文的HTTP服务器,并且能够从浏览器访问,并获取到相应的结果。虽然浏览器在日常的应用中很普遍,但是有时候我们也有可能从自建的客户端来调用HTTP服务器的服务。...使用客户端构建请求 在上一篇文章中,我们使用浏览器来访问服务器,并得到到了响应的结果,那么如何在客户端构建请求呢?...直到接收到服务器端的响应之后再发送请求body。...总结 本文介绍了如何在client构建HTTP请求,并详细讲解了HTTP server对HTTP请求的解析流程。...本文的例子可以参考:learn-netty4 本文已收录于 http://www.flydean.com/19-netty-http-client-request-2/ 最通俗的解读,最深刻的干货,最简洁的教程

    1.6K00

    netty系列之:一个价值上亿的网站速度优化方案

    今天除了要给大家介绍一下如何在netty中同时支持http和https协议之外,还给大家介绍一个价值上亿的网站数据优化方案,有了这个方案,年薪百万不是梦!...本文的目标 本文将会给大家介绍一下如何在一个netty服务中同时支持http和http2两种协议,在这两个服务器中,提供了对多图片的访问支持,我们介绍如何从服务器端返回多个图片。...B县的县长从来不巡检,一道河水泛滥的时候,B县长就组织人抗洪抢险,然后媒体全都报道的是B县长抗洪的丰功伟绩,最后B县长由于政绩突出,升任市长。 好了,故事讲完了,接下来是我们的优化。...,才会发送对应的响应。...本文的例子可以参考:learn-netty4 本文已收录于 http://www.flydean.com/34-netty-multiple-server/ 最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现

    22220

    netty系列之:一个价值上亿的网站速度优化方案

    今天除了要给大家介绍一下如何在netty中同时支持http和https协议之外,还给大家介绍一个价值上亿的网站数据优化方案,有了这个方案,年薪百万不是梦!...本文的目标 本文将会给大家介绍一下如何在一个netty服务中同时支持http和http2两种协议,在这两个服务器中,提供了对多图片的访问支持,我们介绍如何从服务器端返回多个图片。...text/html; charset=UTF-8"); sendResponse(ctx, streamId, response, request); } 对于图像来说,我们获取到要返回的图像...B县的县长从来不巡检,一道河水泛滥的时候,B县长就组织人抗洪抢险,然后媒体全都报道的是B县长抗洪的丰功伟绩,最后B县长由于政绩突出,升任市长。 好了,故事讲完了,接下来是我们的优化。...,才会发送对应的响应。

    19610

    聊一聊 Netty 数据搬运工 ByteBuf 体系的设计与实现

    假设 minNewCapacity 为 5M,那么它的扩容基准线就是 4M , 这种情况下扩容之后的容量 newCapacity = 4M + CALCULATE_THRESHOLD = 8M 。...另一种则是通过 Unsafe 来对 refCnt 进行操作,我们可以通过 unsafeOffset() 来获取到 refCnt 字段在 ByteBuf 实例对象内存中的偏移。...image.png 现在我们要在位置 3 ,4 处插入两个新的 Component 实例,所以原来的 components[3] ,components[4] 需要移动到 components[5]...但如果是安卓平台,那么无论 -Dio.netty.noPreferDirect 如何设置,Netty 默认情况下都会走 Heap Memory 。 4....那么 Netty 中的 DirectByteBuf 在什么情况下带有 Cleaner,又在什么情况下不带 Cleaner 呢 ?

    29410

    netty

    socketChannel.write(buffer); } 零拷贝:没有cpu copy或copy 的信息很少 示例:服务器读取文件,发送给客户 传统:用户---》内核---》用户---》...用于基于nio的数据传输(大数据,小数据都可)框架 自己用nio写,还是比较偏底层的,比较麻烦 简化nio的开发流程 tcp/upd(传输协议)----》nio(基于传输协议的api),netty--...protected void initChannel(SocketChannel ch) throws Exception {// 每个请求pipline与handler是不共享的...ctx.writeAndFlush(defaultFullHttpResponse); } } Unpooled类 // 该对象包含数组,读取的时候不同flip进行翻转,底层维护了readerIndex...心跳检测 // 心跳检测处理器,触发器 // 3s没读取,发送检测包 // 5s没有写,发送检测包 // 7s没有读,也没有写,发送检测包 // 事件传递到下一个handler处理(自定义) pipline.addLast

    50152

    Netty应用:快速了解http各版本的特性 HttpServer的小demo

    示例: text/html 、 image/png 、 application/pdf 、 video/mp4 前面是一级类型,后面是二级类型,用斜杠分隔; 还可以增加其他参数,如编码格式。...Accept-Encoding,代表接收哪些压缩方式 c、缺点和问题 每个TCP连接只能发送一个请求,发送完毕连接关闭,使用成本很高,性能较差。...管道机制,支持客户端发送多个请求,管理请求的顺序的。服务器还是按照接受请求的顺序,返回对应的响应结果。...(new MyHttpHandler()); } } 有了初始化,我们还需要一个做事的 那就是 处理器 Handler netty帮我们封装了返回完整http响应的类 DefaultFullHttpResponse...是一个默认的完整的http响应 DefaultFullHttpResponse response = new DefaultFullHttpResponse(

    44220

    【Netty】深入分析ByteBuf

    、UnPoolHeapByteBuf 总结: 在高负载,大并发的情况下对象池的ByteBuf更好,而在一般情况下,可以使用UnPoolByteBuf 2.2 Netty的零拷贝 ?...DefaultFileRegion是Netty的文件传输类,它通过transferTo方法将文件直接发送到目标Channel,而不需要循环拷贝的方式,提升了传输性能 2.3 Netty的内存回收管理...相同的内存引用计数和不同的读写指针. slice() 方法与 duplicate() 不同点就是:slice() 只截取从 readerIndex 到 writerIndex 之间的数据,它返回的 ByteBuf...这三个方法均维护着自己的读写指针,与原始的 ByteBuf 的读写指针无关,相互之间不受影响,其次使用到 slice 和 duplicate 方法的时候,千万要理清内存共享,引用计数共享,读写指针不共享...,不释放会造成内存泄漏。

    1.2K30

    告诉你为何Java NIO的ByteBuffer这么垃圾!

    ByteBuf是Netty当中的最重要的工具类,它与JDK的ByteBuffer原理基本上相同,也分为堆内与堆外俩种类型,但是ByteBuf做了极大的优化,具有更简单的API,更多的工具方法和优秀的内存池设计...2 Netty 的数据容器 所有网络通信最终都是基于底层的字节流传输,因此高效、方便、易用的数据接口是迷人的,而 Netty 的 ByteBuf 生而为满足这些需求。...Netty 在4.x为 ByteBuf 和 ByteBufHolder 带来了引用计数技术,都实现了: ReferenceCounted接口 需要显式释放的引用计数对象。...引用计数对于池化实现(如 PooledByteBufAllocator)很重要,它降低了内存分配的开销。...当减少到 0 时,该对象被释放,该方法返回 true boolean released = buffer.release(); 试图访问一个已经被释放的引用计数的对象,将会抛IllegalReferenceCountException

    65320

    一直使用AtomicInteger?试一试FiledUpdater

    背景 在进入正题之前,这里先提出一个问题,如何在多线程中去对一个数字进行+1操作?...是一个对象,一个对象的正确计算应该是 对象头 + 数据大小,在64位机器上AtomicInteger对象占用内存如下: 关闭指针压缩:16(对象头)+4(实例数据)=20不是8的倍数,因此需要对齐填充...16+4+4(padding)=24 开启指针压缩(-XX:+UseCompressedOop): 12+4=16已经是8的倍数了,不需要再padding。...类型并不会占用我们对象的内存,所以使用filedUpdater的话可以近似认为只用了4字节,这个再未关闭指针压缩的情况下节约了7倍,关闭的情况下节约了4倍,这个在少量对象的情况下可能不明显,当我们对象有几十万...比如在netty中的AbstractReferenceCountedByteBuf,熟悉netty的同学都知道netty是自己管理内存的,所有的ByteBuf都会继承AbstractReferenceCountedByteBuf

    60820
    领券