ASP.NET一种多商家网络商店的设计与实现

摘  要

21世纪是网络的世纪,电子商务随之将成为主流商业模式,多商家网络商店系统就是一个C2C型的电子商务系统。本文详细论述了采用ASP.NET 2005 和 SQL Server 2000等技术实现的一个多商家网络商店的过程。论文首先阐述了本设计题目的选题意义、背景,和网站的开发平台;其次根据网站需求对系统的数据库和功能模块做了详细设计,并在此基础上实现了用户管理模块、权限管理模块、购物订单模块,商家管理模块、商品管理模块、留言板和公告管理模块等功能。最后通过对网站进行的全面测试展现了网站界面简单、美观,网站功能丰富、操作方便等特点,完全符合多商家网络商店的需求,能够为用户网上购物提供一个很好的操作平台。

关键词电子商务;多商家;网络商店;网上购物;SQL Server 2000;C#

3.1  ASP.NET介绍

ASP.NET是一个已编译的、基于.NET的环境,把基于通用语言的程序在服务器上运行。将程序在服务器端首次运行时进行编译,比ASP即时解释程序速度上要快很多,而且是可以用任何与.NET兼容的语言创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NET Framework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。

3.2  C#介绍

C#是一种面向对象的编程语言,它作为Visual Studio中的一部分推出。C#(发音为“C-Sharp”)既保持了C++中熟悉的语法,并且还包含了大量的高效代码和面向对象特性。C#语言在保持C/C++灵活性的基础上为程序员带来更高效的RAD开发方式。它不仅能用于WEB服务程序的开发,并且还能开发强大的系统级程序。

3.3  SQL Server 2000介绍

Microsoft SQL Server 2000是Microsoft公司继SQL Server 6.5和SQL Server 7.0以后,在新千年推出的又一改进的新版关系型数据管理系统。它能使用户快捷地管理数据库和开发应用程序。SQL Server 2000使用了先进的数据库结构,与Windows DNA紧密集成,具有强大的Web功能,它可以利用高端硬件平台以及最新网络和存储技术,可以为最大的Web站点和企业应用提供优良的扩展性和可靠性,使用户能够在Internet领域快速建立服务系统,为占领市场赢得宝贵的时间。同时,SQL Server 2000还为用户提供了重要的安全性功能的增强,为用户的数据安全提供了可靠的保证。另外,SQL Server 2000在数据库服务器自动管理技术方面处于数据库领域的领先地位,它可以使用户免去繁琐复杂的工作量,从而有精力处理更重要的问题,使用系统在商业战略上占得先机。

4.2  系统功能分析

1.浏览功能,一般游客或注册用户都可以浏览及查询商品,商店。

2.用户注册及登录功能,用户需注册帐号后才能登录及进行其他相应操作。

3.用户修改资料、购买商品以及查询订单功能。

4.商家添加删除商品、管理商品、查询卖出商品、修改店铺资料及查看买家留言等功能。

5.管理员对用户、商家、商品的管理功能

6.管理员对商品分类的添加、删除功能。

7.管理员发布修改公告及推荐商品。

4.3  系统模块分析

4.3.1  后台管理模块分析

此模块只对系统管理员开放。管理员可以对用户、商家、商品,以及公告推荐商品进行管理。

4.3.2  前台管理模块分析

此模块对普通用户及卖家开放。又分为买家模块和买家模块:

  1. 买家模块。买家可以对注册资料进行修改对订单进行查看。
  2. 卖家模块。卖家在买家的基础上还可以对商品和商店进行管理,以及对买家下的订单和买家留言进行查看。

6.1    用户浏览及搜索商品


所有用户及游客最先进入的是网站的首页,它包括推荐商品、商店排行等内容,也包括了商品的搜索功能。首页界面如图6-1所示: 


导航栏上面关于用户登录注册部分会根据用户登录与否显示不同的信息,其代码如下:
public string gettop()
    {
        string htmlstr;
        if (Session["webusername"] == null)//跟踪用户名,判断是否登录
        { htmlstr = "<td width='200' align='center'><span class='top1'>你好,欢迎来到零点商城!</span></td>    <td width='70'><a href='user/register.aspx' class='top2'>[免费注册]</a></td>   <td width='45'><a href='user/login.aspx' class='top2'>[登录]</a></td>"; }
        else
        { htmlstr = "<td width='245' align='right'><span class='top1'>欢迎您," + Session["webusername"] + "</span></td> <td width='70'align='center'><a href='login_out.aspx' class='top2'>[退出]</a></td>"; }
        return htmlstr;//返回htmlstr的值
 }
