201807-10 Java并发编程-volatile 上一篇文章,学习了并发编程中的synchronized,这个比较好理解,也是我最初学习多线程编程中的一个简单的实现的,大学的时候就会了,然后就一直以为多线程环境的同步只能通过这个来实现的,事实上Java还提供了另外一个更加轻量级的实现-volatile,如果说synchronized实现了数据在同一时刻只能有一个线程对数据访问的话,那么volatile实现的就是同时可以多个线程在访问数据,但是只要数据发生了变化,便确保其他线程及时“感知”... 继续阅读 >
201804-11 使用让 JavaScript 安全且并发的 Web Workers WebWorkers提供了一种在浏览器单线程执行外运行JS代码的方式。单线程处理了包括页面内容展示,通过键盘、鼠标点击和其他装置的用户交互,以及对于AJAX请求响应的一些请求。事件处理和AJAX请求是异步发生的,可以作为一种通用浏览器展示代码路径之外的运行代码的方式,但是它们仍然在这一单线程内运行,并且必须很快完成。否则,浏览器中的交互会失去作用。WebWorkers允许在一个单独的线程运行JS代码,... 继续阅读 >
201804-02 Python并发编程之进程 一、理论概念1、定义进程(Process也可以称为重量级进程)是程序的一次执行。在每个进程中都有自己的地址空间、内存、数据栈以及记录运行的辅助数据,它是系统进行资源分配和调度的一个独立单位。2、并行和并发并行:并行是指多个任务同一时间执行;并发:是指在资源有限的情况下,两个任务相互交替着使用资源;3、同步和异常同步是指多个任务在执行时有一个先后的顺序,必须是一个任务执行完... 继续阅读 >
201803-04 Apache Ignite 事务架构:并发模型和隔离级别 在本系列的第一篇文章中,我们研究了2阶段提交协议,以及Ignite如何处理各种类型的集群节点,下面是在剩下的文章中要覆盖的主题:并发模型和隔离级别故障转移和恢复Ignite持久化层中的事务处理(WAL、检查点及其他);第三方持久化中的事务处理在本文中,我们会聚焦并发模型和隔离级别。大多数现代多用户应用允许并发数据访问和修改。为了管理此功能,并确保系统从一个一致状态切换到另一个一... 继续阅读 >
201711-22 python 并发subprocess.Popen的坑 表现一个父进程里多个线程并发地调用subprocess.Popen来创建子进程的时候,会有几率出现Popen长时间不返回的情况.这个问题是由于fd被多个子进程同时继承导致的.重现问题的代码下面这个小程序启动2个线程,每个线程各自(通过subprocess.Popen)启动一个子进程,一个子进程执行echo1后就直接返回;另一个子进程启动后,sleep0.03秒后返回.程序里统计了2个调用Popen花的时间,运行后可以发现,ech... 继续阅读 >
201711-20 Ruby Web 服务器的并发模型与性能 这是整个Rack系列文章的最后一篇了,在之前其实也尝试写过很多系列文章,但是到最后都因为各种原因放弃了,最近由于自己对Ruby的webserver非常感兴趣,所以看了下社区中常见webserver的实现原理,包括WEBrick、Thin、Unicorn和Puma,虽然在Ruby社区中也有一些其他的webserver有着比较优异的性能,但是在这有限的文章中也没有办法全都介绍一遍。在这篇文章中,作者想对Ruby社区中不同webserver的实现... 继续阅读 >
201701-03 秒杀抢购思路以及高并发下数据安全 我们通常衡量一个Web系统的吞吐率的指标是QPS(QueryPerSecond,每秒处理请求数),解决每秒数万次的高并发场景,这个指标非常关键。举个例子,我们假设处理一个业务请求平均响应时间为100ms,同时,系统内有20台Apache的Web服务器,配置MaxClients为500个(表示Apache的最大连接数目)。那么,我们的Web系统的理论峰值QPS为(理想化的计算方式):20*500/0.1=100000(10万QPS)咦?我们的系统似乎很强大,1秒... 继续阅读 >
201507-04 MySQL中SELECT+UPDATE处理并发更新问题解决方案 这篇文章主要介绍了MySQL中SELECT+UPDATE处理并发更新问题解决方案分享,需要的朋友可以参考下。问题背景假设MySQL数据库有一张会员表vip_member(InnoDB表),结构如下:当一个会员想续买会员(只能续买1个月、3个月或6个月)时,必须满足以下业务要求:如果end_at早于当前时间,则设置start_at为当前时间,end_at为当前时间加上续买的月数如果end_at等于或晚于当前时间,则设置end_at=end_at+续买的月数续买后active_stat... 继续阅读 >
201504-01 构建高并发高可用的电商平台架构实践(一)——设计理念 空间换时间多级缓存,静态化客户端页面缓存(httpheader中包含Expires/CacheofControl,lastmodified(304,server不返回body,客户端可以继续用cache,减少流量),ETag)反向代理缓存应用端的缓存(memcache)内存数据库Buffer、cache机制(数据库,中间件等)索引哈希、B树、倒排、bitmap哈希索引适合综合数组的寻址和链表的插入特性,可以实现数据的快速存取。B树索引适合于查询为主导的场景,避免多次的IO,提高查... 继续阅读 >
201501-23 PHP Session可能会引起并发问题 在进行Web应用程序开发的时候,人们经常会用Session存储数据。但可能有人不知道,在PHP中,Session使用不当可能会引起并发问题。印度医疗行业软件解决方案提供商Plus91Technologies高级工程师KishanGor在个人博客上对这个问题进行了阐释。如果同一个客户端并发发送多个请求,而每个请求都使用了Session,那么PHPSession锁的存在会导致服务器串行响应这些请求,而不是并行。这是因为在默认情况下,PHP使用文件存储Sess... 继续阅读 >