技术交流

229 主题 512 帖子
  • 求微信插件 可以收到好友的生日提醒

    2 赞同
    1 帖子
    4k 浏览
    尚无回复
  • 一些爬虫稳定的ip 球球了

    0 赞同
    1 帖子
    4k 浏览
    尚无回复
  • 谁有配合xp框架好用的脱壳模块

    0 赞同
    1 帖子
    4k 浏览
    尚无回复
  • 修改(伪装)视频的持续时间

    0 赞同
    9 帖子
    6k 浏览

    @k1995 改了,在自己手机还是没变,视频发别人,别人显10秒,可以了

  • 0 赞同
    1 帖子
    5k 浏览
    尚无回复
  • 0 赞同
    1 帖子
    5k 浏览
    尚无回复
  • Spring 大文件下载(前端视频播放)优化

    0 赞同
    3 帖子
    5k 浏览

    优化后。我们解析请求header 中 Range实现分片下载。这样就能实现拖拽播放,不用将文件一次性全部下载完毕。

    @GetMapping("/download") public void download(HttpServletResponse res, HttpServletRequest request, @RequestParam("fileName") String fileName) { GetObjectArgs objectArgs = GetObjectArgs.builder().bucket(BUCKETNAME) .object(fileName).build(); StatObjectArgs statObjectArgs = StatObjectArgs.builder().bucket(BUCKETNAME).object(fileName).build(); long fileSize; try { fileSize = minioClient.statObject(statObjectArgs).size(); } catch (Exception e) { log.error("文件下载失败:{}", fileName, e); return; } String range = request.getHeader("Range"); if(range != null && range.startsWith("bytes=")) { try { int idx = range.indexOf("-"); long start = Long.parseLong(range.substring("bytes=".length(), idx)); long end = minioClient.statObject(statObjectArgs).size() - 1; if (idx + 1 < range.length()) { end = Long.parseLong(range.substring(idx + 1)); } long length = end - start + 1; InputStream inputStream = minioClient.getObject(GetObjectArgs.builder().bucket(BUCKETNAME).object(fileName).offset(start).length(length).build()); res.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT); res.setHeader("Content-Range", "bytes " + start + "-" + end + "/" + fileSize); res.setContentType("application/octet-stream"); res.setHeader("Content-Disposition", "attachment; filename=" + FileUtil.getName(fileName)); res.setContentLength((int)length); try { IOUtils.copy(inputStream, res.getOutputStream()); inputStream.close(); res.flushBuffer(); } catch (ClientAbortException e) { // pass } } catch (Exception e) { log.error("断点下载失败:{}", fileName, e); } } else { try (InputStream is = minioClient.getObject(objectArgs)) { res.setContentType("application/octet-stream"); res.addHeader("Content-Disposition", "attachment;filename=" + FileUtil.getName(fileName)); res.setContentLength((int)fileSize); IOUtils.copy(is, res.getOutputStream()); res.flushBuffer(); } catch (Exception e) { log.error("文件下载失败:{}", fileName, e); } } }
  • -1 赞同
    1 帖子
    5k 浏览
    尚无回复
  • 哪位大佬做过safair浏览器兼容问题

    0 赞同
    1 帖子
    5k 浏览
    尚无回复
  • 如何联系github客服?

  • 使用代理还不能访问chatgpt的看过来

    -1 赞同
    4 帖子
    6k 浏览
    尚无回复
  • 如何使用PINN预测推力气浮轴承的流场

    0 赞同
    1 帖子
    5k 浏览
    尚无回复
  • matlab画Ariy disk

    0 赞同
    2 帖子
    5k 浏览

    不懂,帮你问了下gpt。

    要使用MATLAB绘制艾里斑,您可以按照以下步骤进行操作:

    定义相关参数:首先,您需要定义数值孔径(NA)和光波长(λ)。例如,您可以将它们定义为变量,如NA和lambda。 创建网格:使用meshgrid函数创建一个网格,该网格覆盖在一个正方形区域内 [x, y] = meshgrid(-1:0.01:1, -1:0.01:1);

    这将创建一个以中心为原点的二维网格,每个点的间距为0.01。

    计算相位分布:根据艾里斑的公式,计算每个网格点的相位分布。假设相位相位为0的中心点位于原点,可以使用以下公式计算相位: phase = k * (x.^2 + y.^2);

    这里的k是波数,可以通过以下公式计算:

    k = 2*pi / lambda;

    计算幅度分布:根据相位分布计算幅度分布。使用以下公式:
    这个公式是艾里斑幅度的标准形式。

    绘制图像:使用surf函数将相位和幅度绘制成三维图形。

    figure; surf(x, y, phase, 'EdgeColor', 'none'); title('Phase Distribution'); xlabel('X'); ylabel('Y'); zlabel('Phase'); figure; surf(x, y, amplitude, 'EdgeColor', 'none'); title('Amplitude Distribution'); xlabel('X'); ylabel('Y'); zlabel('Amplitude');

    这将分别绘制相位和幅度的三维图形。

    完整的MATLAB代码示例如下:

    % 定义参数 NA = 0.5; % 数值孔径 lambda = 0.5; % 光波长 % 创建网格 [x, y] = meshgrid(-1:0.01:1, -1:0.01:1); % 计算波数 k = 2*pi / lambda; % 计算相位分布 phase = k * (x.^2 + y.^2); % 计算幅度分布 amplitude = (2*NA / lambda) * sqrt(1 - (lambda / NA)^2 * (x.^2 + y.^2)); % 绘制相位图 figure; surf(x, y, phase, 'EdgeColor', 'none'); title('Phase Distribution'); xlabel('X'); ylabel('Y'); zlabel('Phase'); % 绘制幅度图 figure; surf(x, y, amplitude, 'EdgeColor', 'none'); title('Amplitude Distribution'); xlabel('X'); ylabel('Y'); zlabel('Amplitude');
  • 0 赞同
    6 帖子
    5k 浏览

    @lzs1024
    我没改okhttpcient以及后端代码。我也不知道,后来就好了。
    为spinner绑定了onItemSelected,然后再调用线程。

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { switch (i) { case 0: Thread thread1 = new Thread(runnable1); thread1.start(); break; case 1: Thread thread2 = new Thread(runnable2); thread2.start(); break; case 2: // 暂时不支持 break; case 3: Thread thread4 = new Thread(runnable4); thread4.start(); break; } } @Override public void onNothingSelected(AdapterView<?> adapterView) { } });

    然后在线程中,调用了okhttpclient

    Runnable runnable1 = new Runnable() { @Override public void run() { productOkHttp http = new productOkHttp(); try { List<product> products = http.getProduct(); handleData(products,http); } catch (IOException e) { throw new RuntimeException(e); } } };
  • 0 赞同
    1 帖子
    5k 浏览
    尚无回复
  • vs2022添加事件处理程序消息类型为空

    0 赞同
    1 帖子
    5k 浏览
    尚无回复
  • 0 赞同
    1 帖子
    5k 浏览
    尚无回复
  • modelica求解非线性方程报错,求解

    0 赞同
    1 帖子
    5k 浏览
    尚无回复
  • Springboot整合MybatisPlus出现异常求大神解答

    0 赞同
    2 帖子
    5k 浏览

    好像是版本冲突导致的
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.7</version>
    <relativePath/> <!-- lookup parent from repository -->
    sprng工程的版本为3.0.7
    我把mybatisplus的版本换成了3.5.3.1就可以运行了

  • 0 赞同
    2 帖子
    5k 浏览

    你不发连接,怎么给你下