小编Not*_*tMe的帖子

我需要一个快速运行时表达式解析器

我需要找到一个快速,轻量级的表达式解析器.

理想情况下,我想传递一个名称/值对列表(例如变量)和一个包含要评估的表达式的字符串.我需要的只是一个真/假值.

表达式的类型应该是:

varA == "xyz" and varB==123
Run Code Online (Sandbox Code Playgroud)

基本上,只是一个简单的逻辑引擎,其表达式在运行时提供.

更新
至少需要支持==,!=,>,> =,<,<=

关于速度,我希望每个请求大约执行5个表达式.我们会看到附近的某个地方/请求一秒钟.我们当前的页面往往在50ms以内执行.通常,任何表达式中只涉及2或3个变量.但是,我需要在执行之前将大约30加载到解析器中.

更新2012/11/5
有关性能的更新.我们近2年前实施了nCalc.从那以后,我们扩大了它的使用范围,使得我们在帖子背面平均覆盖300多个变量的40多个表达式.现在每秒发生数千次回发,性能严重下降.

我们还扩展了它,包括一些额外的功能,同样没有性能损失.简而言之,nCalc满足了我们的所有需求并超出了我们的预期.

c# asp.net-4.0

28
推荐指数
3
解决办法
3万
查看次数

MERGE查询和删除记录

我有一个看起来像这样的表:

AccountID, ItemID
1, 100
1, 200
2, 300
Run Code Online (Sandbox Code Playgroud)

我有一个proc接受一个表值参数,该参数更新与帐户关联的项目.我们将传递以下内容:

AccountID, ItemID
3, 100
3, 200
Run Code Online (Sandbox Code Playgroud)

proc类似于:

procedure dbo.MyProc( @Items as dbo.ItemListTVP READONLY )
AS
BEGIN
  MERGE INTO myTable as target
    USING @Items
       on (Items.AccountId = target.AccountId)
       AND (Items.ItemId = target.ItemId)
    WHEN NOT MATCHED BY TARGET THEN
        INSERT (AccountId, ItemId)
        VALUES (Items.AccountId, Items.ItemId)

   ;

END
Run Code Online (Sandbox Code Playgroud)

根据传入的数据,我希望它能在表中添加2条新记录.

我想要的是有一个WHEN NOT MATCHED BY SOURCE子句,它将删除不匹配的指定帐户的项目.

例如,如果我通过

AccountID, ItemID
1, 100
1, 400
Run Code Online (Sandbox Code Playgroud)

然后我希望它删除1,200的记录; 但是留下所有其他人.

如果我这样做:

WHEN NOT MATCHED BY SOURCE THEN
  DELETE; …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server merge sql-server-2008-r2

28
推荐指数
3
解决办法
2万
查看次数

MySQL可以无缝地替换为MariaDB,还是可以在这种情况下改变?

如果我用MariaDB服务器(Maria和XtraDB存储)而不是MySQL(MyISAM和InnoDB)替换MySQL 5.1服务器,那么大多数MySQL客户端软件(包括用PHP 5.2和Java SE 1.6制作的应用程序).​​.....

  1. 只是保持工作而不做任何改变(可能会有轻微的回归)?
  2. 或者我是否必须替换/重新配置客户端驱动程序(比如使用另一个JDBC驱动程序类和连接字符串)?
  3. 或者我甚至可以更改应用程序代码?

php mysql jdbc mariadb

27
推荐指数
1
解决办法
4万
查看次数

一对多SQL SELECT成单行

我有两个表中的数据.

第一个表有一个名为PKID的主键

PKID  DATA
0    myData0
1    myData1
2    myData2
Run Code Online (Sandbox Code Playgroud)

第二个表将表1中的PKID列作为外键

PKID_FROM_TABLE_1  U_DATA
       0          unique0
       0          unique1        
       0          unique2
       1          unique3
       1          unique4
       1          unique5
       2          unique6
       2          unique7
       2          unique8
Run Code Online (Sandbox Code Playgroud)

我现在正在制作的基本SELECT语句是

SELECT a.PKID, a.DATA, b.U_DATA
FROM table1 as a
INNER JOIN table2 as b
ON a.PKID = b.PKID_FROM_TABLE_1
Run Code Online (Sandbox Code Playgroud)

这会生成一个这样的表:

PKID   DATA     U_DATA
 0   myData0    unique0
 0   myData0    unique1
 0   myData0    unique2
 1   myData1    unique3
 1   myData1    unique4
 1   myData1    unique5
 2   myData2    unique6
 2   myData2    unique7
 2   myData2    unique8 …
