小编Car*_*ara的帖子

是否存在正则表达式匹配的硬限制?

我有一个我为路由组件编写的代码,这里是完整的代码,它基本上构建了许多小的(特定于路由的)大量的任意数量的大正则表达式(取决于配置值)以验证是否注册路由可以或不可以映射给定请求.

一般过程包括首先装饰每条路线,以便使用占位符的路线

/path/to/:variable_name
Run Code Online (Sandbox Code Playgroud)

变成像这样的正则表达式:

/path/to/(?P<R1V1>[^/]+)
Run Code Online (Sandbox Code Playgroud)

在验证时,这条路线在每批任意大小的单个正则表达式中粘合在一起.

对于"正常"使用,比如说有500个占位符的路由,它运行得很好.不过,虽然基准它,我注意到了一个非常大的数量的占位符AND和路线非常大的量(目前11个占位符和50000个路由)我的代码在找到最后的注册路由失败.

我无法弄清楚为什么.据我所知,事情应该大致以相同的方式表现,采取(可能?我的O符号生锈)每个数量级的O(n*m)次(n是批量,m是多少)正则表达式是批量存在的).

也许这是我正在测试它的方式?如果不是,请你指点我正在做的任何有问题的事情?

如果有任何用处,我使用的基准测试就是这里的基准测试

<?php
require dirname(__FILE__).'/../vendor/autoload.php';
$router = new \CFV\Router();
$dispatcher = new \CFV\Dispatcher();

$dispatcher::$ROUTES_PER_LOT = 20;
// $dispatcher::$THROW_ON_FAIL = true;

$callback = function (){};
$num_args = 11;
$routes_amount = 50000;
$matches_amount = 1;
$args = implode('/', array_map(function($i){ return ':arg' . $i; }, range(1, $num_args)));
$params = implode('/', array_map(function($i){ return '_arg' . $i; }, range(1, $num_args)));
$last_tried = '';

$load_start = microtime(true);
for ($i = 0, $str = …
Run Code Online (Sandbox Code Playgroud)

php regex pcre

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

我可以在Android应用程序中测量声音的距离吗?

这次我有很多问题,虽然它们都与同样的问题有关:我想在Android中构建一个基本的声纳,并且不知道如何做这样的事情.

  • 是否可以合理地运作?
  • 比较波形的最佳方法(在移动应用程序中有意义)是什么?
  • 我是否可以可靠地测量在小型机箱(例如房间)中发送和接收给定波形之间的延迟?
  • 是否有任何方法(在移动应用程序中有意义)丢弃由不平坦表面(例如,打开门)产生的噪音?

只是想在这里定位,因为我对移动应用程序中的声音处理真的很陌生.提前致谢!

android waveform audio-processing

6
推荐指数
0
解决办法
378
查看次数

使用固定大小的元素来增长 svg?

我有一个箭头 SVG,设置如下:

<svg xmlns="http://www.w3.org/2000/svg" version="1.0" viewBox="0 0 100 100" class="arrow">
  <g class="tail">
    <circle (...)></circle>
  </g>
  <g class="body">
    <rect (...)></rect>
  </g>
  <g class="head">
    <polygon (...)>
  </g>
</svg>
Run Code Online (Sandbox Code Playgroud)

我想对其进行设置,以便在通过 CSS 调整其大小时,无论其大小如何,

  • 将以tail相同的比例保留在左侧,
  • head留在右侧,也具有相同的比例,并且
  • body无限期地水平拉伸。

我可以这样做吗?我怎样才能做到这一点?

svg aspect-ratio distortion

2
推荐指数
1
解决办法
1429
查看次数

构建类注册表:不能对类型缺少调用或构造签名的表达式使用"new"

我有这个设置:

//./things/Base.ts
export default class Base{
  constructor(){
    console.log("HI I AM A BASE THING");
  }
}

//things.ts
import Base = require('./things/Base');

export = {
  defaultThing: Base
};

//entry.ts
import Things = require('./things');

new Things.defaultThing();
Run Code Online (Sandbox Code Playgroud)

我正在尝试做的是使用我想要的类给定类型的键构建一个字典,让我更改底层实现而不触及消费代码.此操作失败,并显示以下消息

? tsc entry.ts
entry.ts(3,1): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
Run Code Online (Sandbox Code Playgroud)

为什么这个和什么是正确的成语?

typescript tsc

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