精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

內存優化神器!Spring StreamingResponseBody 三大實戰技巧,告別 OOM!

開發 前端
StreamingResponseBody 提供了一種高效的流式數據傳輸方式,在大文件下載、實時推送、動態導出等場景下能夠顯著降低內存占用,提高系統吞吐量,讓你的應用更具彈性與穩定性!?

在當前高并發、大數據量的業務場景下,傳統的同步響應模式往往會因內存占用過高、響應延遲大等問題,成為系統性能的瓶頸。Spring Boot 3.4 提供的 StreamingResponseBody 機制,可以實現流式數據傳輸,使數據在生成的同時直接發送至客戶端,從而避免內存中存儲完整響應的需求。

無論是大文件下載、實時日志推送,還是動態生成 CSV 數據并導出,StreamingResponseBody都能以極低的資源消耗實現高效數據傳輸。本文將通過以下三大典型場景,深入探討 StreamingResponseBody 的應用方式:

  1. 大文件下載流式讀取文件內容,避免 OOM 現象;
  2. 實時數據推送實現日志流、股票數據等動態內容推送;
  3. 動態 CSV 生成與導出高效分頁查詢數據庫,避免字符串拼接導致的內存開銷。

大文件下載:秒級傳輸,避免內存溢出

在傳統的文件下載方式中,文件內容通常會被完整加載到內存中再返回給客戶端,對于大文件來說,這很容易導致內存溢出。使用 StreamingResponseBody,可以邊讀取文件邊傳輸數據,確保內存占用始終處于合理水平。

代碼示例:

package com.icoderoad.controller;


import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;


@RestController
@RequestMapping("/files")
public class FileDownloadController {


    @Value("file:///d:/software/OllamaSetup.exe")
    private Resource file;


    @GetMapping("/download")
    public ResponseEntity<StreamingResponseBody> downloadFile() throws Exception {
        String fileName = file.getFilename();
        StreamingResponseBody responseBody = outputStream -> {
            try (InputStream inputStream = file.getInputStream()) {
                byte[] buffer = new byte[4096];
                int bytesRead;
                while ((bytesRead = inputStream.read(buffer)) != -1) {
                    outputStream.write(buffer, 0, bytesRead);
                    outputStream.flush();
                }
            }
        };
        return ResponseEntity.ok()
                .header("Content-Type", "application/octet-stream")
                .header("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8))
                .body(responseBody);
    }
}

關鍵點:

  • 流式讀取通過 InputStream 逐塊讀取文件內容,而非一次性加載到內存;
  • 實時寫出使用 flush() 確保數據立即發送,減少緩沖區積壓;
  • 避免超時建議在 application.yml 配置 spring.mvc.async.request-timeout=-1 以防止長時間下載失敗。

實時數據推送:高效流式傳輸日志

對于日志監控、股票行情等實時更新的數據,傳統方案往往需要輪詢獲取數據,帶來額外的網絡開銷。使用 StreamingResponseBody,可以建立長連接,讓服務器主動推送最新數據。

代碼示例:

package com.icoderoad.controller;


import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.util.Random;


@RestController
@RequestMapping("/stream")
public class RealTimeDataController {


    @GetMapping("/logs")
    public ResponseEntity<StreamingResponseBody> streamLogs() {
        StreamingResponseBody responseBody = outputStream -> {
            for (int i = 0; i < 20; i++) {
                String log = "日志數據 " + i + " - " + LocalDateTime.now() + "\n";
                outputStream.write(log.getBytes(StandardCharsets.UTF_8));
                outputStream.flush();
                Thread.sleep(new Random().nextInt(1000));
            }
        };
        return ResponseEntity.ok()
                .header("Content-Type", "text/plain;charset=utf-8")
                .body(responseBody);
    }
}

關鍵點:

