小编Bur*_*rad的帖子

Grep模式匹配用双引号括起来的小写字符串

我有一点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"?

regex string grep

9
推荐指数
1
解决办法
7722
查看次数

抛出std :: bad_alloc的其他可能原因

我正在研究相当大的SIP电话应用程序,偶尔当我们在大量调用加载时使用集成的Web UI(使用tntnet编写)时,程序将因为抛出std :: bad_alloc而退出.有数百个线程在使用(每个活动调用3个),因此导致异常的代码位置非常随机,但总是在使用GUI之后.

现在,我知道std :: bad_alloc可以在内存不足时抛出,在这种情况下不是这种情况.我也在想,当存在堆损坏时可能会抛出它,我仍然在寻找它在代码库中的位置.

但我的问题是,除了内存不足或堆损坏之外,是否还有其他原因导致std :: bad_alloc被抛出?我在Linux上使用GNU g ++.

c++ linux heap g++ exception

7
推荐指数
2
解决办法
7203
查看次数

客户端套接字连接被Windows主机上的服务器拒绝为小数(16 <x <24)的同时客户端连接尝试

我们遇到的问题是,当相对较少的节点(16到24,但我们将来需要处理更多)尝试同时连接时,我们的套接字服务器的传入客户端套接字连接被拒绝.

一些细节:

  • 服务器正在Windows 2008或7上运行
  • 我们的主服务器是使用ServerSocket用Java编写的
  • 客户端也是在我们数据中心的网格节点上运行的Windows

当我们尝试在网格上运行测试时,客户端节点会尝试连接到服务器并发送40-100K数据包然后断开连接.使用16到24个节点,我们开始发现客户端连接无法连接到服务器的问题.鉴于此设置,我们尝试最多可能处理16-24个并发客户端连接并失败,这对我们来说根本不适合.

主服务器循环正在侦听常规SocketServer,当它获得连接时,它会生成一个新的Thread来处理连接,立即返回侦听socket.我们还有一个虚拟的python服务器,只需读取和丢弃传入的数据,以及一个在转储数据之前记录数据的C++服务器,并且两者都遇到同样的问题,客户端无法连接之前有多少成功客户端连接的微小变化失败开始了.这使我们相信任何特定的服务器在这个问题上没有错,而且可能是环境问题.

我们首先想到的是套接字上的TCP积压.即使推到很高的水平,这也没有缓解这个问题.Java SocketServer的默认值为50,远低于我们能够处理的值.

我们在同一子网上的机器之间运行测试,并禁用机器上的所有本地防火墙,以防FW对我们与服务器的连接进行速率限制; 没有成功.

我们尝试在运行服务器的Windows机器上调整网络:

  • 减少TimedWaitDelay,但没有效果(在我的Python测试中它不应该因为该测试只运行几毫秒).
  • 将MaxUserPort增加到一个大值,大约65000,但没有效果(这是奇怪的,因为我的Python测试只发送240条消息,所以我甚至不应该接近这种类型的限制).
  • 将TcpNumConnection增加到一个较大的值(不记得确切的数字).同样,我们一次不应该有超过24个连接,所以这不是一个限制.
  • 启动"动态积压"功能,允许消息积压动态增加.我认为我们将最大值设置为2000连接,最小1000个连接,但没有效果.同样,Python永远不应该超过240个连接,所以我们不应该甚至激活动态积压.
  • 除了以上禁用TCP端口的Windows"自动调整".再一次,没有效果.

我的感觉是,Windows在某种程度上限制了入站连接的数量,但我们不确定要修改哪些内容以允许更多的连接.网络上代理限制连接速率的想法似乎也不正确.我们高度怀疑同时连接的数量是否会使物理GB网络过载.

我们很难过.有没有其他人遇到这样的问题,并找到了解决方案?

java sockets windows socketserver windows-networking

7
推荐指数
1
解决办法
1319
查看次数

处理Antlr语法错误或如何在意外令牌上提供更好的消息

我们有一个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错误处理,但我想我会在这里发布以寻找一些见解.

error-handling parsing antlr

5
推荐指数
1
解决办法
3403
查看次数