<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yuemouren的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yuemouren</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yuemouren]]></copyright><item><title><![CDATA[Unit smbd.service not found]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/143808978</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/143808978</guid><author>yuemouren</author><pubDate>Fri, 15 Nov 2024 22:25:05 +0800</pubDate><description><![CDATA[可能是服务名错了，使用chkconfig --list查询服务列表。]]></description><category></category></item><item><title><![CDATA[linux运行脚本出现/bin/bash^M:解释器错误：没有那个文件或目录解决办法及原因]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/143720708</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/143720708</guid><author>yuemouren</author><pubDate>Tue, 12 Nov 2024 18:09:38 +0800</pubDate><description><![CDATA[原因：在windows编写的脚本拷贝到linux，windows换行符\r\n, 而linux换行符\n。解决方法：vi test.sh。]]></description><category></category></item><item><title><![CDATA[开源图像处理软件]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/142648173</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/142648173</guid><author>yuemouren</author><pubDate>Mon, 30 Sep 2024 09:05:21 +0800</pubDate><description><![CDATA[和Sharp Zaurus等多种平台。其基于java的特点，使得它编写的程序能以applet等方式分发。的公共的图像处理软件，它是由National Institutes of Health开发的。ImageJ是一个基于。]]></description><category></category></item><item><title><![CDATA[Qt题目知多少-4]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/141186421</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/141186421</guid><author>yuemouren</author><pubDate>Wed, 14 Aug 2024 11:30:22 +0800</pubDate><description><![CDATA[为每个QObject子类生成必要的代码以实现元系统特性。moc工具会读取C++源文件，当它发现包含Q_OBJECT宏的类声明时，会生成另一个C++源文件，其中包含这些类的元对象代码。这个生成的源文件通常会被编译并与类的实现一起链接。Qt的元对象系统（Meta-Object System）是Qt框架的核心特性之一，它为基于Qt的应用程序提供了一系列高级功能。类是元系统的一部分，用于提供有关特定数据类型的信息。：用于启用元系统特性，如动态属性、信号和槽等。：作为使用元系统功能的对象的基类。]]></description><category></category></item><item><title><![CDATA[Qt/C++经验技巧知多少-3]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/141185410</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/141185410</guid><author>yuemouren</author><pubDate>Wed, 14 Aug 2024 11:21:11 +0800</pubDate><description><![CDATA[12.如果需要指定无边框窗体，但是又需要保留操作系统的边框特性，比如自由拉伸边框，可以使用 setWindowFlags(Qt::CustomizeWindowHint)，这样会保留一个系统白边框。在安装的时候，默认不勾选。使用该模块需要注意可能引入的版权问题。4.Qt内置了QFormLayout表单布局用于自动生成标签+输入框的组合的表单界面，设置布局用的很少，一般用的最多的是横向布局、垂直布局、表格布局。10.QLabel有三种设置文本的方法，掌握好Qt的属性系统，举一反三，可以做出很多效果。]]></description><category></category></item><item><title><![CDATA[Qt/C++经验技巧知多少-2]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/141184242</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/141184242</guid><author>yuemouren</author><pubDate>Wed, 14 Aug 2024 11:01:08 +0800</pubDate><description><![CDATA[8.如果发现QtCreator中的构建套件不正常了或者坏了（比如不能正确识别环境中的qmake或者编译器、打开项目不能正常生成影子构建目录），请找到两个目录（C:\Users\Administrator\AppData\Local\QtProject、C:\Users\Administrator\AppData\Roaming\QtProject）删除即可，删除后重新打开QtCreator进行构建套件的配置就行。此外，动态属性的使用应谨慎，因为它们可能会使对象的状态管理变得更加复杂。]]></description><category></category></item><item><title><![CDATA[Qt/C++经验技巧知多少-1]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/141183081</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/141183081</guid><author>yuemouren</author><pubDate>Wed, 14 Aug 2024 10:31:25 +0800</pubDate><description><![CDATA[3.运行文件附带调试输出窗口，这个非常有用，很多时候当我们发布程序阶段，我们会遇到程序双击无法运行也不报错提示（开发机器上一切正常），都不知道发生了什么，甚至任务管理器可以看到运行了但是没有界面弹出来，此时就需要在项目的pro文件中加上一行CONFIG += console，带界面的程序也会自动弹出调试窗口打印输出信息，方便找问题，一般没法正常运行的程序都会打印一些提示信息缺啥之类的。6.Qt内置图标封装在QStyle中，大概七十多个图标，可以直接拿来用。10.使用inherits判断是否属于某种类。]]></description><category></category></item><item><title><![CDATA[C++题目知多少-1]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/141053171</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/141053171</guid><author>yuemouren</author><pubDate>Fri, 09 Aug 2024 10:04:38 +0800</pubDate><description><![CDATA[‌用于不同类型之间的转换，‌可以将一个指针或引用转换为另一个类型的指针或引用。‌reinterpret_cast不进行类型检查，‌因此可能会导致未定义的行为，‌应谨慎使用。‌const_cast可以改变指针或引用的常量属性，‌但不能改变对象本身的常量属性。：‌用于基本数据类型之间的转换，‌以及具有继承关系的指针或引用之间的转换。：‌专门用于具有继承关系的指针或引用之间的转换，‌可以在运行时检查类型是否匹配。，这意味着该函数承诺不会修改对象的状态，也就是说，它不会改变对象的任何成员变量的值。]]></description><category></category></item><item><title><![CDATA[C++虚函数表、地址详解（x86/x64）]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/141033313</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/141033313</guid><author>yuemouren</author><pubDate>Thu, 08 Aug 2024 19:01:36 +0800</pubDate><description><![CDATA[本文在上述博文的基础上，补充了x64下的验证代码。虚函数大家都知道是基本用于实现多态的，当父指向子类对象的时候，如何确定调用的函数是父类里的还是子类里面的，这就要用到虚函数表。下面一点点表诉什么是虚函数表，和虚函数表的特点。如有说错的地方，欢迎指正：1.编译器会为每个创建一个虚函数表如有类中没有虚函数，那么这个虚函数表就不存在，而不是表中无数据。同时，有虚函数的类都会有自己的虚函数表，虚函数表会被一个类的所有对象所拥有。]]></description><category></category></item><item><title><![CDATA[Qt题目知多少-3]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/141023289</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/141023289</guid><author>yuemouren</author><pubDate>Thu, 08 Aug 2024 12:44:57 +0800</pubDate><description><![CDATA[如果不一致，允许的情况是，信号的参数可以比槽函数的参数多，即便如此，槽函数存在的那些参数的顺序也必须和信号的前面几个一致起来。Qt中的智能指针封装为QPointer类，所有QOBJECT的子类都可以用这个智能指针来包装，很多用法与普通指针一样，可以详见Qt assistant 通过调查这个Qt的内存管理功能，发现了很多东西，现在觉得虽然这个Qt弄的有点小复杂，但是使用起来还是很方便的，要说的是某些内存泄露的检测工具会认为Qt的程序因为这种方式存在内存泄露，发现时大可不必理会。事件的机制是非阻塞的。]]></description><category></category></item><item><title><![CDATA[Qt题目知多少-2]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/141021200</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/141021200</guid><author>yuemouren</author><pubDate>Thu, 08 Aug 2024 11:53:35 +0800</pubDate><description><![CDATA[优点：跨平台，几乎支持所有平台，接口简单，文档详细，开发效率高缺点： Qt 作为一个软件平台，比较庞大、臃肿。元对象系统 Qt的元对象系统（meta-object）提供了用于内部对象通讯的信号与槽（signals & slots）机制，运行时类型信息，以及动态属性系统（dynamic property system）。整个元对象系统基于三个东西建立：1）QObject类为所有对象提供了一个基类，只要继承此类，那创建出的对象便可以使用元对象系统。]]></description><category></category></item><item><title><![CDATA[创建型模式（Creational Patterns）之工厂模式（Factory Pattern）之工厂方法模式(Factory Method Pattern)]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/140933919</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/140933919</guid><author>yuemouren</author><pubDate>Mon, 05 Aug 2024 18:44:18 +0800</pubDate><description><![CDATA[相反，如果使用 工厂方法模式，每个产品类型都有一个对应的工厂类来创建，工厂方法 可以独立进行扩展，每个工厂类只需要关心自己负责的产品类型，代码更加清晰和易于维护。例如，在一个图形绘制软件中，可以使用 工厂方法模式 来创建不同类型的图形对象，如圆形、矩形、三角形等，每个图形都有一个对应的工厂类来创建。如果使用 简单工厂模式，我们需要一个工厂类来创建所有不同类型的电子产品，客户端代码需要指定电子产品类型，工厂类根据类型来创建相应的产品对象。但是，随着产品类型的增加，工厂类的代码会越来越复杂，难以维护和扩展。]]></description><category></category></item><item><title><![CDATA[创建型模式（Creational Patterns）之工厂模式（Factory Pattern）之简单工厂模式（Simple Factory Pattern）]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/140933461</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/140933461</guid><author>yuemouren</author><pubDate>Mon, 05 Aug 2024 18:20:14 +0800</pubDate><description><![CDATA[被创建的对象称为“产品”，创建产品的对象称为“工厂”。如果要创建的产品不多，只要一个工厂类就可以完成，这种模式叫“简单工厂模式”。是通过专门定义一个类来负责创建其他类的实例，被创建的实例通常都具有共同的父类。是简单工厂模式的核心，负责实现创建所有实例的内部逻辑。工厂类的-建产品类的方法可以被外界直接调用，创建所需的产品对象。简单工厂模式不在 GoF 23 种设计模式之列。是简单工厂创建的所有对象的父类，负责描述所有实例共有的公共接口。请注意，简单工厂模式可能会因为工厂类中的。是简单工厂模式的创建目标。]]></description><category></category></item><item><title><![CDATA[C++题目：堆数据访问块还是栈数据访问快？]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/140932439</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/140932439</guid><author>yuemouren</author><pubDate>Mon, 05 Aug 2024 17:34:16 +0800</pubDate><description><![CDATA[栈数据访问速度通常比堆数据访问速度快，因为栈的数据存储在连续的内存空间中，访问速度快且效率高。堆数据访问速度较慢，因为其数据存储在分散的内存空间中，需要额外的指针解引用操作。栈是一种线性数据结构，数据存储在一段连续的内存空间中，遵循后进先出（LIFO）原则。主要特点如下：自动管理：栈内存的分配和回收由编译器自动处理，无需程序员显式管理。连续内存：栈分配的内存通常是连续的，这有助于优化CPU缓存的使用。快速分配和回收：由于栈的管理较为简单，分配和回收内存的速度较快。]]></description><category></category></item><item><title><![CDATA[c++物理引擎库-Bullet Physics]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/140932042</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/140932042</guid><author>yuemouren</author><pubDate>Mon, 05 Aug 2024 17:14:21 +0800</pubDate><description><![CDATA[Bullet Physics 库以其强大的功能、高效的性能和易用性，成为众多开发者实现物理模拟的首选工具。无论是创建逼真的游戏场景，还是构建复杂的虚拟现实体验，Bullet Physics 库都能为您的项目增添真实而精彩的物理效果。Bullet Physics 库作为一款出色的开源物理引擎，为开发者提供了强大的工具来实现各种复杂的物理效果。在上述示例中，我们创建了一个 Bullet Physics 世界，添加了地面和球体刚体，并模拟了它们在重力作用下的运动。]]></description><category></category></item><item><title><![CDATA[C++数学库GNU Scientific Library (GSL)]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/140928175</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/140928175</guid><author>yuemouren</author><pubDate>Mon, 05 Aug 2024 15:46:36 +0800</pubDate><description><![CDATA[库中的算法经过了精心的优化和验证，能够在保证精度的前提下，尽可能提高计算效率。开发者无需深入了解复杂的数值分析理论和底层实现细节，只需按照规范调用相应的函数，并传入正确的参数，即可获得准确的计算结果。这大大降低了科学计算的门槛，使得更多的开发者能够轻松运用高级的数学方法解决实际问题。其设计目标是提供高效、准确且易于使用的函数接口，使得开发者能够专注于解决科学问题本身，而不必过多关注底层的数值实现细节。它为 C 和 C++ 程序员提供了丰富的数学函数、数值算法和数据结构，极大地简化了复杂科学计算任务的实现。]]></description><category></category></item><item><title><![CDATA[通信相关20题]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/140803309</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/140803309</guid><author>yuemouren</author><pubDate>Tue, 30 Jul 2024 18:42:20 +0800</pubDate><description><![CDATA[在层次关系上，两者都采用了分层体系结构，都是对等的层间通信，不同之处在于TCP/IP参考模型比OSI参考模型层次更清晰简练，在功能上，两者差别不大，都是为了实现两个或多个终端之间的通信。在Linux系统中，2MSL默认值是60秒。定义一个时间段，在这个时间段内，如果没有任何连接相关的活动，TCP保活机制会开始作用，每隔一个时间间隔，发送一个探测报文，该探测报文包含的数据非常少，如果连续几个探测报文都没有得到响应，则认为当前的TCP 连接已经死亡，系统内核将错误信息通知给上层应用程序。]]></description><category></category></item><item><title><![CDATA[Qt题目知多少-1]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/140784100</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/140784100</guid><author>yuemouren</author><pubDate>Tue, 30 Jul 2024 16:39:00 +0800</pubDate><description><![CDATA[它采用事件驱动的方式处理网络事件，如连接建立、数据到达等，这些事件通常通过信号和槽机制在Qt应用中传递和处理，使得开发者能够以异步的方式编写网络程序，提高应用的响应性和用户体验。当一个QObject对象被销毁时，它会自动删除其所有的没有单独指定父母的子对象，这是一种隐式的内存管理机制，减少了手动删除子对象的需要。综上所述，Qt通过结合C++的标准内存管理机制、智能指针、特定的内存管理类以及父母-子女的对象树结构，提供了一个既强大又灵活的内存管理体系，旨在帮助开发者编写高效、健壮的代码。]]></description><category></category></item><item><title><![CDATA[C++面向对象设计原则]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/140775762</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/140775762</guid><author>yuemouren</author><pubDate>Mon, 29 Jul 2024 19:04:31 +0800</pubDate><description><![CDATA[如果有了新的需求，需要当前模块支持MP5，那么当前模块的内部文件需要实现CMP5,但是其他模块不需要修改，只要在调用工厂类的MakeObj接口时，传入strType 为“MP5”就可以了。面向修改关闭：部分资料存在对读者的误导，软件设计不应该是不允许修改，而是良好的设计不需要修改对外接口，这样就将修改范围关闭在当前模块内，不会波及其他模块。使用多个小的专门的接口，而不要使用一个大的总接口。接口应该是内聚的，一个类对另外一个类的依赖应该建立在最小的接口上，不要强迫依赖不用的方法，造成接口污染。]]></description><category></category></item><item><title><![CDATA[指针与引用20题]]></title><link>https://blog.youkuaiyun.com/yuemouren/article/details/140716683</link><guid>https://blog.youkuaiyun.com/yuemouren/article/details/140716683</guid><author>yuemouren</author><pubDate>Fri, 26 Jul 2024 16:42:31 +0800</pubDate><description><![CDATA[空指针是指没有指向任何有效对象的指针。在C++中，可以使用特殊值nullptr表示空指针。野指针是指未被正确初始化或者已经释放的指针，它可能包含一个无效的内存地址，导致访问到不属于自己的内存区域。为了避免空指针和野指针的出现，可以考虑以下几点：初始化：在定义指针变量时，立即将其初始化为合理的初始值或者将其设为nullptr，这样可以确保不会产生随机值导致野指针问题。空检查：在使用指针之前进行空检查，避免对空指针进行解引用操作。可以通过条件判断语句（例如if(ptr!= nullptr)]]></description><category></category></item></channel></rss>