ASP.NET MVC Lock锁的测试
思路:我们让后台Thread.Sleep一段时间,来模拟一个耗时操作,而这个时间可以由前台提供。
我们开启两个或以上的页面,第一个耗时5秒(提交5000),第二个耗时1秒(提交1000)。
期望的测试结果:
不加Lock锁,第二个页面会先执行完,因为耗时短(1秒)。
加了Lock锁,第二个页面会一直等待,直到第一个页面执行完成后再进行。
后台:
public class DBController : Controller{/// <summary>/// 显示页面/// </summary>/// <returns></returns>[HttpGet]public IActionResult Concurrency(){return View();}/// <summary>/// 模拟耗时操作/// </summary>/// <returns></returns>[HttpPost]public IActionResult ConcurrencySubmit(string msec){if (!string.IsNullOrEmpty(msec)){System.Threading.Thread.Sleep(int.Parse(msec));LogHelper.Info("submit:" + msec);}return View("Concurrency");}}
前台页面 Concurrency.cshtml:
@using(Html.BeginForm("ConcurrencySubmit", "DB", FormMethod.Post))
{
@Html.TextBox("msec",1000)
<button>提交</button>
}
然后开两个页面,第一个5秒,第二个1秒,同时提交。
发现第二个页面先执行完毕了,因为耗时最短。
接下来我们使用Lock来进行防并发处理,修改后台代码:
public class DBController : Controller{private static object locker = new object();/// <summary>/// 显示页面/// </summary>/// <returns></returns>[HttpGet]public IActionResult Concurrency(){return View();}/// <summary>/// 模拟耗时操作/// </summary>/// <returns></returns>[HttpPost]public IActionResult ConcurrencySubmit(string msec){lock (locker){if (!string.IsNullOrEmpty(msec)){System.Threading.Thread.Sleep(int.Parse(msec));LogHelper.Info("submit:" + msec);}}return View("Concurrency");}}
同样的方法,再次提交。这次会发现第二个页面会等待,直到第一个页面执行完成后才执行
相关文章:
![](https://i-blog.csdnimg.cn/direct/b9b4b06aa21c4f03bd4df56e2b8aa815.png)
ASP.NET MVC Lock锁的测试
思路:我们让后台Thread.Sleep一段时间,来模拟一个耗时操作,而这个时间可以由前台提供。 我们开启两个或以上的页面,第一个耗时5秒(提交5000),第二个耗时1秒(提交1000)。 期望的测试结果: 不加Lock锁&…...
![](https://i-blog.csdnimg.cn/direct/7182560c663d4de9896dd11365df9ee1.png)
Hadoop3:HDFS-通过配置黑白名单对集群进行扩缩容,并实现数据均衡(实用)
一、集群情况介绍 我的本地虚拟机,一共有三个节点,hadoop102、hadoop103、hadoop104 二、白名单 创建白名单文件whitelist,通过白名单的配置,只允许集群包含102和103两台机器可以存储数据,104无法存储数据。 需求 …...
![](https://i-blog.csdnimg.cn/direct/1fe5f4d89e1d431da0684a2ee0b1bf75.png)
TensorFlow系列:第五讲:移动端部署模型
项目地址:https://github.com/LionJackson/imageClassification Flutter项目地址:https://github.com/LionJackson/flutter_image 一. 模型转换 编写tflite模型工具类: import osimport PIL import tensorflow as tf import keras import …...
![](https://i-blog.csdnimg.cn/direct/3f08f91c191144d4a2c9729c3053ce12.png)
深度学习DeepLearning二元分类 学习笔记
文章目录 类别区分变量与概念逻辑回归Sigmoid函数公式决策边逻辑损失函数和代价函数逻辑回归的梯度下降泛化过拟合的解决方案正则化 类别区分 变量与概念 决策边置信度阈值threshold过拟合欠拟合正则化高偏差lambda(λ) 线性回归受个别极端值影响&…...
![](https://www.ngui.cc/images/no-images.jpg)
Eureka 介绍与使用
Eureka 是一个开源的服务发现框架,它主要用于在分布式系统中管理和发现服务实例。它由 Netflix 开发并开源,是 Netflix OSS 中的一部分。 使用 Eureka 可以方便地将新的服务实例注册到 Eureka 服务器,并且让其他服务通过 Eureka 服务器来发现…...
![](https://i-blog.csdnimg.cn/direct/d241dd902daf4006a6e228055889142f.png)
Java异常体系、UncaughtExceptionHandler、Spring MVC统一异常处理、Spring Boot统一异常处理
概述 所有异常都是继承自java.lang.Throwable类,Throwable有两个直接子类,Error和Exception。 Error用来表示程序底层或硬件有关的错误,这种错误和程序本身无关,如常见的NoClassDefFoundError。这种异常和程序本身无关࿰…...
![](https://www.ngui.cc/images/no-images.jpg)
bash终端快捷键
快捷键作用ShiftCtrlC复制ShiftCtrlV粘贴CtrlAltT新建终端ShiftPgUp/PgDn终端上下翻页滚动CtrlC终止命令CtrlD关闭终端CtrlA光标移动到最开始为止CtrlE光标移动到最末尾CtrlK删除此处到末尾的所有内容CtrlU删除此处至开始的所有内容CtrlD删除当前字符CtrlH删除当前字符的前一个…...
![](https://www.ngui.cc/images/no-images.jpg)
【Visual Studio】Visual Studio报错合集及解决办法
目录 Visual Studio报错:error LNK2001 Visual Studio报错:error C2061 Visual Studio报错:error C1075 Visual Studio报错:error C4430 Visual Studio报错error C3867 概述 持续更细Visual Studio报错及解决方法 Visual Studio报错:error LNK2001 问题 : error LNK2001…...
![](https://i-blog.csdnimg.cn/direct/ec286151b88241b19de6b9154ba14cb8.png)
【微信小程序知识点】转发功能的实现
转发功能,主要帮助用户更流畅地与好友分享内容与服务。 想实现转发功能,有两种方式: 1.页面js文件必须声明onShareAppMessage事件监听函数,并自定义转发内容。只有定义了此事件处理函数,右上角菜单才会显示“转发”按…...
![](https://i-blog.csdnimg.cn/direct/0d570197d4974d60a4473055d36c544a.png)
用python识别二维码(python实例二十三)
目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.识别二维码 3.1 代码构思 3.2 代码实例 3.3 运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性&…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
电脑文件夹怎么设置密码?让你的文件更安全!
在日常使用电脑的过程中,我们常常会有一些需要保护的个人文件或资料。为了防止这些文件被他人未经授权访问,对重要文件夹设置密码是一种有效的保护措施,可是电脑文件夹怎么设置密码呢?本文将介绍2种简单有效的方法帮助您为电脑文件…...
![](https://i-blog.csdnimg.cn/direct/51817f202f4c45009a8866514f561cc7.png)
paddla模型转gguf
在使用ollama配置本地模型时,只支持gguf格式的模型,所以我们首先需要把自己的模型转化为bin格式,本文为paddle,onnx,pytorch格式的模型提供说明,safetensors格式比较简单请参考官方文档,或其它教…...
![](https://www.ngui.cc/images/no-images.jpg)
Memcached vs Redis——Java项目缓存选择
在Java项目开发中,缓存系统作为提升性能、优化资源利用的关键技术之一,扮演着至关重要的角色。Memcached和Redis作为两种流行的缓存解决方案,各有其独特的优势和应用场景。本文旨在通过分析项目大小、用户访问量、业务复杂度以及服务器部署情…...
![](https://img-blog.csdnimg.cn/img_convert/44c82031ab8761a7bfb2af9af8b4e2fc.png)
大模型最新黑书:基于GPT-3、ChatGPT、GPT-4等Transformer架构的自然语言处理 PDF
今天给大家推荐一本丹尼斯罗斯曼(Denis Rothman)编写的关于大语言模型(LLM)权威教程<<大模型应用解决方案> 基于GPT-3、ChatGPT、GPT-4等Transformer架构的自然语言处理>!Google工程总监Antonio Gulli作序,这含金量不…...
![](https://www.ngui.cc/images/no-images.jpg)
【电子数据取证】电子数据司法鉴定
文章关键词:电子数据取证、司法鉴定服务、司法鉴定流程 一、定义 什么是司法鉴定? 在诉讼活动中鉴定人运用科学技术或者专业知识对诉讼涉及的专门性问题进行鉴别和判断并提供鉴定意见的活动。 电子数据司法鉴定 那么电子数据司法鉴定,就…...
![](https://www.ngui.cc/images/no-images.jpg)
使用 OpenCV 的 inRange 函数进行颜色分割
使用 OpenCV 的 inRange 函数进行颜色分割 在图像处理领域,颜色分割是一个常见的任务,常用于识别和提取图像中的特定颜色区域。OpenCV 提供了一个非常方便的函数 inRange 来实现这一功能。在这篇博客中,我们将详细介绍 inRange 函数的用法&a…...
![](https://img-blog.csdnimg.cn/img_convert/bd60a6dfff3b286a1f7f775dad4af7d4.png)
OpenAI终止对中国提供API服务,对国内AI市场产生重大冲击?
6月25日,OpenAI突然宣布终止向包括中国在内的国家地区提供API服务,本月9日这一政策已经正式生效了! 有人说,这个事件给中国AI行业带来很大冲击!是这样吗?在展开讨论前,我们先来看看什么是API服务…...
![](https://i-blog.csdnimg.cn/direct/8f7a5cdc5b31409794669619b08be91d.png)
JavaDS —— 栈 Stack 和 队列 Queue
栈的概念 栈是一种先进后出的线性表,只允许在固定的一端进行插入和删除操作。 进行插入和删除操作的一端被称为栈顶,另一端被称为栈底 栈的插入操作叫做进栈/压栈/入栈 栈的删除操作叫做出栈 现实生活中栈的例子: 栈的模拟实现 下面是Jav…...
![](https://i-blog.csdnimg.cn/direct/50065b362f6e4f34987e0e31270d69dd.png)
C++进阶:继承和多态
文章目录 ❤️继承🩷继承与友元🧡继承和静态成员💛菱形继承及菱形虚拟继承💚继承和组合 ❤️多态🩷什么是多态?🧡多态的定义以及实现💛虚函数💚虚函数的重写💙…...
![](https://www.ngui.cc/images/no-images.jpg)
【八大排序】java版(上)(冒泡、快排、堆排、选择排序)
文章目录 一、冒泡排序(重点)思路代码 二、快排(面试重点)思路代码 三、堆排序(面试重点)思路代码 四、选择排序思路代码 一、冒泡排序(重点) 思路 前后两两数据进行比较,小的数据往前走,大的数据往后走,每一轮结束之后,最大的数…...
![](https://i-blog.csdnimg.cn/direct/1a12ad25914f4c22bf9c5d0efb955281.jpeg)
.Net Core 微服务之Consul(二)-集群搭建
引言: 集合上一期.Net Core 微服务之Consul(一)(.Net Core 微服务之Consul(一)-CSDN博客) 。 目录 一、 Consul集群搭建 1. 高可用 1.1 高可用性概念 1.2 高可用集群的基本原理 1.3 高可用集群的架构设计 1.3.1 主从复制架构 1.3.2 共享存储架构 1.3.3 负载均衡…...
![](https://www.ngui.cc/images/no-images.jpg)
C++ --> 类和对象(二)
前言 在前面简单的介绍了OOP,什么是类,在类中的this指针。接下来就深入理解类和对象。 默认成员函数 默认构造函数:用于在创建对象时初始化对象的成员变量。默认拷贝构造函数:用于使用已存在的对象来初始化新创建的对象。默认析构…...
![](https://i-blog.csdnimg.cn/direct/530fcc4158f241e885df88f59e43f4ff.png)
利用宝塔安装一套linux开发环境
更新yum,并且更换阿里镜像源 删除yum文件 cd /etc/yum.repos.d/ 进入yum核心目录 ls sun.repo rm -rf * 删除之前配置的本地源 ls 配置阿里镜像源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 配置扩展包 wge…...
![](https://www.ngui.cc/images/no-images.jpg)
VB 实例:掌握 Visual Basic 编程的精髓
VB 实例:掌握 Visual Basic 编程的精髓 引言 Visual Basic(简称VB)是一种由微软开发的高级编程语言,它结合了易于使用的界面和强大的编程功能,使得初学者和专业人士都能快速开发Windows桌面应用程序。本文将通过一系列实例,深入探讨VB编程的基础知识和高级技巧,帮助读…...
![](https://www.ngui.cc/images/no-images.jpg)
层次分析法:matlab代码实现
计算权重: 一、算术平均法 关于矩阵: 1、矩阵的输入写法 [ ; ; ]同行用空格或逗号隔开,不同行用分号间隔 2、矩阵求和 默认按列求和 asum(E) 等同于 asum(E,1) 得到行向量 按行求和 asum(E,2) 得到列向量 对整个矩阵求和 asum(E,"all&…...
![](https://www.ngui.cc/images/no-images.jpg)
07-7.5.3 处理冲突的方法
👋 Hi, I’m Beast Cheng 👀 I’m interested in photography, hiking, landscape… 🌱 I’m currently learning python, javascript, kotlin… 📫 How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…...
![](https://i-blog.csdnimg.cn/direct/3bf3dd0876be4832b88b773f9edfe34e.png)
几何距离与函数距离:解锁数据空间中的奥秘
几何距离:直观的空间度量 几何距离,顾名思义,是我们在几何学中熟悉的距离概念,如欧几里得距离、曼哈顿距离和切比雪夫距离等。这些距离度量直接反映了数据点在多维空间中的位置关系。 欧几里得距离:最为人熟知的几何距…...
![](https://img-blog.csdnimg.cn/img_convert/efa69c4b5211a702d1778044bca7d0bc.png)
LabVIEW的Actor Framework (AF) 结构介绍
LabVIEW的Actor Framework (AF) 是一种高级架构,用于开发并发、可扩展和模块化的应用程序。通过面向对象编程(OOP)和消息传递机制,AF结构实现了高效的任务管理和数据处理。其主要特点包括并发执行、动态可扩展性和强大的错误处理能…...
![](https://img-blog.csdnimg.cn/img_convert/61b9f9c89c009ea6605dc528a826a7f5.png)
gitlab 搭建使用
1. 硬件要求 ##CPU 4 核心500用户 8 核心1000用户 ##内存 4 G内存500用户 8 G内存1000用户 2. 下载 链接 3. 安装依赖 yum -y install curl openssh-server postfix wget 4. 安装gitlab组件 yum -y localinstall gitlab-ce-15.9.3-ce.0.el7.x86_64.rpm 5. 修改配置文…...
![](https://img-blog.csdnimg.cn/img_convert/088469de58d0543ada9f364ddbd25492.png)
探索JT808协议在车辆远程视频监控系统中的应用
一、部标JT808协议概述 随着物联网技术的迅猛发展,智能交通系统(ITS)已成为现代交通领域的重要组成部分。其中,车辆远程监控与管理技术作为ITS的核心技术之一,对于提升交通管理效率、保障道路安全具有重要意义。 JT8…...
![](https://img-blog.csdnimg.cn/20190402225132755.gif)
网站如何防注册机/今日新闻快讯
什么是句柄 维基百科:在程序设计中,句柄(handle)是Windows操作系统用来标识被应用程序所建立或使用的对象的整数。其本质相当于带有引用计数的智能指针。当一个应用程序要引用其他系统(如数据库、操作系统)…...
![](/images/no-images.jpg)
哪些网站有任务做/免费网页制作网站
常见分页步骤: Total: ? Page: ?/? Goto: ? |< < > >| 一、复制代码到指定的地方: <div style"float:right" mce_style"float:right" ><table border"0" cellpadding"0" cellsp…...
![](https://images2015.cnblogs.com/blog/133128/201601/133128-20160117164724022-930113010.png)
wordpress 复杂表单/推广app下载
在我们平时开发中会经常使用一些第三方开发的开源类库。这样会有效地提高我们开发项目的效率,在这里我找了好几十个进行一个汇总,供大家参考使用,方便大家在需要的时候能容易找到。 UI篇 awesome-ios-ui 提供了一些UI效果,有动画&…...
![](/images/no-images.jpg)
网站建设的公司哪家强/抖音关键词排名查询工具
OPC UAOPC统一架构(OPC Unified Architecture)是OPC基金会(OPC Foundation)创建的新技术,更加安全、可靠、中性(与供应商无关),为制造现场到生产计划或企业资源计划(ERP)系统传输原始数据和预处理信息。使用OPC UA技术,所有需要的信息可随时随…...
![](/images/no-images.jpg)
深圳罗湖网站建设公司/seo是什么岗位的缩写
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 import java.util.Stack;public class Solution {Stack<Integer> stack1 new Stack<Integer>();Stack<Integer> stack2 new Stack<Integer>();publi…...
![](/images/no-images.jpg)
网站备案网站要有内容吗/网站搜索优化找哪家
2019,5G的春风吹的正劲,吹到了紫禁城中,将故宫博物院吹成一座集数字化、信息化、智慧化于一身的“5G智慧故宫”。紫禁城的朱墙,矗立了600年后,被5G技术洞穿。通信技术的壁垒,发展了40多年,被来自…...