深入了解trim方案

TRIM功能 TRIM是固态硬盘(SSD)的自动垃圾回收机制,能实时标记和清理已删除数据空间,避免写入延迟,提升运行速度。所有SSD设备都应开启TRIM功能,可通过Windows命令提示符检查状态(显示0为开启)。开启命令为"fsutil behavior set DisableDeleteNotify 0",建议保持10%以上剩余空间并定期重启电脑。相比机械硬盘,TRIM对SSD尤为重要,能显著提升性能并延长使用寿命,是保持设备流畅运行的"隐形整理师"。 阅读详情

今天碰见一个奇怪的问题,有必要和大家分享一个,是关于 trim 的。 trim 在我们项目中应用场景比较多,所以非常有必要和大家分享一下。我们知道 trim 默认是过滤

* " (ASCII 32 (0x20)), an ordinary space.

* "/t" (ASCII 9 (0x09)), a tab.

* "/n" (ASCII 10 (0x0A)), a new line (line feed).

* "/r" (ASCII 13 (0x0D)), a carriage return.

* "/0" (ASCII 0 (0x00)), the NUL-byte.

* "/x0B" (ASCII 11 (0x0B)), a vertical tab.

这些字符的,同时我们也可指定过滤字段。我有一个需求需要过滤掉 url 中的 http:// ,所以,我使用

$stie = “http://tbtest101.tmail.taobao.net”;

