如何快速检测是否为空白字符
作者:温绍锦(高铁) 阿里云计算平台团队
在Parser场景,包括SQL Parser和JSON Parser,如何更快检测空白字符是一个提升性能的关键点。笔者有多年SQL Parser和JSON Parser的经验,把我所知道的一些检测空白的方法分享给大家。
一、什么是空白字符
如果采用json.org的标准,空白字符包括:
'\b' -- ASCII 8
'\t' -- ASCII 9
'\n' -- ASCII 10
'\f' -- ASCII 12
'\r' -- ASCII 13
' ' -- ASCII 32
二、检测空白字符的5种方法
2.1 方法1
JDK的Character提供了isWhiteSpace方法,逻辑不能定制化,不支持上面的'\b'字符判空,但为了性能比较,也加入进来。
boolean space = Character.isWhitespace(ch);
2.1 方法2
这个常规办法,用6个并列的or判断。所有的字符检测都需要做6次判断,性能较差。
boolean space = ch == ' '|| ch == '\n'|| ch == '\r'|| ch == '\f'|| ch == '\t'|| ch == '\b';
2.2 方法3
由于空白字符最大的是空格ASCII 32,在方法2的基础上先做一个预先检测,这样就能获得非常好的性能,但当输入的有大量空白字符\b时,就就会面临方法2的问题。fastjson 1.x ( GitHub - alibaba/fastjson: A fast JSON parser/generator for Java. )判空用的是这个方法。
boolean space = ch <= ' '&& (ch == ' '|| ch == '\n'|| ch == '\r'|| ch == '\f'|| ch == '\t'|| ch == '\b');
2.3 方法4
这种算法,在JDK 17下性能有较大提升。在大量输入是非空字符时,性能并不出色。
boolean space;
switch (ch) {case ' ':case '\n':case '\r':case '\t':case '\b':case '\f':space = true;break;default:space = false;break;
}
2.4 方法5
通过预计算一个常量的long,然后做bitAnd判断。
fastjson2 ( GitHub - alibaba/fastjson2:
如何快速检测是否为空白字符相关推荐
- Unix/Linux提权漏洞快速检测工具unix-privesc-check
Unix/Linux提权漏洞快速检测工具unix-privesc-check unix-privesc-check是Kali Linux自带的一款提权漏洞检测工具.它是一个Shell文件,可以检测所在 ...
- 服务器SSL/TLS快速检测工具TLLSSLed
服务器SSL/TLS快速检测工具TLLSSLed 现在SSL和TLS被广泛应用服务器的数据加密中,如网站的HTTPS服务.所以,在渗透测试中如何快速检测服务器的SSL和TLS配置寻找安全漏洞,就显得很 ...
- 在 windows 命令行下快速检测与排除网络故障
电子科技大学微软技术俱乐部 梁晨 当我们组建好了一个小型局域网后,为了使网络运转正常,网络维护就显得格外重要.由于网络协议和网络设备的复杂性,许多故障解决起来绝非像解决单机故障那么简单.网络故障的定位 ...
- 测试电视是不是4k的软件,怎么判断4K电视真假?教你快速检测的方法!
原标题:怎么判断4K电视真假?教你快速检测的方法! 4K电视从进入市场之后一直都受到企业的力捧,随着电视企业对4K电视的大力度宣传和消费环境的逐渐成熟,越来越多的消费者开始认可4K电视,并在购机时表明 ...
- 遇到代码缺陷不要慌,马上教你快速检测和修复
摘要:人类思维中总存在缺陷,写出的代码一样会存在缺陷,导致软件系统出现不符合预期的行为.本文讨论了软件缺陷的定义.分类.检测和修复. 人类思维中总存在缺陷,写出的代码一样会存在缺陷,导致软件系统出现不 ...
- 一滴血、15分钟!钟南山指导研制试剂盒有望快速检测出结果
疫情期间,最辛苦的还是在一线奋战的医务人员,功夫不负有心人,近日,不断传来好消息,新冠病毒检测再提速,目前最快1滴血15分钟可获结果. 据央视新闻最新报道,昨天,呼吸疾病国家重点实验室对外透露,近日, ...
- 教你一种U盘病毒的快速检测方法
U盘对大多数人来说已经不再陌生,它是我们进行文件传输的基本工具.我们可以利用U盘快捷地管理和传输文件,正因为它的轻便,使用U盘的人越来越多.大众化的趋势也滋生了病毒的猖狂,当U盘与电脑连接之后便可能会 ...
- 机器视觉齿轮质量快速检测
机器视觉齿轮质量快速检测 齿轮作为一种泛用性比较强的机械零件,其精度对机械产品性能有着重要影响.提高齿轮检测技术使提高齿轮产品质量的必要保证,由于齿轮形状的特点,其检测项目众多,测量过程复杂,测量设备 ...
- 2023微信手机号筛选器,快速检测出开通微信的号码,检测国外号码过滤微信状态,判断qq是否开通微信软件
筛选开通微信的号码后,提升加粉效率, | 微信筛选器可以快速检测出哪些开通微信的号码,和未开通的,分开保存,微信筛选过滤,手机号检测是否开通微信,QQ开通微信检测, #微信筛选器# #微信过滤检测# ...
最新文章
- Docker容器中数据两种持久化存储方式:卷和挂载宿主目录
- redis中密码设置
- phpstudy卸载mysql_PHPstudy卸载和phpstudy卸载详解
- 可能大家都能跑通的ignite的HelloWorld
- linux文件系统 环形结构图,环形缓冲器(转)
- 从源码分析RocketMQ系列-消息拉取PullMessageProcessor详解
- php foreach 循环 判断index 小于多少_Go 与 PHP 的语法对比
- 深入理解计算机系统(2.7)------二进制小数和IEEE浮点标准
- callback回调使用 vue_Vue实现剪切板图片压缩
- 质量小的夸克之间,如何互换质量大的胶子
- linux 部署 ibase4j,ibase4j学习
- 解决mac可以聊QQ微信不能浏览网页问题
- Tyvj 1728 普通平衡树
- 眼光独到便能发现刷脸支付带来的商机
- 孟岩:我反对将Token翻译成“代币”
- PS效果——斜面浮雕
- FPGA驱动RGB灯带WS2812B
- 查看进程名称 linux,在Linux系统服务器按名称查找进程的命令
- 吴恩达机器学习个人笔记03——多变量线性回归
- matlab 雷达系统界面,基于Matlab的雷达系统仿真软件包设计与实现
热门文章
- PYTHON表白代码:还有半个月就要圣诞啦~初雪要来了么?心软的神还会远吗(不知道怎么开口表白的小可爱还不赶紧把素材备好)
- AVG2013nbsp;杀毒软件激活nbsp;…
- EasyFloat:浮窗从未如此简单
- Google Drive文件下载
- arcgis唯一值数已达到默认限制(大于3365536).
- 详解 Chrome 「V8 」引擎,让你更懂JavaScript !
- 【狂神说】 Redis 笔记分享
- 高校被盗邮箱处置的运维经验分享-清华大学
- Lombok插件之简介、IDEA集成、注解使用
- 微电子技术和计算机技术属于什么技术群,2012普通高中信息技术学业水平考试 (一)...