自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

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

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

原创 数据库原理 - 序列7 - Binlog与主从复制

本文节选自作者书籍《软件架构设计:大型网站技术架构与业务架构融合之道》。作者微信公众号:架构之道与术。公众号底部菜单有书友群可以加入,与作者和其他读者进行深入讨论。也可以在京东、天猫上购买纸质书籍。6.7 Binlog与主从复制6.7.1 Binlog与Redo Log的主要差异在MySQL中,Redo Log记录事务执行的日志,Binlog也记录日志,但两者有非常大的差别。首先,My...

2019-04-16 10:53:58 548 1

原创 数据库原理 - 序列5 - 事务是如何实现的? - Undo Log解析

本文节选自作者书籍《软件架构设计:大型网站技术架构与业务架构融合之道》。作者微信公众号:架构之道与术。公众号底部菜单有书友群可以加入,与作者和其他读者进行深入讨论。也可以在京东、天猫上购买纸质书籍。6.6 事务实现原理之2:Undo Log6.6.1 Undo Log是否一定需要说到Undo Log,很多人想到的只是“事务回滚”。“事务回滚”有四种场景:场景1:人为回滚。事务执行到一...

2019-04-15 10:25:33 689

原创 数据库原理 - 序列4 - 事务是如何实现的? - Redo Log解析(续)

本文节选自《软件架构设计:大型网站技术架构与业务架构融合之道》第6.4章节。 作者微信公众号:架构之道与术。进入后,可以加入书友群,与作者和其他读者进行深入讨论。也可以在京东、天猫上购买纸质书。6.5.5 Redo Log Block结构Log Block还需要有Check sum的字段,另外还有一些头部字段。事务可大可小,可能一个Block存不下产生的日志数据,也可能一个Block能存...

2019-04-12 11:02:31 678

原创 数据库原理 - 序列3 - 事务是如何实现的? - Redo Log解析

6.5 事务实现原理之1:Redo Log介绍事务怎么用后,下面探讨事务的实现原理。事务有ACID四个核心属性:A:原子性。事务要么不执行,要么完全执行。如果执行到一半,宕机重启,已执行的一半要回滚回去。C:一致性。各种约束条件,比如主键不能为空、参照完整性等。I:隔离性。隔离性和并发性密切相关,因为如果事务全是串行的(第四个隔离级别),也不需要隔离。D:持久性。这个很容易理解,一旦事务...

2019-04-11 10:09:50 714

原创 数据库原理剖析 - 序列2 - 事务隔离级别和死锁检测

本文节选自《软件架构设计:大型网站技术架构与业务架构融合之道》第6.3章节。 作者微信公众号:架构之道与术。进入后,可以加入书友群,与作者和其他读者进行深入讨论。也可以在京东、天猫上购买纸质书。6.4.1 事务的四个隔离级别通俗地讲,事务就是一个“代码块”,这个代码块要么不执行,要么全部执行。事务要操作数据(数据库里面的表),事务与事务之间会存在并发冲突,就好比在多线程编程中,多个线程操...

2019-04-10 11:19:19 566

原创 数据库原理剖析 - 序列1 - B+树

关系型数据库在查询方面有一些重要特性,是KV型的数据库或者缓存所不具备的,比如:(1)范围查询。(2)前缀匹配模糊查询。(3)排序和分页。这些特性的支持,要归功于B+树这种数据结构。下面来分析B+树是如何支持这些查询特性的。6.3.1 B+树逻辑结构图6-1展示了数据库的主键对应的B+树的逻辑结构,这个结构有几个关键特征:(1)在叶子节点一层,所有记录的主键按照从小到大的顺序排列,并...

2019-04-10 10:02:28 598

原创 HyperLedger - 序列6 - X.509 与 五花八门的证书文件.crt/.cer./.pem/.key...

跟安全相关的领域,有各种专业名词:X.509,CSR,LDAP,CA,PKI,MSP。。以及五花八门的各种证书。初接触者往往会眼花缭乱,理不清楚这些东西之间的关系。这1篇将在序列5的基础上,进一步介绍跟安全相关的各种内容。3个核心概念 在序列5,介绍了证书的概念;同时,在比特币的序列,也介绍了私钥和公钥之间的关系。这个地方,再次总结一下3者的关系: 私钥(Private Key) : ...

2018-06-21 13:28:00 788

转载 HyperLedger - 序列5 - Certificate(数字证书)、中间人攻击与 PKI

