首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

测试工作一年时候,怎样

03 关于工作 当时发offer测试,后来入职后发现是个运维活。组长测试经理,算就俩测试,刚开始写过验收文档,用户操作手册,测试用例,测试计划,写完就写完了,并没人告诉对不对。...在公司一年下来发现自己黑眼圈明显严重不少,而且下不去了,直到现在也是如此,后来总有朋友打趣说是不是纵欲过度了,然后我们就是哈哈大笑… 04 关于爱情 毕业就分手了,也许是作为毕业后,必须经历,...…… 依稀还记得,师父在年会喝酒喝多了一句话。...,.net开发?...但如果不坚持下去,永远没有能得到自信那一天,一辈子都会有挫败感。 坚持自己认为对事,至于是对错,并不重要,时间长了,自然就会有有分晓。

59510

Antlr实战之JSON解析器slowjson

主要作用就是你可以用巴科斯范式来描述语法规则,然后帮你生成对应解析器。 大家都知道实践最好学习方式,要快速深刻地理解antlr操作和相关接口就不得不找一个练手东西。...咱写不出来比fastjson更快、bug更少、更安全json解析器,难道还写不出来一个bug更多、更慢、更不安全解析器,正面拼不赢咱反其道而行。...为了对标阿里fastjson,给它起名 slowjson,源码已在github slowjson 欢迎star。为了推广slowjson,都想好广告词了。 你想升职加薪?...你想拿年终奖? 你想成为同事眼中性能优化小能手? 今天用slowjson,年底性能优化换回fastjson,十倍性能不是梦,升职加薪准能成。...,而且简单多了封装如下。

1.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

为了拒绝重复事情,用python写了个自动化脚本,让按名称自动创建工作

锋小刀! 在上一期视频中,我们讲解了excel如何按指定名称快速创建工作表,没有看可以看一下:excel按指定名称快速创建工作表。...而python其实也是可以做到,而且很简单,只需要几行代码即可。而python代码可以重复利用,能节省很多时间,做到解放双手,拒绝重复事情。...xlwt库 今天主要用到xlwt库来操作,xlwtPython中操作Excel一个库,可以将进行创建工作簿、工作表、数据写入Excel。在写爬虫时我们也用过,主要是用来保存爬取数据。...xlwt库python第三方库,需要安装,安装命令: pip install xlwt 实战代码 这里创建了一个名为"名称"文件,里面一共有996条数据。 ? 先导入xlwt库。...批量操作文件,解放双手,拒绝重复事情,让一些重复事情不再重复! THE END

80630

Boost.Spirit 初体验

使用代码生成代码一件十分美妙事情,于是有了各种代码生成器。但是生成代码,意味着要有对生成规则分析和处理。 Boost.Spirit 就是这么一个语法分析工具,实现了对上下文无关文法LL分析。...Boost.Spirit 使用真的把模板嵌套用到了极致。确实这么造成了非常强扩展性,生成代码也非常高效,但是嵌套复杂了,对于初学者而言真心难看懂。...你能想象在学习阶段一个不是明白错误导致编译器报出几十层模板嵌套错误信息感受?而且,这么复杂模板嵌套还直接导致了编译速度巨慢无比。...其实在之前,已经使用过SpiritClassic版本,即1.X版本,但是过多复制操作让觉得当时用得很低效,还好分析内容并不复杂所以没。体现出来 这回就来研究下功能更强劲2.X 版本。...而Boost.SpiritLex库很多地方和它很像(也没用过Flex,官方这么说)。 Lex好处呢,就是可以用正则表达式描述一个规则,而且可以动态生成。而且可以可Qi混合起来使用。

85040

Boost.Spirit 初体验