  • 實時輸出調用 flush() 確保數據立即推送;
  • 模擬動態數據使用 Thread.sleep() 模擬數據產生的時間間隔;
  • 客戶端測試可使用 curl http://localhost:8080/stream/logs 觀察數據流式推送的效果。

動態生成 CSV 并下載

在導出大規模數據(如用戶數據、訂單數據)時,傳統方式通常先將所有數據拼接成字符串再寫入文件,這容易造成內存溢出。通過 StreamingResponseBody,我們可以實現 邊查詢、邊寫入、邊下載 的流式導出。

代碼示例:

package com.icoderoad.controller;


import com.icoderoad.service.UserService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.util.List;


@RestController
@RequestMapping("/export")
public class CsvDownloadController {


    private final UserService userService;


    public CsvDownloadController(UserService userService) {
        this.userService = userService;
    }


    @GetMapping("/users")
    public ResponseEntity<StreamingResponseBody> exportCsv() {
        StreamingResponseBody responseBody = outputStream -> {
            outputStream.write("ID,Name,Email\n".getBytes());
            for (int page = 0; page < 10; page++) {
                List<User> users = userService.getUsers(page, 10);
                for (User user : users) {
                    outputStream.write((user.id() + "," + user.name() + "," + user.email() + "\n").getBytes(StandardCharsets.UTF_8));
                }
                outputStream.flush();
            }
        };
        return ResponseEntity.ok()
                .header("Content-Type", "text/csv")
                .header("Content-Disposition", "attachment; filename=\"users.csv\"")
                .body(responseBody);
    }
}

關鍵點:

