- 博客(79)
- 资源 (1)
- 收藏
- 关注
原创 电子设计-基础3-电感与二极管
电感器(简称电感)是电子电路中一种重要的被动元件,主要用于储存磁能、滤波、振荡和阻抗匹配等方面。电感的基本原理是基于电磁感应现象,当电流通过电感器时,它会在周围产生磁场,并在电流变化时反过来产生感应电动势。电感的实质是好多圈导线绕在一个可以导磁的磁环上,具体可以参考高中的楞次定律那里标准符号电感的单位:亨(L)与电容的常用单位uF一样,电感的常用单位是uH一体成型电感属于贴片电感的一种,其结构主要包括座体和绕组本体。
2024-09-04 22:48:21 741
原创 设计模式27-设计模式的总结
任何模式的的优点就在于它解决的变化点,它的缺点就是它要求的稳定点。如果一个模式的稳定点出现变化那这个模式不适合解决当前事务需要其他设计模式来解决。觉大多数模式都是基于第三种,通过类型指针动态的指向某个具体类型的对象,来应对变化点。手中无剑,心中无剑:看见这个设计模式,但是不理解这个设计模式。手中有剑,心中无剑:可以识别模式。手中有剑,心中有剑:作为框架开发人员为应用设计某些模式。手中无剑,心中有剑:忘掉设计模式,只遵守涉及原则。分解事务,归类事务,那些是变化的那些是不变的。编译时依赖=》运行时依赖。
2024-09-02 23:19:26 577
原创 Qt笔记-setRowCount(int rows)方法
之前手动保存这些数据,或者使用其他方法来调整表格的显示而不丢失数据。例如,你可以通过隐藏行(虽然它们仍然存在于模型中)而不是实际删除它们来模拟行数的减少。返回的值),那么超出新设定行数的那些行及其包含的所有数据确实会被丢弃。方法用于设置表格中的行数。当你调用这个方法时,如果你指定的行数(如果你需要保留这些数据以便将来可能再次使用,你应该在调用。和自定义模型来实现更复杂的行管理功能。并不直接支持隐藏行,这可能需要使用。)小于当前表格的行数(即。
2024-08-28 14:04:08 375
原创 设计模式26-解析器模式
解析器模式是一种行为设计模式,它定义了一个语言的语法表示,并实现一个解释器来处理该语言的句子。解析器模式将表达式解析为抽象语法树(AST),然后通过遍历语法树来执行或评估表达式。解析器模式的应用场合是解析器模式应用中的难点。只有满足业务规则频繁变化,且类似结构会不断重复出现。并且容易抽象为语法规则的问题,才适合使用解析器模式。使用解气模式来表示文法规则,从而可以使用。面向对象的技巧来方便的扩展文法。解析器模式比较适合简单的文法表示,对于复杂的文法表示解析模式会产生比较大的类层次结构。
2024-08-27 23:04:16 1067
原创 设计模式25-访问器模式
访问者模式(Visitor Pattern)是一种行为设计模式,它将对数据结构中的元素进行操作的功能封装到访问者对象中,使得在不改变数据结构的前提下增加新的操作变得容易。访问者模式是一种将算法与对象结构分离的设计模式,它定义了一组操作,可以在不修改对象结构的前提下为对象结构中每个元素添加新的操作。这种模式通常用于对象结构中的元素需要被不同方式处理的情况。这张图展示了访问者模式的主要组成部分:抽象访问者、具体访问者、抽象元素和具体元素。
2024-08-26 23:17:41 1069
原创 设计模式24-命令模式
在组件的构建过程中,组件行为的变化经常导致组件本身剧烈的变化。行为变化模式,将组件的行为和组件本身进行解构。从而支持组建行为的变化。实现两者之间的松耦合。行为变化模式通常指的是一类设计模式,它们允许对象在运行时根据状态或环境的变化动态地改变行为。这类模式通过将算法、职责或行为的变化封装起来,使得系统更具灵活性和可扩展性。行为变化模式通过封装行为、状态或算法的变化,使得系统更加灵活和可扩展。这类模式在解决动态变化需求、减少代码复杂性、提高系统的可维护性等方面具有重要作用。
2024-08-21 23:51:19 1040
原创 设计模式23-职责链
职责链模式(Chain of Responsibility Pattern)是一种行为设计模式,允许多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有对象处理它为止。责任链模式对应用场合在于一个请求可能有多个接受者。但是最后真正的接受者只有一个,这时候请求发送者与接受者的耦合有可能出现变化脆弱的症状。这次练的目的就是将二者进行解耦。从而更好地应对变化。
2024-08-19 23:32:42 996
原创 设计模式22-迭代器模式
迭代器模式提供一种方法,顺序访问一个聚合对象中的各个元素,而不暴露该对象的内部表示。在 C++ 中,模板实现迭代器的方式由于性能、类型安全性、灵活性、和代码复用性等方面的优势,通常是优于使用多态性的。模板通过在编译时确定类型和生成代码,避免了运行时开销,使得迭代器更高效且灵活。但在处理需要运行时多态性或异构集合的情况下,多态性仍然是不可替代的。有些模式运用的技术机制可能会过时但是它的思想不会过时迭代抽象:访问一个聚合对象的内容,而无需暴露它的内部表示。
2024-08-15 23:03:23 796
原创 设计模式21-组合模式
数据结构模式常常有一些组件在内部具有特定的数据结构。如何让客户程序依赖这些特定的数据结构,将极大的破坏组件的复用。那么这个时候将这些特定数据结构封装在内部。在外部提供统一的接口来实现与特定数据结构无关的访问。是一种行之有效的解决方案。典型模式组合模式迭代器模式组合模式允许你将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户端对单个对象和组合对象的使用具有一致性。组合模式通过将对象组合成树形结构来表示“部分-整体”的层次结构,使得客户端可以一致地处理单个对象和组合对象。
2024-08-14 00:16:15 1157
原创 设计模式20-备忘录模式
备忘录模式在不破坏封装性的前提下,捕获对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将对象恢复到原先保存的状态。备忘录模式是一种强大的设计模式,通过封装对象的内部状态,实现了状态的保存和恢复功能。虽然它能够有效地支持撤销和恢复操作,但在实际应用中需要注意内存消耗和管理复杂性,特别是在对象状态复杂且变化频繁的场景下。备忘录模式存储原发器对象的内部状态。在需要时恢复原发器状态。备忘录模式的核心是信息隐藏,即原发器需要向外界隐藏信息保持其封装性,但同时又需要将再保存到外界。
2024-08-08 23:56:38 756
原创 设计模式19-状态模式
在组建构建过程中,某些对象的状态经常面临着变化。如何对这些变化进行有效的管理呢?同时又wage高层模块的稳定。状态变化模式为这一问题提供了一种解决方案。典型模式StateMemento状态模式允许对象在内部状态改变时改变其行为,对象看起来好像修改了它的类。状态模式通过将状态相关的行为封装在独立的状态类中,使得对象在不同状态下具有不同的行为,简化了状态转换的逻辑,并提高了系统的可维护性和可扩展性。在适当的场景下使用状态模式,可以显著改善代码的可读性和灵活性。
2024-08-06 23:57:20 932
原创 设计模式18-中介者模式
用一个中介对象来封装(封装变化)一系列的对象交互。终结者使各对象不需要显示的相互引用(编译时依赖变成运行时依赖),从而使其耦合松散也可以独立的改变他们之间的交互。–《设计模式》GOF中介者模式定义了一个中介对象,该对象封装了对象之间的交互方式,使得对象之间不再需要显式地相互引用,从而使其耦合松散,且可以独立地改变它们之间的交互。中介者模式通过引入中介者对象,将对象之间的交互逻辑集中管理,从而降低对象之间的耦合度。
2024-08-06 00:19:42 822
原创 设计模式17-适配模式
定义适配器模式将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。目标(Target)接口:定义客户所需的接口。适配者(Adaptee)类:定义一个已经存在的接口,这个接口需要适配。适配器(Adapter)类:将适配者接口转换成目标接口,使得客户端可以通过目标接口与适配者进行通信。类适配器(Class Adapter):使用多重继承实现适配。对象适配器(Object Adapter):使用组合实现适配。
2024-07-31 23:50:40 996
原创 电子设计-基础2-电阻电容
NTC和PTC热敏电阻在电路中有广泛的应用,主要用于温度测量、温度补偿、过流保护和浪涌电流限制等。选择合适的热敏电阻类型和设计合理的电路,可以有效提升系统的可靠性和性能。
2024-07-31 22:07:55 962
原创 设计模式16-代理模式
为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问。代理模式提供了一种通过代理对象控制对原始对象访问的机制,使得我们可以在不改变客户端代码的情况下,对对象的访问进行控制和增强。尽管引入代理会增加一定的性能开销和系统复杂性,但在适当的场景下使用代理模式,可以显著提高系统的灵活性和可维护性。增加一层间接层。是软件系统中对许多复杂问题的一种常见解决方法。在面向对象系统中直接使用某些对象会带来很多问题作为间接层的代理对象必须解决这一问题的常见手段。
2024-07-30 23:31:45 944
原创 设计模式15-门面模式
接口隔离原则强调将大接口拆分成更小的、更加具体的接口,以便客户端只依赖于它们实际需要的接口。上述设计模式在一定程度上体现了这一原则,通过这些模式的合理运用,可以设计出更加灵活和可维护的系统。为此系统中的一组接口提供了一个一致稳定的界面。门面模式是定义了一个高层接口,这个接口使得这一子系统更容易的使用和复用。从客户程序的角度来看,门面模式简化了一个组件系统的接口。组建内部与外部客户程序来说,达到了一种解耦的效果。内部子系统的任何变化都不会影响到门面模式接口的变化。
2024-07-30 00:57:23 1054
原创 设计模式14-享元模式
运用共享技术有效地支持大量细粒度的对象。–《设计模式》GoF定义了对象的接口,可以接受外部状态。实现Flyweight接口,并为内部状态(不变部分)进行存储。并不是所有的Flyweight子类都需要被共享,非共享Flyweight类可以实现Flyweight接口,但它们不是共享的。创建并管理Flyweight对象,确保合理地共享Flyweight。面对对象很好的解决了抽象性的问题,但是作为一个运行在机器中的程序实体我们需要考虑对象的代价问题。
2024-07-25 23:21:36 1124
原创 设计模式13-单件模式
面向对象很好的解决了抽象的问题,但是必不可免的要付出一定的代价(类空间的重复分配等)。对于通常情况来讲,面向对象的成本大多都可以忽略不计。但某些情况面向对象所在的成本必须谨慎处理。设计模式中的对象性能模式是指那些专注于提高系统性能、优化资源使用和管理的设计模式。这些模式通过有效的对象创建、共享、复用和管理策略,减少内存占用、提高运行效率,从而提升整体系统性能。保证一个类仅有一个实力,并提供一个该实例的全局访问点。线程不安全版本:简单但在多线程环境下不安全。线程安全版本(锁代价高)
2024-07-24 00:07:36 1037
原创 设计模式12-构建器
构建器模式是一种强大的设计模式,通过将对象的构建过程分离出来,使得复杂对象的创建变得更加灵活和可维护。在C++中,构建器模式可以通过定义一个产品类、一个抽象构建器类、一个具体构建器类以及一个指挥者类来实现。这种模式广泛应用于需要创建复杂对象的场景中,例如GUI库中的窗口构建、报表生成、游戏中的复杂角色创建等。
2024-07-23 00:33:29 1152
原创 设计模式11-原型模式
通过对象创建模式绕开动态内存分配来避免创建过程中所导致的耦合过紧的问题。从而支持对象创建的稳定,它是接口抽象之后的第一步工作。原型模式同样用于隔离类对象的使用者和具体类型之间的耦合关系,同样要求这些异变类拥有稳定的接口。原型模式对于如何创建异变类的实体对象,采用原型克隆的方法来做。它使得我们可以非常灵活的动态创建。拥有某些稳定接口的新对象。所需工作仅仅是注册一个新类的对象即原型,然后在任何需要的地方克隆。原型模式中的克隆方法可以利用某些框架中的序列化,来实现深拷贝。
2024-07-19 00:20:04 1397
原创 设计模式10-抽象工厂
抽象工厂(Abstract Factory)设计模式是一种创建型模式,它提供了一个接口,用于创建一系列相关或相互依赖的对象,而无需指定具体类。这个模式的核心思想是将对象的创建和使用分离开来,以便在不修改客户端代码的情况下,能够方便地扩展系统的对象创建。
2024-07-16 20:29:03 967
原创 设计模式9-工厂模式(Factory Method)
通过对象超级模式绕开。动态内存分配(new),来避免对象创建过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定,它是结构抽象之后的第一步工作。工厂方法(Factory Method Pattern)抽象工厂(Abstract Factory Pattern)提供一个接口,用于创建相关或依赖对象的家族,而不需要指定具体的类。原型模式(Prototype Pattern)将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。
2024-07-16 00:18:48 1079
原创 python程序打包成.exe
PyInstaller 是一个功能强大且灵活的工具,适用于各种 Python 应用程序的打包需求。对于更复杂的打包需求,可以参考。是一个非常流行的工具,可以将 Python 程序及其所有依赖项打包成一个独立的可执行文件。参数表示将所有依赖项打包成一个文件。如果不需要打包成一个文件,可以省略该参数。文件夹,里面包含打包好的可执行文件。运行 PyInstaller 后,会在当前目录生成一个。文件,这些文件用于构建过程,可以忽略或删除它们。这个命令将生成一个单一的可执行文件。将 Python 程序打包成。
2024-07-11 11:41:51 357
原创 设计模式8-桥模式
将抽象部分也就是业务功能,与实现部分分离,使他们都可以独立的变化。public:Messager是一个抽象基类,定义了登录、发送消息、发送图片以及平台相关的功能(播放声音、绘制图形、写文本、连接)。这段代码通过将不同平台的实现和业务逻辑分开,展示了如何使用继承和多态来实现跨平台的消息传递系统。它遵循了开闭原则(对扩展开放,对修改关闭),使得添加新的平台或功能变得更容易。具体地,Messager定义了接口,和实现了平台相关的功能,而和实现了具体的业务逻辑。
2024-07-10 00:29:09 1062
原创 设计模式7-装饰模式
在软件组件的设计中,如果责任划分的不清晰,使用记者得到的结果往往是跟随需求的变化,以及子类的增加而急剧膨胀。同时充值的重复代码。这个时候就应该责任划分清楚。使每个类负责自己的责任模块。这才是单一职责模式的关键。典型模式:装饰模式(decorator model),桥模式(Bridge model)动态组合的给一个对象增加一些额外的职责,就增加工人而言,装饰模式比生成子类更加灵活。也就是消除重复代码以及减少子类个数。职责分离:每个装饰器类(如和)只负责增加一个特定的功能,使得代码更符合单一职责原则。
2024-07-09 01:09:34 930
原创 Qt 的Q_PROPERTY关键字
为此,Qt 引入了元对象系统(Meta-Object System),允许在运行时对对象进行动态反射(reflection)。宏在类的声明中使用,Qt 的元对象编译器(moc,Meta-Object Compiler)会解析这些宏并生成额外的 C++ 代码来实现属性系统。是这个系统的一部分,它使得对象的属性可以被动态地获取和设置。宏是 Qt 框架中元对象系统的重要组成部分,它允许开发者在类中声明属性,使这些属性可以在运行时动态访问和操作。的详细说明,包括其由来、实现原理、特点、属性和应用。
2024-07-08 11:36:45 1014
原创 gperftools工具
include // CPU Profiler 头文件#include // Heap Profiler 头文件。// 指定输出文件名。// 启动 Heap Profiler。// 启动 CPU Profiler。//停止 CPU Profiler。// pprof文本分析。
2024-07-06 10:15:38 1073
原创 C语言使用正则表达式
在C语言中,可以使用POSIX正则表达式库来匹配正则表达式。POSIX正则表达式库提供了标准的正则表达式处理函数,例如。以下是一个完整的示例程序,演示如何在C语言中使用POSIX正则表达式库进行正则表达式匹配。使用POSIX正则表达式库可以方便地在C语言中进行正则表达式匹配,满足各种文本处理需求。,可以用来编译、执行和释放正则表达式。函数执行正则表达式匹配。不适用于windows。函数编译正则表达式。函数释放正则表达式。
2024-06-27 16:07:23 798
原创 Vscode 中launch.json与tasks.json文件
文件是 Visual Studio Code (VS Code) 中用于配置任务(Tasks)的文件。文件是 Visual Studio Code (VS Code) 中用于配置调试会话的文件。是 Visual Studio Code (VS Code) 中用于配置不同类型任务的文件,它们各自有不同的用途和配置方式。这个配置会使用当前打开的 Python 文件作为程序入口,运行调试,并在 VS Code 的集成终端中显示输出。它定义了调试配置,主要用于在调试会话中启动程序、附加到正在运行的程序等。
2024-06-26 16:19:04 4117 1
原创 tensorflow学习1.3-创建会话,启动会话
在 TensorFlow 1.x 中,会话是通过tf.Session类定义的。# 创建一个计算图# 定义一个计算图节点c = a + b# 创建一个会话# 在会话中运行计算图print(result) # 输出:11.0# 关闭会话Session会话是 TensorFlow 1.x 中用于执行计算图的环境,通过会话可以管理资源、执行计算图并获取结果。在 TensorFlow 2.x 中,引入了更易用的 Eager Execution 模式,使得大部分操作可以立即执行,而不需要显式管理会话。
2024-06-26 00:16:52 1067
原创 设计模式6-观察者模式(Observer)
使用面向对象的抽象观察者模式使得我们可以独立的改变目标与观察者,从而使二者之间的依赖关系达到松耦合。目标发送通知时无需指定观察者。通知可以携带通知信息作为参数会自动传播。观察着自己决定是否需要订阅通知目标对象对此一无所知。观察者模式是基于事件的UI框架中非常常用的设计模式。也是MVC模式的一个重要组成部分。
2024-06-25 23:37:10 629
原创 TensorFlow的学习1.2-基本概念
TensorFlow 是一个开源的机器学习框架,它提供了一套全面的工具和库来帮助开发者构建和部署机器学习模型。在 TensorFlow 2.x 中,会话已被弃用,计算直接在 Eager Execution 模式下进行。TensorFlow 提供了强大的功能和灵活性,可以用于各种机器学习和深度学习任务。操作是对张量进行计算的节点,可以是基本的数学运算,也可以是复杂的神经网络层。TensorFlow 提供了自动微分功能,方便计算梯度,用于优化模型参数。变量用于存储可变的张量,通常用于模型的参数。
2024-06-25 00:56:26 342
原创 设计模式5-策略模式(Strategy)
策略模式也是属于组件协作模式一种。现代软件专业分工之后的第一个结果是框架语音应用程序的划分。组建协作模式,通过晚期绑定来实现框架与应用程序之间的松耦合。组件协作是二者之间协作时常用的模式。程序中定义一系列算法。把他们一个个封装起来。并且使他们可互相替换变化该模式使得算法可独立于使用它的客户程序而变化扩展或者进行子类化。
2024-06-24 23:39:56 1203
原创 设计模式4-模版方法
定义一个操作中的算法框架(稳定),而将一些步骤延迟(变化)到子类中template Method 使得子类可以不改变。一个算法的结构即可重新定义就是重写该算法的某些特定步骤。模板方法模式是一种非常基础性的设计模式。在面向对象系统中有着大量的应用。他用最简洁的机制也就是虚函数的多态性。为很多应用程序架构提供了灵活的扩展点。是代码复用方面的基本实现结构除了可以灵活应对自步骤的变化以外,不要调用我,让我来调用你。反向控制结构是模板方法的典型应用。
2024-06-22 00:11:37 773
原创 设计模式3-分类
设计模式(Design Patterns)是一种解决特定问题的通用解决方案,通常分为以下三类:创建型模式(Creational Patterns):结构型模式(Structural Patterns):行为型模式(Behavioral Patterns):工厂方法模式(Factory Method):抽象工厂模式(Abstract Factory):单例模式(Singleton):生成器模式(Builder):原型模式(Prototype):结构型模式(Structural P
2024-06-21 23:31:07 962
原创 TensorFlow的学习1.1-安装与配置
TensorFlow是一个由谷歌开发和维护的开源深度学习框架,它基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现。TensorFlow的前身是谷歌的神经网络算法库DistBelief,相比于前作,TensorFlow在性能上有显著改进,构架灵活性和可移植性也得到增强[1]。TensorFlow拥有多层级结构,可部署于各类服务器、PC终端和网页,并支持GPU和TPU高性能数值计算。
2024-06-21 23:18:50 1163
原创 工作随记-构造调用虚函数
通过将虚函数调用移到一个非虚的初始化函数中,可以避免在构造函数中直接调用虚函数,从而避免 Clang 静态分析工具发出的警告,并确保代码的正确性。
2024-06-21 14:50:03 416
原创 设计模式2-面向对象设计原则
变化是复用的天地。面向对象设计最大的优势在于抵御变化。重新认识面向对象。从宏观层面来看,面向对象的构建方式更能适应软件的变化。将变化所带来的影响减为最小。从微观层面来看面,面向对象的方式更强调这个类的责任。由于需求变化导致的增类型不应该影响原来类型的实现设计原则大于设计模式。可以通过设计原则发明设计模式.
2024-06-19 01:54:11 1035
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人