自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

软件开发与架构领域 -体系化知识分享

理清软件领域各种似是而非的概念,深刻理解本质

  • 博客(17)
  • 资源 (4)
  • 收藏
  • 关注

原创 分布式存储--Mysql--序列3--分库分表策略

分库分表是存储层设计中一个普遍而重大的问题,什么时候分?怎么分?分完之后引发的新问题,比如不能Join、分布式事务? 本篇将从最基本的策略出发,逐步深入讲解这里面涉及的一序列策略。分库-业务分拆 & 数据隔离读多写少 vs. 读少写多分表/分库垂直切分水平切分待续

2016-11-29 12:24:10 2780 3

原创 分布式缓存--序列4--缓存更新策略/缓存穿透/缓存雪崩

前面几篇关于缓存的文章主要介绍了相关原理,本篇从业务应用角度讲述相关的使用策略。有兴趣朋友可以关注公众号“架构之道与术”, 获取最新文章。 或扫描如下二维码: 缓存更新策略被动更新设置key过期的时间,让其自动失效。主动更新更新DB的时候,同时更新缓存。一般业务都是主动更新和被动更新结合使用。先更新DB,后更新缓存对于主动更新来说,存在一个问题:你是...

2016-11-28 21:15:23 6573 2

原创 分布式存储--Mysql--序列2--索引的设计策略

索引设计一直是Mysql存储的核心部分,本篇将详细介绍设计索引过程中,要注意的一些基本策略。在线计算转化成离线计算,减少索引个数在通常用户量不是很大的系统中,我们会把C端的用户系统和内部用的运营系统混在一起,用一个库来查询。但你会发现大多数查询条件,其实都只是内部运营系统才用得到,比如做各种复杂的报表查询。所以如果你可以把C端系统和内部运营系统分开,C端系统用在线计算的思路做,运营系统用离线计算的思

2016-11-27 02:13:48 1131

原创 分布式存储--Mysql--序列1--聚簇索引&非聚簇索引

从本篇开始,将进入分布式系统的存储的讨论。存储一直是设计分布式系统中最最核心的问题,这里面设计到诸多设计策略。而Mysql作为一个开源的数据库,在各大互联网公司使用极为普遍。本系列将从Mysql开始,一步步展示关于存储设计的诸多策略。说到InnoDB和MyISAM的区别,很多人都会提到一个支持事务,一个不支持;一个是行锁,一个是表锁(这个其实不准确,后面会详细阐述)。但跟日常使用最密切相关的,更基本

2016-11-27 01:52:17 1591

原创 分布式缓存--序列3--原子操作与CAS乐观锁

问题的提出我们知道,在单机的“线程模型“中,2个线程并发修改一个变量,是需要加锁的。这个在Java并发编程–序列1已经讲过,要么是悲观锁,要么是乐观锁。 如果把单机的线程模型,改成有客户端/服务器的进程模型。服务器可以是Mysql/Redis/Memcached任何一种,那该问题又如何解决呢?有兴趣朋友可以关注公众号“架构之道与术”, 获取最新文章。 或扫描如下二维码: ...

2016-11-26 01:13:34 11477 1

原创 分布式缓存--系列2 -- Redis Cluster

说到Memcached和Redis的区别,我想很多人都会想到下面3点: 但这都是从“单机角度“来比较。可以说,在redis cluster出来之前,memcached 和 redis 的差别还不算大。但从Redis 3.0开始,引入了Redis Cluster,从此Redis进入了真正的“分布式集群“时代。而在“集群角度“,可以说Redis已经和Memcached有了很多重大的区别。下面这个表,从

2016-11-25 19:27:28 2133

原创 分布式缓存--系列1 -- Hash环/一致性Hash原理

当前,Memcached、Redis这类分布式kv缓存已经非常普遍。从本篇开始,本系列将分析分布式缓存相关的原理、使用策略和最佳实践。我们知道Memcached的分布式其实是一种“伪分布式”,也就是它的服务器结点之间其实是相互无关联的,之间没有网络拓扑关系,由客户端来决定一个key是存放到哪台机器。具体来讲,假设我有多台memcached服务器,编号分别为m0,m1,m2,…。对于一个ke...

2016-11-25 01:26:18 6165

原创 Disruptor-架构思维的转变

在前一篇中,我们分析了Disruptor为什么那么快,分析了围绕RingBuffer的无锁技术。但我认为,相对于无锁技术,Disruptor对于架构思维的转变,才是其最大亮点。Pub Event说到RingBuffer做的队列,通常都说的是“一读一写“,或者“多读一写“。而Disruptor天生是为“广播“设计,也就是1个Producer,多个Consumer消费同1条消息。有了“广播“,就能很好的

2016-11-23 22:47:18 3648

原创 Disruptor-无锁编程-核心原理剖析- Volatile的普遍误解

