当前位置: 首页 > news >正文

大连网站开发工资网络推广公司服务内容

大连网站开发工资,网络推广公司服务内容,新网站seo怎么优化,湖南省人民政府办公厅欢迎来到《小5讲堂之知识点实践序列》文章,大家好,我是全栈小5。 这是2024年第3篇文章,此篇文章是C#知识点实践序列文章,博主能力有限,理解水平有限,若有不对之处望指正! 本篇在Lock锁定代码块基…

欢迎来到《小5讲堂之知识点实践序列》文章,大家好,我是全栈小5。
这是2024年第3篇文章,此篇文章是C#知识点实践序列文章,博主能力有限,理解水平有限,若有不对之处望指正!
本篇在Lock锁定代码块基础上进行简单解决并发问题,确保不会出现重复数据。

在这里插入图片描述

目录

  • 前言
  • 实践场景
    • 用户编码重复
      • 效果
      • 代码
    • 用户编码唯一
      • 效果
      • 代码
  • 并发基本概念

在这里插入图片描述

前言

前两篇文章已经回顾基本概念一级Lock锁定代码块的实践例子,以及简单了解了多线程的基本信息。

实践场景

有一个用户注册的功能,通过简单并发测试,在不进行索引等情况下,对比加锁和不加锁,用户表重复记录情况

用户编码重复

在并发情况下,如果方法代码和数据库没有做唯一处理,那么进行用户注册时,用户编码重复概率是很大的。
下面是逻辑是,设置3个异步方法模拟3个并发访问,他们之间就极有可能是同时执行同一个方法,用户编码就可能会重复。

效果

在这里插入图片描述

  • 重复数据
    从下图可以知道,GZ0008、GZ0018、GZ00021,这就会出现重复了,相对于用户编码就不是唯一,也就无法满足实际场景。
    在这里插入图片描述

代码

namespace XxxData
{/// <summary>/// 解决数据重复/// </summary>public partial class LockUser : Form{public LockUser(){InitializeComponent();CheckForIllegalCrossThreadCalls = false;}private void Form1_Load(object sender, EventArgs e){}int userCodeIndex = 0;private void TargetData(){userCodeIndex += 1;txtInfo.AppendText($"GZ{userCodeIndex.ToString().PadLeft(5, '0')}\r\n");}private void btnA_Click(object sender, EventArgs e){// ===模拟并发===// 用户并发a区域Task.Run(() =>{for(int i = 0; i < 10; i++){TargetData();Thread.Sleep(10);}});// 用户并发b区域Task.Run(() =>{for (int i = 0; i < 10; i++){TargetData();Thread.Sleep(10);}});// 用户并发c区域Task.Run(() =>{for (int i = 0; i < 10; i++){TargetData();Thread.Sleep(10);}});}}
}

用户编码唯一

基于用户编码唯一原则,那么解决的方法有很多,这里我们通过锁定代码块的方式来解决,也就是同步机制来解决。
同步机制的最大特点就是,即使有多个请求同一时间调用同一个方法,它也会遵循一个一个执行完,从而用户编码也只会顺序叠加。

效果

  • 方法部分锁
int userCodeIndex = 0;
private void TargetData(int num)
{txtInfo.AppendText($"用户【{num}】进入方法,等待添加!\r\n");lock (this){userCodeIndex += 1;txtInfo.AppendText($"GZ{userCodeIndex.ToString().PadLeft(5, '0')}\r\n\r\n");}
}

在这里插入图片描述

  • 方法全部锁
int userCodeIndex = 0;
private void TargetData(int num)
{lock (this){txtInfo.AppendText($"用户【{num}】进入方法,等待添加!\r\n");userCodeIndex += 1;txtInfo.AppendText($"GZ{userCodeIndex.ToString().PadLeft(5, '0')}\r\n\r\n");}
}

在这里插入图片描述

代码

namespace XxxData
{/// <summary>/// 解决数据重复/// </summary>public partial class LockUser : Form{public LockUser(){InitializeComponent();CheckForIllegalCrossThreadCalls = false;}private void Form1_Load(object sender, EventArgs e){}int userCodeIndex = 0;private void TargetData(int num){lock (this){txtInfo.AppendText($"用户【{num}】进入方法,等待添加!\r\n");userCodeIndex += 1;txtInfo.AppendText($"GZ{userCodeIndex.ToString().PadLeft(5, '0')}\r\n\r\n");}}private void btnA_Click(object sender, EventArgs e){// ===模拟并发===// 用户并发a区域Task.Run(() =>{for(int i = 0; i < 10; i++){TargetData(i + 1);Thread.Sleep(10);}});// 用户并发b区域Task.Run(() =>{for (int i = 10; i < 20; i++){TargetData(i + 1);Thread.Sleep(10);}});// 用户并发c区域Task.Run(() =>{for (int i = 20; i < 30; i++){TargetData(i + 1);Thread.Sleep(10);}});}}
}

并发基本概念

C# 并发与方法和 API 接口请求之间有一些关联和区别:
1.并发方法调用:在 C# 中,可以使用多线程或任务并发地调用方法。这种方式适用于需要同时执行多个方法并获得结果的场景。通过多线程或任务的并发,可以提高系统的响应能力和吞吐量。

2.API 接口请求:API 接口请求是通过网络协议发送请求,获取相应的资源或执行操作。在 C# 中,可以使用异步或并发技术来发起多个 API 请求,以提高性能和并发处理能力。常见的方式包括使用异步/等待模式、多线程或任务并发等。

3.并发控制:并发方法调用和 API 接口请求都需要考虑并发控制的问题。在多个线程或任务同时访问共享资源时,可能会出现竞态条件等并发问题。C# 中提供了锁、互斥体、信号量等机制来实现并发控制,以确保共享资源的安全访问。

总结:温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。

http://www.qdjiajiao.com/news/12904.html

相关文章:

  • bootstrap 网站登录模板百度站长链接提交
  • 外贸网站建设推广公司价格百度关键词推广一年多少钱
  • 做创新方法工作网站长沙seo网络优化
  • 网站分哪些种类吉林seo推广
  • 北京网站建设及推广招聘济南seo优化外包服务
  • 做logo的著名网站网址大全导航
  • 做网站建设的前景网站推广优化技巧
  • 网站前台的实现北京网络营销推广外包
  • 做推广的网站名称推广方案的内容有哪些
  • 做网站不给源代码怎么做线上推广
  • 微信里的小程序怎么制作方法详细描述如何进行搜索引擎的优化
  • 阿里云Windows网站建设网络运营主要做什么工作
  • 中国矿井建设相关媒体网站电商网站建设方案
  • 网站项目建设人员规划seo方法培训
  • 小说推广接单平台太原优化排名推广
  • 全国建设厅网站网络营销推广方法有哪些
  • 网站开发通用流程图关键词首页排名代做
  • 国内建设地铁的公司网站seo综合查询站长工具关键词
  • 做群头像的网站在线淘宝关键词挖掘工具
  • 网站维护很难吗如何在百度上开店铺
  • 网站开发保障合同济南百度公司
  • 什么网站做国外批发出词
  • 公司网站内容的更新seo对网店推广的作用
  • 网站已经编辑好了 上线准备哪些工作微信小程序开发文档
  • 厦门哪家做网站好三亚百度推广开户
  • 做网站推广 seo的家庭优化大师下载
  • 甘肃住房建设厅的网站百度竞价排名算法
  • 东莞最新网站建设软件电脑优化软件哪个好用
  • discuz是什么东西搜索引擎优化的方法有哪些?
  • 旅游网站项目评估微信推广软件哪个好