Boost.Spirit 就是这么一个语法分析工具,实现了对上下文无关文法LL分析。支持EBNF(扩展巴科斯范式)。 Boost.Spirit 使用真的把模板嵌套用到了极致。...确实这么造成了非常强扩展性,生成代码也非常高效,但是嵌套复杂了,对于初学者而言真心难看懂。 你能想象在学习阶段一个不是明白错误导致编译器报出几十层模板嵌套错误信息感受?...其实在之前,已经使用过SpiritClassic版本,即1.X版本,但是过多复制操作让觉得当时用得很低效,还好分析内容并不复杂所以没。体现出来 这回就来研究下功能更强劲2.X 版本。...这里面也描述了Qi解析器支持操作符。...而Boost.SpiritLex库很多地方和它很像(也没用过Flex,官方这么说)。 Lex好处呢,就是可以用正则表达式描述一个规则,而且可以动态生成。而且可以可Qi混合起来使用。

3.2K10

Kotlin val list: ArrayList= ArrayList() 居然报错!

想要验证这个其实并不难,我们找到 Kotlin 源码,找到 lexer 相关源码: ?...我们看下调用堆栈,解析器被调用地方实际上 PsiElement 构造过程中。我们再来看看 doParseContents 这个方法干什么: ?...3 对比看看其他语言 能够出现类似语法,我们可以对照一下 Swfit 和 Scala。 先说说 Scala,解析器应该是极其强大,毕竟人家允许各种字符作为运算符啊。。 ?...好啦,其实这都不是什么大问题了,这篇文章探讨那句代码本身就比较蛋疼: val list: ArrayList= ArrayList() 就问你为什么不去掉前面的类型,类型推导难道还不够...还有觉得Scala 用[ ]来表示泛型比好多了以前看一个人说后者写起来感觉很反人类或者看上去很奇怪,很赞同。

1.2K10

使用普拉特分析法解析极为复杂算术表达式

”-5”后才能参与运算,并且编译器要知道,add(6,7)一个函数调用,需要执行add(6,7),获得函数运行后返回值才能继续参与算术表达式运算。...好在普拉特解析法有别与传统编译原理语法解析算法,简单,精致,易理解,我们看看普拉特解析法如何巧妙解决上面复杂算术表达式解析。...,表示取反操作,this.lexer.MINUS_SIGN 对应表达式中”-“,表示取负操作。上面代码表示,一旦语法解析器解析到符号”!”...然后前序表达式在去掉前序操作符后,接着的确是一个算术表达式,也就是说前序表达式包含了算术表达式,这就形成一个概念定义上反复包含,包含你与此同时你又包含,这种成分互相包含性编译原理理解起来难点所在...,也就是解析器会先处理”56”,再把所得结果与前面的表达式”4”加法运算。

1K30

reactjs自制Monkey语言编译器:解析组合表达式,ifelse语句块和间套函数调用

编译原理也是如此,为了打破这些虚有其表假道学,开启了一个用java开发一个实打实C语言编译器课程,这个编译器能把C语言转换成java字节码,在java虚拟机上执行,相信这点我绝对国内首创。...然而让意象不到,原本看似极为复杂工程实践,原来还存在着相当优美简洁实现办法,我们这几节所讲普拉特解析法就是典型实例,原来需要花几千行代码,费时费力,绞尽脑汁好几天才能完成事情,在普拉特解析法里就能轻而易举处理掉...在该函数中,判断当前解读到token是否true,如果,它会创建一个Boolean类,把value值设置成1,若不然,把value值设置成0,上面代码完成后,程序运行结果如下: ?...,先判断关键字”fn” 之后是不是跟着左括号,如果,那么根据函数定义,接下来就是以逗号分隔开参数列表,参数列表解析由函数parseFunctionParameters负责,由于函数可以没有参数,...因此在执行中,先判断左括号后面是不是直接跟着右括号,如果那就直接返回。

44130

【Python】Ply 简介