证书颁发与身份认证是Fabric的一个非常重要的环节,这1篇将从最基础的公私钥出发,详细解析整个基于PKI的安全体系。这个安全体系,不光是Fabric使用的,整个互联网(Https协议),也同样基于这个体系。对称加密 对称加密很简单,通信双方共享同1个密钥。但有个根本问题:你如何把密钥发送给对方? 密钥的发送过程,也需要加密,再来1个新的密钥,新的密钥又怎么发送给对方? 这是个连环套...

2018-06-21 13:27:09 1459 2

转载 HyperLedger - 序列4 - ReadWrite Set(基于版本的并发控制)

读写集(ReadWriteSet)是Fabric中1个相对比较难理解的概念,在比特币/以太坊这样的公有链网络上,也没有类似的东西。本篇将对读写集做一个深入浅出的介绍,讲清楚到底什么是读写集,以及为什么需要这个东西。 什么是读写集?读的什么?写的什么? 读写集是客户端在把Transaction发给Endoser,Endoser模拟执行返回的结果。也就是说:客户端把Transaction发给E...

2018-06-21 13:26:23 1002 1

转载 HyperLedger - 序列3 - 分布式一致性理论与Order Service解析

从比特币,到以太坊,再到HyperLedger,我们一直没有专门来讲1个问题,也就是分布式一致性。分布式一致性,也就是通常所说的共识算法,作为分布式系统的一个核心理论问题,它很重要,但往往也离上层的应用开发人员比较远,不是那么好理解,也因此在前面没有仔细来阐释这个。在经过足够多的铺垫,足够多的知识积累之后,本篇将对这个问题,做一个通俗,而又深入的讨论。2大类一致性问题 一致性问题,在...

2018-06-21 13:24:49 697

转载 HyperLedger - 序列2 - Fabric 1.0 架构解析与Transaction处理全流程

