<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sc020826的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sc020826</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sc020826]]></copyright><item><title><![CDATA[泛型编程和模板]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/143944103</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/143944103</guid><author>sc020826</author><pubDate>Thu, 21 Nov 2024 14:07:16 +0800</pubDate><description><![CDATA[设计一个数组类型(class Array)，这个数组有可能只能存放 int 类型的元素，但是你在代码中使用这个数组的时候却不一定总是 int 类型的元素，可能需要数组能够存放其他类型的元素。所以，数组元素的类型，应该可以独立表示，类似于函数的参数，可以在实例化数组的时候，可以传递一个类型参数指定数组中的元素类型。理解和掌握模板是学习、应用和研究以及扩充STL的基础(STL就是使用模版实现的模板函数和模板类)，而STL模板实例中又充斥着大量的模板特化和偏特化。的时候会使用下面的特化模板。]]></description><category></category></item><item><title><![CDATA[右值引用和移动语义]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/143806672</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/143806672</guid><author>sc020826</author><pubDate>Fri, 15 Nov 2024 19:57:10 +0800</pubDate><description><![CDATA[1。]]></description><category></category></item><item><title><![CDATA[迭代器模式]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/143806662</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/143806662</guid><author>sc020826</author><pubDate>Fri, 15 Nov 2024 19:56:09 +0800</pubDate><description><![CDATA[1。]]></description><category></category></item><item><title><![CDATA[网络编程基础知识]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/143334921</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/143334921</guid><author>sc020826</author><pubDate>Tue, 29 Oct 2024 17:07:09 +0800</pubDate><description><![CDATA[2. 认识常见的网络设备和网络名词。4. 端口号 (prot)]]></description><category></category></item><item><title><![CDATA[QT信号和槽]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/143311804</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/143311804</guid><author>sc020826</author><pubDate>Mon, 28 Oct 2024 21:02:37 +0800</pubDate><description><![CDATA[信号和槽是一种通信机制，用于 Qt 对象之间的通信Qt 对象：

    QObject 类及其派生类的对象，称为 Qt 对象

信号和槽的本质就是函数

当一个Qt对象的内部状态发生改变时，就可以发出一个信号

当一个Qt对象收到这个信号后，就可以执行指定的功能

信号和槽的连接：
    QObject 类提供了一个函数connect()，用于连接两个Qt 对象的信号和槽

    对于Qt对象的通信，Qt系统需要了解如下信息：

   ]]></description><category></category></item><item><title><![CDATA[QT基础入门]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/143301578</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/143301578</guid><author>sc020826</author><pubDate>Mon, 28 Oct 2024 16:14:16 +0800</pubDate><description><![CDATA[主流的平台都支持，如Windows、Linux、Android、MacOS ...有现成的库可供使用，不需要从零开始，节省时间/精力/金钱，提高开发效率...主要用于GUI程序开发，但又不仅仅是GUI，也可用于后台或底层程序开发。Qt始于1991年，中间历经多个版本，目前主流使用的是Qt5。4. 执行(ctr+r)03 Qt程序补充说明。]]></description><category></category></item><item><title><![CDATA[QT环境配置]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/143293432</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/143293432</guid><author>sc020826</author><pubDate>Mon, 28 Oct 2024 12:04:57 +0800</pubDate><description><![CDATA[编译器路径： /usr/local/arm/5.4.0/usr/bin/arm-linux-gcc (写实际路径，此处仅供参考)编译器路径： /usr/local/arm/5.4.0/usr/bin/arm-linux-g++ (写实际路径，此处仅供参考)点击添加，在弹出的文件对话框中，找到ARM版本的qmake (应该是在/opt/qt-armlib-591/bin 目录下)2. 找到QtCreator的菜单--->工具--->选项--->构建和运行。名称： arm-linux-gcc。]]></description><category></category></item><item><title><![CDATA[智能指针(unique_ptr，shared_ptr，weak_ptr)]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/143276574</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/143276574</guid><author>sc020826</author><pubDate>Sun, 27 Oct 2024 23:01:13 +0800</pubDate><description><![CDATA[简单的理解，智能指针在申请堆内存空间的同时，会为其配备一个整形值(初始值为1)，每当有新对象使用此堆内存时，该整形值+1，反之，每当使用此堆内存的对象被释放时，该整形值减1，当堆空间对应的整形值为0时，即表明不再有对象使用它，该堆空间就会被释放掉。在某些场景中，自定义释放规则是很有必要的，比如，对于申请的动态数组来说，shared_ptr 指针默认的释放规则是不支持释放数组的，只能自定义对应的释放规则，才能正确地释放申请的堆内存。// 开辟了一块空间。]]></description><category></category></item><item><title><![CDATA[线程支持库(C++11)]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/143255559</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/143255559</guid><author>sc020826</author><pubDate>Sat, 26 Oct 2024 17:11:09 +0800</pubDate><description><![CDATA[能够阻塞一个线程，或者同时阻塞多个线程，直到条件变量表示的”条件“成立，并且被其他地方通知。C++的线程类就是包装了POSIX标准的线程接口，所以在编译的时候需要链接多线程库。条件不满足的时候，线程可以等待这个条件，当条件满足的时候，线程可以继续往下运行。既然线程需要提供一个线程函数，在线程实例化的时候，需要有一个"线程函数"std::thread t{线程函数，线程函数的参数......}；构造一个线程类的对象，需要提供一个参数(线程函数)// 实例化一个线程对象，创建成功之后，就会自动运行。]]></description><category></category></item><item><title><![CDATA[标准模板库(STL)]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/143191006</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/143191006</guid><author>sc020826</author><pubDate>Thu, 24 Oct 2024 00:51:04 +0800</pubDate><description><![CDATA[STL中许多的算法，如：排序、查找...算法，在执行的过程中会对容器中的元素进行比较(]]></description><category></category></item><item><title><![CDATA[C++多态]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/143171104</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/143171104</guid><author>sc020826</author><pubDate>Wed, 23 Oct 2024 01:34:37 +0800</pubDate><description><![CDATA[如果基类的析构函数不是虚函数(不会发生动态绑定，不会调用实际指向的对象的函数版本)，此时只会调用基类本身的析构函数，而不会调用派生类的析构函数，可能造成资源浪费。也就是说，当我们使用指针(引用)的时候，我们并不清楚该指针(引用)实际指向的对象的真实类型，指向的对象可能是基类对象，也有可能是派生类对象。当虚函数的声明和定义分开的时候，只需要在声明的地方加上virtual的说明，定义的时候，不能再加上virtual说明了(virtual只需要出现在类里面)]]></description><category></category></item><item><title><![CDATA[C++继承]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/143105893</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/143105893</guid><author>sc020826</author><pubDate>Mon, 21 Oct 2024 18:20:45 +0800</pubDate><description><![CDATA[虚继承不影响虚继承的派生类本身的使用(B、C，但是会在B、C里面添加一个虚基类指针，基类虚基类的偏移量)，只会影响到从指定了虚基类的派生类中进一步派生出来的D，为了达到共享的目的，派生类D的所有直接基类子对象(B、C)中都不在包含虚基类子对象(A)，而是把虚基类子对象放到了所以成员变量的最后面，然后直接基类子对象(B、C)只需要记录指定虚基类子对象偏移当前基类子对象多少个字节就可以了!由于在派生类中，含有基类的所有成员(具备基类的一切的能力)，所以，我们能够把公有继承的派生类对象当成基类对象来使用。]]></description><category></category></item><item><title><![CDATA[可调用对象和Lambda表达式]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/143023100</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/143023100</guid><author>sc020826</author><pubDate>Fri, 18 Oct 2024 09:11:10 +0800</pubDate><description><![CDATA[这些算法在使用的时候，都需要接受一个“一元谓词对象”(可调用对象)用来描述一个条件。find_if：查找算法，可以在一个指定区间内查找一个符合条件的元素。如果一个类实现了"函数调用运算符()"的重载，那么这个类的对象称为函数对象(仿函数)在标准库中，有很多常用的算法(全局变量)都使用到了函数对象。可以携带附加的数据，函数对象可以拥有自己的属性和行为。Lambda表达式(匿名函数)函数对象和普通函数相比较，函数对象有什么好处？函数对象的行为，类似于函数，可以被调用。02 lambda匿名函数用法详解。]]></description><category></category></item><item><title><![CDATA[运算符重载]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/142965347</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/142965347</guid><author>sc020826</author><pubDate>Tue, 15 Oct 2024 23:49:39 +0800</pubDate><description><![CDATA[因为类的非静态成员函数必须通过对象去调用，编译器默认使用运算符左侧的对象调用该运算符函数，隐式的通过this把左侧的操作数对象传递到函数内部，把运算符右侧的操作数作为函数的参数， 所以重载为类的非静态成员函数，则双目运算符只有一个参数。给已经存在的运算符，添加新的功能，使它能够作用于特定的自定义类型(让自定义类型也能够实现运算操作)，但是我们不能改变原有语义，操作数个数，结合性和优先级，当然你也不能创造新的运算符。C++中的运算符(+，-，*，/，=，==，!// 也可以直接像普通的成员函数一样调用。]]></description><category></category></item><item><title><![CDATA[this指针—静态成员—单例模式]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/142925752</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/142925752</guid><author>sc020826</author><pubDate>Mon, 14 Oct 2024 22:00:50 +0800</pubDate><description><![CDATA[C语言只有全局函数，最开始的时候，成员函数都是被翻译为全局函数，对于 t1.show() 这样通过一个对象调用成员函数的语句也只能翻译为全局函数的调用。但是，当我们想在程序中表示某一个对象的时候，并且这个对象永远只会存在一个，无论在哪里创建/访问都只会用到哪个唯一的实例，就会有"类只能实例化一个对象"的需求。程序在运行的时候，通常每一个类都会实例化很多个对象，如：string类的实例，当有100个字符串时，string就会实例化100个string类型的对象。// s1是一个指针：(s1->*q)();]]></description><category></category></item><item><title><![CDATA[字符串—迭代器—友元]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/142905664</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/142905664</guid><author>sc020826</author><pubDate>Mon, 14 Oct 2024 00:07:11 +0800</pubDate><description><![CDATA[​​​​​​​。]]></description><category></category></item><item><title><![CDATA[✔类型转换和异常]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/142896538</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/142896538</guid><author>sc020826</author><pubDate>Sun, 13 Oct 2024 17:28:56 +0800</pubDate><description><![CDATA[/ 有问题，因为0x01020304是自己杜撰的地址，有可能不存在，有可能不能访问。传统的类型转换，功能是非常强大的，可以进行任意类型之间的类型转换(但是不能保证正确性)b. 抛出异常 --- 有错误了我们需要将一些异常值给抛出来，被检测到。基类和派生类之间的转换，而且必须包含虚函数，否则编译不通过。只能用于良性转换(可以进行隐式转换的地方)类型  变量  = (目标类型)表达式；(2) C++中新增的类型转换。]]></description><category></category></item><item><title><![CDATA[并发——笔试面试总结]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/142891075</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/142891075</guid><author>sc020826</author><pubDate>Sun, 13 Oct 2024 01:09:52 +0800</pubDate><description><![CDATA[(4) 线程之间的通信更方便，同一进程下的线程共享全局变量、静态变量等数据，而进程之间的通信需要以通信的方式(IPC)进行。但是多进程程序更健壮，多线程程序只要有一个线程死掉，整个进程也跟着死掉了，而一个进程死掉并不会对另外一个进程造成影响，因为进程有自己独立的地址空间。而线程是共享进程中的数据，使用相同的地址空间，因此，CPU切换一个线程的花费远比进程小很多，同时创建一个线程的开销也比进程小很多。(2) 线程是程序执行的基本单位，也是处理器调度的基本单位，但进程不是，两者均可并发执行。]]></description><category></category></item><item><title><![CDATA[递归函数设计技巧]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/142692860</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/142692860</guid><author>sc020826</author><pubDate>Thu, 03 Oct 2024 16:54:21 +0800</pubDate><description><![CDATA[例如：证明 1 + 3 + 5 + 7 +......+ (2n -  1) = n^2。第一步：证明p(1) :   p(1) = 1 = 1^2。第二步：假设p(k)正确------>证明p(k+1)2. 递归函数设计的三个重要部分。1. 拿起武器：数学归纳法。第三步：证毕p(n)正确。]]></description><category></category></item><item><title><![CDATA[并发——线程]]></title><link>https://blog.youkuaiyun.com/sc020826/article/details/142494774</link><guid>https://blog.youkuaiyun.com/sc020826/article/details/142494774</guid><author>sc020826</author><pubDate>Tue, 24 Sep 2024 17:22:09 +0800</pubDate><description><![CDATA[3. 唤醒等待条件变量的线程        pthread_cond_signal。2）获取调用者自己的线程ID：pthread_self。二. linux下面线程(thread)函数的API。3）进程与线程的区别。]]></description><category></category></item></channel></rss>