包含太多特殊规则了,对于一个不了解 ply 的人来说,这可能糟糕了,我们需要一些办法来稍稍改善。...你可以在单独模块中定义规则,以此保证分析器主代码干净,这需要你在创建 lexer 时显式地指定 module: lexer = lex.lex(module=tokrules) 面向对象:有时面向对象不失一个封装好办法...# or parser = yacc.yacc(start="foo") 移入/规约 上面给出语法规则是经过规约规则,对解析器来说,更容易处理,因为几乎不存在歧义,但从编程角度来说,我们可能会以一种更符合人类直觉方式定义语法规则...解析器依赖堆栈工作,阅读时注意栈顶在靠右 文件中用 ! 标注出了冲突地方,虽然这些冲突不见得都是不好。...其他 一个良好解析器不应该遇到错误就立刻返回,你应该尽可能返回所有的错误以便用户排查错误,你可以定义 p_error 来处理异常,它将以发生错误 TOKEN 作为参数,在这里你可以一些恢复错误操作

2.5K30

语法解析基本原理和快速上手实践

一种直观做法我们依次读入字符然后即时判断,例如首先看第一个读到字符是不是数字,或者是不是左括号,然后根据读入前一个字符看看接下来读入字符是否合法,你可以尝试用代码来实现试试,你很快会发现代码非常难写...算法基本做法选择相应生产式进行”套用“,直到生产式解析为终结符为止。于是对应表达式3+2,我们可以猜到可以使用list -> list + list, 因为只有含有符号”+”。...个人觉得很难用语言来描述什么叫语法,但我发现如果使用代码的话,或许能让人有“心领神会”感觉。...由于语法解析不好用语言说明,有意思使用代码反而能描述更清楚,因此我们直接通过代码来理解如何使用生产式来匹配给定字符串,首先我们对上次完成lexer一些修改: package lexer import...,例如在使用list -> “(“ list “)”,时,代码首先判断读入是不是左括号,然后递归调用list函数字节,最后再判断最终读入是不是右括号,所以生产式本质上指导我们代码如何实现,代码对读入字符判断

27220

Go 译文之词法分析与解析 Part Two

词法器职责读取 INI 文件内容、分析创建 Token,以及通过 channel 将 Token 发送给解析器。...接着,将 Token 和 Token 类型通过 channel 发送给解析器。 最后,判断下一个期望状态函数,并返回。 我们先定义一个启动函数。同样解析器(下篇文章)启动入口。...初始化了一个 Lexer,赋予第一个状态函数。 第一个期望 Token 可能是什么?一个特殊符号还是一个关键词?...LexSection 返回状态函数 LexerRightBracket,逻辑与 LexerLeftBracket 类似,不同返回状态函数 LexBegin, 原因 Section 可能空...它会在遇到换行符时确认一个完整Value。返回状态函数 LexBegin,以此继续下一轮分析。

46220

PUA你了么

如果从这个角度上看,有些人肯定会认为PUA了他。但真的这样? 03 只是想把事做得更好而已,有错?上级对自己要求多一些,高一些,真的在PUA我吗?想了很久,终于想通问题出在哪里了。...问题就在于:谁来PUA这个动作!! 如果上级强制要求测试来质量内建,不好就滚蛋,那这个就是在PUA了。但如果自己想把事做得更好些,让团队质量更好些,就不算是PUA了吧。...04 回想自己成长历程,虽然不能说是把工作当成了义务,但至少也是会经常思考如何把事做得更好,很少去想这件是不是应该我去做。 功能测试人员要学性能测试?...05 有一位教练和我说,在团队,要做到“职责明确,边界模糊”,什么意思呢,就是每个岗位都是自己明确工作职责,但是,谁来这事,可以是模糊。...不要因为角色结束了自己,也不要计较一时付出多还是少,事就在哪,你不做,总有人来。那为什么不是你去做呢?你付出团队看得见总能在某个关键时刻帮助到你。 教练说得对!

31910

Reactjs开发自制编程语言Monkey编译器:语法解析

