CMCC RAX3000M nand版 OpenWrt 可用空间变小的恢复方法
文章目录
- 问题背景
- 尝试一、通过 Tftpd64 重新刷写 initramfs-recovery 镜像 (不成功)
- 尝试二、重新分配 ubi 卷(此操作存在一定的危险,请查阅相关资料,避免影响到核心分区)
问题背景
CMCC RAX3000M
Nand
版本的配置为 128MB 的 nand
ROM
+ 512MB
的 RAM
,详细可见 CMCC RAX3000M
因此,在 CMCC RAX3000M
可用空间应该约为 128MB
。但是最近在刷 OpenWrt
的时候,发现刷完新系统之后的可用空间只有几M了,但是镜像包都不是很大;同时刷写大于 55MB
的固件的时候,总是会刷写失败,并且刷写失败之后会进入到一个之前刷过的某个版本,这表明 Flash
中有一个系统占据了部分空间,导致实际可用的空间大幅度减少了。
因此,依照这个思路,本文来研究一下如何释放掉无效的占用,恢复原来的 Flash
空间。
尝试一、通过 Tftpd64 重新刷写 initramfs-recovery 镜像 (不成功)
参考:CMCC RAX3000M使用Tftpd刷写OpenWrt固件的救砖方法
根据在刷写失败之后进入到一个之前刷写过的某个版本这个信息,因为这个系统曾经通过 Tftpd64
刷写了其 initramfs-recovery
镜像,随后启动了 ramdisk
的 OpenWrt
,然后再通过 System Upgrade
刷写了 squashfs-sysupgrade
,使其可以完整的运行 OpenWrt
镜像,因此由此推测,使用 initramfs-recovery
镜像会额外占用空间,作为 recovery
启动。
综上分析,做出了第一次尝试,是不是只有刷一个小的initramfs-recovery
镜像,就可以减小占用了呢?那么直接从官方的镜像选择器,找到 CMCC RAX3000M
的 OpenWrt
的官方镜像:https://firmware-selector.openwrt.org/?version=24.10.1&target=mediatek%2Ffilogic&id=cmcc_rax3000m
,从而可以使用到集成最小文件系统的 OpenWrt
系统,最大程度的减小占用。
下载KERNEL
和 SYSUPGRADE
,此时会得到 openwrt-24.10.1-mediatek-filogic-cmcc_rax3000m-initramfs-recovery.itb
和 openwrt-24.10.1-mediatek-filogic-cmcc_rax3000m-squashfs-sysupgrade.itb
两个文件,即第一个是 ramdik
,用于在 Tftpd64
刷机,第二个为完整的系统,用于在系统升级中使用。
参考CMCC RAX3000M使用Tftpd刷写OpenWrt固件的救砖方法 这篇文章的方法刷写 ramdik
系统,然后再升级 squashfs-sysupgrade
系统。
但遗憾的是,根据此方法之后,依旧没有释放出空间了,可用空间还是只有 55MB
左右,并且刷写失败之后,依旧会进入到之前的系统中,证明 Flash
中的那个系统没有被移除。
尝试二、重新分配 ubi 卷(此操作存在一定的危险,请查阅相关资料,避免影响到核心分区)
在 OpenWrt
官方 pull
中,添加了 CMCC RAX3000M
支持的提交中,给出了刷机的方法,参考:mediatek: add CMCC RAX3000M support #1075
第二三步是刷写 BL2
分区 和 uboot
分区的,而第七步提到了重新分配 UBI
分区卷的过程。而在 OpenWrt
中 UBI
卷是存放 rootfs
和 overlay
分区的卷,此卷的大小就会影响到刷机之后实际可用的空间。因此,由此推测,是不是 UBI
卷分区有问题呢,导致可用空间变小了。
由于在正常系统运行的时候,ubi
卷是被使用的,无法直接操作,因此我们先在 ramdik
系统中,检查 ubi
的Volume
情况。
我们先使用 ubinfo -a
列出 ubi
分区情况,得到的结果如下:
root@OpenWrt:~# ubinfo -a
UBI version: 1
Count of UBI devices: 1
UBI control device major/minor: 10:127
Present UBI devices: ubi0ubi0
Volumes count: 6
Logical eraseblock size: 126976 bytes, 124.0 KiB
Total amount of logical eraseblocks: 912 (115802112 bytes, 110.4 MiB)
Amount of available logical eraseblocks: 0 (0 bytes)
Maximum count of volumes 128
Count of bad physical eraseblocks: 0
Count of reserved physical eraseblocks: 20
Current maximum erase counter value: 92
Minimum input/output unit size: 2048 bytes
Character device major/minor: 250:0
Present volumes: 0, 1, 2, 3, 4, 5Volume ID: 0 (on ubi0)
Type: dynamic
Alignment: 1
Size: 29 LEBs (3682304 bytes, 3.5 MiB)
State: OK
Name: kernel
Character device major/minor: 250:1
-----------------------------------
Volume ID: 1 (on ubi0)
Type: dynamic
Alignment: 1
Size: 9 LEBs (1142784 bytes, 1.0 MiB)
State: OK
Name: ubootenv
Character device major/minor: 250:2
-----------------------------------
Volume ID: 2 (on ubi0)
Type: dynamic
Alignment: 1
Size: 9 LEBs (1142784 bytes, 1.0 MiB)
State: OK
Name: ubootenv2
Character device major/minor: 250:3
-----------------------------------
Volume ID: 3 (on ubi0)
Type: dynamic
Alignment: 1
Size: 459 LEBs (58281984 bytes, 55.5 MiB)
State: OK
Name: fit
Character device major/minor: 250:4
-----------------------------------
Volume ID: 4 (on ubi0)
Type: dynamic
Alignment: 1
Size: 359 LEBs (45584384 bytes, 43.4 MiB)
State: OK
Name: recovery
Character device major/minor: 250:5
-----------------------------------
Volume ID: 5 (on ubi0)
Type: dynamic
Alignment: 1
Size: 21 LEBs (2666496 bytes, 2.5 MiB)
State: OK
Name: rootfs_data
Character device major/minor: 250:6
此时我们就会发现,ubi
有六个卷(Volume
),分别如下:
卷标 | 卷名 | 大小 |
---|---|---|
0 | kernel | 3.5 MiB |
1 | ubootenv | 1.0MB |
2 | ubootenv2 | 1.0MB |
3 | fit | 55.5MB |
4 | recovery | 43.4MB |
6 | rootfs_data | 2.5MB |
此时就会发现,fit
是存放实际运行系统的大小,即刷写 squashfs-sysupgrade
系统存放的空间,而 rootfs_data
就是 overlay
分区所对应的卷了。因此,这里就多了一个 recovery
的无效分区,占了 43.4MB
,也就是之前的系统。因此为了恢复可用空间,就是需要减小这个 recovery
的无效分区了。
从 pull
信息中,其会在 ramdik
系统中 擦除了 ubi
的卷信息,并重建了 ubootenv
卷 和 ubootenv2
卷,同时 CMCC RAX3000M
的 uboot
是放在 FIP
分区的,只要不修改到 FIP
分区,uboot
就不会出问题, 因此可以知道在这里处理 ubi
分区是安全的,即使 ubi
分区挂了,只要在 uboot 中重新刷写 ramdik
系统,再升级squashfs-sysupgrade
系统即可救砖。因此基于此,我们开始修改 ubi
分区。
7. After OpenWrt has booted, erase UBI volumes:ubidetach -p /dev/mtd0ubiformat -y /dev/mtd0ubiattach -p /dev/mtd0
8. Create new ubootenv volumes:ubimkvol /dev/ubi0 -n 0 -N ubootenv -s 128KiBubimkvol /dev/ubi0 -n 1 -N ubootenv2 -s 128KiB
在
ramdisk
的系统中,可以通过Putty
等终端软件建立SSH
连接到OpenWrt
,从而可以使用终端。
首先,我们先用 ubidetach -p /dev/mtd0
命令卸载 ubi 分区。但是,在我的设备上,其报了一个错误:
ubidetach: error!: cannot detach "/dev/mtd0"error 16 (Resource busy)
原因是 /dev/mtd0
正在被使用,通过命令 cat /proc/cmdline
查看系统依赖的卷,得到的结果如下:
root@OpenWrt:~# cat /proc/cmdline
root=/dev/fit0 rootwait
可以知道,运行的 ramdisk
系统是使用了 /dev/fit0
,其正在使用 fit
卷(UBI Volume 3
)作为根文件系统(rootfs
),因此无法正常卸载。也就不能再往下执行 ubiformat -y /dev/mtd0
命令去格式化 ubi
分区。因此我们需要另外寻找方法了。
我们可以使用 ubirmvol /dev/ubi0 -n 卷号
命令,去删除多余的卷,这样效果就等同于格式化 ubi
分区了,我们有以下命令,删除所有卷
ubirmvol /dev/ubi0 -n 0
ubirmvol /dev/ubi0 -n 1
ubirmvol /dev/ubi0 -n 2
ubirmvol /dev/ubi0 -n 3
ubirmvol /dev/ubi0 -n 4
ubirmvol /dev/ubi0 -n 5
这里执行 ubirmvol /dev/ubi0 -n 3
会出现失败,因为它是 fit
卷,正在被作为 rootfs
,被系使用中,但是没有关系,可以忽略此错误。等删除完成之后,用命令重新建立 ubootenv
卷 和 ubootenv2
卷。
ubimkvol /dev/ubi0 -n 0 -N ubootenv -s 128KiB
ubimkvol /dev/ubi0 -n 1 -N ubootenv2 -s 128KiB
待成功之后,在系统升级中,刷入 squashfs-sysupgrade
系统,此时会重新分配 fit
卷 和 rootfs_data
,系统启动之后,会发现空间成功恢复。
相关文章:
CMCC RAX3000M nand版 OpenWrt 可用空间变小的恢复方法
文章目录 问题背景尝试一、通过 Tftpd64 重新刷写 initramfs-recovery 镜像 (不成功)尝试二、重新分配 ubi 卷(此操作存在一定的危险,请查阅相关资料,避免影响到核心分区) 问题背景 CMCC RAX3000M Nand 版…...
云函数调测、部署及日志查看
1、调试云函数 业务函数开发完成后,需要验证函数代码的正确性,DevEco Studio工具支持本地调用和远程调用两种形式的调试函数方法,首先来看看通过本地调用方式调试函数。 1)通过本地调用方式调试云函数 为了验证函数的正确性以及…...
逆向某物 App 登录接口:还原 newSign 算法全流程
版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ newSign 参数分析 通过 Hook Java 层加密算法得到 newSign 参数相关信息如下: 具体参考:逆向某物 App 登录接口:抓包分析…...
2140、解决智力问题
题目 解答 正向不好做,反向遍历。 定义:dp[i] [i,n)的分数 初始化:dp[n]0 递推:dp[i]max(dp[i1],questions[i][0]dp[iquestions[i][1]1]) 如果越界了,就截断到dp[n] 最后return dp[0]即可 class Solution { publ…...
肖臻《区块链技术与应用》第六讲:比特币网络
一、分层架构:应用层之下的P2P网络 比特币并非凭空运作,它的协议运行在互联网的应用层之上。而在其底层,支撑整个系统的是一个对等网络(Peer-to-Peer, P2P)。可以这样理解: 应用层 (Application Layer): …...
(C++)素数的判断(C++教学)(C语言)
源代码: #include <iostream> using namespace std;int fun(int num){if(num<1){return 1;}if(num%20){return 0;}else{return 2;} }int main(){while (1){int y0;int num0;cout<<"请输入一个整数:\n";cin>>num;yfun(nu…...
openai-agents实现input_guardrails
目录 版本模块引入自定义LLM模型input_guardrail设置main函数 代码: input_guardrails.ipynb 版本 import agents print(agents.__version__)0.0.19模块引入 from __future__ import annotationsfrom pydantic import BaseModelfrom agents import (Agent,Guardr…...
在高数中 导数 微分 不定积分 定积分 的意义以及联系
在高等数学中,导数、微分、不定积分、定积分是微积分的核心概念,它们既有明确的定义和几何/物理意义,又相互关联。下面分别说明它们的意义,并总结它们之间的联系。 导数的意义 定义: 函数 y f(x) 在点 x 处的导数定义…...
Linux系统基本操作指令
Linux系统基本操作指令 文章目录 Linux系统基本操作指令一、介绍二、基础设置2.1 设置ubuntu与window的共享目录2.2 ubuntu系统简单介绍 三、Linux命令及工具介绍3.1 目录管理命令(功能,格式,参数,系统参数)3.2 文件操作命令 四、网络命令4.1…...
「Linux文件及目录管理」vi、vim编辑器
知识点解析 vi/vim编辑器简介 vi:Linux默认的文本编辑器,基于命令行操作,功能强大。vim:vi的增强版,支持语法高亮、多窗口编辑、插件扩展等功能。vi/vim基本模式 命令模式:默认模式,用于移动光标、复制、粘贴、删除等操作。插入模式:按i进入,用于输入文本。末行模式:…...
等等等等等等
欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。 …...
JAVA集合篇--深入理解ConcurrentHashMap图解版
一、前言 在Java并发编程中,线程安全的Map实现一直是一个重要话题。虽然我们可以使用Collections.synchronizedMap()或者HashTable来获得线程安全的Map,但它们的性能在高并发场景下往往不尽人意。ConcurrentHashMap作为Java并发包中的重要组件࿰…...
Python嵌套循环
一、前言 在 Python 编程中,嵌套循环(Nested Loops) 是指在一个循环的内部再嵌套另一个循环。这种结构常用于处理多维数据结构(如二维数组、矩阵)、遍历组合数据、图形绘制等场景。 虽然嵌套循环在逻辑上更复杂&…...
linux编译安装nginx
1.到官网(nginx)下载nginx压缩包: 2.以(nginx-1.24.0.tar.gz)为例: 1.上传压缩包至linux服务器: rz 2.解压压缩包nginx-1.24.0.tar.gz: tar -zxvf nginx-1.24.0.tar.gz 3.在安装Nginx之前,需…...
算法-动态规划-钢条切割问题
钢条切割问题是一个经典的动态规划问题,旨在通过切割钢条获得最大收益。以下是详细解释和解决方案: 问题描述 给定长度为 n 的钢条和价格表 p,其中 p[i] 表示长度为 i 的钢条的价格(i 1, 2, ..., n)。目标ÿ…...
Java八股文——系统场景设计
如何设计一个秒杀场景? 面试官您好,设计一个秒杀系统,是对一个工程师综合技术能力的巨大考验。它的核心挑战在于,如何在极短的时间内,应对超高的并发请求,同时保证数据(尤其是库存)…...
如何在FastAPI中玩转GitHub认证,让用户一键登录?
title: 如何在FastAPI中玩转GitHub认证,让用户一键登录? date: 2025/06/22 09:11:47 updated: 2025/06/22 09:11:47 author: cmdragon excerpt: GitHub第三方认证集成通过OAuth2.0授权码流程实现,包含用户跳转GitHub认证、获取授权码、交换访问令牌及调用API获取用户信息四…...
[RPA] 影刀RPA实用技巧
1.给数字添加千分位分隔符 将变量variable的数值(2025.437)添加千分位分隔符,使其变为2,025.437 流程搭建: 关键指令: 2.删除网页元素 将bilibili官网的"动态"图标进行删除 流程搭建: 关键指令: 呈现效果…...
RA4M2开发IOT(7)----RA4M2驱动涂鸦CBU模组
RA4M2开发IOT.7--RA4M2驱动涂鸦CBU模组 概述视频教学样品申请硬件准备参考程序初始化 LSM6DSV16X 传感器初始化单双击识别主程序接口RA4M2接口生成UARTUART属性配置R_SCI_UART_Open()函数原型回调函数user_uart_callback0 ()变量定义更新敲击状态DP同步长按进入配网涂鸦协议解析…...
华为公布《鸿蒙编程语言白皮书》V1.0 版:解读适用场景
6 月 22 日消息,华为现已在其开发者网站上架《鸿蒙编程语言白皮书》V1.0 版本,主要围绕鸿蒙 HarmonyOS 整体框架、适用场景、演进策略、未来愿景四大角度进行阐述,文档访问地址(https://developer.huawei.com/consumer/cn/doc/gui…...
多源异构数据接入与实时分析:衡石科技的技术突破
在数字化转型的浪潮中,企业每天产生的数据量呈指数级增长。这些数据来自CRM系统、IoT设备、日志文件、社交媒体、交易平台等众多源头,格式各异、结构混乱、流速不一。传统的数据处理方式如同在无数孤立的岛屿间划着小船传递信息,效率低下且无…...
多设备Obsidian笔记同步:WebDAV与内网穿透技术高效实现教程
文章目录 前言1. Windows开启Webdav服务2. 客户端测试3. 安装Cpolar内网穿透实现公网访问Webdav4. 同步PC端笔记至WebDav4.1 首先需要在IIS中添加md的格式4.2 在Obsidian中安装第三方插件 5. 同步手机端笔记至WebDav 前言 各位好!在数字化浪潮席卷的当下࿰…...
Linux->进程概念(精讲)
引入:本文会讲到的东西有哪些? 注:要讲就讲清楚,所以从0到懂,目录在右侧 一:冯诺依曼体系结构 1:人物介绍 冯诺依曼是一个伟大的人,他提出了一个体系结构,被命名冯诺依…...
【舞蹈】PC-Dance:姿势可控的音乐驱动舞蹈合成
PC-Dance:姿势可控的音乐驱动舞蹈合成 自监督节奏对齐学习音乐到舞蹈的对齐嵌入-PC-Syn 中,依然怒了一种用于 自适应运动图构建(AMGC)的高效方案,可以基于图的优化效率并保持动作的多样性。 舞蹈合成 整体情况 我们的系统主要由音乐到舞蹈对齐嵌 入网络(M2D-Align)和姿势…...
uni-app项目实战笔记22--图片预览和切换
需求描述: 1、图片预览时,通常需要知道,当前预览的是第几张,总共有多少张图片; 2、当用户左右滑动切换预览图片时,当前预览索引需要随着进行切换。 下面简单介绍下实现过程: 1、在图片列表页…...
[特殊字符] AIGC工具深度实战:GPT与通义灵码如何彻底重构企业开发流程
🔍 第一模块:理念颠覆——为什么AIGC不是“玩具”而是“效能倍增器”? ▍企业开发的核心痛点图谱(2025版) 研发效能瓶颈:需求膨胀与交付时限矛盾持续尖锐,传统敏捷方法论已触天花板…...
华为OD机考-用户调度问题-DP(JAVA 2025B卷)
import java.util.Scanner;public class UserScheduling {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt(); // 用户个数int[][] costs new int[n][3]; // 存储每个用户使用A/B/C策略的系统消耗for (int i 0; i …...
【论文阅读 | CVPR 2024 |Fusion-Mamba :用于跨模态目标检测】
论文阅读 | CVPR 2024 |Fusion-Mamba :用于跨模态目标检测 1.摘要&&引言2.方法2.1 预备知识2.2 Fusion-Mamba2.2.1 架构特征提取与多模态融合(FMB模块)FMB的应用与输出2.2.2 关键组件3.2.2.1 SSCS 模块:浅层跨模态特征交互…...
Python 数据分析与可视化 Day 4 - Pandas 数据筛选与排序操作
🎯 今日目标 掌握 Pandas 中 groupby() 的使用方式学会使用 agg() 方法进行多个聚合掌握 pivot_table() 构建透视表结合分组与排序进行更深入的分析 🧮 一、基本分组统计(groupby) ✅ 分组 单列聚合 df.groupby("性别&qu…...
基于Vue.js的图书管理系统前端界面设计
一、系统前端界面设计要求与效果 (一)系统功能结构图 设计一个基于Vue.js的图书管理系统前端界面。要充分体现Vue的核心特性和应用场景,同时结合信息管理专业的知识。要求系统分为仪表盘、图书管理、借阅管理和用户管理四个主要模块&#x…...
FPGA故障注入测试软件使用指南
有数字芯片之母别称的FPGA,是国内在半导体行业率先取得重大突破的细分赛道,正迎来技术和市场形成共振的黄金发展期。 国内拥有最多的应用设计工程师与新兴从业人员,但到目前为止,还没有一款位流级别的专用EDA软件,服务用户日常应用开发所需的调试验证工作。 第一大厂商赛…...
Oracle 数据库查询:单表查询
作者:IvanCodes 日期:2025年6月22日 专栏:Oracle教程 在 Oracle 数据库操作中,查询数据是最频繁、最核心的操作之一。单表查询,即仅从一个表中检索信息,是所有复杂查询的基础。本笔记将系统梳理单表查询的关…...
【DDD】——带你领略领域驱动设计的独特魅力
🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大三学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL࿰…...
阿里云CentOS系统搭建全攻略:开启云端技术之旅
前期准备:开启云端征程前的必备事项 在当今数字化时代,云计算已成为企业和开发者构建应用和服务的重要基础设施。阿里云作为全球领先的云计算服务提供商,提供了丰富的云计算产品和服务,其中 CentOS 系统在阿里云上的应用非常广泛…...
Flink图之间流转解析:从逻辑构建到物理执行的深度剖析
在Flink强大的数据处理体系中,Table Connectors实现了与外部结构化数据的高效交互,而Flink作业从代码到实际执行的背后,是各类图结构之间的流转与转换。这些图结构承载着作业的逻辑定义、任务划分与资源调度等关键信息,其流转过程…...
详解Redis数据库和缓存不一致的情况及解决方案
数据库与缓存不一致是分布式系统中常见问题,本质是数据在缓存层和存储层出现版本差异。 一、并发写操作导致不一致(最常见) 场景描述 线程A更新数据库 → 线程B更新数据库 → 线程B更新缓存 → 线程A更新缓存 结果:缓存中存储的…...
【CSS】CSS3媒体查询全攻略
媒体查询教程 媒体查询(Media Queries)是CSS3中引入的强大功能,允许内容根据设备特性(如屏幕尺寸、分辨率、方向等)进行自适应调整。以下是媒体查询的详细教程: 基本语法 media mediatype and (media feature) {/* CSS规则 */ }常用媒体类型 all - 所…...
深入理解Spring的ResponseBodyAdvice接口
什么是ResponseBodyAdvice? ResponseBodyAdvice是Spring框架4.2版本引入的一个非常有用的接口,它允许我们在控制器方法执行后、响应体写入前对响应进行统一处理。这个接口为开发者提供了对返回数据进行统一拦截和修改的能力,是Spring MVC响应处理流程中…...
C++法则5: 在函数调用过程中,具有非引用类型的参数要进行拷贝初始化。
C法则5: 在函数调用过程中,具有非引用类型的参数要进行拷贝初始化。 在 C 中,法则5指的是:当函数参数是非引用类型(即按值传递)时,传递给函数的实参会进行拷贝初始化(copy initializ…...
Python 使用 Requests 模块进行爬虫
目录 一、请求数据二、获取并解析数据四、保存数据1. 保存为 CSV 文件2. 保存为 Excel 文件打开网页图片并将其插入到 Excel 文件中 五、加密参数逆向分析1. 定位加密位置2. 断点调试分析3. 复制相关 js 加密代码,在本地进行调试(难)4. 获取 …...
day039-nginx配置补充
文章目录 0. 老男孩思想-如何提升能力?1. nginx登录认证功能1.1 创建密码文件1.2 修改子配置文件1.3 重启服务 2. nginx处理请求流程3. 配置默认站点4. location 命令5. 案例1-搭建大型直播购物网站5.1 配置本地hosts解析5.2 编写子配置文件5.3 创建相关目录/文件并…...
K8s入门指南:架构解析浓缩版与服务间调用实战演示
目录 前言一、k8s概念理解1、k8s整体架构(1) Master 主节点(2) Node 工作节点(3) Etcd 键值存储数据库 2、Pod被视为最小的部署单元3、k8s的五种控制器类型(1)…...
如何用AI开发完整的小程序<10>—总结
通过之前9节的学习。 如何用Ai制作一款简单小程序的内容就已经都介绍完了。 总结起来就以下几点: 1、搭建开发制作环境 2、创建页面(需要手动) 3、在页面上制作UI效果(让Ai搞,自己懂了后可以自己调) 4…...
Javaweb - 3 CSS
CSS 层叠样式表(Cascading Style Sheets),能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。 简单来说,HTML 搭建一个毛坯房,C…...
【算法】【优选算法】优先级队列
目录 一、1046.最后一块石头的重量二、703. 数据流中的第 K 大元素三、692. 前 K 个⾼频单词四、295. 数据流的中位数 一、1046.最后一块石头的重量 题目链接:1046.最后一块石头的重量 题目描述: 题目解析: 题意就是让我们拿出提供的数组…...
PaddleOCR + Flask 构建 Web OCR 服务实战
1、前言 随着图像识别技术的发展,OCR(光学字符识别)已经成为很多应用场景中的基础能力。PaddleOCR 是百度开源的一个高性能 OCR 工具库,支持中英文、多语言、轻量级部署等特性。 而 Flask 是一个轻量级的 Python Web 框架,非常适合快速构建 RESTful API 或小型 Web 应用…...
openapi-generator-maven-plugin自动生成HTTP远程调用客户端
Java开发中调用http接口的时候,有很多可选的技术方案,比如:HttpURLConnection、RestTemplate、WebClient、Feign、Retrofit、Okhttp等,今天我们来看一个更优的技术方案OpenAPI Generator(http://openapi-generator.tech/) OpenAP…...
ms-swift 部分命令行参数说明
参考链接 命令行参数 — swift 3.6.0.dev0 文档 Qwen Chat num_train_epochs 训练的epoch数,默认为3 假设你有 1000 条训练样本,并且设置了: num_train_epochs 3 这意味着: 模型会完整地遍历这 1000 条数据 3 次。每一次…...
【学习笔记】深入理解Java虚拟机学习笔记——第10章 前端编译与优化
第10章 前端编译与优化 10.1 概述 1>前端编译器:Javac命令。 【.java文件->.class文件】 2>即时编译器:Hotspot.C1.C2 【.class文件->机器码】 3>提前编译器:JDK的Jaotc等【.java->机器码】 10.2 Javac 编译器 10.2.1 …...
删除node并且重装然后重装vue
参考第一篇文章 node.js卸载与安装超详细教程_node卸载重装-CSDN博客 第二篇文章安装vue Vue安装与配置教程(非常详细)_安装vue-CSDN博客...