我有一点grep的问题,我似乎无法弄明白.我正在尝试搜索一组源文件中用双引号(C字符串)括起来的小写单词的所有实例.使用bash和gnu grep:
grep -e '"[a-z]+"' *.cpp
Run Code Online (Sandbox Code Playgroud)
给我没有比赛,而
grep -e '"[a-z]*"' *.cpp
Run Code Online (Sandbox Code Playgroud)
给我像"Abc"这样的比赛,这不仅仅是小写字符.什么是正确的正则表达式只匹配"abc"?
我正在研究相当大的SIP电话应用程序,偶尔当我们在大量调用加载时使用集成的Web UI(使用tntnet编写)时,程序将因为抛出std :: bad_alloc而退出.有数百个线程在使用(每个活动调用3个),因此导致异常的代码位置非常随机,但总是在使用GUI之后.
现在,我知道std :: bad_alloc可以在内存不足时抛出,在这种情况下不是这种情况.我也在想,当存在堆损坏时可能会抛出它,我仍然在寻找它在代码库中的位置.
但我的问题是,除了内存不足或堆损坏之外,是否还有其他原因导致std :: bad_alloc被抛出?我在Linux上使用GNU g ++.
我们遇到的问题是,当相对较少的节点(16到24,但我们将来需要处理更多)尝试同时连接时,我们的套接字服务器的传入客户端套接字连接被拒绝.
一些细节:
当我们尝试在网格上运行测试时,客户端节点会尝试连接到服务器并发送40-100K数据包然后断开连接.使用16到24个节点,我们开始发现客户端连接无法连接到服务器的问题.鉴于此设置,我们尝试最多可能处理16-24个并发客户端连接并失败,这对我们来说根本不适合.
主服务器循环正在侦听常规SocketServer,当它获得连接时,它会生成一个新的Thread来处理连接,立即返回侦听socket.我们还有一个虚拟的python服务器,只需读取和丢弃传入的数据,以及一个在转储数据之前记录数据的C++服务器,并且两者都遇到同样的问题,客户端无法连接之前有多少成功客户端连接的微小变化失败开始了.这使我们相信任何特定的服务器在这个问题上没有错,而且可能是环境问题.
我们首先想到的是套接字上的TCP积压.即使推到很高的水平,这也没有缓解这个问题.Java SocketServer的默认值为50,远低于我们能够处理的值.
我们在同一子网上的机器之间运行测试,并禁用机器上的所有本地防火墙,以防FW对我们与服务器的连接进行速率限制; 没有成功.
我们尝试在运行服务器的Windows机器上调整网络:
我的感觉是,Windows在某种程度上限制了入站连接的数量,但我们不确定要修改哪些内容以允许更多的连接.网络上代理限制连接速率的想法似乎也不正确.我们高度怀疑同时连接的数量是否会使物理GB网络过载.
我们很难过.有没有其他人遇到这样的问题,并找到了解决方案?
我们有一个Antlr语法的以下子部分:
signed_int
: SIGN? INT
;
INT : '0'..'9'+
;
Run Code Online (Sandbox Code Playgroud)
当有人输入一个数值时,一切都很好,但如果他们错误地输入类似1O(一个和大写o)的东西,我们会得到一个神秘的错误信息:
error 1 : Missing token at offset 14
near [Index: 0 (Start: 0-Stop: 0) ='<missing COLON>' type<24> Line: 26 LinePos:14]
: syntax error...
Run Code Online (Sandbox Code Playgroud)
处理此类错误的好方法是什么?我想过定义catch-all SYMBOL令牌类型,但这会导致解析器构建错误太多.我将继续研究Antlr错误处理,但我想我会在这里发布以寻找一些见解.