发现一个时隐时现的bug!
在awk里可以这样使用正则:
#截取 a.cn?fr= 中的1211
if(match(url,/fr=[-]+/) > )
{
fr = substr(url,RSTRART + , RLENGTH - )
} #截取 a.cn?ct=test 中的test
if(match(url,/ct=[a-zA-Z]+/) > )
{
fr = substr(url,RSTRART + , RLENGTH - )
}
这样就导致一个需求:复用这些相似的代码 (我终于也培养成了代码洁癖 T_T)那么最先想到的是写成函数,到处调用。首先是功能模块:
# 文件: logic/parser.awk
# 功能: 从str里找到指定的标记,并返回这个整个或部分标记
# 参数: str 需要搜索的字符串
# flag 查找的字符串
# offset 偏离量,调用时不传递的话当作0来使用
# 返回值: 匹配上的字符串
function getflag(str, flag, offset, __ARGVEND__)
{
if(match(str, flag) > )
{
return substr(str, RSTART + offset, RLENGTH - offset)
}
else
{
return ""
}
}
然后是调用:
@include logic/parser.awk
url = "a.cn?fr=1211"
fr = getflag(url, "fr=[0-9]+", )
看起来很美妙,代码终于变得干净了,起初看起来也都能工作,但是很快会发现使用这个模块的程序会内存泄漏,我之前也知道awk低于3.17的版本会泄漏,但是这个泄漏,也不一定总是发生,某次特意去测的时候就没有发现,当我逐次注释代码时终于发现:当程序里只有一个getflag调用语句时没有泄漏(似乎倒是不在乎在循环里调用多次),但多于一个调用语句,就发生了内存泄漏了,因为这种问题比较难排查,所以记录一下,用作将来的参考
发现一个时隐时现的bug!的更多相关文章
- vs2015发现一个字符串拼接 bug
VS2015支持 字符串拼接 如下: string user="test"; int password=123; string sql=$" user={user};pa ...
- 发现一个FreeSWITCH bug
在研究FreeSWITCH视频会议的混屏问题时候发现一个bug. 已提交jira. 附上代码,问题很明显,不解释 =========================================== ...
- 我通过调试ConcurrentLinkedQueue发现一个IDEA的小虫子(bug), vscode复现, eclipse毫无问题
前言: 本渣渣想分析分析Doug Lea大佬对高并发代码编写思路, 于是找到了我们今天的小主角ConcurrentLinkedQueue进行鞭打, 说实话草稿我都打好了, 就差临门一脚, 给踢折了 直 ...
- 一个iOS6系统bug+一个iOS7系统bug
先看实际工作中遇到的两个bug:(1)iPhone Qzone有一个导航栏背景随着页面滑动而渐变的体验,当页面滑动到一定距离时,会改变导航栏上title文本的颜色,但是有一个莫名其妙的bug,如下:
- 记一个神奇的Bug
多年以后,当Abraham凝视着一行行新时代的代码在屏幕上川流不息的时候,他会想起2019年4月17日那个不平凡夜晚,以及在那个夜晚他发现的那个不可思议的Bug. 虽然像无数个普普通通的夜晚一样,我在 ...
- FIREDAC(DELPHI10 or 10.1)提交数据给ORACLE数据库的一个不是BUG的BUG
发现FIREDAC(DELPHI10 or 10.1)提交数据给ORACLE数据库的一个不是BUG的BUG,提交的表名大小写是敏感的. 只要有一个表名字母的大小写不匹配,ORACLE就会认为是一个不认 ...
- 碰到一个微软的bug:CWinAppEx::GetString
在调试公司项目代码的时候,有一个系统设置的功能,里面需要从注册表中去读取数据,因为使用了MFC框架所以,为了简化代码直接使用了CWinAppEx::GetString .CWinAppEx::SetS ...
- 翻了翻element-ui源码,发现一个很实用的指令clickoutside
前言 指令(directive)在 vue 开发中是一项很实用的功能,指令可以绑定到某一元素或组件,使功能的颗粒度更精细.今天在翻 element-ui 的源码时,发现一个还挺实用的工具指令,跟大伙分 ...
- 一个神奇的bug:OOM?优雅终止线程?系统内存占用较高?
摘要:该项目是DAYU平台的数据开发(DLF),数据开发中一个重要的功能就是ETL(数据清洗).ETL由源端到目的端,中间的业务逻辑一般由用户自己编写的SQL模板实现,velocity是其中涉及的一种 ...
随机推荐
- AES - Rijndael 算法(一)
1997年1月,美国标准技术协会NIST开始遴选数据加密标准(Data Encryption Standard,简称DES)替代者的工作,称为高级加密标准[1’2](Advanced Enerypti ...
- [置顶] Firefox OS 学习——Gaia 编译分析
Gaia作为用户的接口,也是用户可见部分,一些用户的应用也是安装在这一层,所以研究他是很有必要的,对于像我这样的初学者,最直接的学习方法就是通过修改代码,然后可以看到UI的变化,很直观的观察修改结果. ...
- LANG=C是最早最简单的C语言环境(标准ASCII码)
LANG=C是最早最简单的C语言环境(标准ASCII码)
- Sublime text 3 格式化HTML/css/js/json代码 插件
JsFormat: 这里下载这插件包 https://github.com/jdc0589/JsFormat ,点油下角的zip就能下载 插件包放到sublime安装目录的Data\Packages目 ...
- java JMS消息队列
http://blog.csdn.net/shirdrn/article/details/6362792 http://haohaoxuexi.iteye.com/blog/1893038 http: ...
- 1629 - Cake slicing(DP)
花了近2个小时终于AC,好爽.. 一道类似于最优矩阵链乘的题目,受<切木棍>那道题的启示,该题的原理也是一样的,仅仅只是变成了且面积.那么对应的也要添加维度 . 显然要完整的表示状态,最少 ...
- Easyui弹出窗体在iframe的父级页面显示
今天做EasyUI学习的预到了一个这样的问题:通过iframe加载的一个页面在调用$.messager.alert();这个方法后只能在iframe中显示alert效果而不是在全局的页面上显示这并不我 ...
- Target runtime Apache Tomcat v6.0 is not defined. phyy Unknown Faceted Project Problem
Description Resource Path Location TypeTarget runtime Apache Tomcat v6.0 is not defined. phyy Unknow ...
- linux lvm的操作手册_pvcreate_vgcreate_lvcreate_相关
一. 前言 每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某 个分区需要的容量,还要预见该分区以后可能需 ...
- NYOJ528 找球号(三)位运算
找球号(三) 时间限制:2000 ms | 内存限制:3000 KB 难度:2 描述 xiaod现在正在某个球场负责网球的管理工作.为了方便管理,他把每个球都编了号,且每个编号的球的总个数都是 ...