架构/重构类
文章平均质量分 95
架构学习,面向对象,重构分析等
runafterhit
good good study,day day up
展开
-
关于架构设计与设计文档的一些思考
写了好几年代码,从开始懵懵懂懂不设计不写文档,到先搞一半再补文档,到先设计再编码调试。后来阅读各种好坏设计文档,看好的坏的代码,接触架构清晰的模块,也体验过在一团糟架构上新增规格的艰难。最近看了一些大佬对于架构设计的思考见解、刚好有新项目需要自己重新设计架构,在这个过程中产生了很多想法,趁热打铁做博文记录自己的收获,也提醒自己多总结,后续也会持续更新。本文不涉及具体的架构描述手段,有很多书籍可以借鉴,更多是对过去总结和为什么要做,怎么做,做到什么程度的思考,比较口语化。文章目录一、写在前面的一些例子新房原创 2021-10-01 22:50:41 · 461 阅读 · 0 评论 -
linux系统基础性能工具
文章目录介绍top---实时系统进程状态监控ps---查看当前系统进程信息快照vmstat---查看虚拟内存系统状态iostat (待更新)netstat(待更新)sar(待更新)uptime---负载分析工具(待更新)/proc(待更新)介绍top—实时系统进程状态监控它显示出 CPU 的使用、内存的使用、交换内存、缓存大小、缓冲区大小、过程控制、用户和更多命令。它也会显示内存和 CPU 使用率过高的正在运行的进程,含义说明如下:// 当前时间 系统已经运行时间 当前用户数量原创 2020-08-24 08:26:52 · 150 阅读 · 0 评论 -
linux性能分析工具专题-perf(事件采样,全面性能分析)
文章目录概述perf---linux性能分析工具perf的基础命令集介绍perf的事件介绍---perf list参看常用命令perf stat---运行一个命令并且统计过程事件perf record---收集性能数据,记录到文件(默认perf.data)perf report---读取性能数据(如perf.data)进行报告输出perf annotate---读取性能数据(如perf.data)进行代码输出perf top---输出系统某个事件热度函数或者指令排序调试技巧参考资料备注:本文调试版本以pe原创 2020-08-22 09:22:23 · 8527 阅读 · 0 评论 -
linux性能分析工具专题-ftrace(延时分析/函数追踪)
文章目录概念ftrace基础概念参考资料概念ftrace基础概念ftrace是一个内核中追踪器,用于帮助系统开发者或者设计者查看内核运行情况,可以调试或者分析延迟、性能问题。最早ftrace是一个function tracer,仅能够记录内核函数调用流程。如今trace已经成为一个framework,采用plugin的方式支持开发人员添加各种种类的trace功能。参考资料内核文档:https://www.kernel.org/doc/Documentation/trace/ftrace.txt原创 2020-08-20 08:30:27 · 2296 阅读 · 0 评论 -
《性能之巅》阅读总结
文章目录一、性能分析概念性能定义与权衡要素性能的扩展性(负载增加性能变化)性能权衡三角关系性能投资回报率性能分析困难原因产品性能领域典型事项二、性能分析方法性能分析思路视角性能分析常见指标性能分析典型方法(举例)性能分析建模性能测试统计监控与可视化三、性能分析关键要素应用程序设置性能目标常见优化思路典型应用程序性能技术语言选择与编译优化虚拟机垃圾回收操作系统基础内核、内核空间/用户空间任务/进程/线程、上下文切换中断 、中断 上半部/下半部。内存管理CPU内存分配器介绍文件系统磁盘网络四、性能分析观测工具计原创 2020-08-16 22:37:55 · 2613 阅读 · 0 评论 -
性能优化-编码优化(C语言)
文章目录整体思路与误区分支预测优化likely/unlikelyif语句的预测case分支预测条件判断次序变量与内存访问优化减少不必要的赋值减少全局变量的访问复杂结构体变量间直接赋值比memcpy效率高结构体布局对齐函数调用优化减少函数的参数异常分支独立函数避免小函数调用开销(提炼宏函数)缓存操作:减少实时性不高的函数调用及消息循环体优化循环展开,降低循环层次或者次数循环合并(计数器相同的),避免多次轮询循环内计算外提(每次计算不变),降低无效计算循环内多级寻址外提,避免反复寻址跳转循环内判断外提(某时刻结原创 2020-08-03 00:08:31 · 978 阅读 · 0 评论 -
性能优化-整体优化策略介绍
文章目录性能优化维度系统环境优化方案设计优化算法设计优化编码级别优化性能优化策略性能检查工具性能优化维度系统环境优化方案设计优化算法设计优化编码级别优化性能优化策略性能检查工具...原创 2020-08-02 21:17:40 · 945 阅读 · 0 评论 -
简图记录-linux驱动开发 提升代码业务效比
概念linux底层驱动开发 通常是基于C语言,相对其他面向对象高级语言 缺少了 完善的异常处理机制 和 各种面向对象特性支持,但同时驱动开发对安全性要求又是极高的(毕竟是内核系统的一部分)。此时在设计中容易引发两类问题:(1)、自由的底层语言开发过程,容易引起 缺少抽象的接口和模块设计,混乱的调用关系 和 耦合的数据结构。(2)、极其复杂的异常处理设计,容易包含 冗余无效的异常处理,和 不...原创 2019-06-30 14:17:41 · 164 阅读 · 0 评论 -
《软件架构设计》-详细学习总结
文章目录一、概念软件架构定义---组成派与决策派架构设计的原则---看透需求/把握大方向/设计各个维度架构平衡的要素---来自多方面的诉求二、架构的设计过程1、需求分析---来源/完整性/设计转化需求来源---愿景分析+需求分析需求的完整性---多维度多层次需求转向设计的关键思维2、领域建模---概念的可视化抽象典型问题-过多的假设---促进用户沟通典型问题-领域复杂度过高---渐进清理3、确定关键需求---众说纷纭 到 真知灼见 到 付诸行动确定关键质量确定关键功能4、概念架构设计5、细化架构设计逻辑视图原创 2020-07-04 09:19:37 · 1273 阅读 · 0 评论 -
面向对象基础概念总结
一、背景个人在工作一直是使用C语言从事驱动设计开发,有几年的经验,但设计上一直没有套路,希望在架构设计上更进一步。个人对面向对象的理解 目前只存在基础概念阶段,java c++也只熟悉一些最基本的语法,没有面向对象语言项目开发经验。学习目标:总结一些基础的面向对象概念,帮助设计模式理解 、UML学习 以及 后续 面向对象语言 系统学习。二、概念1.面向对象Object Oriented一...原创 2020-03-08 15:08:36 · 352 阅读 · 0 评论 -
软件建模 与 UML 学习总结
一、背景个人在工作一直是使用C语言从事驱动设计开发,有几年的经验,但设计上一直没有套路,希望在架构设计上更进一步。在做软件详细设计的时候,也会按自己的理解做写 模块图、状态图、时序图,但是都不规范,增加了交流成本。学习目标:理解UML相关基础概念,运用到实际的工作设计中,重点是 用例图 类图 时序图 ,和其他设计者语言共同,简化交流成本。二、概念UMLUnified Modeling ...原创 2020-03-08 23:33:55 · 1748 阅读 · 0 评论 -
《重构改善设计》重构思想梳理总结
《重构》整本书的内容梳理总结-详见:https://blog.csdn.net/runafterhit/article/details/106416067下面是个人对书中一些关键思想 梳理总结。关键词:重构:对软件内部结构的一种调整,在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本重构的原因:改善软件设计/提升可读性/帮助寻找bug/提高编程速度重构时机 :添加功能时 / 修补错误时 / 复审代码时软件面临困局1、软件有一个良好的初始版本,考研 设计者 对 需求的理解深度 和原创 2020-06-05 00:45:49 · 656 阅读 · 0 评论 -
《重构改善设计》详细阅读总结
一、概念什么是重构对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。为什么要重构改善软件设计:如果不加重构维护程序设计往往会逐渐腐化。1、完成同样的需求,方案本身就有好有坏。2、即使是良好原始方案,也难以避免(没有吃透方案前)修改代码引起的结构流失。3、代码腐化后 添加新特性 需要耗费更多的工作量,未来更难以维护。提升可读性:早期重构,使代码更简洁便于理解,类似擦掉窗户上的污垢,让你看得更远。帮助寻找bug:对代码重构的同时,可以加深对方案的理解,弄原创 2020-06-02 00:25:22 · 553 阅读 · 0 评论 -
设计模式概念初学总结
一、背景个人在工作一直是使用C语言从事驱动设计开发,有几年的经验,但设计上一直没有套路,希望在架构设计上更进一步。个人对面向对象的理解 目前只存在基础概念阶段,java c++也只熟悉一些最基本的语法,没有面向对象语言项目开发经验。学习目标:1、设计模式基础概念;2、常用的几种模式;3、如何学习;4、什么场景使用;二、概念软件设计复杂的根本原因:变化。客户需求,技术平台,开发团队,市场环境...原创 2020-03-04 00:32:02 · 324 阅读 · 0 评论 -
简图记录-代码整洁之道
简图记录学习~《代码整洁之道》(《clean code》) Robert C. Martin作为一个程序员,光能实现功能只是最基础的要求,代码始终是给人看的,人们会花数倍的时间去觉读你写过的代码一个软件项目按生命周期来看可以说是一个维护项目,毕竟开发周期远远低于维护时间,特别是迭代开发的产品于是 代码的可读性意味着很多东西,可维护性,可测试性,延展性。。。。。。原创 2016-11-01 23:07:07 · 327 阅读 · 0 评论 -
简图记录-重构改善设计
简图记录学习~《重构改善既有代码的设计》Martin Flower作为一个程序员,重构代码是一项必备的技能随着时间的流逝,往往开发维护过程代码会慢慢腐化,anyway,也可能一开始代码就一团糟~当你接手代码进行迭代开发维护,自然就面临这些烂代码如何处理的问题,如何在其基础上开发维护。《重构改善既有代码的设计》是此领域中非常出色一本入门书籍。什么是重构?什么时原创 2016-11-01 00:03:12 · 232 阅读 · 0 评论