并发
-
控制并发:处理大量请求的策略与技术
控制并发是确保系统稳定性和性能的关键。通过使用线程池、异步编程、限流与排队、负载均衡、数据库连接池、缓存策略以及持续的监控与调优,可以有效地处理大量并发请求,为用户提供高质量的服务。
-
C# 并发设计的七条原则,你知道哪条?
并行(Parallelism)和并发(Concurrency)是两个不同的概念。并行是指同时执行多个任务,而并发则是指管理多个同时发生的活动。在设计系统时,要明确哪些任务可以并行执行,哪些任务只能并发执行。
-
Go 并发编程精粹:掌握通道(channels)的艺术
通道是 Go 并发编程的精髓,它为 goroutines 之间的通信和同步提供了一种高效且安全的方式。掌握了通道的使用,你将能够构建出既健壮又高效的并发应用程序。在 Go 的并发世界中,拥抱通道的力量,大胆尝试,你将开启一段精彩的编程之旅。
-
Go 哪里没有做好?Rob Pike 深刻反思了
从历史背景来看,在 Go 诞生的那个年代,并发编程是一个比较新颖的理念。许多其他编程语言、论文甚至书籍都写过关于并发编程的内容。并发编程还没有成为主流思想。
-
Java并发:如何避免死锁
一般出现死锁时,可能会导致CPU、内存等资源消耗过高,导致系统性能下降。也可能导致应用无响应或者假死等等,所以要从多角度进行死锁的排查。
-
没看过ReentrantLock源码,别说精通Java并发编程
看完了CountDownLatch的所有源码,是不是觉得CountDownLatch逻辑很简单。因为加锁流程的编排工作已经在父类AQS中实现,子类只需要实现具体的加锁逻辑即可,也就是实现tryReleaseShared()方法和tryAcquireShared()方法。而加锁逻辑也很简单,也就是修改同步状态state的值即可。
-
如何实现一个支持海量大并发的服务?
通过这样一个分布式的分层架构,海量的域名解析请求就被分摊到至少4层主机中了,再配合本地域名服务器的缓存,整个DNS系统中每台服务器的实际压力都会减少很多。于是看起来很恐怖的并发量,在众多服务器以及缓存的共同支撑之下,就显得不是那么困难了。
-
真等不及了,冲阿里去了!
联合索引遵循最左匹配原则,即在查询时,只有按照索引字段的顺序从最左边开始连续使用索引字段,索引才会被使用。因此,根据最常用作查询条件的字段放在联合索引的最左边,可以提高索引的利用率。
-
『单』线程能实现『并发』吗?
看到有人在也是回答“能”的情况下,说单线程实现的并发是“伪并发”,个人觉得这种说法是有问题的。并发就是并发,并不存在所谓“伪并发”。我大概也能猜到提出“伪并发”概念的人的意思,他认为的“真并发”其实是“并行”,其认为无法实现并行的并发就是“伪并发”。
-
没看过AQS源码,别说精通Java并发编程
AQS的源码逻辑比较复杂,很多开发者看见就头疼,逻辑众多,无法梳理清楚。原因就是开发者梳理源码的步骤出错了,刚开始就看AQS的加锁、释放锁逻辑,陷入细节中不能自拔。
-
Go 利用上下文进行并发计算,你学会了吗?
在测试中,我们期望 filterAll 会失败,因为我们设置的超时时间只有一纳秒。因此,上下文应该因为超过截止时间而发生错误。如果在启动 Goroutine 进行下载内容过滤时不检查 context.Err(),我们将永远不会处理此类错误。
-
掌握Guava的并发工具:轻松应对复杂并发场景
Guava类库的ListenableFuture是一个强大的工具,它扩展了Java的Future接口,增加了注册回调函数的功能。
-
正确理解Go高级并发模式
Go对并发提供了强大的原生支持,本文讨论Go的高级并发模式,理解这些并发模式,可以帮助我们编写高效的Go应用程序。
-
Python并发编程:concurrent.futures模块的用法
concurrent.futures模块为Python中的并行编程提供了便捷的方法。它通过线程池和进程池的方式,使得任务的并行执行变得简单和高效。本文介绍了concurrent.futures模块的基本用法,并提供了一些示例代码,希望能帮助读者更好地理解和应用该模块。
-
Go 中有效并发的模式
在本文中,我们将深入探讨 Go 中有效并发的五个基本模式:理解并行性和并发性的区别、任务分解的概念、工作池的实用性、取消和上下文,以及测试并发代码。