- 博客(14)
- 收藏
- 关注
原创 敏捷已死?
对于很多新时代的程序员,对于敏捷软件开发的概念,已然是很模糊的状态。因此有必要再引一下敏捷的发展历程,回顾一下哪些程序员激情燃烧的岁月。一、核心流程与工件管理二、团队协作与沟通三、质量与改进实践。
2025-10-26 21:59:45
282
原创 C++的map[key]使用陷阱--用放大镜看代码开发
这一版还是不完美,因为在find之后,如果find到元素,但是有可能在执行fooMap[key]的瞬间,元素被删除,此时操作的就不是find的元素。为了保证状态的一致性,一是可以对fooMap的操作加锁,同时要使用find出来的it值进行操作,而不是使用fooMap[key]操作。这样的话,如果std::make_shared<Value>()失败,就不会往fooMap中放东西,反过来讲,只要能从fooMap中find到,一定非空,这样就能保证fooMap中能find到的元素,一定是有效的,不需要再判空。
2025-09-15 13:23:49
330
原创 开源软件API设计原则(1)
正如Apache软件基金会倡导的:"好的开源API应该像城市的古老建筑——外部保持稳定,内部允许改造。"这种平衡艺术正是优秀开源API设计的精髓所在。正如Linux内核开发者Greg Kroah-Hartman所说:"开源API不是合同,而是承诺。:开源API可能被数以万计的开发者使用,而企业内API的调用方通常可枚举。:封闭系统中可通过协商逐步升级,而开源API的变更可能导致社区生态断裂。:建立API评审委员会(如Node.js的CTC):78%的兼容性问题源于未定义的异常行为。
2025-04-04 17:09:00
418
原创 linux内存管理概述
内存分配:例如,要请求一个256页(1M)的内存块,如果能找到,直接分配,如果找不到,则找512的内存块,如果能找到512的内存块,则将512的内存块,拆成2个256的内存块,将其中一个256页的块,分配给请求者,另一个256页的块,插入256页块的链表中。将所有的内存空闲页分组为11个块链表,每个块链表分别包含大小为1,2,4,8,16,32,64,128,256,512,1024个连续的页。每个块第一个页的物理地址是该块大小的整数倍,例如,大小为16个页的块,其起始地址是16*4096的整数倍。
2023-12-01 07:29:39
134
原创 linux内存-页表管理
2级页表:需要的页数是256M/4K = 65536个物理页,一个二级页表(占4K物理内存)能表示1024(1K)个物理页地址,因此65536个物理页面需要65536/1024 = 64 个二级页表,同理,一个一级页表,能够包含1K个二级页表首地址,所以一个一级页就够了(能涵盖64个二级页表)。在64位架构的机器上,一个进程的虚拟地址空间大小理论上可以达到2的64次方字节,即16 EB(exabytes,十八亿GB)。不过,即使如此,64位架构依然能够支持更高的内存容量和更高的性能。
2023-12-01 07:28:18
557
原创 架构整洁之道--跟开源三方软件划清界限实战案例
本文根据《架构整洁之道》的指导原则,提供一种解决跟开源三方软件划分界限的设计方法,以提升基于开源三方软件开发效率。
2022-09-11 11:09:55
321
原创 架构整洁之道解读
本文解读Bob大叔的《架构整洁之道》一书,除了提炼整本书的内容外,对其中的一些隐晦知识点进行了展开讨论。希望跟有志于在软件架构上深耕的同仁一起探讨。
2022-09-06 00:10:18
1878
原创 小马过河
小马和他的妈妈住在绿草茵茵的十分美丽的小河边。除了妈妈过河给河对岸的村子送粮食的时候,他总是跟随在妈妈的身边寸步不离。 他过的很快乐,时光飞快地过去了。 有一天,妈妈把小马叫到身边说:“小马,你已经长大了,可以帮妈妈做事了。今天你把这袋粮食送到河对岸的村子里去吧。” 小马非常高兴地答应了。他驮着粮食飞快地来到了小河边。 可是河上没有桥,只能自己淌过去。可又不知道河水有
2016-06-06 21:08:03
580
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