小编enz*_*m83的帖子

解析数学表达式

给定一个包含数学表达式的字符串,给定一组函数/命令并给定一组赋值变量,.NET是否提供了快速构建解析器的工具?

我想构建一个简单的解析器来分析表达式并将其分解为最简单的组件,例如:

d*(abs(a-b)+sqrt(c))

变

  1. f = abs(a-b) 和 g = sqrt(c)
  2. e = f + g
  3. d*e

.net c# .net-4.0 c#-4.0

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

GUID比较中的性能

我读了这个问题和另一个问题.在这两个问题中的一个中,我还读到Guid Structure包含以下四个字段:Int32,Int16,Int16和Byte [8],因此两个Guid之间的比较应该更快.

好吧,我只使用Guid Structure来生成UUID,然后我只需要比较之前生成的UUID.因此,我想以可比较的格式快速转换生成的每个UUID.

我使用以下代码运行了一些测试(我从这个问题中获得灵感).

        struct FastUuid
        {
            public long _part1;
            public long _part2;

            public FastUuid(byte[] value)
            {
                _part1 = BitConverter.ToInt64(value, 0);
                _part2 = BitConverter.ToInt64(value, 8);
            }
        }

        static void Main(string[] args)
        {
            TestUuidCompare(1000000000);
            Console.ReadLine();

        }

        public static void TestUuidCompare(uint numberOfChecks)
        {
            Guid uuid1 = Guid.NewGuid();
            Guid uuid2 = new Guid(uuid1.ToByteArray());

            byte[] a1 = uuid1.ToByteArray();
            byte[] a2 = uuid2.ToByteArray();

            string s1 = uuid1.ToString();
            string s2 = uuid2.ToString();

            BigInteger b1 = new BigInteger(uuid1.ToByteArray());
            BigInteger …
Run Code Online (Sandbox Code Playgroud)

.net c#

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

使用LINQ为Nullable值强加排序规则

我有一个类似于下面(MyData类)的对象列表,我将使用LINQ查询来获取那些满足SecondDate属性约束的对象,最后根据所有属性对满足此约束的项进行排序.

public class MyData
{
    public Nullable<DateTime> FirstDate {get; set;}
    public DateTime SecondDate {get; set;}
    public TimeSpan SimpleInterval {get; set;}
    public double SimpleValue {get; set;}
    ...
}
Run Code Online (Sandbox Code Playgroud)

我写了以下查询,但我不知道如何处理该Nullable <DateTime> FirstDate属性.设置为此属性的项null应排序低于具有相同字段值的另一项,但此属性设置为非空值.

// public static void main
double threshold = ... // some initialization
DateTime now = DateTime.Now;
List<MyData> list = new List<MyData>();
...
var items = from item in list
            where ((now - item.SecondDate).TotalSeconds < threshold))
            orderby item.FirstDate descending
            orderby item.SecondDate descending
            orderby …
Run Code Online (Sandbox Code Playgroud)

.net c# linq

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

检查DateTime是否属于第二天的参考DateTime

给定引用DateTime并给出要验证的DateTime,如何验证第二个日期属于第二天(从午夜开始)?

private bool IsTheNextDay(DateTime toBeVerified, DateTime referenceDate)
{
    DateTime date = new DateTime(referenceDate.Year, referenceDate.Month, referenceDate.Day);
    DateTime next = date.AddDays(1);
    return (toBeVerified >= next);
}
Run Code Online (Sandbox Code Playgroud)

使用上面的源代码,它的工作原理.有其他更好的解决方案吗?

.net c#

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

如何轻松迭代"strings.xml"资源文件中的所有字符串?

我创建了一个使用TTS引擎向用户发送反馈的应用程序.为了提高性能,我使用了synthesizeToFile和addSpeech方法,但是要合成的文本字符串在strings.xml文件中,所以我必须为TTS引擎说出的每个字符串调用这些方法.

由于TTS引擎仅使用其名称开头的字符串tts_,是可以很容易地遍历打头的所有字符串tts_的内部strings.xml文件?