如登录后界面如图6-2所示,未登录界面如图6-3所示。

显示最新商品代码如下:
public static string getnewgoods()
    {
        string sql = "select top 4 * from web_goods where goods_audit=1 order by goods_id desc";//查找出的结果按商品ID的降序排列,即最后添加的最先显示。
        IDataReader drnew = common.GetDataReader(sql); //从数据库读出最新添加的商品
        string ret = "";
        int i = 1;
        string goodsname = "";
        while (drnew.Read())
        {
            if (drnew ["goods_name"].ToString().Length< 8) //判断商品名称长度,若小于8则直接将值赋给proname,若不是则赋给前八个字
            {
                goodsname = drnew ["goods_name"].ToString();
             }
            else
            {
                goodsname = drnew ["goods_name"].ToString().Substring(0, 8);
             }
            if (i != 3)
                {
                    ret += "<td ><table height='150' border='0' align='center' cellpadding='0' cellspacing='0'><tr><td height='130' align='center'><a href='goods.aspx?id=" + drnew["goods_id"].ToString() + "' class='top1' target='_blank'><img src='upload/" + drnew["goods_img"].ToString() + "' width='120' height='120' border='0'></a></td></tr><tr><td height='20' align='center'><a href='goods.aspx?id=" + drnew["goods_id"].ToString() + "' class='top1' target='_blank'>" + goodsname + "</a></td>     </tr>   <tr>  <td align='center'><span class='top2'>¥" + WebCommon.common.strFormatmoney(drnew["goods_price"].ToString()) + "</span></td> </tr>  </table></td>";
                }
            else 
            {
                ret += "</tr><tr><td ><table height='150' border='0' align='center' cellpadding='0' cellspacing='0'><tr><td height='130' align='center'><a href='goods.aspx?id=" + drnew["goods_id"].ToString() + "' class='top1' target='_blank'><img src='upload/" + drnew["goods_img"].ToString() + "' width='120' height='120' border='0'></a></td></tr><tr><td height='20' align='center'><a href='goods.aspx?id=" + drnew["goods_id"].ToString() + "' class='top1' target='_blank'>" + goodsname + "</a></td>     </tr>   <tr>  <td align='center'><span class='top2'>¥" + WebCommon.common.strFormatmoney(drnew["goods_price"].ToString()) + "</span></td> </tr>  </table></td>";
            }
            i++;
        } //从数据库读出数据并显示于页面
        drnew.Close();//关闭数据库
        return ret;
}
其中:
public static string strFormatmoney(string str)
        {            
            str = str.Replace(".0000", ".00");
            return str;
        } //格式化货币

public static IDataReader GetDataReader(string sql)
    {
        Database db = DatabaseFactory.CreateDatabase();
        IDataReader dr = db.ExecuteReader(CommandType.Text, sql);
        return dr; 
 }//返回DataReader


6.2    用户管理页面


在用户管理的首页,我们可以看到用户的详细资料,界面如图6-4所示(此图为有商家权限用户的界面):


代码如下:
public string main() 
    {
        string sql = "select * from web_user where user_name='" + Session["webusername"] + "'";
        IDataReader dr = common.GetDataReader(sql);
        dr.Read();
        Label1.Text = dr["user_name"].ToString();
        Label2.Text = dr["user_email"].ToString();
        Label3.Text = dr["user_truename"].ToString();
        Label4.Text = dr["user_idcard"].ToString();
        Label5.Text = dr["user_mobile"].ToString();
        Label6.Text = dr["user_tel"].ToString();
        Label7.Text = dr["area_class1"].ToString();
        Label8.Text = dr["area_class2"].ToString();
        Label9.Text = dr["user_address"].ToString();
        Label10.Text = dr["user_postalcode"].ToString();
         Label11.Text = dr["user_date"].ToString();
        int s = int.Parse(dr["shop_id"].ToString());
        string str;
        if (s == 0)
        {
            str = "<tr><td height='30' class='top1'>您还未注册为卖家,想要卖商品请点击左边的<span class='top2'>成为卖家</span></td></tr>";
        }
        else {
            str = "<tr><td height='30' class='top1'>您已经是卖家了哦,想要卖商品请点击左边的<span class='top2'>添加商品</span></td></tr>";
        }
        return str;
        dr.Close();
}
卖家添加商品首先选择商品分类,其界面如图6-5所示:


