From 113f9092c1dc874acab6201a637824b36fbaf072 Mon Sep 17 00:00:00 2001 From: "Mr.Fu" <15066652019@163.com> Date: Wed, 8 Feb 2023 20:36:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9C=80=E5=B0=8F=E6=B4=BB?= =?UTF-8?q?=E8=B7=83=E6=95=B0=E7=AE=97=E6=B3=95=E5=92=8C=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AbstractLeastActive.cs | 39 ------- GCNF.Algorithm.LeastActive/Program.cs | 12 --- .../AbstractLeastActive.cs | 101 ++++++++++++++++++ .../GCNF.Algorithm.MinimumActivity.csproj | 2 +- GCNF.Algorithm.MinimumActivity/LeastActive.cs | 69 ++++++++++++ GCNF.Algorithm.MinimumActivity/Program.cs | 22 ++++ GCNF.Algorithm.sln | 16 +-- 7 files changed, 201 insertions(+), 60 deletions(-) delete mode 100644 GCNF.Algorithm.LeastActive/AbstractLeastActive.cs delete mode 100644 GCNF.Algorithm.LeastActive/Program.cs create mode 100644 GCNF.Algorithm.MinimumActivity/AbstractLeastActive.cs rename GCNF.Algorithm.LeastActive/GCNF.Algorithm.LeastActive.csproj => GCNF.Algorithm.MinimumActivity/GCNF.Algorithm.MinimumActivity.csproj (78%) create mode 100644 GCNF.Algorithm.MinimumActivity/LeastActive.cs create mode 100644 GCNF.Algorithm.MinimumActivity/Program.cs diff --git a/GCNF.Algorithm.LeastActive/AbstractLeastActive.cs b/GCNF.Algorithm.LeastActive/AbstractLeastActive.cs deleted file mode 100644 index 63a7c35..0000000 --- a/GCNF.Algorithm.LeastActive/AbstractLeastActive.cs +++ /dev/null @@ -1,39 +0,0 @@ -/* - * ---------------------------------------------------------------- - * Copyright @ @@神农写代码 2023. All rights reserved. - - * 作 者 :@@神农写代码 - - * 创建时间 :2023/2/5 0:54:03 - - * CLR 版本 :4.0.30319.42000 - - * 命名空间 :GCNF.Algorithm.AbstractLeastActive - - * 类 名 称 :LeastActive - - * 类 描 述 : - - * 博客地址:fu-shi-rong.blog.csdn.net - - * ------------------------------------------------------ - * 历史更新记录 - - * 版本 : V1.0.0.0 修改时间:2023/2/5 0:54:03 修改人: - - * 修改内容: - * - */ -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Security.Cryptography.X509Certificates; -using System.Text; - -namespace GCNF.Algorithm.LeastActive -{ - public abstract class AbstractLeastActive - { - public static ConcurrentDictionary keyValuePairs = new ConcurrentDictionary(); - } -} diff --git a/GCNF.Algorithm.LeastActive/Program.cs b/GCNF.Algorithm.LeastActive/Program.cs deleted file mode 100644 index e5ef64a..0000000 --- a/GCNF.Algorithm.LeastActive/Program.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace GCNF.Algorithm.LeastActive -{ - internal class Program - { - static void Main(string[] args) - { - Console.WriteLine("Hello World!"); - } - } -} diff --git a/GCNF.Algorithm.MinimumActivity/AbstractLeastActive.cs b/GCNF.Algorithm.MinimumActivity/AbstractLeastActive.cs new file mode 100644 index 0000000..2f24750 --- /dev/null +++ b/GCNF.Algorithm.MinimumActivity/AbstractLeastActive.cs @@ -0,0 +1,101 @@ +/* + * ---------------------------------------------------------------- + * Copyright @ @@神农写代码 2023. All rights reserved. + + * 作 者 :@@神农写代码 + + * 创建时间 :2023/2/8 19:34:56 + + * CLR 版本 :4.0.30319.42000 + + * 命名空间 :GCNF.Algorithm.MinimumActivity + + * 类 名 称 :Class1 + + * 类 描 述 : + + * 博客地址:fu-shi-rong.blog.csdn.net + + * ------------------------------------------------------ + * 历史更新记录 + + * 版本 : V1.0.0.0 修改时间:2023/2/8 19:34:56 修改人: + + * 修改内容: + * + */ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Text; + +namespace GCNF.Algorithm.MinimumActivity +{ + public abstract class AbstractLeastActive + { + #region 变量 + /// + /// 静态字典 + /// + public ConcurrentDictionary keyValuePairs = new ConcurrentDictionary(); + /// + /// 相同编号的数据集合 + /// + protected List list = new List(); + #endregion + + #region 虚函数 + /// + /// 筛选最小编号的数据 + /// + protected void FilterMinValue() + { + int number = int.MaxValue; + foreach (var item in keyValuePairs) + { + if (number >= item.Value) + { + + if (number == item.Value) + { + number = item.Value; + list.Add(item.Key); + continue; + } + list.Clear(); + number = item.Value; + list.Add(item.Key); + } + } + } + /// + /// 随机集合中的数据 + /// + protected string RandomValue() + { + Random random = new Random(); + var num = random.Next(list.Count); + return list[num]; + } + /// + /// 活跃数加1 + /// + /// key值 + protected void AddActive(string key) { + keyValuePairs.TryUpdate(key, keyValuePairs[key]+1, keyValuePairs[key]); + } + #endregion + + /// + /// 释放编号 + /// + /// + public abstract void Dispose(string key); + /// + /// 获取最小活跃数 + /// + /// + public abstract string GetValue(); + + } +} diff --git a/GCNF.Algorithm.LeastActive/GCNF.Algorithm.LeastActive.csproj b/GCNF.Algorithm.MinimumActivity/GCNF.Algorithm.MinimumActivity.csproj similarity index 78% rename from GCNF.Algorithm.LeastActive/GCNF.Algorithm.LeastActive.csproj rename to GCNF.Algorithm.MinimumActivity/GCNF.Algorithm.MinimumActivity.csproj index c73e0d1..9acff6d 100644 --- a/GCNF.Algorithm.LeastActive/GCNF.Algorithm.LeastActive.csproj +++ b/GCNF.Algorithm.MinimumActivity/GCNF.Algorithm.MinimumActivity.csproj @@ -1,4 +1,4 @@ - + Exe diff --git a/GCNF.Algorithm.MinimumActivity/LeastActive.cs b/GCNF.Algorithm.MinimumActivity/LeastActive.cs new file mode 100644 index 0000000..bc233fb --- /dev/null +++ b/GCNF.Algorithm.MinimumActivity/LeastActive.cs @@ -0,0 +1,69 @@ +/* + * ---------------------------------------------------------------- + * Copyright @ @@神农写代码 2023. All rights reserved. + + * 作 者 :@@神农写代码 + + * 创建时间 :2023/2/8 19:36:07 + + * CLR 版本 :4.0.30319.42000 + + * 命名空间 :GCNF.Algorithm.MinimumActivity + + * 类 名 称 :LeastActive + + * 类 描 述 : + + * 博客地址:fu-shi-rong.blog.csdn.net + + * ------------------------------------------------------ + * 历史更新记录 + + * 版本 : V1.0.0.0 修改时间:2023/2/8 19:36:07 修改人: + + * 修改内容: + * + */ +using System; +using System.Collections.Generic; +using System.Text; + +namespace GCNF.Algorithm.MinimumActivity +{ + public class LeastActive : AbstractLeastActive + { + /// + /// 获取最小活跃数据 + /// + /// + public override string GetValue() + { + string value = ""; + //筛选数据 + this.FilterMinValue(); + if (this.list.Count == 1) + { + value = this.list[0]; + //活跃数加1 + this.AddActive(value); + return value; + } + else if (this.list.Count > 1) + { + value = this.RandomValue(); + //活跃数加1 + this.AddActive(value); + return value; + } + return value; + } + /// + /// 最小活跃数据释放 + /// + /// + public override void Dispose(string key) + { + keyValuePairs.TryUpdate(key, keyValuePairs[key] - 1, keyValuePairs[key]); + } + } +} diff --git a/GCNF.Algorithm.MinimumActivity/Program.cs b/GCNF.Algorithm.MinimumActivity/Program.cs new file mode 100644 index 0000000..59cdbc6 --- /dev/null +++ b/GCNF.Algorithm.MinimumActivity/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; + +namespace GCNF.Algorithm.MinimumActivity +{ + internal class Program + { + static void Main(string[] args) + { + AbstractLeastActive abstractLeastActive = new LeastActive(); + abstractLeastActive.keyValuePairs.TryAdd("http://localhost:8080", 0); + abstractLeastActive.keyValuePairs.TryAdd("http://localhost:8081", 0); + + //abstractLeastActive.FilterMinValue(); + //abstractLeastActive.list.ForEach(s => { + // Console.WriteLine(s); + //}); + //Console.WriteLine($"随机地址:{abstractLeastActive.RandomValue()}"); + } + } +} diff --git a/GCNF.Algorithm.sln b/GCNF.Algorithm.sln index 4be8692..efbe616 100644 --- a/GCNF.Algorithm.sln +++ b/GCNF.Algorithm.sln @@ -23,11 +23,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestProject_GCNF.Algorithm. EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "03 最小活跃数算法", "03 最小活跃数算法", "{F92662E3-3163-4D25-A87F-D6BEDEDFE37F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GCNF.Algorithm.LeastActive", "GCNF.Algorithm.LeastActive\GCNF.Algorithm.LeastActive.csproj", "{6116D19E-B229-44CE-B167-2E925EF66861}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "04 冒泡算法", "04 冒泡算法", "{E5EDA65D-EA1C-48A8-82D5-D0D2EE7C5C02}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GCNF.Algorithm.BubbleAlgorithm", "GCNF.Algorithm.BubbleAlgorithm\GCNF.Algorithm.BubbleAlgorithm.csproj", "{D497296B-77CB-4827-87C5-76E907453FED}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GCNF.Algorithm.BubbleAlgorithm", "GCNF.Algorithm.BubbleAlgorithm\GCNF.Algorithm.BubbleAlgorithm.csproj", "{D497296B-77CB-4827-87C5-76E907453FED}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GCNF.Algorithm.MinimumActivity", "GCNF.Algorithm.MinimumActivity\GCNF.Algorithm.MinimumActivity.csproj", "{9FAD7740-F5F9-48CC-A066-8E1D96A65988}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -51,14 +51,14 @@ Global {96D641CD-E141-477C-B47E-1D23395FCAB0}.Debug|Any CPU.Build.0 = Debug|Any CPU {96D641CD-E141-477C-B47E-1D23395FCAB0}.Release|Any CPU.ActiveCfg = Release|Any CPU {96D641CD-E141-477C-B47E-1D23395FCAB0}.Release|Any CPU.Build.0 = Release|Any CPU - {6116D19E-B229-44CE-B167-2E925EF66861}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6116D19E-B229-44CE-B167-2E925EF66861}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6116D19E-B229-44CE-B167-2E925EF66861}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6116D19E-B229-44CE-B167-2E925EF66861}.Release|Any CPU.Build.0 = Release|Any CPU {D497296B-77CB-4827-87C5-76E907453FED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D497296B-77CB-4827-87C5-76E907453FED}.Debug|Any CPU.Build.0 = Debug|Any CPU {D497296B-77CB-4827-87C5-76E907453FED}.Release|Any CPU.ActiveCfg = Release|Any CPU {D497296B-77CB-4827-87C5-76E907453FED}.Release|Any CPU.Build.0 = Release|Any CPU + {9FAD7740-F5F9-48CC-A066-8E1D96A65988}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9FAD7740-F5F9-48CC-A066-8E1D96A65988}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9FAD7740-F5F9-48CC-A066-8E1D96A65988}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9FAD7740-F5F9-48CC-A066-8E1D96A65988}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -72,9 +72,9 @@ Global {C25568E3-CAA2-4AAC-94CF-E1928C694C8A} = {0AAC57A7-1E51-488D-9E5B-973BFD55C9FE} {96D641CD-E141-477C-B47E-1D23395FCAB0} = {D98B14CE-6355-43B5-B816-F99B54C7AE28} {F92662E3-3163-4D25-A87F-D6BEDEDFE37F} = {86202654-4D12-4561-B332-FBFDB2FF7EF7} - {6116D19E-B229-44CE-B167-2E925EF66861} = {F92662E3-3163-4D25-A87F-D6BEDEDFE37F} {E5EDA65D-EA1C-48A8-82D5-D0D2EE7C5C02} = {86202654-4D12-4561-B332-FBFDB2FF7EF7} {D497296B-77CB-4827-87C5-76E907453FED} = {E5EDA65D-EA1C-48A8-82D5-D0D2EE7C5C02} + {9FAD7740-F5F9-48CC-A066-8E1D96A65988} = {F92662E3-3163-4D25-A87F-D6BEDEDFE37F} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {9CDAA185-8BDF-4A79-8666-D3451A1C465E} -- Gitee