android android-resources

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

排序循环缓冲区的最有效方法

我使用固定长度的数组实现了一个循环缓冲区.为了指向有效数据的开始,我使用了index(_startIndex).同样,为了指向有效数据的结尾,我使用另一个索引(_endIndex).以下是一个例子.

  9   8   7   6   5   4   3   2   1   0   <-- array indices
  3   2   1   0                   5   4   <-- buffer indices
-----------------------------------------
|   |   |   |   |   |   |   |   |   |   |
-----------------------------------------
              ^                   ^
             _startIndex         _endIndex
Run Code Online (Sandbox Code Playgroud)

现在我需要重新排列此缓冲区的元素:最小元素应移动到缓冲区的位置0,而最大元素应移动到缓冲区的位置5.

我的想法是基于以下方法.

int GetArrayIndex(int bufferIndex)
{
    return (_startIndex + bufferIndex) % LENGTH;
    // LENGTH is the length of the array
}
Run Code Online (Sandbox Code Playgroud)

这样,排序算法可以使用上述方法顺序读取缓冲区,因此不必知道缓冲区由同一阵列的两个非连续部分组成.是否有更好的方法来排序循环缓冲区?

.net c# sorting algorithm

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

如何识别视频流的格式?

假设视频流通过本地网络传输:一些 VLC 客户端通过 RTSP 接收视频流。客户端能否识别用于编码视频流的格式?换句话说,我如何识别用于对通过本地网络传输的视频流进行编码的格式?我很想知道用于编码视频流的格式是 H.264 还是其他格式。

encoding vlc video-encoding video-streaming

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

在C++中使用全局向量

我已经实现了一个使用查找表的快速比较功能.由于此函数在项目的多个类中使用,我需要确保在整个程序执行期间只有一个查找表副本.

查找表是一个简单vector<int>的大小65536.我希望这个表在程序开始时初始化,而不是在它第一次使用时.如何处理这个问题?

以下代码段是我的比较函数的当前版本.我相信通过创建lookup_table一个静态变量,问题将只能部分解决,因为静态变量的生命周期是在程序流第一次遇到声明时开始的.

int fast_compare(const char* array1, const char* array2, int length)
{
    static const vector<int> lookup_table = init_lookup_table();

    // process the input arrays...
    // ...
    return lookup_table[...];
}

vector<int> init_lookup_table()
{
    vector<int> lut(65536);

    // ----------------------------
    // initialize the look-up table
    // ...
    // ...
    // end of initialization
    // ----------------------------

    return lut;
}
Run Code Online (Sandbox Code Playgroud)

c++ variables static scope global-variables

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

如何计算两个字节数组之间的距离?

我需要计算相同长度的两个字节数组之间的距离.特别是,我正在寻找获得距离的方法,具有以下特点:

  • 如果两个阵列彼此非常相似,那么距离应该非常小;
  • 否则,距离应该非常大.

基本上,我正在寻找一种方法来衡量两个阵列之间的差异.

更新:如建议的那样,我提供了有关字节数组内容的以下附加信息.字节序列包含图像的特征,因此图像被分成小区域,并且为每个区域测量一些颜色信息(每个字节编码与单个区域有关的信息):当在一个字节内设置一个位时,那意味着该区域内存在给定的特征.

因此,给定两个字节序列,我想使用合适的距离度量进行比较.我读到了Bhattacharyya距离,但我不知道如何在这种情况下应用它,所以我想知道是否有其他距离测量来比较两个字节数组.

language-agnostic algorithm statistics distance

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

为什么开发人员必须明确声明Android权限?

如本页所述

由于Android沙箱相互之间的应用程序,应用程序必须明确共享资源和数据.他们通过声明基本沙箱未提供的其他功能所需的权限来实现此目的,包括访问设备功能(如摄像头).

在我看来,在编译源代码时自动检测所需的权限会更有用.这样,根据应用程序源代码中使用的类和方法,编译器可以检测所需的权限.那么,为什么必须由开发人员明确声明Android权限?

android android-permissions

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