[转]并行任务,线程池,工作窃取算法
记得在上个月,微博上有一则热议的新闻:小学数学老师布置作业,要求“数一亿粒米” 网友大多数是以吐槽的态度去看待这件事,也有人指出能用估算的方法,这是一道考察发散思维的题目。 一开始我也觉得这个题目很荒唐,似乎是不可能完成的任务。但这个细细想来值得玩味,我在思考一个问题:如果从计算机的角度去看,如何才能最快速地数一亿粒米呢?
Just One Pure ITer
记得在上个月,微博上有一则热议的新闻:小学数学老师布置作业,要求“数一亿粒米” 网友大多数是以吐槽的态度去看待这件事,也有人指出能用估算的方法,这是一道考察发散思维的题目。 一开始我也觉得这个题目很荒唐,似乎是不可能完成的任务。但这个细细想来值得玩味,我在思考一个问题:如果从计算机的角度去看,如何才能最快速地数一亿粒米呢?
Distributed Lock Solution / Redis Distributed Lock
by leelight · Published November 19, 2018 · Last modified December 14, 2018
在很多互联网产品应用中,有些场景需要加锁处理,比如秒杀、全局递增ID、楼层生成等等,大部分的解决方案是基于DB实现的,Redis也是较为常见的方案之一。 Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系。其次Redis提供一些命令SETNX,GETSET,可以方便实现分布式锁机制。
1. 1.背景 对于锁大家肯定不会陌生,在Java中synchronized关键字和ReentrantLock可重入锁在我们的代码中是经常见的,一般我们用其在多线程环境中控制对资源的并发访问,但是随着分布式的快速发展,本地的加锁往往不能满足我们的需要,在我们的分布式环境中上面加锁的方法就会失去作用。于是人们为了在分布式环境中也能实现本地锁的效果,也是纷纷各出其招,今天让我们来聊一聊一般分布式锁实现的套路。
1. 引言 大家在面试中有没遇到面试官问你下面六句Sql的区别呢
1 2 3 4 5 6 |
select * from table where id = ? select * from table where id < ? select * from table where id = ? lock in share mode select * from table where id < ? lock in share mode select * from table where id = ? for update select * from table where id < ? for update |
如果你能清楚的说出,这六句sql在不同的事务隔离级别下,是否加锁,加的是共享锁还是排它锁,是否存在间隙锁,那这篇文章就没有看的意义了。
by leelight · Published November 13, 2018 · Last modified November 18, 2018
分布式是如何进入数据库领域的? 我曾经访问过一个有“营业时间”的网站,它只在某些时间段才“开放”。我因此感到困惑,还有点沮丧。计算机可以运行一整天,为什么这个网站就不可以呢?可能我已经习惯了互联网那种令人难以置信的可用性保证。 然而,在互联网出现之前,全天候可用性的概念还“不成气候”。可用性虽然令人期待,但还没有到非要不可的程度。我们只在有需要时才使用电脑,它们不会为了一个极小可能出现的请求而等待。随着互联网的出现和发展,之前不太常见的本地凌晨 3 点请求变成了全球性的主要营业时间点,确保计算机能够处理这些请求就变得非常重要。
目前市面上已经有很多开源的缓存框架,比如 Redis、Memcached、Ehcache 等,那为什么还要自己动手写缓存?本文将带领大家从 0 到 1 写一个简单的缓存框架,目的是让大家对缓存的类型、缓存的标准、缓存的实现以及原理方面有一个系统的了解,做到知其然,知其所以然。
Q1花了较大的篇幅,系统化讲述了监控与告警体系的建立,本文稍作总结。如果恰巧你正在搭建自动化监控与告警平台,或许,细读这一系列文章就够了。 一《监控告警,集群信息管理先行》 什么是集群信息管理 使用配置文件进行集群信息管理 使用服务进行集群信息管理 使用配置中心进行集群信息管理 二《监控告警,员工信息管理,分级告警策略》 使用配置文件进行员工信息管理 使用服务进行员工信息管理 常见分级告警策略:告警收敛,分时告警,逐层上报,黑白跳动 三《多维度立体化监控》 什么是多维度立体化监控 立体化监控有哪些维度 操作系统+进程+端口 http状态码 服务存活性 接口处理时间 http接口 log监控 用户视角 如何快速实施“1.操作系统+进程+端口”的监控 如何快速实施“2.http状态码”的监控 如何快速实施“3.服务存活性”的监控 如何快速实施“4.接口处理时间”的监控 四《一分钟搞定“http接口”监控框架》 常见http监控玩法 常见http监控的弊端 通用可扩展http监控平台架构 简版http监控框架架构 100行伪代码搞定http监控 五《一分钟搞定“log”监控框架》 什么是日志监控 日志分级,错误日志监控,正常日志监控 日志与目录规范...
1. 引言 其实这个话题是老生常谈,很多人在工作中确实也不会使用外键。包括在阿里的JAVA规范中也有下面这一条 【强制】不得使用外键与级联,一切外键概念必须在应用层解决。 但是呢,询问他们原因,大多是这么回答的 每次做DELETE 或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦,测试数据极为不方便。 坦白说,这么说也是对的。但是呢,不够全面,所以开一文来详细说明。
毫无疑问,Spring Cloud 是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。 不过大多数讲解还停留在对 Spring Cloud 功能使用的层面,其底层的很多原理,很多人可能并不知晓。 因此本文将通过大量的手绘图,给大家谈谈 Spring Cloud 微服务架构的底层原理。 实际上,Spring Cloud 是一个全家桶式的技术栈,它包含了很多组件。本文先从最核心的几个组件,也就是 Eureka、Ribbon、Feign、Hystrix、Zuul 入手,来剖析其底层的工作原理。
Follow:
Cookie | Duration | Description |
---|---|---|
cookielawinfo-checkbox-analytics | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics". |
cookielawinfo-checkbox-functional | 11 months | The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional". |
cookielawinfo-checkbox-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary". |
cookielawinfo-checkbox-others | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other. |
cookielawinfo-checkbox-performance | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance". |
viewed_cookie_policy | 11 months | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |