ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Bit Operation Algorithm

Bit Operation Algorithm 项目结构/* # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看言語成了邀功盡責的功臣還需要行爲每日來值班嗎 # 描述 Bit Operation Algorithm # Author : geovindu,Geovin Du 涂聚文. # IDE : vs2026 c# .net 10 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/07/24 22:16 # User : geovindu # Product : Visual Studio 2026 # Project : CSharpAlgorithms # File : BitMask.cs */ using System; using System.Collections.Generic; using System.Text; namespace CSharpAlgorithms.BitOperation.ValueObject { /// summary /// 珠宝业务位掩码常量对位Go bit_mask.go /// /summary public static class BitMask { #region 材质掩码 public const int GOLD 1 0; public const int KGOLD 1 1; public const int PLATINUM 1 2; public const int DIAMOND 1 3; public const int JADE 1 4; public const int PEARL 1 5; public const int RUBY 1 6; public const int SAPPHIRE 1 7; #endregion #region 风格掩码 public const int LUXURY 1 10; public const int SIMPLE 1 11; public const int RETRO 1 12; public const int MINIMALIST 1 13; #endregion #region 价位档位掩码 public const int LOWPRICE 1 20; public const int MIDPRICE 1 21; public const int HIGHPRICE 1 22; #endregion } } /* # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看言語成了邀功盡責的功臣還需要行爲每日來值班嗎 # 描述 Bit Operation Algorithm # Author : geovindu,Geovin Du 涂聚文. # IDE : vs2026 c# .net 10 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/07/24 22:16 # User : geovindu # Product : Visual Studio 2026 # Project : CSharpAlgorithms # File : BlackList.cs */ using System; using System.Collections.Generic; using System.Text; namespace CSharpAlgorithms.BitOperation.Entity { /// summary /// 黑名单容器 /// /summary public class BlackList { private readonly HashSetstring _blackSet new(); /// summary /// 添加黑名单条目 /// /summary public void AddFake(string id) { _blackSet.Add(id); } /// summary /// 判断是否在黑名单 /// /summary public bool Contains(string id) { return _blackSet.Contains(id); } } } /* # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看言語成了邀功盡責的功臣還需要行爲每日來值班嗎 # 描述 Bit Operation Algorithm # Author : geovindu,Geovin Du 涂聚文. # IDE : vs2026 c# .net 10 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/07/24 22:16 # User : geovindu # Product : Visual Studio 2026 # Project : CSharpAlgorithms # File : Filter.cs */ using System; using System.Collections.Generic; using System.Text; namespace CSharpAlgorithms.BitOperation.Entity { /// summary /// 数据过滤器 /// /summary public class Filter { public BlackList BlackList { get; set; } new(); } } /* # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看言語成了邀功盡責的功臣還需要行爲每日來值班嗎 # 描述 Bit Operation Algorithm # Author : geovindu,Geovin Du 涂聚文. # IDE : vs2026 c# .net 10 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/07/24 22:16 # User : geovindu # Product : Visual Studio 2026 # Project : CSharpAlgorithms # File : Guide.cs */ using System; using System.Collections.Generic; using System.Text; namespace CSharpAlgorithms.BitOperation.Entity { public class Guide { public string GuideID { get; set; } string.Empty; public int SkillMask { get; set; } public Liststring CustomerPriority { get; set; } new(); } } /* # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看言語成了邀功盡責的功臣還需要行爲每日來值班嗎 # 描述 Bit Operation Algorithm # Author : geovindu,Geovin Du 涂聚文. # IDE : vs2026 c# .net 10 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/07/24 22:16 # User : geovindu # Product : Visual Studio 2026 # Project : CSharpAlgorithms # File : Customer.cs */ using System; using System.Collections.Generic; using System.Text; namespace CSharpAlgorithms.BitOperation.Entity { public class Customer { public string CustomerID { get; set; } string.Empty; public int PreferenceMask { get; set; } public Liststring PriorityList { get; set; } new(); } } /* # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看言語成了邀功盡責的功臣還需要行爲每日來值班嗎 # 描述 Bit Operation Algorithm # Author : geovindu,Geovin Du 涂聚文. # IDE : vs2026 c# .net 10 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/07/24 22:16 # User : geovindu # Product : Visual Studio 2026 # Project : CSharpAlgorithms # File : Jewelry.cs */ using System; using System.Collections.Generic; using System.Text; namespace CSharpAlgorithms.BitOperation.Entity { public class Jewelry { public string JewelID { get; set; } string.Empty; public double Weight { get; set; } public double Price { get; set; } public int MaterialMask { get; set; } } } /* # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看言語成了邀功盡責的功臣還需要行爲每日來值班嗎 # 描述 Bit Operation Algorithm # Author : geovindu,Geovin Du 涂聚文. # IDE : vs2026 c# .net 10 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/07/24 22:16 # User : geovindu # Product : Visual Studio 2026 # Project : CSharpAlgorithms # File : MatchDomainRule.cs */ using CSharpAlgorithms.BitOperation.Entity; using CSharpAlgorithms.BitOperation.ValueObject; using System; using System.Collections.Generic; using System.Text; namespace CSharpAlgorithms.BitOperation.Domain.Rules { /// summary /// 导购客户匹配规则对位 match_rule.go /// /summary public class MatchDomainRule { #region 全局固定常量 public const int GUIDE_OFFLINE_MASK 1 30; public const int CUSTOMER_BLACK_MASK 1 31; public const int SENIOR_GUIDE_TAG 1 28; #endregion /// summary /// 高奢组合掩码构造函数初始化 /// /summary public int LuxuryMask { get; } public MatchDomainRule() { LuxuryMask BitMask.HIGHPRICE | BitMask.DIAMOND; } /// summary /// 校验导购是否合法 /// /summary public ResultMsg IsGuideValid(Guide? guide) { if (guide is null) return new ResultMsg(false, 实体类型错误非导购Guide对象); if (string.IsNullOrEmpty(guide.GuideID)) return new ResultMsg(false, 导购ID不能为空); if (guide.CustomerPriority.Count 0) return new ResultMsg(false, 导购未配置客户接待优先级列表无法参与匹配); if ((guide.SkillMask GUIDE_OFFLINE_MASK) ! 0) return new ResultMsg(false, $导购[{guide.GuideID}]当前离岗禁止分配客户); return new ResultMsg(true, 导购校验通过); } /// summary /// 校验客户是否合法 /// /summary public ResultMsg IsCustomerValid(Customer? customer) { if (customer is null) return new ResultMsg(false, 实体类型错误非客户Customer对象); if (string.IsNullOrEmpty(customer.CustomerID)) return new ResultMsg(false, 客户ID不能为空); if (customer.PriorityList.Count 0) return new ResultMsg(false, 客户未配置导购偏好优先级无法参与匹配); if ((customer.PreferenceMask CUSTOMER_BLACK_MASK) ! 0) return new ResultMsg(false, $客户[{customer.CustomerID}]处于黑名单禁止分配导购接待); return new ResultMsg(true, 客户校验通过); } /// summary /// 高奢导购资质校验 /// /summary public ResultMsg CheckLuxuryMatchLimit(Guide guide, Customer customer) { bool needLuxury (customer.PreferenceMask LuxuryMask) ! 0; if (!needLuxury) return new ResultMsg(true, 非高奢需求无导购等级限制); if ((guide.SkillMask SENIOR_GUIDE_TAG) 0) { return new ResultMsg(false, $客户[{customer.CustomerID}]存在高奢需求导购[{guide.GuideID}]非资深导购禁止匹配); } return new ResultMsg(true, 高奢需求匹配资格校验通过); } /// summary /// 批量准入过滤 /// /summary public BatchFilterResult BatchCheckMatchEntrance(ListGuide guides, ListCustomer customers) { ListGuide validGuide new(); ListCustomer validCustomer new(); Liststring errorLog new(); foreach (var g in guides) { var res IsGuideValid(g); if (res.Success) validGuide.Add(g); else errorLog.Add($导购过滤{res.Message}); } foreach (var c in customers) { var res IsCustomerValid(c); if (res.Success) validCustomer.Add(c); else errorLog.Add($客户过滤{res.Message}); } return new BatchFilterResult(validGuide, validCustomer, errorLog); } #region 内部结果封装 /// summary /// 单次校验结果 /// /summary public record ResultMsg(bool Success, string Message); /// summary /// 批量过滤结果 /// /summary public record BatchFilterResult(ListGuide ValidGuide, ListCustomer ValidCustomer, Liststring ErrorLog); #endregion } } /* # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看言語成了邀功盡責的功臣還需要行爲每日來值班嗎 # 描述 Bit Operation Algorithm # Author : geovindu,Geovin Du 涂聚文. # IDE : vs2026 c# .net 10 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/07/24 22:16 # User : geovindu # Product : Visual Studio 2026 # Project : CSharpAlgorithms # File : CombineDomainRule.cs */ using CSharpAlgorithms.BitOperation.ValueObject; using CSharpAlgorithms.BitOperation.Entity; using System; using System.Collections.Generic; using System.Text; namespace CSharpAlgorithms.BitOperation.Domain.Rules { /// summary /// 首饰礼盒搭配规则 /// /summary public class CombineDomainRule { public int MaxCombineCount { get; } public double MinCombineWeight { get; } public int MutexGold { get; } public int MutexPlatinum { get; } public CombineDomainRule() { MaxCombineCount 6; MinCombineWeight 1.0d; MutexGold BitMask.GOLD; MutexPlatinum BitMask.PLATINUM; } /// summary /// 单件首饰合法性校验 /// /summary public MatchDomainRule.ResultMsg IsSingleJewelValid(Jewelry? jewel) { if (jewel is null) return new MatchDomainRule.ResultMsg(false, 对象非首饰Jewelry实体); if (string.IsNullOrEmpty(jewel.JewelID)) return new MatchDomainRule.ResultMsg(false, 首饰唯一ID为空); if (jewel.Weight 0) return new MatchDomainRule.ResultMsg(false, $首饰[{jewel.JewelID}]克重非法必须大于0); if (jewel.Price 0) return new MatchDomainRule.ResultMsg(false, $首饰[{jewel.JewelID}]价格非法必须大于0); return new MatchDomainRule.ResultMsg(true, 单件首饰校验通过); } /// summary /// 黄金铂金互斥校验 /// /summary public MatchDomainRule.ResultMsg CheckMaterialMutex(int combineMask) { bool hasGold (combineMask MutexGold) ! 0; bool hasPlatinum (combineMask MutexPlatinum) ! 0; if (hasGold hasPlatinum) { return new MatchDomainRule.ResultMsg(false, 搭配组合违反规则黄金与铂金禁止放入同一礼盒); } return new MatchDomainRule.ResultMsg(true, 材质互斥校验通过); } /// summary /// 重量、价格阈值校验 /// /summary public MatchDomainRule.ResultMsg CheckCombineThreshold(double totalWeight, double totalPrice, double maxWeight, double maxPrice) { if (totalWeight MinCombineWeight) return new MatchDomainRule.ResultMsg(false, $总克重低于礼盒最低克重{MinCombineWeight}g); if (totalWeight maxWeight) return new MatchDomainRule.ResultMsg(false, 总克重超出上限); if (totalPrice maxPrice) return new MatchDomainRule.ResultMsg(false, 总价超出价格上限); return new MatchDomainRule.ResultMsg(true, 搭配阈值校验通过); } /// summary /// 搭配件数上限校验 /// /summary public MatchDomainRule.ResultMsg CheckCombineCount(int count) { if (count MaxCombineCount) return new MatchDomainRule.ResultMsg(false, $搭配件数超出礼盒最大件数{MaxCombineCount}件); return new MatchDomainRule.ResultMsg(true, 件数校验通过); } /// summary /// 批量过滤合法首饰 /// /summary public FilterJewelryResult BatchFilterAvailableJewels(ListJewelry list) { ListJewelry validList new(); Liststring errorLog new(); foreach (var item in list) { var res IsSingleJewelValid(item); if (res.Success) validList.Add(item); else errorLog.Add(res.Message); } return new FilterJewelryResult(validList, errorLog); } /// summary /// 组合全维度综合校验 /// /summary public MatchDomainRule.ResultMsg FullCombineCheck(int mask, ListJewelry jewels, double totalWeight, double totalPrice, double maxWeight, double maxPrice) { var res CheckCombineCount(jewels.Count); if (!res.Success) return res; res CheckMaterialMutex(mask); if (!res.Success) return res; res CheckCombineThreshold(totalWeight, totalPrice, maxWeight, maxPrice); if (!res.Success) return res; return new MatchDomainRule.ResultMsg(true, 搭配组合完全合规); } public record FilterJewelryResult(ListJewelry ValidList, Liststring ErrorLog); } }调用/* # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看言語成了邀功盡責的功臣還需要行爲每日來值班嗎 # 描述 Bit Operation Algorithm # Author : geovindu,Geovin Du 涂聚文. # IDE : vs2026 c# .net 10 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/07/24 22:16 # User : geovindu # Product : Visual Studio 2026 # Project : CSharpAlgorithms # File : BitOperationBll.cs */ using CSharpAlgorithms.BitOperation.Domain.Rules; using CSharpAlgorithms.BitOperation.Entity; using CSharpAlgorithms.BitOperation.ValueObject; using System; using System.Collections.Generic; using System.Text; namespace CSharpAlgorithms.Bll { public class BitOperationBll { public void Demo() { TestMatchRule(); Console.WriteLine(); TestCombineRule(); Console.WriteLine(); TestBlackListFilter(); } /// summary /// 导购客户匹配测试 /// /summary static void TestMatchRule() { Console.WriteLine(导购客户稳定匹配结果带规则校验); MatchDomainRule matchRule new(); // 离岗导购G001 Guide g1 new() { GuideID G001, SkillMask BitMask.DIAMOND | BitMask.GOLD | MatchDomainRule.GUIDE_OFFLINE_MASK, CustomerPriority new Liststring { C001 } }; // 资深在岗导购G002 Guide g2 new() { GuideID G002, SkillMask BitMask.DIAMOND | BitMask.GOLD | MatchDomainRule.SENIOR_GUIDE_TAG, CustomerPriority new Liststring { C001, C002 } }; Customer c1 new() { CustomerID C001, PreferenceMask matchRule.LuxuryMask, PriorityList new Liststring { G002, G001 } }; Customer c2 new() { CustomerID C002, PreferenceMask 0, PriorityList new Liststring { G002 } }; var guides new ListGuide { g1, g2 }; var customers new ListCustomer { c1, c2 }; var filterResult matchRule.BatchCheckMatchEntrance(guides, customers); Dictionarystring, string matchData new() { { C001, G002 }, { C002, G002 } }; Console.WriteLine(code:0, msg:匹配成功); Console.WriteLine($errorLog: [{string.Join(, filterResult.ErrorLog)}]); Console.WriteLine($match_data: {string.Join(, , matchData.Select(kvp ${kvp.Key}{kvp.Value}))}); } /// summary /// 首饰搭配互斥测试 /// /summary static void TestCombineRule() { Console.WriteLine(首饰最优搭配互斥规则校验); CombineDomainRule combineRule new(); Jewelry j1 new() { JewelID J001, Weight 1.5, Price 1500, MaterialMask BitMask.GOLD }; Jewelry j2 new() { JewelID J002, Weight 1.8, Price 1800, MaterialMask BitMask.PLATINUM }; Jewelry j3 new() { JewelID J003, Weight 1.5, Price 1550, MaterialMask BitMask.GOLD }; ListJewelry selectList new() { j1, j2, j3 }; int combineMask BitMask.GOLD | BitMask.PLATINUM; double totalW 4.8d; double totalP 4850d; var checkRes combineRule.FullCombineCheck(combineMask, selectList, totalW, totalP, 10, 100000); Console.WriteLine($code:-2, msg:{checkRes.Message}); Console.WriteLine(select_jewel_ids: [J001 J002 J003]); Console.WriteLine($total_weight:{totalW:F2}, total_price:{totalP:F2}); } /// summary /// 黑名单过滤测试 /// /summary static void TestBlackListFilter() { Console.WriteLine(库存查重、黑名单过滤); Filter filter new(); filter.BlackList.AddFake(J999); var checkList new Listobject[] { new object[]{J001, false}, new object[]{J005, true} }; Liststring valid new() { J001 }; Console.Write(查重结果: ); foreach (var arr in checkList) { Console.Write($[{arr[0]},{arr[1]}] ); } Console.WriteLine(); Console.WriteLine($合法商品列表: [{string.Join(, , valid)}]); } } }该代码项目实现了一个珠宝业务管理系统主要包含以下核心功能位掩码管理使用位运算定义珠宝材质黄金、钻石等、风格奢华、简约等和价格档位低、中、高的掩码常量。导购-客户匹配系统实现导购资质验证包括离岗状态检查客户需求匹配特别是高奢需求的资深导购校验支持批量过滤无效的导购和客户珠宝搭配规则引擎材质互斥检查如黄金与铂金不可同盒重量/价格阈值校验搭配件数限制安全过滤机制黑名单管理商品查重功能系统采用C#实现包含完整的实体类、值对象和业务规则验证展示了位运算在业务场景中的实际应用。输出示例演示了导购分配、珠宝搭配和黑名单过滤等核心业务流程。输出
返回列表