文介绍Git核心优点和实现思路,重点引申出对业务系统设计与开发的启示;由于篇幅有限,本文不详细介绍Git命令的具体执行细节,如果需要了解执行Git命令时,底层具体发生了什么, 请移步Git官方文档第十章 Git Internals。
Git作为一个前无古人,很可能后无来者的内容地址跟踪器, 席卷各大公司,深受所有程序员喜爱(觉得Git难用的除外), 肯定有他的过人之处。
先搬出互联网技术关键词标配:
分布式、去中心化、可靠性、容错性、可用性、数据一致性、性能是一个功能, 而不是一个优化等。
Git都满足有木有! Linus用两周就实现自举的Git十几年后依然健壮如初。假如我写一个接口或设计一个微服务或写一个小工具, 自带扩展技能,从来不挂,QPS暴增也无需推翻重构,外部依赖抖动时自动降级,数据量增大而没有拖垮性能, 能与Git有很多共同点,岂不很有成就感?
分布式:1)多人同一个分支不同地点不同时间并行开发;2)单人本地多分支并行开发。
性能: 速度要快。慢是Linus Torvalds本人无法接受的,因为linux内核每天有成百上千次提交。
安全与信任:即可靠性, 我push上去的代码pull下来一定还是我的代码, 没有丢失或被恶意篡改过。
插播一条语录:Bad programmers worry about the code. Good programmers worry about data structures and their relationships. - by Linus Torvarlds. (一般的程序员只关心代码,而优秀的软件工程师更关心数据结构以及他们之间的关系。)
Linus本人写C语言比较多,个人认为这里的data structures and their relationships 如果脱离C语言 的特定背景,可以泛指技术对场景或业务逻辑的抽象, 比如:面向对象建模,领域驱动, 甚至更宏观的架构设计或微服务怎样划分。
根据个人经验,如果系统设计的好, 代码稍微写low一点,整个系统的表现也不会太差, 而且代码的坑比较容易填;反之,再漂亮的代码也很难填上系统设计的坑, 只能面临重构。
对于Git内部结构可以简单的理解为: Git内部是一棵树, 每个节点都是一个指针(key), 这个指针(key)可能代表一个文件,或一次commit或一个分支起点或一次merge或一个tag, key对应的value就是内容, 如果key是代表一个文件, value就是文件内容;如果key是代表一次commit, value是一颗子树, 包含此次commit对整个项目的snapshot。
平时很多git操作都可以近似理解为: 在树上执行遍历查找O(lg(n)),切换指针O(1),然后根据指针取文件内容O(1))。这些操作速度都是很快的,只有在网络交互,文件压缩与解压和计算diff时,人肉可以感知到有时间等待。
对于Git,近期发生变化的数据属于热数据,Git假设这些数据会被频繁访问或使用到。其他数据为历史数据。对于热数据, 即使发生微小变化,Git也会全量冗余存储,提高访问效率。当热数据文件数量达到一定值时,会触发打包压缩逻辑, delta差异存储,节省空间。
对于不同的存储介质,例如db, redis, mq, 选用不同的存储逻辑或策略,以达到访问效率与存储空间的平衡。
Git对文件内容和项目整体snapshot都使用hash值表示,hash值与内容一一对应, 如果文件内容被篡改或硬盘损坏 导致数据丢失,hash值校验都会失败。此时Git设计时已经假设:1) 硬盘是随时崩溃的,即存储是不可靠的 2) 有人恶意引入Bug或偷偷修改代码
在分布式环境下,设计系统或接口,能否保持容错性,自带降级,建议多向自己提出假设:
先找出两个分支的公共祖先, 然后两个分支分别与公共祖先diff,指出有冲突的地方。Git merge并没有试图智能的去解决冲突,只是指出冲突,然后将merge交给最合适最高效的人去解决: 即引起冲突的开发者。
一般的代码, 用if else 判断边界值:
void remove_list_entry(entry)
{
prev = NULL;
walk = head;
// Walk the list
while (walk != entry){
prev = walk;
walk = walk->next;
}
//Remove the entry by updating the
//head or the previous entry
if(!prev)
head = entry->next;
else
prev->next = entry->next;
}
好的代码, 换一种写法,使正常处理逻辑可以兼容边界值:
void remove_list_entry(entry)
{
//The "indirect" pointer points to the
// *address* of the thing we'll update
indirect = &head;
//Walk the list,looking for the thing that
//points to the entry we want to remove
while ((*indirect) != entry)
indirect = &(*indirect)->next;
// .. and just remove it
*indirect = entry->next
}
平时编码中对边界值的处理是否优雅?
现在一个变量的传递会经过多种编程语言和中间件,中间过程一般有序列化和反序列化, 给空对象赋默认值等逻辑, 怎样保证实际结果与预想的完全一致?边界值处理不好,一是代码不好维护,二是容易引入Bug。日常碰到的边界值有: null, int默认值0等。
(如下为Linus Torvalds语录,仅供娱乐。Linus Torvalds以喷人闻名,网络上很多人指责他人品不行, 很少有人评价他的技术水平,可能是没有能力评价吧。)
本文由哈喽比特于3年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/bTcrAvRXlr1Q3soyhtKKbg
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。