没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
c# 实现轮询算法实例代码实现轮询算法实例代码
主要介绍了c# 实现轮询算法实例代码的相关资料,这里附有实例代码,具有一定的参考价值,需要的朋友可以参考下
c# 轮询算法轮询算法
这两天做东西,业务上有个特殊的需求,在用户访问页面的时候,针对某一行代码进行控制,按照概率来进行显示,我做的是针对当前页面的曝光进行处
理,曝光代码是第三方的,页面上只要有这段代码就算是执行了这段曝光代码,所以才写了这个轮询的一个方法,这个方法可以根据自己的需求修改,下面我
把这个方法全部帖出来:
CacheSlidingExpirationHour:时间,缓存时间2小时
CountdownCurrentIndexCacheName:缓存名称
log:日志
m_objCountdownCurrentIndexLock::当前对象
m_snIntervalSecond:定义一个数组,可以视为概率值
说明:0,1,1,1 数据中存了4个数,我们设为总的概率为100%,每个代表25%,所以现在我设置的是当前的概率为75%
存如缓存的是数据的索引,取的时候也取的索引,方法返回索引,转成int类型
public class CountdownHelper
{
private const int CacheSlidingExpirationHour = 2;
private const string CountdownCurrentIndexCacheName = "OnlineMeetingCountdownCurrentIndex";
private static IAppLog log = AppLoggerManager.GetLogger(typeof(CountdownHelper));
private static Cache m_cache = HttpContext.Current.Cache;
private static object m_objCountdownCurrentIndexLock = new object();
private static int[] m_snIntervalSecond = new int[] { 0, 1 , 1 , 1}; //1显示 0不显示
public CountdownHelper()
{
}
public int GetCountdownAddedSecond()
{
lock (m_objCountdownCurrentIndexLock)
{
int nCountdownCurrentIndex = 0;
try
{
object objCountdownCurrentIndex = m_cache[CountdownCurrentIndexCacheName];
if (objCountdownCurrentIndex == null)
{
//如果需要加缓存的,就用下面的
//m_cache.Insert(CountdownCurrentIndexCacheName, 1, null, Cache.NoAbsoluteExpiration, TimeSpan.FromHours(CacheSlidingExpirationHour), CacheItemPriority.NotRemovable, null);
//不用加缓存的用下面的
m_cache.Insert(CountdownCurrentIndexCacheName, 1, null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, null);
}
else
{
nCountdownCurrentIndex = (int)objCountdownCurrentIndex;
if (nCountdownCurrentIndex == m_snIntervalSecond.Length - 1)
{
m_cache[CountdownCurrentIndexCacheName] = 0;
}
else
{
m_cache[CountdownCurrentIndexCacheName] = nCountdownCurrentIndex + 1;
}
}
return m_snIntervalSecond[nCountdownCurrentIndex];
}
catch (Exception __error)
{
//如果需要记录错误日志的,可以记录到这里,我这里没有加
//log.Error("功能介绍GetCountdownAddedSecond:" + __error.Message);
if (nCountdownCurrentIndex > m_snIntervalSecond.Length - 1)
{
nCountdownCurrentIndex = m_snIntervalSecond.Length - 1;
}
return m_snIntervalSecond[nCountdownCurrentIndex];
}
}
}
}
这个功能的需求是:业务部门需要监控当前页面的曝光率,所以需要用概率去判断当前的曝光代码如何在页面上交替显示,起初是曝光率为50%,所以数
组中直接就是new int[] { 0, 1},后来改成75%,就是上面的代码,所以这样既可以监控曝光,有可以控制曝光代码。
前台调用是用AJAX方式:
说明:等于1,将曝光代码添加到页面,否则不加
1 <div id="adver"></div>
<!--轮询曝光-->
$.post("/Topic/GetCountdownAddedSecond", function (data) {
if (data) {
if (data.num == 1) {
资源评论
weixin_38529436
- 粉丝: 3
- 资源: 998
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 高性能量化工具 hikyuu 2.0.3 python3.9 ubuntu 安装包
- Cyclone Version 9.51
- 高性能量化回测工具 hikyuu 2.0.3 python 3.12 windows 安装包
- 省级城乡居民基本养老保险情况数据集(2010-2022年).xlsx
- 舞队填写版.cpp
- 基于BP神经网络的多输入单输出回归预测.zip
- 高性能量化回测工具 hikyuu 2.0.3 python 3.9 windows 安装包
- 省级城镇职工基本养老保险情况2000-2022年.xlsx
- 高性能量化回测工具 hikyuu 2.0.3 python 3.10 windows 安装包
- 算法部署-使用OpenVINO+C#部署PaddleOCR字符识别算法-项目源码-优质项目实战.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功