代码如下:
protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            if (Session["webusername"] == null) //判断Session值是否为空,如果为空则跳到登录页面
            {
                Response.Redirect("user/login.aspx");
            }
            init2();
            ListBox2.Enabled = true;// 实例化并启动一个新的工作线程,稍后将添加工作线程本身的功能
            ListBox3.Enabled = false;//终止该工作线程
            Button1.Enabled = false;
        }
    }
    protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)//通过ListBox1的动作显示ListBox2的内容
    {
        string sql = "select * from web_goods_class2 where goods_class1='" + ListBox1.SelectedValue + "'";
        ListBox2.Enabled = true;
        ListBox3.Enabled = false;
        Button1.Enabled = false;
        ListBox2.DataSource = common.GetDataReader(sql);
        ListBox2.DataTextField = "goods_class2";
        ListBox2.DataValueField = "goods_class2";
        ListBox2.DataBind();
        initlabel();//显示Label1中的内容,即所选择的添加商品的分类
    }
    public void init2()//初始化ListBox1
    {
        string sql = "select * from web_goods_class1 order by goods_class1_id";
        ListBox1.DataSource = common.GetDataReader(sql);
        ListBox1.DataTextField = "goods_class1";
        ListBox1.DataValueField = "goods_class1";
        ListBox1.DataBind();
    }
    protected void ListBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        string sql = "select * from web_goods_class3 where goods_class2='" + ListBox2.SelectedValue + "'";
        ListBox3.Enabled = true;
        Button1.Enabled = false;
        ListBox3.DataSource = common.GetDataReader(sql);
        ListBox3.DataTextField = "goods_class3";
        ListBox3.DataValueField = "goods_class3";
        ListBox3.DataBind();
        initlabel();
    }
    protected void ListBox3_SelectedIndexChanged(object sender, EventArgs e)
    {
        Button1.Enabled = true;
        initlabel();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Redirect("addgoods.aspx?type=" + ListBox3.SelectedValue);//进入商品详细资料添加页面
    }
    public void initlabel()
    {
        string strlistbox1 = "";
        string strlistbox2 = "";
        string strlistbox3 = "";
        if (ListBox2.SelectedValue != "")
        {
            strlistbox2 = " > " + ListBox2.SelectedValue;
        }
        if (ListBox3.SelectedValue != "")
        {
            strlistbox3 = " > " + ListBox3.SelectedValue;
        }
        Label1.Text = ListBox1.SelectedValue + strlistbox2 + strlistbox3;
    }
商品详细资料添加界面如图6-6所示: 


