<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sunfanup的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sunfanup</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sunfanup]]></copyright><item><title><![CDATA[单例模式 总结]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/139878134</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/139878134</guid><author>sunfanup</author><pubDate>Sat, 22 Jun 2024 11:39:59 +0800</pubDate><description><![CDATA[是的，你完全可以将直接定义在private部分，而不是在函数内部。提高可读性: 将instance直接定义在private部分可以更清晰地表明这是单例对象的声明，使代码更易于理解。延迟初始化: 将instance定义在private部分可以在需要时延迟初始化单例对象，而不是在每次调用时都创建新对象。更好的控制: 将instance定义在private部分可以更好地控制单例对象的创建和访问，避免了在函数内部进行对象的创建。]]></description><category></category></item><item><title><![CDATA[ftruncate 函数的定义和用法]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/139824999</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/139824999</guid><author>sunfanup</author><pubDate>Thu, 20 Jun 2024 10:27:36 +0800</pubDate><description><![CDATA[函数来设置文件的大小时，它会将文件的大小截断为指定的大小。如果新的文件大小比原来的文件大小要大，那么文件的内容将保持不变，并且在原有内容之后的部分会被填充为 0。在文件被截断后，如果你对文件进行写入操作，写入操作将会从文件的开头（偏移量为 0 的地方）开始，这不受文件被截断的影响。因此，即使文件被截断，写入操作仍然会从文件的开头进行，并且会覆盖原有内容或者填充新的内容。只影响文件的大小，不会影响文件的内容。会将文件截断为指定的大小，如果将文件截断为 0，那么文件的内容也会被清空。：要设置的文件的新大小。]]></description><category></category></item><item><title><![CDATA[Redis内存数据库]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/139768496</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/139768496</guid><author>sunfanup</author><pubDate>Tue, 18 Jun 2024 11:29:22 +0800</pubDate><description><![CDATA[总的来说，Redis 在鸿蒙系统上可以作为一个高性能、灵活的数据存储和缓存解决方案，为系统提供更好的性能和扩展性。：Redis 可以作为缓存服务器在鸿蒙系统中使用，通过将频繁访问的数据缓存到 Redis 中，可以提高数据访问速度并减轻后端数据库的负载。：Redis支持多种数据结构，如字符串、哈希表、列表、集合、有序集合等，每种数据结构都有丰富的操作命令，使得Redis非常灵活。：通过 Redis 的数据结构和高性能特性，可以实现实时数据分析和处理，为鸿蒙系统提供实时的数据支持。]]></description><category></category></item><item><title><![CDATA[public std::enable_shared_from_this 类的继承中作用以及 return shared_from_this()；]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/139692043</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/139692043</guid><author>sunfanup</author><pubDate>Fri, 14 Jun 2024 23:50:22 +0800</pubDate><description><![CDATA[是一个模板类，用于帮助类（通常是继承它的类）在类内部获取指向自身的。当一个类需要在成员函数中返回一个指向自身的。管理对象的情况下，避免出现悬空指针的问题。成员函数，该函数将返回一个指向自身的。以下是一个简单的示例，展示了如何使用。，类可以安全地获取指向自身的。函数获取了指向同一对象的。，而不会导致对象被提前销毁。]]></description><category></category></item><item><title><![CDATA[c++ 中 namespace包的 全局变量 c++ 中 static 全局变量 会给初值吗]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/139688682</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/139688682</guid><author>sunfanup</author><pubDate>Fri, 14 Jun 2024 19:24:57 +0800</pubDate><description><![CDATA[在 C++ 中，命名空间（namespace）中的全局变量会被自动初始化为零值（zero-initialized），除非显式地为其指定初始值。与静态全局变量类似，命名空间中的全局变量在程序启动时会被初始化，其初始化顺序是在所有函数执行之前。在 C++ 中，静态全局变量（static global variables）会被自动初始化为零值（zero-initialized），除非显式地为其指定初始值。总的来说，命名空间中的全局变量会默认被初始化为零值，但你也可以显式地为其指定初始值。]]></description><category></category></item><item><title><![CDATA[c++ 类里面一个 private 的static 函数 ，是否可以调用 类 里面public 函数]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/139688646</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/139688646</guid><author>sunfanup</author><pubDate>Fri, 14 Jun 2024 19:21:51 +0800</pubDate><description><![CDATA[在 C++ 中，一个私有的静态成员函数可以调用类中的公有函数。静态成员函数是独立于任何特定对象的函数，因此它们可以直接调用公有函数，私有函数或受保护函数，而无需通过类的实例来访问。因此，私有的静态成员函数是可以调用类中的公有函数的。希望这个示例能够帮助你理解这个概念。如果你有任何其他问题，请随时告诉我！，一个公有成员函数。通过创建类的实例并调用公有函数。是一个私有的静态成员函数，它在内部调用了。，间接触发了私有静态函数的调用。]]></description><category></category></item><item><title><![CDATA[panic 、asset、crash 的含义和区别]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/139370778</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/139370778</guid><author>sunfanup</author><pubDate>Sat, 01 Jun 2024 11:05:41 +0800</pubDate><description><![CDATA[在编程中，“panic” 和 “assert” 都是用于处理错误和异常情况的机制，但在不同的编程语言和框架中有一些区别。]]></description><category></category></item><item><title><![CDATA[`thread_local` 是 C++11 标准引入的关键字，用于指示变量具有线程局部存储（TLS）的特性]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/139370409</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/139370409</guid><author>sunfanup</author><pubDate>Sat, 01 Jun 2024 10:46:38 +0800</pubDate><description><![CDATA[可以解决多线程程序中全局变量可能引发的竞态条件（race condition）问题，使得每个线程可以拥有自己的变量实例，避免了线程间的数据冲突。变量在声明的线程中具有静态存储期，即在整个线程的生命周期内存在，其生命周期与线程的生命周期相同。每个线程都有自己独立的变量实例，各个线程之间互不干扰。时，每个线程都会拥有该变量的一个单独的实例，而不是所有线程共享同一个变量。变量在不同线程中是独立的，线程对该变量的修改不会影响其他线程中的同名变量。中对其进行自增操作，每个线程修改的是自己的变量实例，不会互相影响。]]></description><category></category></item><item><title><![CDATA[ipc共享内存]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/139324502</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/139324502</guid><author>sunfanup</author><pubDate>Thu, 30 May 2024 14:55:53 +0800</pubDate><description><![CDATA[其中，共享内存是一种 IPC 的方式，允许多个进程访问同一块内存区域，从而实现数据共享。这段代码创建了一个共享内存对象，将其映射到进程地址空间，然后在共享内存中写入数据，并从中读取数据。总的来说，IPC 共享内存是一种高效的进程间通信方式，适用于需要频繁交换大量数据的场景，但需要注意同步、互斥和安全性等方面的考虑。请注意，这只是一个简单的示例，实际应用中可能需要更复杂的同步和互斥机制来确保数据的完整性和一致性。：共享内存的访问需要考虑安全性，确保只有授权的进程可以访问和修改共享内存中的数据。]]></description><category></category></item><item><title><![CDATA[`TCP_KEEPIDLE`、`TCP_KEEPINTVL` 和 `TCP_KEEPCNT` 是 TCP 套接字选项，用于控制 TCP 连接的保活机制]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/139132342</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/139132342</guid><author>sunfanup</author><pubDate>Wed, 22 May 2024 23:42:24 +0800</pubDate><description><![CDATA[指定开始发送 TCP KeepAlive 消息之前，连接可以保持空闲的时间（单位为秒）。在发送第一次 KeepAlive 消息后，如果没有收到响应，将在指定的时间间隔后再次发送。是 TCP 套接字选项，用于控制 TCP 连接的保活机制。这些选项通常用于在长时间空闲的连接中检测对端是否存活，并在必要时终止连接。通过设置这些选项，可以调整 TCP 连接的保活机制，以确保连接在长时间空闲后能够及时检测到对端的存活状态，从而避免僵死连接。：指定在没有收到对端响应的情况下，发送 KeepAlive 消息的次数。]]></description><category></category></item><item><title><![CDATA[static int g_loop = 1； c 语言中 静态的全局 变量 需要初始化吗]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/139104613</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/139104613</guid><author>sunfanup</author><pubDate>Tue, 21 May 2024 23:03:34 +0800</pubDate><description><![CDATA[在 C 语言中，静态的全局变量如果没有显式地初始化，会被默认初始化为 0。这意味着如果你声明一个静态的全局变量，但没有给它赋初值，它将自动被初始化为 0。没有被显式地初始化，但由于是静态的全局变量，它会被默认初始化为 0。总的来说，在 C 语言中，静态的全局变量如果没有显式初始化，会被默认初始化为 0。的值时，会打印出默认初始化的值 0。在这个例子中，静态的全局变量。]]></description><category></category></item><item><title><![CDATA[std::unique_lock＜std::mutex＞ lock(g_currentDeviceConfig-＞mtx)；缩小锁定范围]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/138747787</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/138747787</guid><author>sunfanup</author><pubDate>Sun, 12 May 2024 10:24:11 +0800</pubDate><description><![CDATA[这种方法可以避免在整个函数范围内持有锁，从而提高程序的性能和减少潜在的锁竞争。是一个 RAII（资源获取即初始化）风格的类，用于管理互斥量的锁定和解锁。虽然可以手动释放和重新获取锁，但建议在可能的情况下遵循 RAII 原则，让。对象，可以有效地缩小锁定的范围，提高程序的性能并减少潜在的锁竞争。对象自动管理锁的生命周期，从而避免忘记释放锁而导致的死锁等问题。的析构函数会自动释放锁，从而避免在整个函数范围内持有锁。要缩小锁定的范围，可以在需要锁定的代码块内创建。然而，如果需要手动控制锁的释放，可以通过。]]></description><category></category></item><item><title><![CDATA[网络中sta 和 ap含义]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/138350605</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/138350605</guid><author>sunfanup</author><pubDate>Tue, 30 Apr 2024 16:46:19 +0800</pubDate><description><![CDATA[在无线局域网（WLAN）或其他网络环境中，"STA"通常用来表示无线设备或终端设备，如笔记本电脑、智能手机、平板电脑等连接到无线网络的终端设备。在IEEE 802.11标准中，"STA"指的是无线局域网中的一个终端设备，可以是一个无线客户端或一个无线接入点（AP）。在一个典型的无线局域网中，多个"STA"可以连接到一个或多个"AP”，通过这种方式实现设备之间的通信和接入网络。总之，"STA"在网络中代表终端设备或站点，与"AP"一起构成了无线网络中的基本组成部分。]]></description><category></category></item><item><title><![CDATA[socket connect 阻塞 的原因]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/138188223</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/138188223</guid><author>sunfanup</author><pubDate>Thu, 25 Apr 2024 14:21:08 +0800</pubDate><description><![CDATA[防火墙、路由器或其他网络设备的设置可能会导致连接阻塞。这些设备可能会对连接进行筛选、限制或延迟，从而导致连接阻塞。函数阻塞的情况时，可以考虑设置连接超时时间、处理网络异常、优化网络通信等方法来减少阻塞时间，提高程序的健壮性和性能。函数会一直等待连接结果，导致阻塞。在这种情况下，连接会一直处于等待状态，直到目标主机端口开始监听连接。函数可能会一直阻塞等待连接结果。函数阻塞等待连接成功。特别是在连接远程服务器时，网络延迟可能会增加连接的等待时间。在这种情况下，服务器无法接受新的连接请求，导致客户端的。]]></description><category></category></item><item><title><![CDATA[`std::ref`的作用是将一个对象包装成一个引用包装器]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/137375784</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/137375784</guid><author>sunfanup</author><pubDate>Thu, 04 Apr 2024 16:00:31 +0800</pubDate><description><![CDATA[用于创建一个引用包装器，将一个对象包装成一个引用，而不是对对象进行拷贝。这在函数对象的传递和使用中非常有用，特别是在需要传递可变状态的情况下。的作用是将一个对象包装成一个引用包装器，使得在函数对象的传递中能够以引用的方式传递对象，而不是进行对象的拷贝。的实际值，而不是拷贝的副本。是C++标准库中的一个函数模板，位于。包装成一个引用，然后在函数对象中对。以引用方式传递，函数对象修改的是。的值被修改为原来的两倍，这得益于。这边再写个 demo。]]></description><category></category></item><item><title><![CDATA[移动构造函数（Move Constructor）和移动赋值运算符（Move Assignment Operator）]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/137350508</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/137350508</guid><author>sunfanup</author><pubDate>Wed, 03 Apr 2024 16:40:14 +0800</pubDate><description><![CDATA[移动构造函数（Move Constructor）和移动赋值运算符（Move Assignment Operator）是C++11引入的特性，用于实现移动语义。它们的出现主要是为了提高程序的性能，避免不必要的资源拷贝和提高内存管理效率。]]></description><category></category></item><item><title><![CDATA[linux 中的syslog的含义和用法]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/137203245</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/137203245</guid><author>sunfanup</author><pubDate>Sun, 31 Mar 2024 16:35:22 +0800</pubDate><description><![CDATA[在Linux系统中，syslog是一种系统日志服务，用于收集、存储和管理系统和应用程序生成的日志消息。syslog服务负责记录系统的运行状态、错误信息、警告、调试信息等，以便系统管理员可以监控系统的健康状况、故障排查和性能优化。]]></description><category></category></item><item><title><![CDATA[CANopen 协议简介]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/136919143</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/136919143</guid><author>sunfanup</author><pubDate>Thu, 21 Mar 2024 22:44:10 +0800</pubDate><description><![CDATA[https://github.com/CANopenNode/CANopenNode/blob/master/README.mdconsists of three logical parts]]></description><category></category></item><item><title><![CDATA[NETLINK_ROUTE 与 NETLINK_SOCK_DIAG 的区别与用法]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/136794476</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/136794476</guid><author>sunfanup</author><pubDate>Mon, 18 Mar 2024 00:59:00 +0800</pubDate><description><![CDATA[在 Linux 中，Netlink 是一种用于内核与用户空间之间通信的机制，通过不同的 Netlink 协议族（family）可以实现不同类型的通信。其中，NETLINK_ROUTE 和 NETLINK_SOCK_DIAG 是两种常用的 Netlink 协议族，它们具有不同的功能和用途。]]></description><category></category></item><item><title><![CDATA[`sig_atomic_t` 是C语言中的一个数据类型，它通常用于在信号处理程序中声明变量]]></title><link>https://blog.youkuaiyun.com/sunfanup/article/details/136758506</link><guid>https://blog.youkuaiyun.com/sunfanup/article/details/136758506</guid><author>sunfanup</author><pubDate>Sat, 16 Mar 2024 10:55:24 +0800</pubDate><description><![CDATA[是C语言中的一个数据类型，它通常用于在信号处理程序中声明变量。这个类型的变量保证可以在信号处理程序中原子地（atomic）访问，这意味着在多线程或信号处理上下文中，对这个变量的读取和写入操作是原子的，不会被中断。在信号处理程序中，通常需要使用一些标记来指示某些事件的发生或状态的改变。由于信号处理程序可能随时被中断，因此需要确保对这些标记的访问是原子的，以避免数据不一致性或竞争条件。类型提供了一种在信号处理程序中处理共享数据的基本手段，确保对该类型变量的操作是原子的，从而避免由并发访问引起的问题。]]></description><category></category></item></channel></rss>