最新 | 最热门 | 最高评价

+0  并发编程两原则

Tag: Computer System | 分布式
ideawu 发于 2021年06月26日 20:17 | 点击: 380 | 展开摘要
之前写过一篇文章, 并发编程的核心技术 – 多版本(Multi Versioning), 本文继续对并发编程做一次更全面的总结, 这样的总结并非具体的编程指导, 而概括性的理论, 是笔记性质的.

根据经验总结, 并发编程的指导思想可以总结为两个原则, 也即并发编程两原则:

Sharding

Leveling

Sharding

Sharding 技术常见于分布式系统, 如果我举一个编程技巧里常用的技术, 估计你会比较熟悉 - 哈希锁. 例如 Java 语言里的 Con

查看全文: http://www.udpwork.com/item/17866.html

+0  可靠通信的三条基本定理(可靠通信三原则)

Tag: Computer System | 分布式
ideawu 发于 2021年06月06日 13:50 | 点击: 491 | 展开摘要
"通信"是一个广义的概念, 不仅限于计算机网络通信, 任何抽象或者具体的对象间的交互行为, 都是一种通信. 对象间一旦进行通信, 便有可靠通信的需求. 可靠通信至少包括三项要求:

不丢包

不重复

完整性(原子性)

为了达到这三项要求, 对应有三条定理(可靠通信三原则):

定理一(丢包定理): 确认和重传是解决丢包的问题唯一正确方法

定理二(去重定理): 排队(串行化)是解决去重问题的唯一正确方法

定理三(原子定理): 单点标记或者循环自校验是实现完整性(原子性)

查看全文: http://www.udpwork.com/item/17868.html

+0  操作的先后顺序的确定

Tag: Computer System
ideawu 发于 2021年04月24日 10:14 | 点击: 539 | 展开摘要
在计算机领域, 两个操作的先后顺序的确定, 是一个非常严肃的科学问题, 不能仅凭人的直觉来判定.

有两种方式可以规划两个操作的先后顺序:

通信协调

绝对时间规划

通信协调是指, 一个操作 (B) 在明确知道另一个操作 (A) 已经结束的前提下才启动, 那么便可以判定 (B) 在 (A) 之后. 这里说的"明确知道", 包含主观上的知道, 也包括客观上的知道. 例如, 对于顺序(串行)操作, 先后顺序是明确的客观的, 即使后一个操作不关心(或者说不知道)前一个操作是否已

查看全文: http://www.udpwork.com/item/17457.html

+0  并发编程的核心技术 – 多版本(Multi Version)

Tag: C/C++语言编程 | Computer System | 分布式 | 数据库 | 算法
ideawu 发于 2021年04月17日 18:20 | 点击: 463 | 展开摘要
在单机编程时代, 每一项数据只有唯一的一份, 对数据的修改也是 in-place 的. 但是, 在并发编程领域, 包括分布式系统, 数据多版本(Multi Version, Versioning)是核心.

我们先从单机编程的内存操作出发. 对于内存的操作, 都是原地(in-place)更新的. 对象和内存空间强绑定, 当更新对象时, 是将对象的内存空间擦除然后用新数据写覆盖. 到了多线程编程时代, 就引入了锁机制, 因为擦除和写操作过程不是原子性的, 可能擦除到一半时, 就

查看全文: http://www.udpwork.com/item/17461.html

+0  exFAT 文件系统指南

Tag: Computer
阮一峰 发于 2018年10月16日 17:35 | 点击: 1608 | 展开摘要
国庆假期,我拍了一些手机视频,打算存到新买的移动硬盘。

然后,就傻眼了。我的 Mac 电脑无法写入移动硬盘,因为移动硬盘的默认文件系统是 NTFS,Mac 不支持写入 NTFS。

虽然可以买一个软件解决这个问题,但是我不想为这种功能付钱。经过一番研究,我发现把移动硬盘的文件系统改成 exFAT,就可以解决问题,Mac 原生支持读写 exFAT。

由于这个问题很普遍,下面我就来写一写跟 exFAT 相关的知识。

一、文件系统

所谓文件系统,就是文件的储存方式。简单说,

查看全文: http://www.udpwork.com/item/17152.html

+0  CAP 定理的含义

Tag: Computer
阮一峰 发于 2018年07月16日 08:48 | 点击: 1579 | 展开摘要
分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的。

分布式系统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。

本文介绍该定理。它其实很好懂,而且是显而易见的。下面的内容主要参考了 Michael Whittaker 的文章。

一、分布式系统的三个指标

1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标。

Consistency

Ava

查看全文: http://www.udpwork.com/item/16955.html

+0  炮打TCP – 关于一而再再而三的粘包拆包问题的大字报

Tag: C/C++语言编程 | Computer System
ideawu 发于 2018年06月13日 15:05 | 点击: 1876 | 展开摘要
TCP 所谓的粘包和拆包问题,是技术圈里最奇葩的问题之一!