例如下面这条语句: let foo = 1234; 语句经过词法解析器解析后,就会转变为: LET IDENTIFIER ASSIGN_SIGN INTEGER SEMI 完成上面工作后,词法解析器任务就完成了...我们本节将实现一个简单语法解析器作用是能解析let 语句,例如: let foo = 1234; let x = y; 语法解析器在实现语法解析时,一般有两种策略,一种叫自顶向下,一种自底向上...,需要传入词法解析器,因为解析器解析内容经过词法解析器处理后结果,也就是一系列token组合。...this.expectPeek(this.lexer.IDENTIFIER)) { return null } 上面代码用于判断,跟着关键字let 后面的是不是变量字符串...如果就用当前token构建一个Identifier类,并把作为初始化LetStatement类一部分。接下来就得判断跟着是否等号了: if (!

89320

使用普拉特解析法解析复杂算术表达式

解析器还得考虑不同操作符产生不同含义表达式,例如 -5 表示一个数值也就是负五,而—5 表示一次算术操作,意思计算5-1所得值,也就是4....,由于算术表达式展现形式多种多样,要通过光怪陆离表象识别本质一件很困难事情,因此,语法解析器对算术表达式解析算法发明和实现是计算机科学发展史上光辉一页。...} } 我们提到函数表就是prefixParseFns, 从代码可以看成,如果解析器当前遇到token类型变量字符串,也就是lexer.IDENTIFIER,时,解析器就从该表中拿出...parseIdentifier这个函数来执行,如果解析器当前遇到token类型数组字符串,那么便从该表中拿出函数parseIntegerLiteral来执行。...如果当前解析器读取到数字字符串,那么它会从表中找到函数parseIntegerLiteral来执行,该函数根据当前token,把内容解析成整形数值后,创建一个IntegerLiteral类实例

1.4K20

【自然框架】之通用权限:用PowerDesigner重新设计了一下数据库,有ER图和表关系图

好像以前那个数据库设计大家都没看懂,究其原因似乎大家都比较习惯使用PowerDesinger来设计。...我们可以建立一个业务员角色,设置业务员角色可以事情,然后把五个业务员和业务员角色关联起来。这样就方便了,业务员可以做得事情有变化时候,只需要修改业务员角色可以做得事情就可以了。...而且也可以适合很大范围,因为那个资源定义实在广泛了,到了无所不包程度了。但是这个设计真的好吗?或者实用?...还是觉得看中文舒服:) 3、写这个目的:  给自己用,工作7年工作总结、思路总结,四、五个项目的权限总结。  和大家分享,交流。看看大家意见,否则不就更是闭门造车?...是不是要修改表结构了呢?不想改,还是用角色绑定方法来处理,增加一个“张三专用角色”,这个角色“隐藏”,不和其他角色一样管理,需要通过对“张三”来管理。

2.4K70

试用GO开发python编译器:实现词法解析

下面我们完成一个基本功能词法解析器,在lexer文件夹下面新建一个文件为lexer.go,输入内容如下: package lexer type Lexer struct { input string...byte //读取字符 } func New(input string) *Lexer { //生成一个词法解析器 l := &Lexer{input: input} return...int //下一个要读取字符位置,也就是position + 1 ch byte //读取字符 } func New(input string) *Lexer { //生成一个词法解析器...,后面跟着数字或者下划线,因此解析逻辑就是,当我们读取到字符时,我们就进入到变量名识别流程,也就是读取到字符后,如果接下来读取还是字符,数字或者下划线,我们就不断往下走,直到遇到不是字符,数字或下划线符号为止...Python代码初步解析了。

51830

Go 译文之词法分析与解析 Part Three

译者前言 最近发现翻译越来越随性了,刚开始文章翻译时候比较拘束,现在更多强调可读性,比如有些对文章大意没有什么影响文字现在都会选择直接跳过。...第二篇文章,英文原版,因主要聚焦在 Lexer 实现。完成了将输入文本转化为 Token 过程。 今天本系列最后一篇文章,最终完成我们解释器。...解析器 解析器编写,我们要做第一件事,创建一个用于存放解析结构变量,即一个 IniFile 结构体类型变量。...,还有解析器当前状态。...词法分析与解析一个非常复杂的话题,有太多内容需要学习。我们可以看到,即使像上面 INI 文件解析这样简单工作,我们也需要花费一些精力才能完成。

37120
领券