BOY1024

科技改变生活
128√e980=someone
系统架构篇

Shopify的闪购限流解决方案

阅读(2326)评论(0)

闪购,或者秒杀,对于现代互联网用户来说已经是一件司空见惯的事情。双十一、各大节庆日、限量供应的紧俏产品上线,大量用户在同一时间涌入网站抢购,突如其来的流量给网站带来了很大压力。那么各大电商网站是如何处理流量爆发的? Shopify是加拿大著名的电子商务软件解决方案提供商,来自Shopify性能工程团队的Emil Stolarsky分享了Sh...

系统架构篇

到底什么是数据科学家?

阅读(2719)评论(0)

经历了一些不同阶段的大数据项目之后,我意识到,在“数据科学家”这个角色没定义好之前,“数据化”会遇到很多挑战。这个角色的定义相当模糊,造成很多混淆--很像对“数字化”本身的混淆。 我翻阅了一下招聘网站上数据科学家的职责,有的专门通过统计和机器学习来建立预测模型,有的定义则更加宽泛。那么到底“数据科学家”具备什么样的技能,能做哪些事?很多希望...

Java技术篇

并发(八)——Fork/Join框架介绍

阅读(1935)评论(0)

1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这...

Java技术篇

并发(七)——Java中的阻塞队列

阅读(1905)评论(0)

1. 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者...

Java技术篇

并发(六)ConcurrentLinkedQueue的实现原理分析

阅读(2017)评论(0)

1.    引言 在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,本文让...

Java技术篇

并发(五)原子操作的实现原理

阅读(2107)评论(0)

1    引言 原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为”不可被中断的一个或一系列操作” 。在多处理器上实现原子操作就变得有点复杂。本文让我们一起来聊一聊在Inter处理器和Java里是如何实现原子操作的。 2 ...

系统架构篇

大数据下的海量数据存储

阅读(1960)评论(0)

高清已经在安防行业全面铺开应用。除了带给用户能够看得更清的良好视觉感受外,对存储容量的需求亦成几何式增长。对当前整个安防市场来讲,特别是大公安、大交通、楼宇、司法监所、金融、文教卫、能源项目等行业迅猛发展,甲方客户的需求及大集成商的存储解决方案越来越倾向集中化。需要保存的数据也成线性增长,应对如此巨大的数据量,数据存储及客户数据快速有效查询就变得至关重...

Java技术篇

并发(三)Java线程池的分析和使用

阅读(2048)评论(0)

1.    引言 合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池...