一而再,再而三,就跟傻逼的中国球迷支持中国足球队一样,前赴后继。有时候同一个人多次在犯同一个错误,有时候是前脚一个犯错了后脚又来一个还犯同样的错。即使是最优秀的程序员,也会在这个问题上面栽跟头,思维甚至很难转过弯,很久才能意识到自己的错误。而低水平的程序员就更不用说了,很多人到死都没有理解这个错误并解决掉,只是逃掉了而已。

我们固然可以认为原因是某些人学艺不精,但那么多的人,其中包括无数的优秀程序员在 TCP 粘

查看全文: http://www.udpwork.com/item/16902.html

+0  快速排序算法(QuickSort)的代码实现

Tag: Computer System | IT技术和评论
ideawu 发于 2018年05月10日 19:46 | 点击: 1792 | 展开摘要
快速排序算法,也即快排,是递归和分而治之这两种计算机基本思想的应用,再加上其实现逻辑复杂度较好,性能较快,所以快速排序算法非常经典。

快速排序算法经常作为面试算法题。快速排序算法本身并不复杂,其本身的逻辑非常简单,要掌握其思想不是难事,甚至基于其实现代码的形而上学的表面形状背下来也很轻松。但是,如果仅掌握了快速排序的思想以及代码表面形状,就认为自己懂了快速排序,就是没有真正地理解。

快速排序算法作为面试题,一是考查理论结合实践的能力,要求面试者除了知道快速排序算法的实现逻

查看全文: http://www.udpwork.com/item/16835.html

+0  根域名的知识

Tag: Computer
阮一峰 发于 2018年05月09日 08:09 | 点击: 1455 | 展开摘要
域名是互联网的基础设施,只要上网就会用到。

它还是一门利润丰厚的生意,所有域名每年都必须交注册费,这是很大的一笔钱。

这些钱交到了哪里?到底谁控制域名的价格?为什么有的域名注册费很贵,有的便宜?......今天,我就来谈谈这些与根域名(root domain)相关的知识。

一、ICANN

全世界域名的最高管理机构,是一个叫做 ICANN (Internet Corporation for Assigned Names and Numbers)的组织。它的总部在美国加州

查看全文: http://www.udpwork.com/item/16831.html

+0  汇编语言入门教程

Tag: Computer
阮一峰 发于 2018年01月21日 18:17 | 点击: 1709 | 展开摘要
学习编程其实就是学高级语言,即那些为人类设计的计算机语言。

但是,计算机不理解高级语言,必须通过编译器转成二进制代码,才能运行。学会高级语言,并不等于理解计算机实际的运行步骤。

计算机真正能够理解的是低级语言,它专门用来控制硬件。汇编语言就是低级语言,直接描述/控制 CPU 的运行。如果你想了解 CPU 到底干了些什么,以及代码的运行步骤,就一定要学习汇编语言。

汇编语言不容易学习,就连简明扼要的介绍都很难找到。下面我尝试写一篇最好懂的汇编语言教程,解释 CPU 如何执

查看全文: http://www.udpwork.com/item/16624.html

+0  加密货币的本质

Tag: Computer
阮一峰 发于 2018年01月11日 08:02 | 点击: 1760 | 展开摘要
去年,比特币暴涨,其他币也像雨后春笋一样冒出来,已经有1000多种了。

很多人都在问,加密货币(cryptocurrency)的时代,真的来临了吗?将来会不会人类不再使用美元、人民币,改用加密货币?那么多品种,我应该使用哪一种币?要不要现在就去投资一些?

这些问题的答案,我也想知道,就花了很多时间查阅资料、研究协议。前两周发表的《区块链入门教程》和《比特币入门教程》,是我的学习心得。但是,那两篇教程主要介绍基本概念、探讨协议的可行性,没回答一个根本的问题:加密货币到底是什

查看全文: http://www.udpwork.com/item/16606.html

+0  比特币入门教程

Tag: Computer
阮一峰 发于 2018年01月04日 08:07 | 点击: 1928 | 展开摘要
比特币(bitcoin)诞生于2008年的一篇论文。

一个署名为中本聪的人,提出了革命性的构想:让我们创造一种不受政府或其他任何人控制的货币!这个想法堪称疯狂:一串数字,背后没有任何资产支持,也没有任何人负责,你把它当作钱付给对方,怎么会有人愿意接受?

但是,狂想居然变成了现实。随后的几年,在全世界无数爱好者的支持下,比特币网络运行起来了,越来越多的人和资本参与,星星之火,终成燎原。刚刚过去的2017年,比特币迎来了爆发式的增长,从年初的1000美元,最高涨到了2万美元,

查看全文: http://www.udpwork.com/item/16589.html
|<<<1234567>>>| 一共9页, 99条记录