架构设计
文章平均质量分 81
fpcc
行之苟有恒,久久自芬芳!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++编程实践——分布式文件系统
分布式存储技术通过整合网络中的存储资源实现数据分散存储,具有高安全性、可用性、扩展性和透明性等优势。其中分布式文件系统以HDFS、Ceph、GlusterFS等为代表,广泛应用于大数据分析、云存储、高性能计算等领域。不同系统各有特点:HDFS适合大文件批量处理,Ceph支持多种存储接口,GlusterFS无元数据服务器设计,TFS专为电商小文件优化。选择时需结合实际场景需求,综合考虑文件大小、性能要求等因素。随着大数据和云技术的发展,分布式文件系统已成为现代数据存储的重要基础设施。原创 2025-11-10 12:31:54 · 759 阅读 · 0 评论 -
设计心得—一致性的分析
本文探讨了计算机系统中一致性的概念、类型及其实现方式。一致性是确保系统协调统一运行的关键要求,包括严格一致性、顺序一致性和最终一致性三种模型。实现一致性需要硬件、编译器、操作系统和软件共同协作,涉及内存序、分布式算法、数据库事务等多种技术。虽然一致性保证了数据的完备性和操作的正确性,但也会影响系统性能。理解一致性原理对开发者处理复杂并行编程和底层开发至关重要。原创 2025-10-20 12:14:23 · 841 阅读 · 1 评论 -
设计心得——稳定和性能
本文探讨了软件设计的核心目标与平衡艺术。文章指出,软件设计的本质是高效解决复杂问题,关键在于稳定性和性能的辩证统一。稳定性包含可靠性、容错性等7个指标,性能则涉及响应时间、吞吐量等10个维度。作者提出设计者应像厨师或医生般灵活应对:通过资源管理、算法选择等保障稳定性,利用代码优化、平台调优等提升性能。二者关系如同"功法"与"拳术",稳定是基础,性能是目标。最后强调,优秀设计应基于实际需求,在保障一方的前提下适度提升另一方,而非追求绝对极值。全文150字,概括了软件设计原创 2025-10-17 08:09:22 · 533 阅读 · 1 评论 -
设计心得——拆分
本文探讨了软件规模扩大后的拆分策略。当软件功能模块膨胀到一定程度时,拆分成为必要手段,其核心目的是保持软件的可维护性和可扩展性。拆分本质上是再模块化和再分层的过程,但比初始设计更具挑战性。要实现优雅拆分,需明确目的、敢于突破原有设计框架,同时兼顾原有项目特点。优秀的架构师需要同时具备"平地起高楼"的设计能力和"治病救人"的拆分能力,这需要持续锤炼代码能力和设计思想。文章通过家族分家的比喻生动说明了软件拆分的必然性。原创 2025-09-22 18:37:52 · 353 阅读 · 0 评论 -
设计心得——平衡之道
俗话说得好“此一时,彼一时”,它的意思其实就是与时俱进。大千世界,各有不同,同样的经验不可能完全复制,甚至可能上一次的成功的经验是导致下一次失败的原因。人们都明白刻舟求剑的意思,但在实际的工作中,往往跳不出当前的局面,陷入了刻舟求剑的同样的境地。平衡也是如此,千万不能僵化的把上一次平衡的成功设计代入到不同场景,而应该是在不断的发展变化中得到一个趋向于最优结果的平衡设计。中庸之道,不是平庸之道,更不是平均之道,而是平衡之道。中庸之道没有标准,同样平衡之道也没有标准,一切以实际情况为准。原创 2025-09-13 09:04:02 · 500 阅读 · 1 评论 -
GPU中的SIMT
本文介绍了SIMT(单指令多线程)并行计算架构及其在NVIDIA GPU中的应用。SIMT与SIMD的主要区别在于:SIMT允许线程处理不同数据并支持分支处理,更适合GPU大规模并行计算;而SIMD则适合CPU上的向量处理。NVIDIA在GF100系列后转向SIMT架构,通过线程束(Wrap)实现高效并行。虽然二者各有优势,但在实际应用中往往结合使用,如CPU处理数据后交由GPU进行任务并行。技术的进步常源于竞争,不同架构的互补配合才能高效解决复杂问题。原创 2025-09-03 10:45:58 · 563 阅读 · 0 评论 -
设计心得——c++设计中常见的问题
本文探讨了C++语言与设计架构的关系,指出语言特性会影响设计风格。针对C++常见设计问题,提出了8项注意事项,包括避免反射、多继承、过度优化等。建议处理这些问题时需深入理解C++语言模型、善用标准库和开源工具、掌握资源管理机制,并遵循软件设计原则。文章强调设计应结合实际需求,形成自己的编程思想,而非追求业界顶尖设计。最后指出设计学习要带着问题意识,最终目标是建立个人的架构思想体系。原创 2025-08-23 09:12:39 · 351 阅读 · 1 评论 -
设计心得——如何架构选型
对架构的选型进行分析说明原创 2025-08-15 09:53:07 · 950 阅读 · 0 评论 -
设计心得——网络包的处理
本文从设计角度探讨了网络开发中的粘包和分包问题。TCP/IP作为数据流传输协议,本身不存在粘包分包问题,这些现象源于应用层对数据流的解析需求。作者通过快递运输的比喻形象说明TCP/IP会根据数据大小进行合并或拆分传输。对于处理方案,文章提出三种设计思路:优化数据包大小适配、调整网络通信配置、设计自描述数据格式,但指出最终仍需开发者综合处理。文章强调设计抽象与实际开发的区别,粘包问题需要从协议栈、缓冲区、应用层等多层面整体解决。本文聚焦设计层面分析,未涉及常见的分隔符、消息头等具体实现方案。原创 2025-08-02 09:17:18 · 428 阅读 · 0 评论 -
设计心得——同步和异步
从设计的角度对同步和异步进行分析和说明原创 2025-07-27 13:52:25 · 747 阅读 · 1 评论 -
设计心得——编程范式
理论和实践的关系和重要性往往大家都知道,但真正应用起来,却达不到效果。究其原因,就在于认知程度不够。自己很明白,但实际应用中却往往忽视一个方面或者懈怠于思考,不愿意进行理论和实践的互相印证和融合。这就极大降低了实践的能力和对理论理解的深度。知行合一,方是根本。知行互动,才是目的。原创 2025-06-08 10:35:18 · 537 阅读 · 3 评论 -
设计心得——抽象
摘要:抽象是从具象事物中提取本质特征的思维过程,在计算机领域表现为代码和设计思想的提炼。文章阐述了抽象的发展历程,从文字演化到编程应用;解析了表征性和原理性两种抽象类型;指出编程中抽象的应用价值在于解耦、封装和提升可维护性;强调优秀架构师需要兼具思想抽象和代码抽象能力。最后提出掌握抽象的方法论:持续学习理论并反复实践验证,才能实现从开发到设计的思维跨越。(148字)原创 2025-06-01 17:17:10 · 1004 阅读 · 3 评论 -
设计心得——封装
封装是面向对象编程的三大特性之一,它将数据和操作数据的方法整合在一起,形成一个独立的单元(如类或结构体),并对外隐藏内部实现细节,只暴露必要的接口。封装的意义在于提高代码的安全性、可靠性和可维护性,同时为继承和多态提供支持。通过使用不同的修饰符(如public、private、protected)和归类处理,开发者可以实现有效的封装。封装的应用实例广泛,如银行账户类中的余额管理。掌握封装是编程基础中的关键,只有打好基础,才能进一步提升编程水平。原创 2025-05-18 09:43:36 · 589 阅读 · 7 评论 -
设计心得——数据结构的意义
数据结构本质就是对数据处理的一种抽象,它做到了相对上整体的最优。即无论从访问、操作和存储都达到了一个最佳的平衡。它既是一种数据意义上的建模也是一种解决问题的思维范式,不但满足了数据处理本身的功能又可以为系统设计和工程实现提供了模式化的解决方案。要想做一个优秀的程序员和架构师,数据结构是绕不过去的。要想学好算法,数据结构更是基础。原创 2025-04-26 09:47:18 · 881 阅读 · 3 评论 -
设计心得——状态机
一定要明白状态机的目的和作用,要学会在不同的场景和条件灵活的使用状态机。一般情况下,状态机的设计不要过于复杂,这样不利用状态机的维护。同样过于简单的情况也不一定非得要用状态机。至于如何避免复杂,就记住一句话,拆分状态逻辑,利用中间层处理。状态机和其实现的方式,其实都是重点,重点在于如何将状态机与实际的实现逻辑严格的对应起来,保证状态的稳定和准确,特别是不能忽视某些特定条件的状态转换及行为的细微差异。只要能把握完整的状态流程,状态机的实现也就是一种代码的展开罢了。原创 2025-04-03 22:50:08 · 1207 阅读 · 0 评论 -
设计心得——发布订阅
目前,智能驾驶这个赛道火得很,但其中的车联网系统中就广泛使用了这种机制。所以说,掌握好原理才能更好的拓展一项技术的应用,而不只是机械的模仿。需要说明的是,本篇不是分析发布/订阅机制内部实现的文章,而重点在于将其如何应用于设计当中。尽管篇幅不大,但希望给大家一个另外的角度做为切入点,也就是说,要从不同的角度来看待一个技术问题,才能更好更全面的明白其在整个技术框架中的作用。原创 2025-03-28 20:51:39 · 1028 阅读 · 1 评论 -
设计心得——推拉机制
推和拉本身不难理解,也易于实现。但麻烦就在于实际应用场景中的复杂度和各种异常的处理,这才是重点中的重点。所以大家一定要根据实际情况进行平衡,保证所需。而不是为了应用推拉去实现推拉机制。原创 2025-03-26 11:42:03 · 965 阅读 · 0 评论 -
设计心得——事件机制的实现
本文主要是给不了解或者想学习事件机制的开发者一个入门的方法,重点在于提供一个初窥门径的视点。在明白了事件机制的原理后,可以根据自己的技术水平的增长和认知思想的不断提高,设计出一个相对更完善更合理的事件系统。万事开头难,临门第一脚。以后有机会在此基础上将一个相对事用的事件系统给大家剖析一下,那么就更容易在事件系统上总结提高。愿与诸君共勉!原创 2025-03-24 13:14:50 · 565 阅读 · 0 评论 -
为什么会有虚拟内存
本文不是讲虚拟内存技术本身或者说其技术的特点。重点是讲述为什么会存在虚拟内存,这是给后来开发者或者说设计者的一个解决问题的思路。活学活用别人的思想,真正领会这些技术架构的思想并学习和吸收成为自己的思想,才能更好的解决面对的问题,进而从整体上提高自己的技术。最后,技术的发展,不是凭空想象的,它一定是实际需求推动的。所以理论和实践相结合,是重中之重!原创 2025-03-23 09:55:25 · 776 阅读 · 0 评论 -
设计心得——安全性和健壮性
程序的开发,往往不是一两个因素影响,而是一个多重的因素整体互相影响确定的。而一个优秀的设计者就是要在这些因素中,找到关键的因素,也就是常说的主要矛盾,并处理在某些情况下,次要矛盾转化为主要矛盾时如何处理(比如程序异常时,保存了部分的文件怎么办)。所以,有丰富的理论和实践形成的指导思想,才是解决问题的关键所在。好医生是在病患未起时就将其消灭。也就是所谓的预防大于治疗。而目前看来,在软件开发中,仍然是以“治疗”为主。希望开发者们能尽量把重心前移,减少亡羊补牢的情况!原创 2025-03-23 09:52:45 · 811 阅读 · 0 评论 -
设计心得——如何实现接口
爱看武侠小说的知道有形意拳这个拳法,形和意,一外一内。而在武林中又有一句话“练拳不练功,到老一场空;练功不练拳,到老也枉然(犹如无舵船)!其实编程也是如此,光明白理论,不进行实践,那么进步就无从谈起;反之,光进行实践不学习理论,则方向无法把握,事倍功半。前面反复提及,计算机编程是一个理论和实践高度结合的技术,理论和实践是互相促进互相发展的,请大家务必明白这一点。既要扎实的推进编程的水平,又要不断的多看一些英文的资料紧跟技术发展的潮流和方向。原创 2025-03-22 21:46:10 · 794 阅读 · 0 评论 -
设计心得——作用域处理
简单的东西,往往意味着灵活。因为简单,所以应用的广泛,应用的广泛就意味着应用的场景丰富。不同的场景下的应用就有可能有细节的不同。而细节的丰富恰恰是C++的一个特点,也是为广大开发者觉得不容易把握的地方。作用域看似简单,但它和代码编写直接结合了起来。往往代码的水平就可以通过作用域的控制窥见一斑。而作用域还有一个特点,即使设计的较差甚至非常差,在一些中小程序中对程序的运行也不会有什么影响。往往就会让大多数中低程序员将其忽视。简单不代表容易把握,切记!原创 2025-03-21 22:47:58 · 993 阅读 · 0 评论 -
设计心得——多态
勿在浮砂筑高台。只有掌握技术本身,才能更好的在设计上展开应用。换句话说,一个优秀的设计者本身必须是一个优秀的开发者。这也是前一段时间网上经常说的所谓“PPT架构师”的味道。知其然并知其所以然,顺势而为,才可能有一个优秀的设计出来。原创 2025-03-15 19:11:21 · 395 阅读 · 0 评论 -
设计心得——粒度
学习设计就是从这些小的基础的东西一步步走过去的,不要妄想着上来就指挥千军万马并且打胜仗。甘罗八岁拜相,不谈真假,但几千年出不来几个。回头看看世界军事史,有名的军事家都是一枪一枪打出来的。没有人天生就是元帅。软件设计亦是如此,实践出真知。原创 2025-03-09 10:42:01 · 738 阅读 · 0 评论 -
设计心得——继承和实例
设计的学习难度说大很大,说小很小,关键看开发者的知识驾驭程度和水平。条条大路通罗马,但有没有捷径,这种捷径是否适合每个开发者?是不是有更适合具体到某一个人的捷径?这就需要每一个开发者和设计者不断的探索。总体而言,多学习理论知识,多写代码,多看优秀的开源代码和框架,多和优秀的设计者进行有效的交流。在此基础上不断的思考和实践,对大多数开发者来说,是一条不错的提升之路!原创 2025-03-08 09:38:40 · 486 阅读 · 1 评论 -
设计心得——分层和划分模块
设计一个从抽象到具体,从整体到细节,不断具体而微的过程。俗话说得好“教的曲儿唱不得”。设计不像技巧,多问两下多看两下代码就会用了。所以设计中的一些具体的手段和方法,要不断的从不同的角度不同的场景进行分析学习,并不断在实践中进行检验。反思得失,总结教训,形成自己的一套解决问题、处理问题的逻辑和流程。最终升华为自己的设计思想。这一定是一个长期的,不断的否定之否定的过程!愿与诸君共勉!原创 2025-03-07 22:27:56 · 1253 阅读 · 0 评论 -
设计心得——如何应用继承
一种技术如果不放到具体的场景中,谈不到优与劣,更谈不上对与错。技术的出现就是为了服务于现实的需求,如果脱离开这种需求技术的意义就没有多大了。如果实际的网络需求永远不会超过100K,那么光纤就可能不会被应用到网络传输上。合适的是最好的,但要明白,这个合适是动态发展、不断变化的。与诸君共勉!原创 2025-03-01 09:05:42 · 710 阅读 · 0 评论 -
设计心得——依赖注入控制反转和依赖倒置
在设计的过程中,最主要的目的就是实现“高内聚低耦合”。其实不耦合是最好的,但正如人是群体性动物一样,不和别的人发生各种关系是不可能的。而把这种发生的各种关系移植到代码上,就可以称之为依赖。这种依赖越少,就说明耦合程度越低(即解耦);反之则耦合程度越高。高内聚则是指,单元(一个函数,一个类等都可以是一个单元)内功能的依赖关系越紧密越好,也可以理解为相关功能关联度越紧密越好。原创 2025-02-23 09:29:39 · 1104 阅读 · 1 评论 -
设计心得——解耦的实现技术
设计是一个不断沉淀的过程,没有人可能一下就掌握了设计的全部精髓。这就和一个人的成长一样,从婴儿到成为一个健硕的青年,中间可能会经过无数的大大小小的错误,既有身体疾病上的成长的过程,也有思想不断成熟的过程。所以,设计只是一个人思想的外延。它既受主观的影响也爱外面客观的实践的影响。原创 2025-02-22 11:10:42 · 750 阅读 · 0 评论 -
设计心得——接口
接口的应用是极其广泛的,即使没有任何开发经验的初学者,可能第一个程序都会遇到接口的调用。一个开发者既要明白接口是什么,又明白常见的API和接口有什么关系。既要学会使用别人的接口,又能很好的设计自己给别人提供的接口。只有掌握了接口的真正本质,才可能适应在不同的场景接口的应用!原创 2025-02-21 21:41:29 · 473 阅读 · 0 评论 -
设计心得——平衡和冗余
软件设计不光是技术的问题,纯技术流往往会产生一种唯技术论的现象。软件的设计是一种现实与计算机交互融合的过程,往往涉及到技术之外的经济性、效率性、公平性等等具体的社会问题。软件设计是把软件的实现与实现世界结合起来,服务于现实世界,而不是一种独立存在。要始终明白,实际的需求才是软件技术发展的根本动力!原创 2025-02-01 21:05:23 · 1186 阅读 · 1 评论 -
设计心得——代码复用
代码复用除了从设计角度看,其实也可以从重构的角度来看。重构的一个重要目的就是减少冗余代码,那么做好代码复用当然冗余就会大幅降低。所以说,一件事,如果从不同的维度和不同的应用方向来看,就会有不同的效果。这就又回到文中的“编程思想” 了,思想是什么?其实就是现实抽象的结果。原创 2025-01-19 11:33:18 · 1174 阅读 · 0 评论 -
设计心得——解耦
前面提到过封装和相关设计的一些分析,在它们的实践的过程中,解耦其实就已经悄然的不请自来。面向对象开发中最重要一个方法是封装,可封装的优劣如何判定呢?其中一个重要的方法就是看封装的耦合度。解耦就是封装一开始就必须考虑的问题。设计和开发实践是体现开发者解耦能力的一个验证器。而将解耦设计好与坏,可能在当下并不会产生多大的效果,但在二次开发和完善修改时,就会发现,解耦的重要性。人教人很难学会,事儿教人一次就会。一个道理!原创 2025-01-18 09:41:14 · 1162 阅读 · 1 评论 -
设计心得——流程图和数据流图绘制
这篇文章不是教大家怎么绘制这两类图形的,因为这种资料太多了。这里主要是对其中的不同和应用的细节进行对比说明,这样让大家在实际的设计应用中不会混淆。主要是起一个借鉴和随时拿来做个参考的内容。原创 2025-01-03 21:52:13 · 1178 阅读 · 0 评论 -
设计心得——简单在计算机设计中的重要性
简单和复杂是相对的。简单是外在的,复杂是内在的。所以开发者要有追求简单的目标,但不能为了简单而舍弃所有,也不可能舍弃所有。总说的一句话,简单是王道,就是这个意思。无论是开发还是设计,都要善于从复杂走向简单,抽丝剥茧,实现从混沌到清晰!原创 2025-01-01 15:11:28 · 1092 阅读 · 0 评论 -
跟我学C++中级篇——错误的处理机制
这篇文章是有感而发。里面大多是一些实际的应用而不是技术的分析,大家可以见仁见智,批评讨论!原创 2024-12-28 12:50:03 · 967 阅读 · 0 评论 -
跟我学C++中级篇——C++开发的一些实践原则
原则的使用,是思想指导实践的过程的准则。它不光是一些干瘪的词汇,更是很多前辈总结出来的经验教训。如何能够灵活的运用这些原则来指导自己的开发,就看开发者自己对这些原则领悟的的深度了。“尽信书不如无书”,经验主义和教条主义害死人。开发者一定要真正的从思想上升华,进而灵活的运用这些原则,才是正理。原创 2024-12-14 11:18:51 · 345 阅读 · 0 评论 -
跟我学C++中级篇——RAII
Resource Acquisition Is Initialization,资源获取即初始化。C/C++的开发者都知道,在这类语言的开发中,内存需要手动来控制。也就是说,释放和回收内存得开发者亲历亲为。从某种角度看,能够把控内存的细节,当然是更灵活,可如果把控的不好,却是一场灾难。根据二八定律,对于绝大多数的开发者来说,都被划分到了灾难的一个方向(即使经验丰富技术高超的开发者也难免会出问题)。那么,尤如医学上所讲,预防大于治疗。在C++中,哪些对象的生命周期是不需要自己控制而由系统自动控制呢?原创 2024-11-16 11:50:58 · 861 阅读 · 0 评论 -
跟我学C++中级篇——Design Patterns的通俗说法
虽然在书籍上和网上有很多设计模式的特点,比如什么面向对象编程思想,可维护可扩展等等。其实就这是前面说的,说得高大上而已。一个简单就代表了可维护性,暗含了可扩展,简单的东西本一般来说容易扩展,而复杂的东西,理解都需要很长时间,怎么容易扩展?同样,简单可重复的东西自然就灵活,其它情况也基本如此。学习,要抓住问题的本质,不是说其它的东西不重要,而是抓住本质后,再学习其它的特点,就非常容易弄明白和记清楚。原创 2024-11-15 22:23:28 · 882 阅读 · 0 评论 -
跟我学C++中级篇——优化的整体分析
再次提醒,不要轻易展开优化。特别是对于一些中小公司的开发者来说,不要迫切的想优化你的项目。可能开发者的优化并不是设计者想优化的目的。同样,技术人员的优化可能并不是市场人员的优化的目标。说来归去,实事求是的根据实际需求进行优化。盲目的优化,有可能会让你盲目。原创 2024-10-18 22:03:45 · 1181 阅读 · 3 评论
分享