一个简单的PV统计例子,演示如何利用内存缓冲高并发环境下的计数

在cnblogs博问中回答问题http://space.cnblogs.com/q/15717/,特做了个小例子,希望能够帮助新手朋友们扩宽思路 

 

复制代码
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    
<title></title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
    当前临时列表中有 
<%=计数器.计数器实例.临时保存访问列表.Count %> 条记录等待着往数据库里插。
    
</div>
    
</form>
</body>
</html>
复制代码

 

 

复制代码
Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page 
{
    
protected void Page_Load(object sender, EventArgs e)
    {
        计数器.计数器实例.临时保存访问列表.Add(Request.UserHostAddress);
    }
}
复制代码

 

 

复制代码
计数器.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Threading;
using System.Diagnostics;

/// <summary>
///计数器 的摘要说明
/// </summary>
public class 计数器
{
    
public static readonly 计数器 计数器实例 = new 计数器();

    
/// <summary>
    
/// 用来临时保存访问者的IP列表
    
/// </summary>
    public List<string> 临时保存访问列表;

    
private 计数器()
    {
        临时保存访问列表 
= new List<string>();

        Thread 数据插入线程 
= new Thread(
            () 
=>
            {
                
while (true)
                {
                    
//1.把ipList中的数据一次性插入数据库;自己来根据情况实现
                    
//数据库.插入(临时保存访问列表);
                    Debug.Print("往数据库中插入了"+临时保存访问列表.Count().ToString()+"条记录");

                    
//2.插入完成后清空ipList
                    
//在并发太多的情况下要根据情况清空列表,以免丢失数据。
                    临时保存访问列表.Clear();

                    
//3.每隔10秒钟循环一次
                    Thread.Sleep(10000);
                }
            }
        );

        数据插入线程.Start();
    }
}
复制代码

 

 

posted @   LanceZhang  阅读(3054)  评论(13编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
历史上的今天:
2008-07-13 客户端访问WebService的WSDL文件
点击右上角即可分享
微信分享提示