集合1 为什么使用并发集合?原因主要有以下几点:System.Collections和System.Collections.Generic名称空间中所提供的经典列表、集合和数组都不是线程安全的,若无同步机制,他们不适合于接受并发的指令来添加和删除元素。在并发代码中使用上述经典集合需要复杂的同步管理,使用起来很不方便。使用复杂的同步机制会大大降低性能。NET Framework 4所提供的
一般情况下,只要涉及到多线程编程,程序的复杂性就会显著上升,性能显著下降,BUG出现的概率大大提升。多线程编程本意是将一段程序并行运行,提升数据处理能力,但是由于大部分情况下都涉及到共有资源的竞争,所以修改资源对象时必须加锁处理。但是锁的实现有很多种方法,下面就来一起了解一下在C#语言中几种锁的实现与其性能表现。几种锁的运用方式1、原子锁通过原子操作Interlocked.CompareExcha
转载 2023-08-08 15:56:41
184阅读
# .NET Core 队列详解 ## 1. 什么是队列队列是一种常见的数据结构,它按照“先进先出”(First-In-First-Out,FIFO)的原则存储和访问数据。类比于现实生活中排队等候的场景,新来的人必须排在队伍的末尾,而最先到达的人则会最先离开队列。 在计算机科学中,队列通常用于解决需要按照特定顺序处理任务的问题。例如,当多个请求同时到达服务器时,服务器需要按照请求的先后顺
原创 2023-08-24 06:55:24
303阅读
 1.基本概念多线程与异步是两个不同概念,之所以把这两个放在一起学习,是因为这两者虽然有区别,但也有一定联系。    多线程是一个技术概念,相对于单线程而言,多线程是多个单线程同时处理逻辑。例如,假如说一个人把水从A地提到B点可看作是单线程,那么如果两个人同时去做事(可以是相同的一件事,也可以是不同的一件事)就可以看作是两个线程。    异步:记得
转载 2023-08-08 12:00:05
252阅读
一、项目场景:添加任务并设定任务的执行时间,然后按时间顺序由近到远依次执行。二、思路:可以利用redis的有序集合(SortedSet),用时间戳排序实现,大概的流程如下。三、关键思路&代码段写入任务使用任务下一次的执行时间按分钟生成key,将同一分钟待执行的任务放到一个key中,这一步主要思考的问题是:拆分队列,设置各自的过期时间,如:过期时间 = 执行时间 + 5分钟,保证过期的队列
转载 2023-06-10 22:12:29
296阅读
介绍支持多语言使网站可以覆盖更广泛的受众。 ASP.NET Core 提供的服务和中间件可将网站本地化为不同的语言。本次示例环境:vs2019、net5配置无需引用Nuget包即可实现以下功能。注入容器services.AddLocalization(t => { t.ResourcesPath = "Language"; });启用配置var supportedCultures =
转载 2023-06-09 13:56:44
83阅读
# .NET CORE队列处理 ## 概述 在本文中,我将教会你如何使用.NET Core来进行队列处理。队列是一种非常常见的数据结构,用于实现异步消息传递和任务处理。我们将使用.NET Core提供的内置类库来创建和管理队列,以及处理队列中的消息。 ## 整体流程 以下是我们实现.NET Core队列处理的整体流程: | 步骤 | 描述 | | --- | --- | | 1 | 创建队列
原创 2023-08-27 11:46:37
180阅读
在现代的软件开发中,使用消息队列来实现异步通信已经越来越普遍。.Net Core框架提供了一种简单而灵活的方式来处理消息队列,本文将介绍如何在.Net Core中实现消息队列,并通过代码示例来演示整个过程。 ### 消息队列实现流程 下面是实现“.Net Core 消息队列”过程的具体步骤: | 步骤 | 描述 | |---|---| | 1 | 安装消息队列中间件(例如RabbitMQ)
原创 3月前
63阅读
## .NET Core 消息队列 消息队列是一种在分布式系统中用于实现异步通信的机制。它允许应用程序通过将消息发送到队列中,而不是直接与其他应用程序进行通信来进行解耦,从而提高了系统的可扩展性和可靠性。在本文中,我们将介绍如何使用.NET Core构建和使用消息队列。 ### 消息队列的优势 使用消息队列有以下几个优点: 1. **解耦**:通过将消息发送到队列中,发送者和接收者之间的依
原创 2023-07-18 07:50:54
157阅读
1、单例(AddSingleton :注入一次,一直有效)区别: 服务在第一次请求时被创建,后边再次请求都会沿用这个已创建的服务。2、作用域(AddScoped :在一定的区域内 有效)区别:服务在每次请求时被创建,整个请求过程中都会使用这个创建的服务3、瞬时(AddTransient :每次请求都不一样 每次请求 都会重新new 一个新对象作用域)演示生命周期services.AddTransi
转载 2023-07-10 19:37:29
154阅读
 本篇介绍一下RabbitMQ中的消费模式,在前边的所有栗子中我们采用的消费者都是EventingBasicConsumer,其实RabbitMQ中还有其他两种消费模式:BasicGet和QueueBaicConsumer,下边介绍RabiitMQ的消费模式,及使用它们时需要注意的一些问题。1 RabbitMQ的消费模式0 准备工作  使用Web管理工具添加exchange、queue并绑定,bi
