高并发、多线程
文章平均质量分 93
MayMatrix
J2EE .
展开
-
奇淫巧技,CompletableFuture 异步多线程是真的优雅
的get()方法是阻塞的,我们一般建议使用。并且一般建议使用自定义线程池。但是如果线程池拒绝策略是或者,当线程池饱和时,会直接丢弃任务,不会抛弃异常。因此建议,线程池策略最好使用,然后耗时的异步线程,做好线程池隔离哈。转载 2023-08-03 14:22:23 · 83 阅读 · 0 评论 -
Springboot 打印唯一traceId,Springboot+MDC+traceId日志中打印唯一traceId
想了解Springboot+MDC+traceId日志中打印唯一traceId的相关内容吗,W3C_0101在本文为您仔细讲解Springboot 打印唯一traceId的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Springboot,打印唯一traceId,Springboot,打印traceId,下面大家一起来学习吧。转载 2023-02-09 15:25:17 · 1189 阅读 · 0 评论 -
Sentinel 系统自适应限流原理剖析与实战指导
看到标题中的几个关键字系统自适应限流是否是以为高大上,这个自适应又是如何实现的呢? 一、Sentinel 系统自适应概述 从官方了解到 Sentienl 系统自适应限流是一个全局的概念,对应用入口流量统一进行统一控制,结合应用的机器负载、CPU 使用率,整体平均响应时间、入口 QPS 和并发线程数等几个维度的监控指标从而决定是否调用进行限流操做。为了有一个直观的感觉,咱们能够从官方的运维平台看看其系统自适应限流的操做界面:架构 RT、线程数、入口QPS这三个指标是能够经过采集调用信息进行..转载 2021-12-03 14:57:58 · 647 阅读 · 0 评论 -
深入理解云原生下自适应限流技术原理与应用
作者简介:乔卓越,于19年毕业,热爱开源,乐于思考。拥有基础架构和游戏领域的一线开发经验。独立负责过大规模后端服务的开发与性能测试平台搭建。 前言 本文将深入讨论现今后端服务关于负载的测量、优化、治理手段,通过对比分析TCP-BBR技术核心痛点,进而带读者尽可能理解并掌握自适应限流技术。 背景 负载(load),通常与并发关系密切。对于后端服务而言,任意时间内的并发用户访问都会提升服务负载,进而进一步消耗计算资源。然而计算资源是有限的,如CPU、memory、network等等,过载将会导致服...转载 2021-12-03 14:53:57 · 587 阅读 · 0 评论 -
自适应限流工具
作者:fredalxin地址:https://fredal.xin/netflix-co...作为应对高并发的手段之一,限流并不是一个新鲜的话题了。从Guava的Ratelimiter到Hystrix,以及Sentinel都可作为限流的工具。自适应限流一般的限流常常需要指定一个固定值(qps)作为限流开关的阈值,这个值一是靠经验判断,二是靠通过大量的测试数据得出。但这个阈值,在流量激增、系统自动伸缩或者某某commit了一段有毒代码后就有可能变得不那么合适了。并且一般业务方也不太能够正确评估自己的容量,去设转载 2021-12-03 14:50:21 · 357 阅读 · 1 评论 -
Go可用性 限流 : 自适应限流
序 在前面限流的三篇文章,我们学习了令牌桶、漏桶算法的原理、实现以及使用方式,不知道你有没有觉得这两种算法存在着一些问题。 Go 可用性(二) 限流 1: 令牌桶原理及使用 Go 可用性(三) 限流 2: 令牌桶的实现 rate/limt Go 可用性(四) 限流 3: 漏桶算法 这两种算法最大的一个问题就是他们都属于需要提前设置阈值的算法,基于 QPS 进行限流的时候最麻烦的就是这个阈值应该怎么设定。一般来说我们可以通过压测来决定这个阈值。 .转载 2021-12-03 14:47:49 · 737 阅读 · 0 评论 -
任意组合、编排的多线程并发框架asyncTool
项目地址https://gitee.com/jd-platform-opensource/asyncTool 并发场景可能存在的需求之——任意编排 1 多个执行单元的串行请求 2 多个执行单元的并行请求 3 阻塞等待,串行的后面跟多个并行 4 阻塞等待,多个并行的执行完毕后才执行某个 5 串并行相互依赖 6 复杂场景 并发场景可能存在的需求之——每转载 2021-12-01 17:26:02 · 356 阅读 · 0 评论 -
京东毫秒级热key探测框架设计与实践,已完美支撑618大促
hotkey项目地址:https://gitee.com/jd-platform-opensource/hotkey 在拥有大量并发用户的系统中,热key一直以来都是一个不可避免的问题。或许是突然某些商品成了爆款,或许是海量用户突然涌入某个店铺,或许是秒杀时瞬间大量开启的爬虫用户, 这些突发的无法预先感知的热key都是系统潜在的巨大风险。 风险是什么呢?主要是数据层,其次是服务层。 热key对数据层的冲击显而转载 2021-12-01 16:51:05 · 877 阅读 · 0 评论 -
alibaba / Sentinel 系统自适应限流原理
Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。背景在开始之前,我们先了解一下系统保护的目的:保证系统不被拖垮在系统稳定的前提下,保持系统的吞吐量长期以来,系统保护的思路是根据硬指标,即系统的负载 (load1) 来做系统过载保护。当系统负载高于某个阈值,就禁止或转载 2021-11-30 15:57:29 · 321 阅读 · 0 评论 -
Hystrix配置参数说明及配置示例
一、什么情况下会触发fallback方法? 名字 描述 触发fallback EMIT 值传递 NO SUCCESS 执行完成,没有错误 NO FAILURE 执行抛出异常 YES TIMEOUT 执行开始,但没有在允许的时间内完成 YES BAD_REQUEST 执行抛出HystrixBadRequestException NO SHORT_CIRCUITED 断路器...转载 2021-06-17 17:27:14 · 6524 阅读 · 0 评论 -
熔断器Hystrix
熔断器雪崩效应在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。如果下图所示:A作为服务提供者,B为A的服务消费者,C和D是B的服务消费者。A不可用引起了B的不可用,并将不可用像滚雪球一样放大到C和D时,雪崩效应就形成了。熔断器(CircuitBreaker)熔断器的原理很简单,如同电力过载保护器。它可以实现快转载 2021-06-17 17:01:04 · 746 阅读 · 0 评论 -
Hystrix原理与实战
背景分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图,对于同步调用,当库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个商品服务资源耗尽,无法继续对外提供服务。并且这种不可用可能沿请求调用链向上传递,这种现象被称为雪崩效应。雪崩效应常见场景硬件故障:如服务器宕机,机房断电,光纤被挖断等。 流量激增:如异常流量,重试加大流量等。 缓存击穿/穿透/雪崩:一般发生在应用重启,所有缓存失效时,以及短时间内大量缓存失效时。大量转载 2021-06-17 16:58:46 · 210 阅读 · 0 评论 -
微信红包的 CAP 及 背后的技术
微信红包背后的技术经过2014年一年的酝酿,2015微信红包总量创下历史新高,峰值1400万次/秒,8.1亿次每分钟,微信红包收发达10.1亿次,系统整体运行平稳, 在这里我分享下微信红包背后的技术。讲师:jeri核心功能&目标首先,了解下微信红包的4个逻辑:摇/发/抢/拆。看似简单,实现可不简单再review下微信红包要实现目标:摇:摇的流畅快:...转载 2021-06-17 12:09:14 · 519 阅读 · 0 评论 -
缓存穿透、缓存击穿和缓存雪崩原因+解决方案
REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案一、前言在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫转载 2021-06-16 17:29:13 · 423 阅读 · 0 评论 -
Redis分布式锁解决方案 set nx px + LUA
Redis分布式锁解决方案我们知道分布式锁的特性是排他、避免死锁、高可用。分布式锁的实现可以通过数据库的乐观锁(通过版本号)或者悲观锁(通过for update)、Redis的setnx()命令、Zookeeper(在某个持久节点添加临时有序节点,判断当前节点是否是序列中最小的节点,如果不是则监听比当前节点还要小的节点。如果是,获取锁成功。当被监听的节点释放了锁(也就是被删除),会通知当前节点。然后当前节点再尝试获取锁,如此反复)本篇文章,主要讲如何用Redis的形式实现分布式...转载 2021-03-19 17:48:21 · 3797 阅读 · 1 评论 -
java并发编程基础:CLH锁的原理及实现
CLH、MCS 队列锁简介一、自旋锁简介通常情况下解决多线程共享资源逻辑一致性问题有两种方式:互斥锁:当发现资源被占用的时候,会阻塞自己直到资源解除占用,然后再次尝试获取; 自旋锁:当发现占用时,一直尝试获取锁(线程没有被挂起的过程,也就没有线程调度切换的消耗);对于这两种方式没有优劣之分,只有是否适合当前的场景;具体的对比就不在继续深入了,如果你很感兴趣可以查看《多处理器编程的艺术》提取码:rznn ;但是如果竞争非常激烈的时候,使用自旋锁就会产生一些额外的问题:可能导...转载 2021-03-12 16:27:38 · 332 阅读 · 0 评论 -
java并发编程之核心:AQS进阶
如果你想深入研究Java并发的话,那么AQS一定是绕不开的一块知识点,Java并发包很多的同步工具类底层都是基于AQS来实现的,比如我们工作中经常用的Lock工具ReentrantLock、栅栏CountDownLatch、信号量Semaphore等,而且关于AQS的知识点也是面试中经常考察的内容,所以,无论是为了更好的使用还是为了应付面试,深入学习AQS都很有必要。CASCAS是乐观锁的一种思想,它假设线程对资源的访问是没有冲突的,同时所有的线程执行都不需要等待,可以持续执行。如果有冲...转载 2021-03-12 16:21:12 · 140 阅读 · 0 评论 -
java并发编程核心:AQS详解#总结
AQS概述:AQS原理AQS:AbstractQuenedSynchronizer抽象的队列式同步器。是除了java自带的synchronized关键字之外的锁机制。AQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包AQS的核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并将共享资源设置为锁定状态,如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机.转载 2021-03-12 16:17:18 · 194 阅读 · 0 评论 -
java并发编程核心:AQS原理及API
从ReentrantLock的实现看AQS的原理及应用前言Java中的大部分同步类(Lock、Semaphore、ReentrantLock等)都是基于AbstractQueuedSynchronizer(简称为AQS)实现的。AQS是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架。本文会从应用层逐渐深入到原理层,并通过ReentrantLock的基本特性和ReentrantLock与AQS的关联,来深入解读AQS相关独占锁的知识点,同时采取问答的模式来帮助大家理解AQ.转载 2021-03-12 16:15:58 · 203 阅读 · 0 评论 -
几种等待多线程任务执行完毕的方法
CountDownLatch和Cyclicbarrier概念、区别及原理1、概念 CountDownLatch:具有计数器的功能,等待其他线程执行完毕,主线程在继续执行,用于监听某些初始化操作,并且线程进行阻塞,等初始化执行完毕后,通知主线程继续工作执行。值得注意的是CountDownLatch计数的次数一定要与构造器传入的数字一致,比如构造器传入的是3,则countDown()一定要执行3次,否则线程将一直阻塞。CountDownLatch通常用来控制线程等待,它可以让线程等待倒计时结束,.转载 2020-09-25 15:17:14 · 6671 阅读 · 0 评论 -
京东毫秒级热key探测框架设计与实践,已实战于618大促
项目地址:https://gitee.com/jd-platform-opensource/hotkey京东-平台业务中心/hotkey在拥有大量并发用户的系统中,热key一直以来都是一个不可避免的问题。或许是突然某些商品成了爆款,或许是海量用户突然涌入某个店铺,或许是秒杀时瞬间大量开启的爬虫用户, 这些突发的无法预先感知的热key都是系统潜在的巨大风险。风险是什么呢?主要是数据层,其次是服务层。热key对数据层的冲击显而易见,譬如数据存放在redis或者MySQL中,以redis...转载 2020-09-10 20:02:38 · 560 阅读 · 0 评论 -
Java线程池【二】深入分析,Java线程池实现原理及其在美团业务中的实践
一、写在前面1.1 线程池是什么线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用。而本文描述线程池是JDK中提供的ThreadPoolExecutor类。转载 2020-06-04 11:14:11 · 296 阅读 · 0 评论 -
Java线程池【一】实现原理
1.深入源码分析Java线程池的实现原理程序的运行,其本质上,是对系统资源(CPU、内存、磁盘、网络等等)的使用。如何高效的使用这些资源是我们编程优化演进的一个方向。今天说的线程池就是一种对CPU利用的优化手段。通过学习线程池原理,明白所有池化技术的基本设计思路。遇到其他相似问题可以解决。池化技术前面提到一个名词——池化技术,那么到底什么是池化技术呢?池化技术简单点来说,就是提前保存大量的资源,以备不时之需。在机器资源有限的情况下,使用池化技术可以大大的提高资源的利用率,提升性能等.转载 2020-06-04 11:11:55 · 268 阅读 · 0 评论 -
分布式定时任务调度框架选型
分布式定时任务调度框架选型背景业务场景定期执行任务:如每天0点做资源稽查;需求和痛点集群部署服务时,如何确保任务不被重复执行?---最急迫如何监控、告警等;高可用、无单点故障;优秀的并行处理能力、分片能力;自研 or 开源任何工具的使用都要结合自身的业务场景,脱落业务场景谈技术选型就是耍流氓。考虑私有云场景业务量一般,高并发场景很少遇到,同一时间也不会有超...转载 2020-05-08 16:44:41 · 1022 阅读 · 2 评论 -
RabbitMQ之消息确认机制(事务+Confirm)
概述在使用RabbitMQ的时候,我们可以通过消息持久化操作来解决因为服务器的异常奔溃导致的消息丢失,除此之外我们还会遇到一个问题,当消息的发布者在将消息发送出去之后,消息到底有没有正确到达broker代理服务器呢?如果不进行特殊配置的话,默认情况下发布操作是不会返回任何信息给生产者的,也就是默认情况下我们的生产者是不知道消息有没有正确到达broker的,如果在消息到达broker之前已经丢失...转载 2020-05-08 11:20:54 · 1123 阅读 · 0 评论 -
详细解读 Github 上发布仅一个月就获得4k+ star 的分布式事务解决方案
导读:阿里分布式事务开源项目Fescar,自1月9日发布第一个版本以来,便受到了开发者的极大关注,目前收获的star数已超过4700,本文将详细解读这款分布式事务解决方案,希望对您有所帮助。FESCAR on GitHubhttps://github.com/alibaba/fescar更新:FESCAR 已更新为Seata微服务倡导将复杂的单体应用拆分为若干...转载 2019-09-05 10:01:33 · 761 阅读 · 0 评论 -
Dubbo架构设计详解
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容,详见后面描述。转载 2017-06-15 11:05:39 · 271 阅读 · 0 评论 -
源码阅读:全方位讲解LongAdder
高并发下计数功能最好的数据结构就是LongAdder与DoubleAdder,低并发下效率也非常优秀,这是我见过的java并发包中设计的最为巧妙的类,从软硬件方面将java并发累加操作优化到了极致,所以应该我们应该弄清楚它的每一行代码为什么要这样做,它俩的实现大同小异,下面以LongAdder类为例介绍下它的实现。Striped64类public class LongAdder extend...转载 2019-09-05 10:00:50 · 222 阅读 · 0 评论 -
Java中的Unsafe
Java和C++语言的一个重要区别就是Java中我们无法直接操作一块内存区域,不能像C++中那样可以自己申请内存和释放内存。Java中的Unsafe类为我们提供了类似C++手动管理内存的能力。Unsafe类,全限定名是sun.misc.Unsafe,从名字中我们可以看出来这个类对普通程序员来说是“危险”的,一般应用开发者不会用到这个类。Unsafe类是"final"的,不允许继承。且构造函数...转载 2019-09-05 09:44:06 · 305 阅读 · 0 评论 -
分布式事务[7]柔性事务:可靠消息最终一致性
柔性事务:可靠消息最终一致性消息发送一致性:是指产生消息的业务动作与消息发送的一致。也就是说,如果业务操作成功,那么由这个业务操作所产生的消息一定要成功投递出去(一般是发送到kafka、rocketmq、rabbitmq等消息中间件中),否则就丢消息。柔性事务、可靠消息最终一致性、异步确保性下面用伪代码进行演示消息发送和投递的不可靠性:1、先进行数据库操作,再发送消息...转载 2019-09-05 10:04:01 · 328 阅读 · 0 评论 -
分布式锁的三种实现方式及对比分析(代码实现细节)
一、问题介绍日常工作中很多场景下需要用到分布式锁,例如:任务运行(多个节点同一时刻同一个任务只能在一个节点上运行(分片任务除外)),交易请求接收(前端交易请求发送时,可能由于两次提交,后端需要识别出这是一个交易)等,怎么样实现一个分布式锁呢?一般有:zookeeper、redis、database等三种实现方式。二、分布式锁实现2.1、zookeeper2.1.1、原理zook...转载 2019-09-04 15:23:06 · 420 阅读 · 0 评论 -
Spring Cloud分布式事务终极解决方案探讨
开源项目我们利用消息队列实现了分布式事务的最终一致性解决方案,请大家围观。可以参考GithubCoolMQ源码,项目支持网站:http://rabbitmq.org.cn,最新文章或实现会更新在上面二 前言阿里2017云栖大会《破解世界性技术难题!GTS让分布式事务简单高效》中,阿里声称提出了一种破解世界性难题之分布式事务的终极解决方案,无论是可靠性、还是处理速率都领先于市面上所有...转载 2019-09-05 10:01:48 · 1337 阅读 · 0 评论 -
分布式事务:不过是在一致性、吞吐量和复杂度之间,做一个选择
这是一个开撕的话题,我经历过太多的关于分布式事务的需求:“有没有简单的方案,像使用数据库事务那样,解决分布式数据一致性的问题”。特别是微服务架构流行的今天,一次交易需要跨越多个“服务”、多个数据库来实现,传统的技术手段,已经无法应对和满足微服务情况下这些复杂的场景了。针对微服务下的交易业务如何保障数据一致性,本文尽量做到理论结合实践,将我们在实际产品中用到的分布式事务实现机制,和大家扒一扒,希望能...转载 2019-09-05 10:02:41 · 186 阅读 · 0 评论 -
系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路
处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而定位出问题的代码点,进而提供解决该问题的思路。对于线上系统突然产生的运行缓慢问题,如果该问题导致线上系统不可用,那么首先需要做的就是,导出jst...转载 2019-03-21 14:02:59 · 401 阅读 · 0 评论 -
几种灰度发布方案
原文:https://blog.csdn.net/hueason/article/details/81054093 一、灰度发布定义灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B 上面来。灰度发布...转载 2018-12-10 17:22:19 · 14914 阅读 · 1 评论 -
java可重入锁ReentrantLock与synchronize
目录什么是可重入锁 为什么要可重入 如何实现可重入锁 有不可重入锁吗 demo代码展示 参考文章1 . 什么是可重入锁锁的概念就不用多解释了,当某个线程A已经持有了一个锁,当线程B尝试进入被这个锁保护的代码段的时候.就会被阻塞.而锁的操作粒度是”线程”,而不是调用(至于为什么要这样,下面解释).同一个线程再次进入同步代码的时候.可以使用自己已经获取到的锁,这就是可重入锁jav...转载 2018-12-05 20:52:02 · 943 阅读 · 0 评论 -
什么是BIO | NIO | AIO
在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下: 序号 问题 1 什么是同步? 2 什么是异步? 3 什么是阻塞? 4 什么是非阻塞? 5 什么是同步阻塞? 6 什么是同步非阻塞? 7 什么是异步阻塞? 8 什么是异步非阻塞? 在弄清楚上面的几个问题之前,我们首先得明白什么是...转载 2018-12-05 20:14:29 · 232 阅读 · 0 评论 -
【ZooKeeper 3】ZooKeeper典型应用场景一览
ZooKeeper典型应用场景一览数据发布与订阅(配置中心)发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用。应用中用到的一些配置信息放到ZK上进行集中管理。这类场景通常是这样:应用在启动的时候转载 2017-07-18 14:55:30 · 471 阅读 · 0 评论 -
【ZooKeeper 2】ZooKeeper原理及应用场景
ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper提供的Client API的使用,第三部分介绍一些ZooKeeper典型的应用场景转载 2017-07-05 16:21:53 · 370 阅读 · 0 评论 -
zookeeper在dubbo起了什么作用
dubbo是管理中间层的工具,在业务层到数据仓库间有非常多服务的接入和服务提供者需要调度,dubbo提供一个框架解决这个问题。注意这里的dubbo只是一个框架,至于你架子上放什么是完全取决于你的,就像一个汽车骨架,你需要配你的轮子引擎。这个框架中要完成调度必须要有一个分布式的注册中心,储存所有服务的元数据,你可以用zk,也可以用别的,只是大家都用zk。至于怎么解决高并发。。百度一下du转载 2017-06-15 10:57:06 · 2857 阅读 · 2 评论