Run Code Online (Sandbox Code Playgroud)

mysql pivot

23
推荐指数
2
解决办法
4万
查看次数

YUI还是不YUI?

我目前正在几个项目中使用Yahoo YUI javascript库.

但是,我有点担心三件事.首先,他们解雇了10%的员工.其次,他们的股价持续下跌:特别是在今年早些时候无视MS收购之后.第三,如果有人买了它们怎么办?

我提出这个问题的唯一原因是我倾向于构建将要存在8到10年的应用程序.

你会怎么做?

javascript yahoo yui

20
推荐指数
6
解决办法
3896
查看次数

如何一次读取一行CSV文件并解析出关键字

我是C#的新手,我已经开始使用了StreamReader.我试图一次读取一行文件,并在匹配特定关键字"I/RPTGEN"时输出该行.

到目前为止,我想出了如何将整个文件读成字符串,但我无法弄清楚如何一次只读一行.

到目前为止我的代码是这样的.

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Test
{
    public static void Main()
    {
        try
        {
            using (StreamReader sr = new StreamReader("c:/temp/ESMDLOG.csv"))
            {
                String line = sr.ReadToEnd();
                Console.WriteLine(line);

                Console.ReadLine();
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The File could not be read:");
            Console.WriteLine(e.Message);

            Console.ReadLine();
        }
    }
}
}
Run Code Online (Sandbox Code Playgroud)

另外,这里是文件中一行的示例.

咨询,2/27/2013 12:00:44 AM,I/RPTGEN(cadinterface),I/RPTGEN失败 - 错误500 - 内部服务器错误 - 为报告请求返回(检查URL的日志).

c#

17
推荐指数
2
解决办法
6万
查看次数

将JavaScript日期转换为.NET日期的最佳方式

我在JavaScript中有一个约会,它的价值就是这样

Fri Apr 01 2011 05:00:00 GMT + 0530(印度标准时间){}

现在,将日期转换为.NET日期的最佳方法是什么.请注意,我的客户端用户可能是世界各地的用户.我将从那里获得日期,现在我需要将其转换为.NET日期.你能帮助我吗 ?

.net javascript c#

16
推荐指数
2
解决办法
3万
查看次数

如何拍摄网页的屏幕截图?

我想在我们的一个网站上添加一个按钮,允许用户通过我们的错误跟踪系统提交错误.

其中一个功能请求是发送相关页面的屏幕截图.

如果没有在最终用户机器上安装,我该怎么办?javascript是否有某种屏幕上限api?

javascript screen capture

14
推荐指数
3
解决办法
2万
查看次数

无法回滚子交易.未找到该名称的任何事务或保存点

我在sql中有一个循环,它做了一些事情

    begin tran one

    do some inserts in others tables

      --start loop
     begin tran two
      --do something
      begin try
--if something fail then a trigger does rollback and this return a error (and this goes to catch), then don't i need do the rollbak in catch? this could not be dissable because this is working on production
      --something finished ok 
      commit tran two
      end try
      begin catch
     rollback tran two
      end catch

    --finished loop
    commit


----------
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误

在批处理结束时检测到不可提交的事务.该事务被回滚.

begin tran …
Run Code Online (Sandbox Code Playgroud)

sql t-sql loops transactions

14
推荐指数
2
解决办法
2万
查看次数

使整数均匀

有时我需要确定某个整数是偶数.因此我可以使用以下代码:

int number = /* magic initialization here */;

// make sure the number is even
if ( number % 2 != 0 ) {
    number--;
}
Run Code Online (Sandbox Code Playgroud)

但这似乎并没有被非常有效的最有效的方式做到这一点,所以我可以做到以下几点:

int number = /* magic initialization here */;

// make sure the number is even
number &= ~1;
Run Code Online (Sandbox Code Playgroud)

但(除了不可读)我不确定该解决方案是否完全可移植.

  • 您认为哪种解决方案最好?
  • 第二种解决方案是否完全便携?
  • 第二种解决方案比第一种解决方案快得多吗?
  • 您对此问题还有哪些其他解决方案?
  • 如果我在内联方法中执行此操作会怎么样?它(理论上)应该与这些解决方案一样快,可读性不应再成为问题,这是否会使第二种解决方案更可行?

注意:此代码应该只适用于正整数,但有一个解决方案也适用于负数将是一个加号.

c c++ integer bit-manipulation

13
推荐指数
4
解决办法
5263
查看次数