代码如下:
protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            if (Session["webusername"] == null)
            {
                Response.Redirect("user/login.aspx");//返回错误信息
            }
            else if (Request["type"] == null) 
            {
                Response.Redirect("sell.aspx");
            }
            Init2();//初始化界面
        }
    }
    protected void BtnSave_Click(object sender, EventArgs e)
    {
        if (checkRequest() == false)
        {
            return;
        }
        try
        {
            string nam = FileUpload1.PostedFile.FileName;
            string upload3 = "img1.jpg";
            if (FileUpload1.HasFile == true)
            {
                int i = nam.LastIndexOf(".");//取得文件名(包括路径)里最后一个"."的索引
                string newext = nam.Substring(i).ToLower();//取得文件扩展名
                if (newext == ".gif" || newext == ".jpg" || newext == ".jpeg" || newext == ".bmp")
                {
                    
                    string savePath1 = Server.MapPath("~/upload/");
                    string savePathsmall = Server.MapPath("~/smallupload/");//生成缩略图
                    savePath1 += FileUpload1.PostedFile.ContentLength.ToString() + newext;
                    savePathsmall += FileUpload1.PostedFile.ContentLength.ToString() + newext;
                    FileUpload1.SaveAs(savePathsmall);
                    WebCommon.common.MakeSLT(savePathsmall, savePath1);
                    upload3 = FileUpload1.PostedFile.ContentLength.ToString() + newext;
                }
                else
                {
                    Response.Write("<script>alert('你上传的图片格式不对,正确的图片格式为gif,jpg,jpeg,bmp!');</script>");
                    return;
                }
            }
            string image = upload3;//图片
            string goodsdes = WebCommon.common.strFormat(TextBox1.Text);//产品详细信息
            string username = Session["webusername"].ToString();//商家登陆名
            string goodsdate = DateTime.Now.ToShortDateString();
            string sql = "insert into web_goods(goods_name,goods_price,goods_tranprice,goods_img,goods_description,goods_startdate,goods_enddate,goods_date,goods_class3,user_name,goods_brandtype,goods_audit,goods_vip)values('" + Txtgoodsname.Text + "','" + Txtgoodsprice.Text + "','" + Txtgoodstranprice.Text + "','" + image + "','" + goodsdes + "','" + Txtgoodsstartdate.SelectedValue + "','" + Txtgoodsenddate.SelectedValue + "','" + goodsdate + "','" + Label22.Text + "','" + username + "','" + TxtBand.Text + "','0','0')";
            if (common.ExecuteSql(sql) == "1")
            {
                Response.Write("<script>alert('你添加的信息已经成功提交。');</script>");
                TextBox1.Text = "";
                Txtgoodsname.Text = "";
                string sql2 = "update web_shop set shop_goods_number=shop_goods_number+1 where user_name=" + username;
                common.ExecuteSql(sql2);
            }
            else
            {
                Response.Write("<script>alert('抱歉,添加信息错误,请检查信息是否正确。');</script>");
            }
        }
        catch
        {
            Response.Write("<script>alert('抱歉,添加信息错误,请检查信息是否正确。');</script>");
        }
    }

    private void Init2()
    {
        //商品类型初始化      
        Label22.Text = Request["type"].ToString();
        //商品出售开始时间初始化 
        //商品出售结束时间初始化
        DateTime t = DateTime.Now;
        Txtgoodsenddate.Items.Add(t.AddDays(40).ToShortDateString());
        for (int i = 0; i < 40; i++)
        {
            Txtgoodsstartdate.Items.Add(t.AddDays(i).ToShortDateString());
            Txtgoodsenddate.Items.Add(t.AddDays(i).ToShortDateString());
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Redirect("sell.aspx");//跳转到修改商品分类页面
    }
    public bool checkRequest()
    {
        if (Txtgoodsname.Text == "")
        {
            Response.Write("<script>alert('请输入商品名称');</script>");
            return false;
        }
        else if (Txtgoodsprice.Text == "")
        {
            Response.Write("<script>alert('请输入商品价格');</script>");
            return false;
        }
        else if (Txtgoodstranprice.Text == "")
        {
            Response.Write("<script>alert('请输入商品运费');</script>");
            return false;
        }
        else if (TextBox1.Text == "")
        {
            Response.Write("<script>alert('请输入产品描述');</script>");
            return false;
        }
        else
        {
            return true;
        }
    }
订单查询页面(以下是商家部分,买家类似),界面如图6-7所示:


代码如下:
protected void DataGrid1_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
    {
        DataGrid1.CurrentPageIndex = e.NewPageIndex;
        string sql = "select * from web_list where sell='" + Session["webusername"].ToString() + "' order by list_date desc";
        DataGrid1.DataSource = common.GetDataSet(sql);
        DataGrid1.DataKeyField = "list_id";
        DataGrid1.DataBind();
    }
其中:
public static DataSet GetDataSet(string sql)
    {
        Database db = DatabaseFactory.CreateDatabase();
        DataSet ds= db.ExecuteDataSet(CommandType.Text, sql);
        return ds;
    }


6.3    购买商品


购买商品页面部分代码如下:
protected void Button1_Click(object sender, EventArgs e)
    {
            string sql="select * from web_goods where goods_id='"+Request["id"]+"'";
            IDataReader dr = common.GetDataReader(sql);
            dr.Read();
            int gnum = int.Parse(dr["goods_number"].ToString());//将字符串转换成int型数据,方便下面的比较
            int bnum=int.Parse(this.Txtgoodsnumber.Text);
            if (bnum < 0 || bnum > gnum)//判断商品购买数量是否超出范围
            {
                Response.Write("<script>alert('您输入的商品数量不正确');</script>");
            }
            else { 
                string strdate = DateTime.Now.ToShortDateString();
                string str = "等待发货";
                string sql = "insert into web_list(buy,sell,goods_id,goods_name,goods_number,list_price,list_date,list_condition)values('" + Session["webusername"].ToString + "','" + dr["user_name"].ToString + "','" + dr["goods_id"].ToString() + "','" + dr["goods_name"].ToString() + "','" + this.Txtgoodsnumber.Text + "'," + this.Txtallprice.Text + ",'" + strdate + "','" + str + "')";
                common.ExecuteSql(sql);//将数据存入数据库
                  Response.Write("<script>alert('您已订购成功,请等待卖家联系'); document.location='Default.aspx';</script>");//返回商品订购成功信息,并跳转到首页
            }
            dr.close();
    }
购买商品界面如图6-8所示:


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/10969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Swift 使用枚举协议CaseIterable遍历枚举所有值

在Swift中&#xff0c;可以使用.allCases属性来枚举一个符合CaseIterable协议的枚举的所有情况。使用不同的方法&#xff0c;如for-in循环&#xff0c;reduce&#xff0c;filter和map函数&#xff0c;你可以迭代一个枚举。 什么是CaseIterable协议&#xff1f; CaseIterable是…

香港虚拟主机哪里可以试用?用于企业建站的

香港虚拟主机适合个人、企业建站&#xff0c;包括外贸企业网站、个人博客网站、中小企业官网等&#xff0c;那么作为新手不知道哪家香港虚拟主机好用的时候&#xff0c;该如何找到可以试用的香港虚拟主机呢&#xff1f; 香港虚拟主机也称作香港空间、香港虚拟空间&#xff0c;…

【Unity】Unity项目转抖音小游戏(二)云数据库和云函数

业务需求&#xff0c;开始接触一下抖音小游戏相关的内容&#xff0c;开发过程中记录一下流程。 抖音云官方文档&#xff1a;https://developer.open-douyin.com/docs/resource/zh-CN/developer/tools/cloud/develop-guide/cloud-function-debug 1.开通抖音云环境 抖音云地址&a…

C++string 类的常用方法

string (构造函数) (1) default 构造长度为零字符的空字符串。 (2) copy 构造 str 的副本。 (3) substring 复制从字符位置 pos 开始并跨越 len 字符的 str 部分&#xff08;如果任一 str 太短或 len 为 string&#xff1a;&#xff1a;npos&#xff0c;则复制 str 的末尾…

代码随想录训练营Day30:动态规划2

1.62不同路径 dp[i][j]数组的定义&#xff1a;到达坐标&#xff08;i&#xff0c;j&#xff09;所需要的路径个数。递推公式&#xff1a;dp[i][j] dp[i-1][j]dp[i][j-1];//到达&#xff08;i&#xff0c;j&#xff09;的上一步只能是从上面到或者左边到初始化&#xff1a;对于…

Leaflet.canvaslabel在Ajax异步请求时bindPopup无效的解决办法

目录 前言 一、场景重现 1、遇到问题的代码 2、问题排查 二、通过实验验证猜想 1、排查LayerGroup和FeatureGroup 2、排查Leaflet.canvaslabel.js 三、柳暗花明又一村 1、点聚类的办法 2、歪打正着 总结 前言 在上一篇博客中介绍了基于SpringBoot的全国风景区WebGIS按…

Flutter 中的 Card 小部件:全面指南

Flutter 中的 Card 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;Card 是一个用于呈现内容的容器&#xff0c;它带有圆角边缘和阴影效果&#xff0c;常用于展示信息块&#xff0c;如用户头像、相册、笔记或任何需要突出显示的内容。Card 小部件提供了一种简单而直观的…

unity---常用API

1. Vector3&#xff1a;结构体由x、y、z这3个数值组成&#xff0c;表示一个向量 magnitude变量返回该向量的长度normalized变量返回 magnitude 为 1 时的该向量zero静态变量Vector3(0, 0, 0)one静态变量Vector3(1, 1, 1)forward静态变量Vector3(0, 0, 1)back静态变量Vector3(0…

Flutter 中的 Stack 小部件:全面指南

Flutter 中的 Stack 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;Stack 是一个用于叠加多个小部件的布局小部件。它允许你将多个小部件重叠放置&#xff0c;通过控制每个小部件的位置和大小&#xff0c;你可以创建出复杂的布局效果&#xff0c;如徽章图标、对话框、…

pandas DataFrame 常用遍历方法

在Pandas中&#xff0c;可以使用多种方法遍历DataFrame中的数据。以下是几种常见的方法&#xff1a; 基于索引遍历DataFrame的每一行。 基于行号遍历DataFrame的每一行, 该方式通过行号获取行数据信息&#xff0c;格式为Series&#xff0c;无法获取改行的index信息。 使用iterr…

1.8. 离散时间鞅-无界停时定理与随机游走

无界停时定理与随机游走 无界停时定理与随机游走1. 无界停时定理1.1. 一致可积1.2. 非一致可积2. 应用于随机游动-鞅方法2.1. 随机游走构造的鞅2.2. 对称简单随机游走无界停时定理与随机游走 1. 无界停时定理 本节给出一致可积下鞅的无界停时定理,说明一致可积下鞅的停止过程…

Agent AI智能体:未来社会的角色、发展与挑战

Agent AI智能体在未来社会中的角色、发展路径以及可能带来的挑战是一个非常值得关注的话题。让我们来深入探讨一下这些方面。 1. 角色与应用场景 Agent AI智能体是指具有自主决策能力和执行能力的人工智能系统&#xff0c;它们可以代表个人或组织执行各种任务和活动。在未来社…

大学课程中的算法java实现【学习算法】

大学课程中的算法java实现【学习算法】 前言前言推荐离散数学Warshall算法 P102可达性矩阵 P187欧拉图 Fleury算法 P201最小生成树 P234哈夫曼数 P240 数据结构与算法计算机操作系统最后 前言 这是陈旧已久的草稿2023-04-22 23:20:38 这是准备自己用java实现大学课程中所有遇…

免疫优化算法(Immune Optimization Algorithm)

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 算法背景 免疫算法是一种模拟生物免疫系统的智能优化算法。想象一下&#xff0c;当我们的身体遇到病毒或细菌侵袭时&#xff0c;免疫系统会启动…

mysql 事物

MySQL中的事务&#xff08;Transaction&#xff09;是一个确保数据完整性和一致性的重要概念。它将一组SQL操作捆绑在一起&#xff0c;当作一个单一的工作单元来执行。事务具备以下四个关键特性&#xff0c;即ACID特性&#xff1a; 原子性&#xff08;Atomicity&#xff09;&am…

DHCP原理

什么是DHCP DHCP (Dynamic Host Configuration Protocol,动态主机配置协议&#xff09;是由Internet工作任务小组设计开发的&#xff0c;专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议&#xff0c;是一个应用层协议&#xff0c;使用UDP的67和68端口。 DHCP的前身是B…

Windows下安装 Emscripten 详细过程

背景 最近研究AV1编码标准的aom编码器&#xff0c;编译的过程中发现需要依赖EMSDK&#xff0c;看解释EMSDK就是Emscripten 的相应SDK&#xff0c;所以此博客记录下EMSDK的安装过程&#xff1b;因为之前完全没接触过Emscripten 。 Emscripten Emscripten 是一个用于将 C 和 …

[hpssupfast@mailfence.com].Elbie勒索病毒如何恢复数据和预防

[hpssupfastmailfence.com].Elbie是一种新型勒索病毒,快速恢复重要数据请添加技术服务号(safe130)。以下是关于elbie勒索病毒的详细信息&#xff1a; 病毒介绍&#xff1a; elbie勒索病毒&#xff0c;也称为PHOBOS勒索软件&#xff0c;它通过加密文件并要求支付赎金以恢复对文…

涉案财物管理系统|DW-S405系统全国都有案例

涉案财物管理系统&#xff08;智财物&#xff1a;DW-S404&#xff09;是一套成熟系统&#xff0c;依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对涉密载体进行统一管理、分析的信息化、智能化、规范化的系统。 涉案财物管理系统主要实现对涉案物品进…

RisingWave基本操作

什么是RisingWave RisingWave 是一款基于 Apache 2.0 协议开源的分布式流数据库。RisingWave 让用户使用操作传统数据库的方式来处理流数据。通过创建实时物化视图&#xff0c;RisingWave 可以让用户轻松编写流计算逻辑&#xff0c;并通过访问物化视图来对流计算结果进行及时、…