提到Disruptor,首先映入大家脑海的词就是“无锁“,“快“,本文将试图从底层核心原理上来剖析Disruptor为什么可以“完全无锁“,为什么可以如此快?关于Disruptor的背景介绍,本文就不多费口舌了。直接引用网上一段常见的描述:Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易...

2016-11-23 14:13:09 4921 1

原创 分布式系统--2个层次/2个境界

在笔者看来,分布式系统有2个层次:怎么用轮子 + 怎么造轮子。怎么用轮子目前国内绝大部分的书籍、讲座,都集中在这个领域。具体说来,比如电商架构、微博架构、搜索架构、推荐系统等。。 在这个层次,主要关注如何利用各种中间件构建起1套业务系统:首先是各种中间件的选型:消息队列,RPC,分布式存储,分布式监控。。。 然后是各种策略,思想,也就是我在另一篇中所讲到的:比如拆分、在线 vs.离线、缓存、读写

2016-11-20 13:30:43 1803 2

转载 Scala课堂-6-高级类型

因为Kafka是用Scala写的,为了方便学习Scala语法,此处把Twitter官方的Scala课堂转载到此处。 (原文位于http://twitter.github.io/scala_school/zh_cn/index.html,由于时常被墙,速度极慢)。视界(“View”) 有时候,你并不需要指定一个类型是等/子/超于另一个类,你可以通过转换这个类来伪装这种关联关系。一个视界指定一个类

2016-11-12 14:44:10 838

转载 Scala课堂-5-类型和多态类型

什么是静态类型?它们为什么有用?按 Pierce 的话讲:“类型系统是一个语法方法,它们根据程序计算的值的种类对程序短语进行分类,通过分类结果错误行为进行自动检查。” 类型允许你表示函数的定义域和值域。例如,从数学角度看这个定义: f: R -> N 它告诉我们函数“f”是从实数集到自然数集的映射。 抽象地说,这就是 具体 类型的准确定义。类型系统给我们提供了一些更强大的方式来表达这些集合。 鉴

2016-11-12 14:37:27 2220

转载 Scala课堂-4-模式匹配和函数组合

函数组合 让我们创建两个函数:scala> def f(s: String) = "f(" + s + ")"f: (s: String)Stringscala> def g(s: String) = "g(" + s + ")"g: (s: String)Stringcompose compose 组合其他函数形成一个新的函数 f(g(x))scala> val fComposeG =

2016-11-12 14:30:07 657

转载 Scala课堂-3-集合-函数组合子map、foreach、partition

因为Kafka是用Scala写的,为了方便学习Scala语法,此处把Twitter官方的Scala课堂转载到此处。 (原文位于http://twitter.github.io/scala_school/zh_cn/index.html,由于时常被墙,速度极慢)。基本数据结构 Scala 提供了一些不错的集合列表 Listscala> val numbers = List(1, 2, 3, 4

2016-11-12 14:26:17 1298

转载 Scala课堂-2-基础(续)-apply方法、单例对象、模式匹配、样本类

因为Kafka是用Scala写的,为了方便学习Scala语法,此处把Twitter官方的Scala课堂转载到此处。 (原文位于http://twitter.github.io/scala_school/zh_cn/index.html,由于时常被墙,速度极慢)。apply 方法 当类或对象有一个主要用途的时候,apply 方法为你提供了一个很好的简洁的语法结构。scala> class Fo

2016-11-12 14:13:42 808

转载 Scala课堂-1-基础-表达式、函数、匿名函数、Partial application、柯里化、traits、类型

因为Kafka是用Scala写的,为了方便学习Scala语法,此处把Twitter官方的Scala课堂转载到此处。 (原文位于http://twitter.github.io/scala_school/zh_cn/index.html,由于时常被墙,速度极慢)。

2016-11-12 13:43:36 1242

原创 Kafka源码深度解析-序列14 -Server核心组件之3-SocketServer与NIO- 1+N+M 模型

对于任何服务器程序来讲,网络框架都是其最基础的部分。在前面我们分析了Producer端的NIO和Network框架,本篇将详细分析服务器端的Network框架。同时对比一下Kafka的1+N+M模型和Tomcat 6的1+N+M模型有什么重要区别。有兴趣朋友可以关注公众号“架构之道与术”, 获取最新文章。 或扫描如下二维码: 入口 KafkaServer让我们从main函数出发...

2016-11-04 16:28:53 2598

cocos2d-x多线程异步加载资源

项目中摘抄出来的代码,在LoadingLayer::onEnter()中,开了一个boost thread来加载资源

2014-08-08

最优化理论与算法-陈宝林著

关于最优化的国内很经典的一本书,网上很难找到

2008-12-20

自编用openGL实现3D分形树,分形山

大多数分形程序都是二维的,本人提供一个3DIFS分形树程序,以及分形山。 程序很简单,适合初学者.

2008-12-02

自编的VC实现俄罗斯方块

自已编写的用VC实现的俄罗斯方块,程序思路清晰,小而易懂

2008-12-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除