$site = trim($site, “http://”);

但是得到的结果是

btest101.tmail.taobao.ne

注意: URL 中的最后的 .net 变成 .ne ,导致整个查询失败,然后我尝试使用

$stie = “http://tbtest101.tmail.taobao.cn ”;

$stie = “http://tbtest101.tmail.taobao.com”;

$stie = “http://tbtest101.tmail.taobao.me”;

这些 URL 进行测试,发现他们都能输出正确结果。难道是最后的 t 对整个过滤有影响,然后我把测试条件修改为

$site = “test”;

果不出其然,输出结果是

tes

最后的一个 t ,果真没有了。这不禁让我想起了 trim 默认过滤 /t ,那么会不会以 r,n 结尾的字符,会不会也会过滤掉。

$site=” test n”;

$site=” test t”

输出结果是 ;

test n

test r

发现 trim 并没有因为查询语句有 ”//” , trim 过滤出现问题。然后我尝试使用 ltrim 进行测试

$stie = “http://tbtest101.tmail.taobao.net”;

$site = ltrim($site, “http://”);

结果是

btest101.tmail.taobao.net

发现 ltrim 得到的结果是正确的,难道 ltrim 和 trim 的过滤机制不一样,其实查看文档很清楚, ltrim 只是从字符串的左侧开始 trim 字符而已。至此好像问题,解决了,使用 ltrim 代替 trim 就可以了,至于具体原因,姑且可以认为是 trim 的一个 bug 。

         但是,这里面蕴藏着一个巨大的 bug 。在上面的例子中,我定义的
$stie = “http://tbtest101.tmail.taobao.net”;

而过滤后, $site 对象为

btest101.tmail.taobao.net

其实,仔细看下就会发现 URL 中的 tbtest101 ,过滤后为 btest101 ,把 t 也过滤了,使用 trim 与 ltrim 的效果都是一样的,只能再仔细看一下文档,

charlist

Optionally, the stripped characters can also be specified using the charlist parameter. Simply list all characters that you want to be stripped. With .. you can specify a range of characters.

trim 参数的第二项为 string 类型,变量名为 charlist ,仔细看一下文档描述,清楚的知道 trim 是过滤字符的,而不是过滤字符串的。而当我们希望过滤一个字符串中的一部分时,如果我们使用要过滤的字符串为过滤条件,那么这部分字符串肯定会过来掉,但是同时会引起其他怪异行为,这些怪异行为对 trim 来说是完全合法的。打个比方

$test = “this is trim test, I find one bug, but is not a error”;

         如果我们想过滤上面字符串的中的 error ,使用 trim ,可能会这样用

         trim($test,”error”);

         输出结果是

this is trim test, I find one bug, but is not a

哈哈,输出正确,其实你了解 trim 的话,你可以这样写

trim($test,”eror”);

当然,也可以这样

trim($test,”eor”);

一样实现与 trim($test,”error”); 相同的效果。看到这里,我们应该大体了解 trim 的原理了。 trim 过滤字符的时候,是以首字符匹配为开始的,直到第一个不满足条件。这句话比较绕,用我一开始的例子说明吧!

         $stie = “http://tbtest101.tmail.taobao.com”;

我的过滤是

         $site = trim($site, “http://”);

过滤后的结果是

btest101.tmail.taobao.ne

之所以把 tbtest101 ,过滤成 btest101 的,原因就是 http:// 后面跟的是 t ,当然如果后面跟的是 h 和 p 这个字符一样会过滤到。

那么 .net 变成 .ne 的原因又是什么那?

         trim 除了上面提到的首字母匹配的规则外,还有一个规则,就是尾匹配过滤,如果 .net 的 t 修改为 h , p 字符一样会过滤掉,这就是尾过滤,应该说这种行为不是我们想要的行为,所以 trim 又分为 ltrim,rtrim ,

ltrim 对应的策略就是我提到的第一种规则,字段首字母匹配。

rtrim 对应的策略就是我提到的第二种规则,字段尾匹配。

而 trim 的策略正好是 ltrim+rtrim 的和。至此关于 trim 的所有讨论到此结束。

 

浅谈SSD Trim(Data set management) 1. 写trim bitmap时需要先下刷bitmap再去更新L2P table, 不然在spor起来后会读到老数据。即trim completion 回了之后要保证是unmap的,就需要立即下刷trim bitmap,不然spor起来之后就会读到未trim之前的数据。 ... 阅读详情

相关推荐

ECN实战指南:如何用SAP系统搞定工程变更(附库存处理避坑技巧)

本文详细解析了如何在SAP系统中高效执行工程变更通知(ECN),特别聚焦PP模块的操作流程与库存处理技巧。通过实战案例和系统操作指南,帮助制造业企业避免库存混乱和生产中断,实现从创建到生效的全流程管理。

m5n6o7的博客 1079

SSD的TRIM原理及实践

作者:吴业亮 博客:wuyeliang.blog.csdn.net 一、原理 TRIM指令是微软联合各大SSD厂商所开发的一项技术,属于ATA8-ACS规范的技术指令。 TRIM是告诉NAND闪存固态存储设备要擦除哪些数据的SATA接口指令。当相关页面的数据可以被覆盖时,操作系统会发给SSD一个TRIM指令。SSD控制器等到主机开始删除和再次写入操作的时候,执行安全擦除操作。因为在写入操作过程中不用花时间去擦除原本的数据,写入速度要快得多。 Trim指令也叫disable delete notify(禁用删

本人任职于安超云技术架构部,拥有十余年云计算与AI经验。专注AI基础设施、分布式集群、高可用架构、虚拟化、存储、网络及数据库等领域。博客内容以学习笔记为主,力求准确,但个人能力所限,难免疏误。非常欢迎交流指正,期待与您共同探讨技术 8456

基于Java+Maven+Testng+RestAssured+Allure+Jenkins搭建一个接口自动化框架

2、有一个提取表达式列,通过编写每个接口的JSON提取表达式,后边在解析Excel时,对接口执行后的响应数据用该表达式提取出来,保存到环境变量,如果某些接口需要前置接口的响应数据,我们就可以从环境变量中获取该数据出来,从而解决了接口关联的问题。1、在之前介绍过全局配置类Contants中添加一个控制台日志开关控制权限,如果选择为false,则控制台不输出日志,将日志输出到allure报表,选择为true,则在控制台输出日志,不输出到allure报表。

专注于技术分享的博主 1183

【芯片测试】:trim 修调详解

文章摘要: 本文介绍了芯片制造中的Trim技术,用于校准芯片参数并实现多功能需求。Trim分为OTP(一次性修调)和EEPROM(可擦写修调)两种方式,分别通过熔丝、激光或电信号调整电路参数。文中通过C++代码模拟了Trim算法,包括电压测量、公式法校准及结果验证,展示了如何通过代码增量调整使电压达到目标范围。Trim技术能有效补偿工艺偏差,提升芯片良率和灵活性。

weixin_56914724的博客 6225

告别Visual Studio!用MSYS2+GCC+CMake在Windows上打造Linux式C++开发环境(保姆级避坑)

本文详细介绍了如何在Windows上使用MSYS2+GCC+CMake搭建Linux式C++开发环境,替代Visual Studio。从MSYS2的安装配置、MinGW-w64 GCC工具链的部署,到CMake项目的创建与构建,提供了保姆级教程和常见问题解决方案,帮助开发者高效过渡到命令行开发模式。

weixin_30298497的博客 324

CATIA二次开发一一一获取属性的几种方法

这些方法覆盖了CATIA CAA开发中属性操作的典型场景,开发者可通过类型判断实现递归遍历、跨文档关联等复杂逻辑。此方法用于遍历对象的所有属性,获取属性键后可通过类型判断选择后续处理方式。适用于处理嵌套对象或关联对象的场景(如几何特征关联制造特征)。适用于简单属性值的直接读取(如版本号、状态标识等)。用于处理多值属性(如多选参数、装配体子件列表等)。用于处理跨文档引用(如零件关联图纸文件)。

工业软件开发 430

SSD硬盘读写原理|FTL|TRIM|写入放大效应

大家好,我是jiantaoyab,本篇文章我们来看看SSD硬盘和FTL、磨损均衡,SSD 硬盘,适合读多写少的应用,使用寿命受限于可以擦除的次数。

欢迎来到jiantaoyab博客 3595

从Raw图像到超分辨率:真实场景下的图像增强全流程指南

通过本文的学习,您已掌握了利用Raw图像实现真实场景超分辨率的完整技术链——从数据生成的“真实感模拟”,到双分支CNN的“细节+色彩”协同建模,再到模型的训练与落地。本文将带您从理论到实践,掌握利用Raw图像实现真实场景超分辨率的核心技术,让您的图像在细节和色彩上都能“更上一层楼”。是相机传感器直接输出的原始数据,保留了最完整的亮度、色彩信息(如Bayer阵列的原始采样),这为超分辨率提供了“富矿级”的信息基础。该分支以低分辨率RGB图像为参考,学习“色彩变换矩阵”,让恢复的细节拥有真实的色彩表现。

FJN110的博客 139

mac vulkan_Mac SSD TRIM的终极方案

该方法在 Mac 10.9.1 版本上面有效。Enable SSD TRIM for Mac, Ultimate Solution. TRIM终极方案 我的Mac机型是Mac mini Late2012,把硬盘换成了SSD。试了多种打开SSD TRIM的教程,总不能成功,有一次还弄到系统无法启动。今天大盘开始盘整了,于是可以静下心来把那些教程仔细debug一遍,发现了问题所在,成功开启了SSD...

weixin_30994847的博客 352

数字信号处理----数字上变频和下变频都FPGA实现

** 数字信号处理基础----信号下变频和解调 一、 任务介绍 数字上变频器(DUC)和数字下变频器(DDC)广泛应用于通信系统,用于信号采样速率的转换。当信号从基带转换至中频( IF )带,需要使用数字上变频器。而数字下变频器是用于将信号从中频( IF )带转换为基带。DUC和DDC通常包括使用混频器进行频率转换,此外还有采样率转换。DUC或DDC的结构主要取决于所需要的转换率。例如,WiMAX (全球互通微波接入)系统典型的转换率为8—10阶。对于如此低的转换率,DUC和DDC只需采用FIR滤波器架构。

Born_toward的博客 3万+

OpenClaw实战系列03:Slack/Telegram国际版接入实战指南

在当今的软件开发和工作流自动化中,将项目管理工具与即时通讯平台集成已成为提高团队协作效率的关键。OpenClaw作为一个开源的自动化工具,通过接入Slack和Telegram国际版,可以实现实时通知、自动化任务触发和团队协作的无缝对接。本文将详细介绍如何实现OpenClaw与这两个主流即时通讯平台的集成。OpenClaw是一个开源的自动化工作流引擎,支持多种触发器和执行器,能够帮助开发团队实现CI/CD流程、任务调度、监控告警等自动化场景。模块化设计:支持插件化扩展多触发器支持。

PeterPan的博客 586

揭秘:为什么格式化后的固态硬盘数据难以恢复?

首先让我们来了解一下TRIM。TRIM是现代操作系统中用于优化SSD性能的一个ATA命令。当您删除文件或格式化驱动器时,TRIM会通知SSD哪些数据块不再使用。这允许SSD在后台清除这些块的内容,使得下次写入数据时速度更快。然而,这一过程也意味着那些被标记为可清理的数据很可能已经被彻底清除了,因此恢复起来异常困难。

modaner的博客 1815

Win10或Win11电脑找不到以太网网络适配器的解决方法

Win10或Win11电脑找不到以太网网络适配器的解决方法

Robot_PLC_HMI_Automation 653

String.trim()方法去掉的不仅仅是空格

今天在做马士兵老师的聊天雏形系统项目时,因为想模仿QQ的聊天界面,于是把输入框从TextField类型换成了TextArea,然后从KeyAdapter类继承,重写keyReleased(KeyEvent e) 方法,虽然实现了功能,但是老多出一个换行符,想用String.replaceAll()方法替换掉换行符却达不到想要的效果(一直以为trim()方法只去掉空格);后来查了API文档才发现...

Sam 1340

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

trim()方法的使用

此文章讲解trim在JavaScript和Sql中的用法 1、JavaScript var str = " Runoob "; alert(str.trim()); 输出结果: Runoob trim() 方法用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等。 trim() 方法不会改变原始字符串。 trim() 方法不适用于 null, undefined, Number 类型。 原理是trim 利用replace 方法 也可自己定义例: fu

FreakWY的博客 4万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

5分钟了解一下,String.trim()到底做了什么事

文章目录说我们认知的trim()复习一个小概念养成一个好习惯动起来,不瞎掰示例1示例2示例3示例4示例5示例65分钟直接看这里 项目中遇到用String.trim()的地方,点进去看了trim(),以前一直以为trim()的作用只是去除字符串中的首尾的“空格”符,但是源码看下来,好像这个说法不太准确呢。 搞技术嘛,严谨一些,在这记录一下,大佬们也瞅瞅哈~ 说我们认知的trim() 说到String.trim() 函数 ,就像前言说的一样,我的认知它就是搞首尾空格用的,虽然这个说法也没错哈。 那这都说到这

zhuzicc的博客 3万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SSD的TRIM到底是什么?

固态硬盘,也就是我们常说的SSD,跟传统机械硬盘相比,具有读写速度快、防震抗摔性强、低功耗、无噪音等特点,因此不少用户在升级自己的电脑硬件时,也愿意选择固态硬盘。虽然硬盘的主要作用是存储数据,但是不同的硬盘在自身的性能上有一些细微的差别,其中,固态硬盘有一个非常特殊的功能——TRIM指令。什么是TRIM指令?这个功能有什么作用?会对硬盘数据产生怎样的影响?我们将在今天的文章中,为您详细阐述这些问题...

weixin_33796205的博客 1806

检测Linux是否开启trim,Linux 下启用 SSD TRIM 功能【靠谱】

之前知道 SSD 有 TRIM 的功能,但一直没有深究,直到最近同事问起。目前了解的信息如下,如有错误,欢迎指正。SSD 在闪存单元中存取数据时有 page 和 block 的概念。SSD 被划分成很多 block, 而 block 被划分成很多 page。 SSD Read 和 Write 都以 page 为单位,而清除数据(Erase) 是以 block 为单位的。不过 SSD 的 Write...

weixin_28818873的博客 2469

第149章 SQL函数 TRIM

文章目录第149章 SQL函数 TRIM大纲参数描述要剥离的字符示例 第149章 SQL函数 TRIM 字符串函数,它返回删除了指定的前导和/或尾随字符的字符串。 大纲 TRIM([end_keyword] [characters FROM] string-expression) 参数 end_keyword - 可选 — 一个关键字,指定要剥离的字符串表达式的哪一端。可用值为 LEADING、TRAILING 或 BOTH。默认为两者。 characters - 可选 — 一个字符串表达式,指定要从字

yaoxin521123的博客 1万+

SSD用户必须了解的TRIM功能,到底有什么作用?

这意味着,哪怕你只需要修改一个页里的几个字节,SSD也无法直接覆盖这个页,而是需要把整个块的数据读取到缓存中,修改对应的部分,擦除整个块,再把修改后的数据写回去。它让SSD主控提前知道哪些数据块已经无效,在进行垃圾回收(Garbage Collection)时,可以直接跳过这些无效数据,只搬运有效数据到新的块中,然后擦除旧块。但SSD不一样,它的存储介质是NAND闪存,而闪存有一个非常特殊的物理特性:数据不能直接覆盖,必须先擦除整个块,然后才能写入新数据。其实,这很可能和TRIM功能有关。

qq_39571617的博客 356

mysql trim()_MySQL trim()函数

在本教程中,我们将向您展示如何使用MySQL TRIM()函数从字符串中删除不必要的前导和后缀字符。MySQL TRIM函数介绍用户输入的数据通常不是我们所预期的。有时候,它的格式不正确,例如错误的情况,甚至有些甚至包含前导和尾随空格以及其他不需要的字符。为了保持数据格式正确,在数据库中插入或更新数据之前,需要对其进行清理。 数据清理中最重要的任务之一是删除不必要的前导和尾随字符。MySQL提供了...

weixin_42531925的博客 9873

SQL指令— trim()

SQL指令— TRIM函数 SQL 中的 TRIM 函数是用来移除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函数在不同的资料库中有不同的名称: MySQL: TRIM(), RTRIM(), LTRIM() Oracle: RTRIM(), LTRIM() SQL Server: RTRIM(), LTRIM() 各种 trim 函数的语法如下: TRIM([[...

华山栈道的博客 2497

ssd trim_如何检查是否为您的SSD启用了TRIM(如果未启用,则启用它)

ssd trimWindows 7 and above are set toautomatically enable TRIM on solid-state drives. You shouldn’t need to worry about enabling TRIM yourself. But, if you want to double-check that Windows has enab...

cum44153的博客 2212

oracle trim函数用法详解

在oracle数据库中,trim一般都是用在删除字符串两边的空格。实际上,trim也可以用来删除字符串两边的指定字符。并且trim指定删除的字符串只能是单个字符Oracle TRIM函数是很常见的函数,下面对Oracle TRIM函数的语法作了详尽的阐述说明,希望可以让您对Oracle TRIM函数有更深的认识。 如果提到Oracle TRIM函数,最简单的功能就是使用它来去除字符串的...

aijiagui7454的博客 2265

trim有什么用计算机二级,玩转SSD中的TRIM技术

现在SSD不论磁盘可用空间是否充足,对SSD的性能影响几乎可忽略不计。这其实是TRIM的功劳,你了解它吗?高效SSD必备技术我们在使用普通HDD时Windows会自动在一定时间段去整理磁盘碎片,但如果你的SSD支持TRIM的话是无需碎片整理的。现在的硬盘厂商早已对SSD固件算法做了优化,并且提供了TRIM支持。TRIM的特点在于,它采用了一种新的文件删除方式,可大大提高文件的删除速度外,还会自动整...

weixin_35034831的博客 2080
上一篇: 一步一步SEO 之奇淫异术
下一篇: 牛人是什么样的?
逸学堂
博客等级 码龄23年 1104粉丝 112原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值