Example #1
0
        public void TestFindPairWithGivenSumInAnArray()
        {
            int[] arr = { 8, 7, 2, 5, 3, 1 };

            var result = HashAlgos.FindPairWithGivenSumInAnArray(arr, 10);

            Assert.IsTrue(result.Count == 2);
        }
Example #2
0
        public uint AddHashWithIndex(string prefix, Dictionary <string, object> aggKeyBuff)
        {
            var hashItem = JsonConvert.SerializeObject(aggKeyBuff);
            var hashIx   = HashAlgos.Adler32(hashItem);
            var key      = $"{prefix}:cacheGroup:{hashIx}";

            _cacher.SetAdd(key, hashItem);
            return(hashIx);
        }
Example #3
0
 // 构造函数中的自动属性
 public Hasher(HashAlgos algo, string input)
 {
     HashAlgo = algo switch
     {
         HashAlgos.MD5 => "MD5",
         HashAlgos.SHA1 => "SHA1",
         HashAlgos.SHA256 => "SHA256",
         HashAlgos.SHA512 => "SHA512",
         _ => "SHA256",
     };
     Input      = input;
     HashResult = "";
 }
Example #4
0
        public DonutCodeFeatureDefinition GetTemplate(CallExpression exp, DonutCodeContext ctx)
        {
            var rootIgn         = ctx.Script.GetRootIntegration();
            var expVisitor      = new DonutFeatureGeneratingExpressionVisitor(ctx.Script);
            var callParam       = exp.Parameters.FirstOrDefault();
            var parameterTarget = expVisitor.Visit(callParam);

            if (parameterTarget.ToString() == "document[\"\"]")
            {
                return(DonutCodeFeatureDefinition.Empty);
            }
            var    buffGather     = new StringBuilder();
            var    buffExtract    = new StringBuilder();
            var    paramHash      = HashAlgos.Adler32(callParam.ToString());
            string featureKey     = $"nu_{rootIgn.Name}_{paramHash}";
            var    categoryValue  = "groupKey"; //Use the group key generated from DonutScriptCodeGenerator..
            string ordered        = "true";
            string varCategory    = $"{featureKey}_cat";
            string varValue       = $"{featureKey}_val";
            string varCategoryVal = $"var {varCategory} = {categoryValue};";
            string varValueVal    = $"var {varValue} = {parameterTarget}.ToString();";

            buffGather.AppendLine(varCategoryVal);
            buffGather.AppendLine(varValueVal);
            buffGather.AppendLine($"Context.AddEntityMetaCategory(\"{featureKey}\", {varCategory}, {varValue}, {ordered});");

            buffExtract.AppendLine($"Context.GetSetSize(\"{featureKey}\")");
            var featureDef = new DonutCodeFeatureDefinition()
            {
                PrepareScript    = buffGather.ToString(),
                ExtractionScript = buffExtract.ToString()
            };

            //Feature value:
            //Context.GetSetSize()
            //
            //Define a nameOfTheResultCache, category, value
            //Set the value in the cache
            return(featureDef);

            /**
             * Example
             * //Extraction goes in here
             * var nuRomanianpm25Category = 1;
             * var nuRomanianpm25Value = intDoc["pm25"].ToString();
             * Context.AddEntityMetaCategory("nu_Romanian.pm25", nuRomanianpm25Category, nuRomanianpm25Value, true);
             */
        }
Example #5
0
 /// <summary>
 /// 对文件进行哈希运算
 /// </summary>
 /// <param name="algo">指定哈希算法</param>
 /// <param name="input">指定文件路径</param>
 public FileHasher(HashAlgos algo, string input) : base(algo, input)
 {
     // 获取文件名是纯字符串操作,不会抛出文件系统异常。错误的文件名返回空串
     FilePath   = Path.GetFullPath(Input);
     FileName   = Path.GetFileName(FilePath);
     HashResult = STATUS.HASH_INCOMPL;
     try
     {
         // 以只读模式打开,不指定进程共享(独占)参数、异步读取参数
         // 因为写在try中,所以不必using(){}的用法,但需要注意Dispose()
         FS = File.OpenRead(FilePath);
         //FS = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize: 4096, useAsync: true);
         FileLength = FS.Length;
     }
     catch
     {
         HashResult = STATUS.FILE_ERROR;
         FileLength = 0L;
         // 读取过程中并不隐含Dispose()方法,但是GC会自动回收(有延迟)
         FS?.Dispose();
     }
 }
Example #6
0
        public string GetHashCode()
        {
            var val    = GetValue();
            var adhash = HashAlgos.Adler32(val);

            return(adhash.ToString());
//            using (MD5 md5Hash = MD5.Create())
//            {
//                byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(val));
//
//                // Create a new Stringbuilder to collect the bytes
//                // and create a string.
//                StringBuilder sBuilder = new StringBuilder();
//
//                // Loop through each byte of the hashed data
//                // and format each one as a hexadecimal string.
//                for (int i = 0; i < data.Length; i++)
//                {
//                    sBuilder.Append(data[i].ToString("x2"));
//                }
//
//                return sBuilder.ToString();
//            }
        }
Example #7
0
 public StringHasher(HashAlgos algo, string input) : base(algo, input)
 {
     HashResult = GetStringHash(HashAlgo, Input);
 }
Example #8
0
        public override int GetHashCode()
        {
            var content = GetValue();

            return((int)HashAlgos.Adler32(content));
        }