26 天前 / Yourtion
前言 在 OpenSumi 框架 中,所有 Tree 组件都采用了自住设计的平铺结构进行渲染,而在文件树场景下,文件外部变更、文件树操作、编辑器操作等都可能存在大量的刷新请求被触发,极端情况下极易发生并发渲染问题,导致最终渲染异常,在 2.16.0 版本为了让整体响应速度加快,我们移除了部分操作节流操作,并发渲染情况激增,带来了一系列并发渲染问题。 在移除了对于用户操作的时延处理,文件树已达到了 “快” 的要求(100ms 内响应用户操作),而本文主要从 “稳定” 这点出发,从原理及解决方案入手...
83 天前 / Golang梦工厂
前言哈喽,大家好,我是 asong。今天与大家聊一个比较冷门的高频面试题,关于切片的,Go 语言中的切片原生支持并发吗?怎么样,心里有答案了嘛,带着你的思考我们一起来看一看这个知识点。 实践检验真理实践是检验真理的唯一标准,所以当我们遇到一个不确定的问题,直接写 demo 来验证,因为切片的特点,我们可以分多种情况来验证: 不指定索引,动态扩容并发向切片添加数据 funcconcurrentAppendSliceNotForceIndex(){ sl:=make([]int,0) wg:=sync.WaitGroup{} forindex:=0;index<100;index++{ k:=index wg.Add(1) gofunc(numint){ sl=append(sl,num) wg....
92 天前 / HueiFeng
哟,又是我小白,**面试官就是我,想不到吧。最近有点高产了。 连我自己都害怕了。 直接进入正题吧。 两个事务并发写,能保证数据唯一吗?我先来解释下标题讲的是个啥。 我们假设有这么一个用户注册的场景。用户并发请求注册新用户。 你有一张数据库表,也就是下面的 user 表。 user 表数据库原始状态产品经理要求用户和用户之间,电话号码不能重复,为了保证这一点。我们想到了先查一下数据库,再判断一下,如果存在,就退出,否则插入一条数据。类似下面这样的伪代码。
128 天前 / 老白经
点击关注「缓缓而行」,让我们一起探索 python 学习之路~ 前言:python 并发网络编程将用六篇文章来进行梳理: 第一篇:网络编程上(网络基础知识,UDP 传输方法) 第二篇:网络编程下(TCP 传输方法,数据传输过程) 第三篇:多任务编程上 -- 进程 第四篇:多任务编程下 -- 线程 第五篇:网络并发模型 第六篇:web 服务和高并发 本篇文章主要进行多任务编程之线程的梳理,目录如下: 01 线程概述 1.1 认识线程 概念;特征;应用场景;进程和线程如何选择 02 多线程编程 2.1 Thread 线程类 创建线程;线程的属性和方法;创建线程类(自定义线程)...
129 天前 / 老白经
点击关注「缓缓而行」,让我们一起探索 python 学习之路~ 前言:python 并发网络编程将用四六篇文章来进行梳理: 第一篇:网络编程上(网络基础知识,UDP 传输方法) 第二篇:网络编程下(TCP 传输方法,数据传输过程) 第三篇:多任务编程上 -- 进程 第四篇:多任务编程下 -- 线程 第五篇:网络并发模型 第六篇:web 服务和高并发 本篇文章主要进行多任务编程 & 网络并发模型的梳理, 目录如下: 01 多任务概述 1.1 计算机原理 cpu 轮询机制;多核 cpu;并发 & 并行 1.2 多任务编程 实现方式:多进程...
137 天前 / 老白经
点击关注「缓缓而行」,让我们一起探索 python 学习之路~ 前言:python 并发网络编程将用四篇文章来进行梳理: 第一篇:网络编程上(网络基础知识,UDP 传输方法) 第二篇:网络编程下(TCP 传输方法,数据传输过程) 第三篇:多任务编程 & 网络并发模型 第四篇:web 服务和高并发 本篇文章主要进行网络编程(下)的梳理,目录如下: 03数据传输过程 3.1 传输流程 3.2 TCP 协议首部信息 04TCP 传输方法 4.1 TCP 传输特点 4.2TCP 服务端 & 客户端 4.3TCP 套接字细节 4.4TCP 与 UDP 对比 引 言 在上篇文章中我们了解了数据通过端口和...
140 天前 / 老白经
点击关注「缓缓而行」,让我们一起探索 python 学习之路~ 前言:python 并发网络编程将用四篇文章来进行梳理: 第一篇:网络编程上(网络基础知识,UDP 传输方法) 第二篇:网络编程下(TCP 传输方法,数据传输过程) 第三篇:多任务编程 & 网络并发模型 第四篇:web 服务和高并发 本篇文章主要进行网络编程(上)的梳理,目录如下: 01 网络基础知识 1.1 认识网络 1.2 网络通信标准 1.3 通信地址 1.4 服务端与客户端 02 UDP 传输方法 2.1 套接字简介 2.2 UDP 套接字编程 2.3 UDP 套接字特点 03 TCP 传输方法 (下篇继续) 3.1 TCP 传输特点 3.2TCP 服务端...
153 天前 / hyper0x
争做团队核心程序员,关注「幽鬼」 大家好,我是程序员幽鬼。 Go 编程语言是用并发作为一等公民创建的。它是一种语言,通过抽象出语言中并发原语 1 背后的并行性细节,您可以轻松编写高度并行的程序。 大多数语言都将并行化作为标准库的一部分,或者期望开发者生态系统提供并行化库。通过在 Go 语言中包含并发原语,你可以编写并行性的程序,而无需了解编写并行代码的来龙去脉。 1、并发(Concurrent)设计 Go 的设计者非常重视并发设计,将其作为一种方法论,这种方法论的基础是交流关键信息,而不是阻塞和共享这些信息。
166 天前 / 三分恶
大家好,我是老三,面渣逆袭继续,这节我们来盘一盘另一个面试必问知识点——Java 并发。 这篇文章有点长,四万字,图文详解六十道 Java 并发面试题。人已经肝麻了,大家可以点赞、收藏慢慢看!扶我起来,我还能肝! 基础 1.并行跟并发有什么区别?从操作系统的角度来看,线程是 CPU 分配的最小单位。 并行就是同一时刻,两个线程都在执行。这就要求有两个 CPU 去分别执行两个线程。并发就是同一时刻,只有一个执行,但是一个时间段内,两个线程都执行了。并发的实现依赖于 CPU 切换线程,因为切换的时间特别短,所以基本对于用户是无感知的。
169 天前 / 煎鱼
大家好,我是煎鱼。 很多小伙伴学习 Go 语言的语法时,可能只是轻轻地看到过这个问题,结果一旦上手,多多少少一个组内总会碰到过几次(我经常见到。..)。 甚至会发现有一定年限的程序员也会遇到。有小伙伴疑惑了,这么折腾,为什么 Go 不直接在语言层面就支持 map 并发,直接无脑用。 那得有多香? 为什么原生不支持凭什么 Go 官方还不支持,难不成太复杂了,性能太差了,到底是为什么? 官方答复原因如下(via @go faq): 典型使用场景:map 的典型使用场景是不需要从多个 goroutine 中进行安全访问。
183 天前 / BloomingRose
作者 | Beekums 译者 | Rayden 审校 | 王强 并发错误臭名昭著,常常导致令人十分崩溃的 bug。大多数软件的 bug 是一致的。如果你先做 X,然后做 Y,然后做 Z,你将会得到 Bug A。 但通过并发,你会遇到竞争条件(race condition)。这是一个 bug,如果你做 X,然后做 Y,你可能有 10% 的几率得到 Bug A。错误的出现是间歇性的,这使得你很难找到错误根本原因,因为你不能可靠地重现它。这也使得你很难证明你确实解决了这个问题。如果 Bug A 发生的几率只有 10%,那么你就需要多次尝试重现该 Bug,以确信自己已经修复了它。
197 天前 / crane-yuan
目录 1、背景 2、表锁导致的慢查询的问题 3、线上修改表结构有哪些风险? 4、一个死锁问题的分析 5、锁等待问题的分析 6、小结 1、背景 对于数据库系统来说在多用户并发条件下提高并发性的同时又要保证数据的一致性一直是数据库系统追求的目标,既要满足大量并发访问的需求又必须保证在此条件下数据的安全,为了满足这一目标大多数数据库通过锁和事务机制来实现,MySQL 数据库也不例外。尽管如此我们仍然会在业务开发过程中遇到各种各样的疑难问题,本文将以案例的方式演示常见的并发问题并分析解决思路。
198 天前 / 浪客书心
(给 ImportNew 加星标,提高 Java 技能) | 前言 阅读此篇文章,你需要有以下知识基础 Java 内存模型,可见性问题 CASHashMap 底层原理我们知道,在日常开发中使用的 HashMap 是线程不安全的,而线程安全类 HashTable 只是简单的在方法上加锁实现线程安全,效率低下,所以在线程安全的环境下我们通常会使用 ConcurrentHashMap,但是又为何需要学习 ConcurrentHashMap?用不就完事了?我认为学习其源码有两个好处: 更灵活的运用 ConcurrentHashMap 欣赏并发编程大师 Doug Lea 的作品,源码中有很多值得我们学习的并发思想,要意识到...
202 天前 / 微信搜「腾讯云原生」
刘如梦,腾竞体育研发工程师,擅长高并发、微服务治理、DevOps,主要负责电竞服务平台架构设计和基础设施建设。 詹雪娇,腾讯云弹性容器服务 EKS 产品经理,主要负责 EKS 虚拟节点、容器实例相关的产品策划。 业务介绍自 2019 年,腾竞整个电竞赛事数据服务完全由腾讯云 TKE 容器服务承载。腾竞赛事数据开放平台目前主要提供职业赛事数据的授权与查询,随着斗鱼、虎牙、企鹅、掌盟、微信直播、微博等平台的相继接入,平台整体流量有了爆发式的增长。
231 天前 / 虞大胆
一 背景 JUC工具包是JAVA并发编程的利器。 本文讲述在没有JUC工具包帮助下,借助原生的JAVA同步原语, 如何实现一个公平有界的阻塞队列。 希望你也能在文后体会到并发编程的复杂之处,以及JUC工具包的强大。 二 方法 本文使用到的基本工具: 同步监听器synchronized,方法基本和代码块级别;Object基础类的wait,notify,notifyAll; 基于以上基础工具,实现公平有界的阻塞队列,此处: 将公平的定义限定为FIFO,也就是先阻塞等待的请求,先解除等待;并不保证解除等待后执行Action的先后顺序;确保队列的大小始终不超过设定的容量;但阻塞等待的请求数不做...