从本篇开始,正式进入Fabric的序列。大家如果看过前面以太坊的序列文章,知道以太坊的架构,理解Fabric会很容易。逻辑架构 下面这张图摘自网络(http://www.8btc.com/hyperledger-fabric1-0),展示了HyperLedger的逻辑架构。图画的很好,我就不另外再画了。本文主要结合这些图,用通俗的语言,把Fabric 1.0的架构讲清楚。竖着来看,3大块...

2018-06-13 11:49:35 944

转载 HyperLedger - 序列1 - 公有链 vs 联盟链

在前面的2个序列,分别介绍了区块链1.0(比特币 第2课 走进 “区块链”与”比特币”的世界)和区块链2.0(以太坊 序列1 - 以太坊的诞生,史上最大ICO之一)。本篇开始,进入第3个序列,联盟链 - HyperLedger的解析。公有链 比特币和以太坊,都称为“公有链”,因为他们是全球范围内,完全开放的。任何组织,或者个人,都可以自己建Node,加入这个网络。公有链有什么特点呢?...

2018-06-13 11:48:06 1825

转载 序列5 Solidity与web3.js - 智能合约的编写、编译、部署与执行

有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 在序列4 EVM,Solidity和其它各种编程语言中,我们介绍了EVM和Solidity语言。这1节,详细来介绍Solidity语言的语法,以及如何部署、执行智能合约。整体介绍 在整个过程中,涉及到Solidity和web3.js 2个东西。首先用Solidity语言编写源代码(相应的IDE编辑工...

2018-06-07 16:45:43 2211

转载 序列4 EVM,Solidity和其它各种编程语言

有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 在前面序列2 – 到底啥叫“智能合约”我们说了,以太坊是一个智能合约的平台。智能合约本身呢,是一堆代码。既然是代码,就涉及到编程语言,涉及到语言的编译、部署、执行等一系列过程。本节就对智能合约的编程语言做一个总体介绍,后面随着逐步的深入,会对这种语言有一个更深的认识。EVM 说到Java,大家都知道有...

2018-06-07 16:44:35 1365

转载 序列3 -- 没有了UTXO,新来了WorldState

有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 在比特币系列第9课 Transaction数据结构、UTXO、钱包 – 详解中,我们详细讲解了比特币网络的核心交易模型:UTXO。在比特币网络中,并没有“账户余额”的概念。所谓的账户的余额,其实是所有UTXO的相加。在任何一笔花费中,不是从账户余额花出去的,而是花费的UTXO;并且UTXO是不可分割的,1个...

2018-06-07 16:43:15 1028 3

转载 业务架构 序列5 -- 以终为始(非功能性需求分析)

我们知道软件有功能性需求和非功能需求之分。在很早以前,惠普公司的罗伯特·格雷迪(Robert Grady)及卡斯威尔(Caswell)就提出了FURPS需求模型(关于什么是FURPS模型,自己百度之)。有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 软件的非功能性需求其实有很多,不同类型的软件,其侧重点也会有差别。同时,随着分布式系统的发展,这方面的理论...

2018-06-04 12:37:22 1504

转载 序列2 -- 到底啥叫“智能合约”

有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 在序列1 - 以太坊的诞生,史上最大ICO之一中,我们说了以太坊是个智能合约的平台,这个是以太坊在比特币网络基础上,做出的一个重大技术创新。本文呢,就从现实生活的角度切入,来通俗的解释一下什么是“智能合约”。现实生活中的合同 在现实生活中,我们做复杂的交易,通常甲方和乙方都会签订1份合同。甲方呢,出钱...

2018-06-04 12:31:35 486

转载 序列1 - 以太坊的诞生,史上最大ICO之一

在区块链1.0(比特币)这个序列中,我们详细分析了比特币和区块链的整个技术体系。从本课开始,本序列将系统化的分析以太坊的整个技术体系。有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 截止2018年,以太币已经成为市值仅次于比特币的第2大加密货币,其背后对应的区块链技术(通常称为区块链2.0)也得到了广泛应用。以太坊的诞生 – 史上最大ICO之一 2...

2018-06-04 12:28:22 3926

转载 业务架构 -- 序列4 -- 圈定边界(利益相关者分析)

做1个系统,跟做1个产品一样,首先要问的是你的用户是谁。在架构里面,称为利益相关者。有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 什么是利益相关者下面随便举几个例子,来说明利益相关者:例子1:微信微信有哪几类人在用?C端普通用户支付收款个人商家支付收款接入商/开发商游戏开发商广告投放商家订阅号作者服务号开发者...

2018-05-27 19:24:29 1802

转载 业务架构 序列3 真的分层 vs. 伪分层架构?

有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 说到分层架构,相信没有人不知道,一个被说烂的词。无论业务架构,还是技术架构;无论做C端业务,B端业务;无论做服务器,还是客户端,还是别的什么地方,所有人都会用这个。但就是这样一个熟悉的不能再熟悉的架构方法,却往往被滥用。下面这个图,展示了一个最常见的一个互联网系统的分层架构:但是它只是停留在PPT上...

2018-05-27 19:22:59 975 1

转载 第16课 闪电网络(Lightning Network) 之 HTLC

有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 在第14课 闪电网络(Lightning Network) 之 RSMC 中,我们知道了RSMC实现了买家和卖家之间的双向支付通道。但这还不够方便,任何时候2个人之间要交易,就得建立支付通道。 有没有更便捷的办法,在买卖双方不建立通道的情况下,也可以实现交易?闪电网络的基本思路 如下图所示,A...

2018-05-23 11:12:31 3229

转载 成为1个技术大牛的入门到进阶之路(学习路线图)

有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 计算机领域技术更迭非常之快,内容博大精深。涉及到分布式架构,更是分支众多,知识庞杂。很多新人在最初往往找不到头绪,不知道从何处下手来一步步提升自己的技术水准。本文将介绍要成为1个技术大牛的18般兵器谱,以及这条打怪升级之路,希望可以让新人少走弯路,在这条路上一步步提升自己。阶段1: 计算机功底...

2018-05-20 19:56:52 4700 2

转载 第15课 闪电网络之 Script Language与Script Engine

有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 在第10课 交易安全性如何保证? – scriptSig/scriptPubKey/Script Engine里面,我们提到在比特币网络里面,设计了1种脚本语言,并且有1个脚本引擎来解释执行这个语言。在这1课,我们将对脚本语言进行1个深入的讲解,因为这个是闪电网络的重要基础,也是以后要讲的“智能合约...

2018-05-17 17:53:53 542

转载 第14课 闪电网络(Lightning Network) 之 RSMC

有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 在第13课 微支付通道(MicroPayment Channel) – 迄今为止最透彻的讲解了里面,我们深入分析了微支付通道。微支付通道有些缺点,1个是单向的,另1个就是nLockTime问题,即使1方跑路了,另外1方也要等到nLockTime到期了才能把钱退回来。闪电网络优化了微支付通道,解决...

2018-05-17 17:51:59 2776 1

转载 第12课 nLockTime(CLTV)与Sequence number(CSV)

有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 在第9课 Transaction数据结构、UTXO、钱包 – 详解中,我们对Transaction的数据结构进行了深入剖析,其中最关键的部分就是UTXO。这节课,我们讲详细说明Transaction里面另外2个关键字段:nLockTime 与sequence number,同时也介绍2个常用专业术语...

2018-05-15 11:39:10 1405

转载 第11课 账号被黑客盗取怎么办? -- 多重签名(MultiSig)与P2SH

多重签名 - 1个保险箱多把钥匙 在第8课 账号相关概念:公钥/私钥/Public Key Hash/P2PKH我们知道了,1个账号对应1对公钥/私钥,公钥是公开的,私钥你私自保存。但是如果私钥被黑客盗了呢,那怎么办呢???前面我们说过,比特币的账号是没有实名认证的,不像现实中丢了账号,还可以拿身份证去银行挂失。在比特币的世界里面,只认私钥不认人!除了私钥,你没有别的证件,可以证明这个账...

2018-05-15 11:36:08 1123

转载 第10课 交易安全性如何保证? -- scriptSig/scriptPubKey/Script Engine

在前面第8课 账号相关概念:公钥/私钥/Public Key Hash/P2PKH我们讲公/私钥的时候,说过:A给B转账的时候,会先用A的私钥进行签名,再转账给B的公钥。这个过程,说明了2件事:用A的私钥签名,证明了这笔钱是A的;转账给B的公钥,证明了这笔钱是转给B的,不是转给别人的。接下来,B要花这笔钱,比如转给C;同样的,要用B的私钥签名,转账给C的公钥。下面就来详细的分析一下1个...

2018-05-13 12:30:50 1907

转载 第8课 账号相关概念:公钥/私钥/Public Key Hash/P2PKH

在前面第2课,我们粗略引入了比特币网络中账号的概念。在此课,我将对账号相关的几个概念,做更深入的阐释,这部分也是整个区块链技术的基础。有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 一、公/私钥 公/私钥的基本思路是:每个用户生成1对公/私钥,相当于账号与密码。A给B转账,先用A的私钥签名,再把钱打入B的公钥,只有B能用自己的私钥解密。这里...

2018-05-11 17:33:50 2058

转载 第7课 币和交易,谁生成谁?先有鸡,还是先有蛋?

有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 在前面课程中,我们知道比特币来自交易产生的奖励,但交易又需要用到币。也就是说:交易产生了币,但同时交易又要用到币。那问题就来了:币和交易,先有鸡还是先有蛋? 没有币,怎么生成交易?没有交易,系统怎么给矿工奖励币?下面就翻一翻比特币的发展史:2009.1.3 中本聪在位于芬兰赫尔辛基的一个小型服...

2018-05-11 17:30:46 693

转载 第6课 分叉与51%算力攻击

时间仓促,待更新。有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取最新文章。 或扫描如下二维码:

2018-05-05 12:13:33 1153

转载 第3课 “区块链”到底长啥样?

在 第2课 走进 "区块链"与"比特币"的世界 里,我们对区块链与比特币这2个概念有了一个初步认识,在这节课里,我们将进一步阐述区块链的内部结构,看一下区块链到底长什么样。区块链,顾名思义,有块(Block),然后把块链在一起(Chain),也就是区块链(Block Chain)。有兴趣朋友可以进一步关注公众号“架构之道与术”, 获取最新文章。或扫描如下二维码:一、P2P网络区块链网络首先是一个P...

2018-04-13 15:41:14 936

转载 第1课 掌握区块链技术需要的预备知识

从2009年中本聪提出区块链技术以及对应的数字货币-比特币,到如今已经快10个年头。在这期间,出现了形形色色的概念、技术、金融玩法,从各种币的发现、到矿机、矿池、交易所、隔离见证、智能合约、ICO。。。从本课开始,本序列将从最基础的知识开始,逐层解剖区块链相关的方方面面的技术以及各种衍生生态。1. HASH, Base64编码, Base58编码, Base58Check编码这几个基础概念,自己百...

2018-04-13 14:55:27 1106

原创 带你一步步走入Paxos的世界 -- 序列4 -- Multi-Paxos

在前面的序列中,我们知道Basic Paxos可以用来确定1条日志。而Multi-Paxos就是针对每条日志都执行1个2PC的Paxos协议,从而确定多条日志,也就是一个日志流。有了日志流,就能基于日志流建立一个”复制状态机“模型。有兴趣朋友可以关注公众号“架构之道与术”, 获取最新文章。 或扫描如下二维码: 复制状态机在上图中,有3台机器,每台机器上都有一个日志流+1个状态机...

2017-06-30 12:12:05 2139 1

原创 带你一步步走入Paxos的世界 -- 序列3 -- Basic Paxos

在前面的序列2中,我们引出了Basic Paxos,其目的就是为了确定1条日志,1条日志对应到Basic Paxos里面就是一个value。有兴趣朋友可以关注公众号“架构之道与术”, 获取最新文章。 或扫描如下二维码: 2个角色:Proposer和Acceptor在前面的场景中,我们提到3个client并发的往3个node发送3条写指令。对应到Paxos协议里面,就是每个node同...

2017-06-05 20:25:28 1133 3

原创 带你一步步走入Paxos的世界 -- 序列2

在上一篇我们谈到了复制日志的问题,每个node上面存储日志序列,node之间保证日志完全一样。可能有人会疑问:为啥我要存储日志,直接存储最终的数据不就行了吗?有兴趣朋友可以关注公众号“架构之道与术”, 获取最新文章。 或扫描如下二维码: 复制状态机日志与状态机我们可以把一个变量x,或者复杂一点,一个对象,看成是一个状态机。每1次写请求,就是一次导致这个状态机发生变化的事...

2017-06-01 21:46:18 988

原创 带你一步步走入Paxos的世界 -- 序列1

说起Paxos,很多人都知道,并且大家对它的看法基本都是“晦涩难懂”。除了Lamport那2篇鼎鼎大名的原生paper,网上文章也很多。但看来看去,总觉得“云山雾罩”,也不知道为什么要这么做,以及它到底能解决什么问题。我觉得究其原因,一方面是很多Paxos的资料,都是在通过形式化的证明,去论证这个算法的正确性,自然艰深晦涩;另一方面,基于Paxos的成熟的工程实践也不多,大家讨论来讨论去,都不...

2017-06-01 18:53:06 1404 1

原创 DDD -- 领域驱动设计 -- 面向对象(OOA/OOD)的缺陷

OOA/OOD/OOP中,尤其是OOD/OOP,大家都不陌生,用了很多年。并且大部分人,都是从OOP开始,到了一定阶段,会再去接触OOD, 之后是OOA。这样用久了,自然而然会觉得“面向对象”是天经地义的,不太会去想面向对象有什么问题所在。而DDD里面,就很明确的指出了面向对象的2个问题,并给出了相应的解决答案。有兴趣朋友可以关注公众号“架构之道与术”, 获取最新文章。 或扫描如下二...

2017-05-08 12:48:55 3963

原创 DDD -- 领域驱动设计 -- 到底啥叫“建模”?

在软件领域,说到“建模”,就会蹦出各种各样的名词:面向对象建模、业务建模、领域建模、UML建模、ER实体建模、4色建模法、DCI。。这些方法之间有区别,又互相有交叉;有的比较新,有的是以前的老方法。混在一起,很容易让人”云山雾罩“,讲来讲去,不知所云。然后学的人,很容易照葫芦画瓢,画各种看上去高大上的图:业务流程图、类图、交互图。。但仔细一深究,又是到处漏洞,图不能完全表达义务语义,“华而...

2017-05-08 12:17:59 4170 1

原创 技术管理序列3 -- 技术的价值究竟何在?-- 价值模型

作为一个程序员,特别是有技术追求的程序员,最经常关注的就是:技术有多么牛,多么复杂,多么酷炫。。可当被问到你做的东西,有什么“价值”时,往往却很难说清楚。在这里,我想抛出这样一个终极问题:技术的价值到底是什么?我们都知道Github上有很多开源项目,那么这些项目的价值大小,是如何衡量的呢?下面有一些考虑因素: 以技术复杂度来衡量? 以代码行数来衡量? 以技术的先进与否衡量? 以是否有创新性衡

2017-04-19 16:35:20 1543

原创 技术管理系列2 -- 如何在一个团队塑造自己的影响力?

刚入职场时,大家都很青涩,能力也都差不多。然后几年之后,有的人升成了leader,负责更大的事情;有的人还在原地踏步,没有多大提升。影响一个人职业生涯的因素有很多,有公司业务问题,有运气问题,有跟的人/团队是不是靠谱的问题,有个人和领导性格是否合拍的问题。这些问题呢,很多超出了一个技术人的掌控范围。而本文呢,想从最底层谈谈,作为一个技术人,如何务实的一点点塑造你自己的影响力。而这个事情里面,没有运气

2017-04-19 15:42:39 1233 1

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关注的人

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