转载 4月前
33阅读
1.什么是阻塞队列       我们知道,PriorityQueue、LinkedList这些都是非阻塞队列。在我们使用非阻塞队列的时候有一个很大问题,它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就不一样了,它会对当前线程产生阻塞,比如一个线程从一个空的阻
转载 2023-05-24 10:47:20
143阅读
在面试过程中,面试官常常会讨论多线程问题,在开发过程中,也有很多工作我们都需要去开线程来解决。.NET多线程编程上提供了多种API,线程、异步、任务、并行计算这些又有什么异同,该如何选择呢,今天让我们来讨论一下。首先,我们要给几个概念做一个简单定义。并发编程:并发同时做多件事情。多线程多线程是并发的一种形式,它采用多个线程来执行程序。异步编程:并发的一种形式,采用回调(callback)机制,
前言:博主昨天在用C#写毕设的时候遇到了一个问题,就是博主的发送命令,需要循环发送,但是要我的接收是有1秒延时,于是就出现了,我循环发送命令,最后只收到了,最后两条命令的值,于是在一些大佬群里问有没有人会C#的线程锁,得到的答复是这门语言用的人很少,于是博主翻阅资料自学了一下,学了之后就想写出来和大家一起分享一下,除了线程锁,顺带提一下多线程,写的不好,不喜勿喷。1.首先看看我们的问题我们可以看到
CAP是什么?CAP是由我们园子里的杨晓东大神开发出来的一套分布式事务的决绝方案,是.Net Core Community中的第一个千星项目(目前已经1656 Start),具有轻量级、易使用、高性能等特点。 https://github.com/dotnetcore/CAP本博客主要针对易用性这一点,展开叙述,一起看看CAP如何结合EF Core和RabbitMQ带领小白轻松走入分布式
转载 2023-07-14 10:42:41
80阅读
本文主要介绍Entity Framework Core在ASP.NET Core
转载 2022-06-02 07:19:41
155阅读
前言大家好,我是阿辉。在C#语言中当需要处理并发的场景时,就需要程序员使用最合理的数据结构。那么哪些数据结构是支持和可以在并行计算中被使用的呢。首先这些数据结构具备可伸缩性,尽可能地避免锁(会造成多个线程的等待,防止资源竞争),同时还能提供线程安全的访问。在.NET Framework4.0中引入了System.Collections.Concurrent命名空间,其中就包含几个数据结构。Conc
锁机制用户模式锁易变构造互锁结构:Interlocked旋转锁:SpinLock内核模式锁事件锁信号量:Semaphore互斥锁:mutex读写锁:ReaderWriterLockCountDownEvent监视锁混合模式锁ManualResetEventSlimReaderWriterLockSlimSemaphoreSlim 在.net中锁机制很多,事件锁,信号量,互斥锁,读写锁,互锁,易
转载 2023-09-07 15:10:35
83阅读
package com.pjf.common.scheduler;import java.util.LinkedList;import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.LinkedBlockingQueue;import com.pjf.common.log.LoggerUtil;/**&nbsp
原创 2015-02-05 17:40:33
654阅读
场景是批量上传图片,所以使用了并发。因为服务器电脑也是有瓶颈的,且多线程也不能无限开。。      所以我在使用多线程异步上传的同时,同时控制线程并发的数量,线程数量达到阈值之后,得等待一个成功结束之后,再开启另一个新的线程。。主要使用:Task.WaitAny()  这个API,传一个线程数组, 等待其中一个执行完成,只等最快的一个执行完成。。每个线程在打
转载 2023-06-12 17:22:15
196阅读
  • 1
  • 2
  • 3
  • 4
  • 5