public void TestFindPairWithGivenSumInAnArray() { int[] arr = { 8, 7, 2, 5, 3, 1 }; var result = HashAlgos.FindPairWithGivenSumInAnArray(arr, 10); Assert.IsTrue(result.Count == 2); }
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); }
// 构造函数中的自动属性 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 = ""; }
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); */ }
/// <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(); } }
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(); // } }
public StringHasher(HashAlgos algo, string input) : base(algo, input) { HashResult = GetStringHash(HashAlgo, Input); }
public override int GetHashCode() { var content = GetValue(); return((int)HashAlgos.Adler32(content)); }