  • 分頁查詢每次僅查詢一部分數據,避免一次性加載過多數據;
  • 邊查詢邊寫入防止字符串拼接導致的內存溢出。

總結

StreamingResponseBody 提供了一種高效的流式數據傳輸方式,在大文件下載、實時推送、動態導出等場景下能夠顯著降低內存占用,提高系統吞吐量,讓你的應用更具彈性與穩定性!

責任編輯:武曉燕 來源: 路條編程
相關推薦

2025-04-07 02:33:00

項目開發Spring

2025-06-11 04:44:00

技巧Spring性能

2024-11-19 15:22:37

2025-02-13 08:06:54

2010-08-13 14:44:26

思科路由器IOS軟件

2010-07-26 16:35:34

Perl性能

2010-07-26 12:50:45

Perl性能

2025-05-14 08:20:00

Linux權限管理sudo

2018-10-30 12:15:26

CDN網絡技巧

2009-08-26 08:42:09

思科認證考試資料CCNA實戰技巧

2025-06-11 09:28:22

2025-07-11 04:00:00

2025-10-23 07:23:00

數據分析AI數據孤島

2024-06-27 08:41:21

2025-04-23 08:35:00

2024-01-10 16:46:13

Kubernetes容器

2022-05-10 09:33:50

Pandas技巧代碼

2025-07-28 04:00:00

Linux內存優化

2025-11-19 07:59:57

2010-08-10 10:17:44

Flex內存
點贊
收藏

51CTO技術棧公眾號

男男做爰猛烈叫床爽爽小说 | 91亚洲精品| 久久久久久久免费视频了| 国产精品视频免费在线观看| 欧洲猛交xxxx乱大交3| 青青久久av| 欧美日韩国产在线观看| 九九热只有这里有精品| av资源在线观看免费高清| 国产精品一区二区三区四区| 欧美在线播放视频| 男女性高潮免费网站| 人人精品亚洲| 日韩一区二区电影| 欧美 国产 小说 另类| 91最新在线视频| 国产欧美一区视频| 国产精品乱码视频| 国产一区二区在线视频观看| 99热免费精品| 久久av资源网站| mm131丰满少妇人体欣赏图| 清纯唯美激情亚洲| 在线精品亚洲一区二区不卡| 少妇高潮喷水在线观看| 九七久久人人| 欧美精彩视频一区二区三区| 国产伦精品一区二区三区照片 | 亚洲色诱最新| 欧美另类精品xxxx孕妇| 夜夜春很很躁夜夜躁| 欧美日韩一区二区三区在线电影 | 国产欧美一区二区三区四区 | 欧美日韩日本视频| 国产黄色一级网站| 黄色羞羞视频在线观看| 亚洲私人影院在线观看| 亚洲欧美久久234| 久久精品国产亚洲a∨麻豆| jizz一区二区| av一区二区三区免费| 国产精品探花视频| 老汉av免费一区二区三区| 欧美在线视频网| 日韩网红少妇无码视频香港| 亚洲性色视频| 久久久久国产精品免费网站| 印度午夜性春猛xxx交| 91亚洲自偷观看高清| 中日韩美女免费视频网站在线观看| 色天使在线视频| 久久久免费毛片| 亚洲成在人线av| 美女黄色一级视频| 国产一区福利| 日韩精品福利网站| 黄色短视频在线观看| 日韩av黄色在线| 日韩成人激情在线| 欧美bbbbb性bbbbb视频| 精品嫩草影院| 亚洲午夜激情免费视频| 久久国产柳州莫菁门| 欧美丝袜激情| 色妞一区二区三区| 成年人午夜剧场| 国内揄拍国内精品久久| 欧美极品少妇全裸体| 日本三级视频在线| 首页国产欧美久久| 国产精品网站视频| 国产ts人妖调教重口男| 成人av资源网站| 欧美日韩国产精品一区二区| 韩国三级在线观看久| 国产精品福利一区二区| 国内外成人激情免费视频| 在线播放蜜桃麻豆| 欧美日韩国产一区二区| 已婚少妇美妙人妻系列| 免费成人高清在线视频| 日韩一级免费观看| 国产真实乱人偷精品| 亚洲毛片免费看| 日韩在线观看免费av| 免费中文字幕在线| 老鸭窝毛片一区二区三区| 国产精品视频一| 国产高清免费在线观看| 久久亚洲一区二区三区四区| 香蕉久久免费影视| 2024短剧网剧在线观看| 精品成人乱色一区二区| www.久久久精品| 国产精品色在线网站| 尤物精品国产第一福利三区| 青青草原在线免费观看视频| 香蕉久久夜色精品国产| 成人激情视频在线| 亚洲欧美丝袜中文综合| 国产女同互慰高潮91漫画| 成人国产在线看| 色豆豆成人网| 亚洲精品在线电影| а天堂中文在线资源| 精品成人免费| 成人网欧美在线视频| 天堂中文在线8| 成人免费在线视频| 国产成人手机视频| 露出调教综合另类| 久久精彩免费视频| 国产91精品看黄网站在线观看| 国产在线看一区| 日本不卡一区二区三区视频| 麻豆福利在线观看| 欧美日韩成人在线一区| 狠狠人妻久久久久久综合蜜桃| 一区二区三区四区电影| 日韩av免费在线播放| 午夜精品久久久久久久96蜜桃| 国产三级三级三级精品8ⅰ区| 欧美这里只有精品| 婷婷成人av| 亚洲人午夜精品免费| 日韩免费av片| 国产精品小仙女| 中文字幕超清在线免费观看| 日韩不卡免费高清视频| 亚洲精品成人久久| 国产在线观看免费av| 国产综合久久久久久鬼色| 日韩精品极品视频在线观看免费| 97人人在线视频| 日韩欧美一卡二卡| 亚洲怡红院在线观看| 免播放器亚洲一区| 日韩午夜视频在线观看| 午夜不卡影院| 亚洲精品久久久久国产| 国产精品111| 丁香六月综合激情| 女人被男人躁得好爽免费视频| 不卡精品视频| 精品国产自在精品国产浪潮| 伊人免费在线观看| 国产精品久久午夜夜伦鲁鲁| 超碰在线公开97| 欧美一区二区麻豆红桃视频| 国产不卡视频在线| 高清美女视频一区| 欧美午夜片在线看| 男人天堂资源网| 精品一二三四区| 色乱码一区二区三区熟女| 亚洲精品大全| 欧美成人精品一区| 午夜免费福利视频| 亚洲午夜在线电影| 粉嫩av懂色av蜜臀av分享| 亚洲激情偷拍| 蜜桃av噜噜一区二区三| 香蕉视频亚洲一级| 日韩在线资源网| 99在线精品视频免费观看20| 亚洲另类中文字| 亚洲熟女一区二区三区| 中文亚洲字幕| 亚洲欧美精品| 91亚洲无吗| 国产91精品久久久久久久| 精品视频二区| 欧美日韩aaaaaa| 免费在线观看黄色av| 成人avav在线| 激情五月亚洲色图| 天天做天天爱天天综合网| 51成人做爰www免费看网站| 国产在线xxx| 亚洲欧美综合图区| 国产精品老熟女视频一区二区| 亚洲影视在线观看| 免费黄色在线视频| 精品一区二区在线免费观看| 800av在线免费观看| 久久成人av| 91传媒视频免费| 伊人久久综合一区二区| 久久精品国产欧美激情| 欧美 日韩 国产 成人 在线 91| 色哟哟国产精品免费观看| 亚洲不卡在线播放| heyzo一本久久综合| 久久久久久三级| 国产专区一区| 亚洲精品高清国产一线久久| 91精品国产自产在线丝袜啪| 国产精品成久久久久三级| 最新黄网在线观看| 亚洲性xxxx| 免费观看国产视频| 精品视频999| 日韩 欧美 综合| 亚洲欧美一区二区三区久本道91 | av中文字幕播放| 91久久国产最好的精华液| 久久久久久激情| 国产精品美女久久久久久久久久久| 国产精品熟妇一区二区三区四区| 蜜桃精品在线观看| 欧美色图另类小说| 欧美日韩亚洲一区| 亚洲国产欧美日韩| 丝袜连裤袜欧美激情日韩| 亚洲综合中文字幕68页| 成人做爰视频www| 欧洲亚洲免费在线| a级片免费在线观看| 久久国产色av| www.亚洲免费| 亚洲美女性视频| 少妇人妻偷人精品一区二区| 宅男在线国产精品| 中文字幕乱码在线观看| 在线亚洲免费视频| 91九色丨porny丨肉丝| 一区2区3区在线看| 成年人二级毛片| 国产精品蜜臀av| 九九九视频在线观看| 久久综合av免费| 国产美女视频免费观看下载软件| 国产精品一区二区久久精品爱涩| 人人干人人干人人| 美国av一区二区| 亚洲一级免费观看| 美女视频网站久久| 国产九九在线视频| 美女性感视频久久| 日本久久久久久久久久久久| 日韩中文字幕亚洲一区二区va在线| 国产日韩av网站| 亚洲日本国产| 久久综合色视频| 99riav国产精品| 能在线观看的av| 久久99伊人| 日本三区在线观看| 日韩av午夜在线观看| 中文字幕国产传媒| 老司机一区二区| 日韩av自拍偷拍| 国产毛片精品国产一区二区三区| 天天操精品视频| 国产精品亚洲第一区在线暖暖韩国| 九色91porny| 成人一区二区三区视频在线观看 | 国产成人精品亚洲精品色欲| 欧美一区二区三区视频在线观看| 国产成人麻豆精品午夜在线| 精品国内二区三区| 天堂a√在线| 在线观看欧美成人| 国产乱色在线观看| 欧美激情手机在线视频 | 亚洲av无码国产精品麻豆天美| 国产欧美一区二区三区网站| 欧美视频一区二区在线| 樱桃国产成人精品视频| 国产在线拍揄自揄拍无码视频| 婷婷亚洲久悠悠色悠在线播放| 精品国产午夜福利| 精品视频在线免费| 懂色av一区二区三区四区| 亚洲精美色品网站| 番号在线播放| 欧美高清视频在线| 韩国久久久久久| 91免费在线视频| 欧美人妖在线观看| 在线丝袜欧美日韩制服| 国内自拍视频一区二区三区| 欧美日韩一区二区在线免费观看| 久久精品国产77777蜜臀| 亚洲少妇一区二区| 国产色一区二区| 久久久久久久久久久久久久免费看 | 欧美精品久久久| 91麻豆精品国产91久久久平台| 草草草视频在线观看| 三级欧美在线一区| 伦伦影院午夜理论片| 久久久欧美精品sm网站| 侵犯稚嫩小箩莉h文系列小说| 五月天网站亚洲| 国产精品久久久久久69| 日韩精品一区二区三区老鸭窝| 日本亚洲一区| 欧美黄色www| 欧美日韩亚洲国产| 国产日韩一区欧美| 无码一区二区三区视频| 哪个网站能看毛片| 国产精品一卡二| 日本一二三不卡视频| 亚洲成人一区在线| 国内精品久久久久久久久久久| 亚洲欧美视频在线| 韩国成人免费视频| 91色在线观看| 日韩欧美大片| 欧美日韩国产精品激情在线播放| 国产一区二区三区国产| 五月婷六月丁香| 色综合久久中文综合久久牛| 亚洲第一大网站| 久久天天躁狠狠躁夜夜av| 日韩成人影音| 精品一区二区三区日本| 欧美午夜不卡影院在线观看完整版免费| 国产精品igao| 久久精品欧美日韩精品| 亚洲综合一二三| 精品三级在线观看| 国产激情在线| 91精品久久久久久久久久 | 国产一区二区精品丝袜| 日韩理论视频| 精品日本一区二区| 亚洲国产网站| 国产亚洲精品成人a| 亚洲女爱视频在线| 国产强伦人妻毛片| 日日噜噜噜夜夜爽亚洲精品 | 日韩一区二区久久| 妖精视频一区二区| 亚洲国产成人av网| 人妻一区二区三区四区| 久久免费精品视频| 激情视频极品美女日韩| 成人免费观看cn| 成人黄色在线视频| 日韩av黄色片| 亚洲精品国产成人| 美女搞黄视频在线观看| 久久国产精品久久| 亚洲欧美视频| 久久香蕉国产线看观看网| 久久精品国产亚洲AV无码麻豆 | 性做久久久久久久久久| 久久偷看各类女兵18女厕嘘嘘| 宅男噜噜噜66国产精品免费| 亚洲一区二区三区精品动漫| 蓝色福利精品导航| 成人做爰视频网站| 日韩欧美一区二区免费| 成年人国产在线观看| 好吊色欧美一区二区三区视频 | 粉色视频免费看| 亚洲视频1区2区| 亚洲精品久久久久久久久久 | 99精品视频99| 亚洲男人天天操| 成人激情视屏| 久久视频免费在线| 成人aa视频在线观看| 中文字字幕在线中文| 影音先锋欧美精品| 精品成人18| 日韩av综合在线观看| 国产网站一区二区| 国产后入清纯学生妹| 久久人人爽人人爽人人片av高请| 香蕉视频一区| 五月天av在线播放| 亚洲精品成人a在线观看| 亚洲AV成人无码一二三区在线| 日韩美女主播视频| 亚洲乱码免费伦视频| 波多野结衣加勒比| 欧美丝袜丝交足nylons图片| 亚洲精品一线| 欧美专区一二三| 国产成人av一区二区| 日本一区二区免费电影| 免费91麻豆精品国产自产在线观看| 高清精品视频| 91视频这里只有精品| 午夜电影网亚洲视频| 三级外国片在线观看视频| 国产精品推荐精品| 美国十次了思思久久精品导航| 日本在线小视频| 中文字幕欧美日韩在线| 国产精品qvod| 超碰人人草人人| 色综合一个色综合亚洲| 欧美成人二区| 日本一区二区三区四区在线观看| 国产成人综合网站|