<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lyc201219的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lyc201219</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lyc201219]]></copyright><item><title><![CDATA[线程的基本概念及常见问题]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/129302973</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/129302973</guid><author>lyc201219</author><pubDate>Thu, 02 Mar 2023 16:24:03 +0800</pubDate><description><![CDATA[提到线程，就不得不提到进程。一个进程代表计算机中实际运行的一个程序]]></description><category></category></item><item><title><![CDATA[gdb实用调试技巧]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/129295326</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/129295326</guid><author>lyc201219</author><pubDate>Thu, 02 Mar 2023 10:59:21 +0800</pubDate><description><![CDATA[gdb的一些实用调试技巧]]></description><category></category></item><item><title><![CDATA[使用gdb调试多进程程序]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/129285463</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/129285463</guid><author>lyc201219</author><pubDate>Wed, 01 Mar 2023 17:13:57 +0800</pubDate><description><![CDATA[这里说的多进程程序指的是一个进程使用 Linux 系统调用 fork 函数产生的子进程，没有相互关联的进程调试指的是gdb调试单个进程。]]></description><category></category></item><item><title><![CDATA[使用gdb调试多线程程序]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/129283634</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/129283634</guid><author>lyc201219</author><pubDate>Wed, 01 Mar 2023 16:44:39 +0800</pubDate><description><![CDATA[使用gdb调试多线程程序]]></description><category></category></item><item><title><![CDATA[gdb常用命令详解]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/129276722</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/129276722</guid><author>lyc201219</author><pubDate>Wed, 01 Mar 2023 15:00:49 +0800</pubDate><description><![CDATA[gdb中一些常用命令的基础用法]]></description><category></category></item><item><title><![CDATA[gdb调试]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/129276382</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/129276382</guid><author>lyc201219</author><pubDate>Wed, 01 Mar 2023 10:48:05 +0800</pubDate><description><![CDATA[调试是开发过程中不可或缺的工作，在Linux编程中通常使用gdb来调试C/C++程序。]]></description><category></category></item><item><title><![CDATA[makefile与CMake]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/129260032</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/129260032</guid><author>lyc201219</author><pubDate>Wed, 01 Mar 2023 10:17:21 +0800</pubDate><description><![CDATA[我们在Windows机器上编译和调试C/C++程序时可以使用Visual Studio，在Linux机器上编译 C/C++程序时最终使用的是 gcc/g++，当然，在调试时使用gdb。我们一般使用makefile文件组织大型C/C++或者含有多个C/C++文件的项目，有人认为makefile不太方便，于是发明了CMake。]]></description><category></category></item><item><title><![CDATA[stl中的智能指针类详解]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/129240314</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/129240314</guid><author>lyc201219</author><pubDate>Mon, 27 Feb 2023 15:08:19 +0800</pubDate><description><![CDATA[C/C++最为人诟病的是内存泄露问题，后来的大多数语言都内置了内存分配与释放功能，有的甚至对语言的使用者屏蔽了内存指针这一概念。这里对此不置褒贬，手动分配与释放内存有利有弊，自动分配与释放内存亦如此，这是两种不同的设计哲学。]]></description><category></category></item><item><title><![CDATA[stl容器新增的实用方法]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/129013749</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/129013749</guid><author>lyc201219</author><pubDate>Mon, 13 Feb 2023 17:37:03 +0800</pubDate><description><![CDATA[因为std：：map中元素的key是唯一的，所以在实际开发中经常会有这样一类需求：向某个 map中插入元素时需要先检测 map中指定的 key是否存在，不存在时做插入操作，存在时直接取来使用；或者在指定的key不存在时做插入操作，存在时做更新操作。在C++17中，map提供了一个try_emplace方法，该方法会检测指定的key是否存在，如果存在，则什么也不做。std：：map的try_emplace方法与insert_or_assign方法。原位构造与容器的emplace系列函数。]]></description><category></category></item><item><title><![CDATA[Range-based循环语法]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/129011180</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/129011180</guid><author>lyc201219</author><pubDate>Mon, 13 Feb 2023 17:19:37 +0800</pubDate><description><![CDATA[因此，在上面例子的老式语法中，iter是一个指针类型（std：：pair*），使用 iter->second 去引用键值；而在for-each 语法中，iter 与容器中元素的数据类型（std：：pair）相同，因此使用iter.second可直接引用键值。◎ 在 for-each 语法中，对于复杂的数据类型，迭代器是原始数据的拷贝，而不是原始数据的引用。]]></description><category></category></item><item><title><![CDATA[Range-based循环语法]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/129011203</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/129011203</guid><author>lyc201219</author><pubDate>Mon, 13 Feb 2023 16:29:06 +0800</pubDate><description><![CDATA[◎ for-each中的迭代器类型与数组或集合中元素的类型完全一致，而原来使用老式语法迭代 stl容器（如 std：：map）时，迭代器 iter的类型是 stl容器中元素的指针类型。在这个循环中，begin-expr返回的迭代子__begin 需要支持自增操作，且每次循环时都会与end-expr返回的迭代子__end做判不等比较，在循环内部通过调用迭代子的解引用（*）操作取得实际的元素。◎ 在 for-each 语法中，对于复杂的数据类型，迭代器是原始数据的拷贝，而不是原始数据的引用。]]></description><category></category></item><item><title><![CDATA[final、override关键字和=default、=delete语法]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/129010027</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/129010027</guid><author>lyc201219</author><pubDate>Mon, 13 Feb 2023 16:00:42 +0800</pubDate><description><![CDATA[final、override关键字和=default、=delete语法]]></description><category></category></item><item><title><![CDATA[C++17注解标签（attributes）]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/129009311</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/129009311</guid><author>lyc201219</author><pubDate>Mon, 13 Feb 2023 15:10:56 +0800</pubDate><description><![CDATA[在C++98/03时代，不同的编译器使用不同的注解为代码增加了一些额外的说明，读者可能在各种C/C++代码中见过＃pragma、__declspec、__attribute等注解。然而，不同的编译器对于同一功能可能使用不同的注解，导致我们需要为不同的编译器编写不同的注解代码。从C++11开始，新的语言标准统一制定了一些常用的注解标签]]></description><category></category></item><item><title><![CDATA[统一的类成员初始化语法与std：：initializer_list＜T＞]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/128937718</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/128937718</guid><author>lyc201219</author><pubDate>Mon, 13 Feb 2023 14:47:43 +0800</pubDate><description><![CDATA[统一的类成员初始化语法与std：：initializer_list＜T＞]]></description><category></category></item><item><title><![CDATA[pimpl惯用法]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/128934748</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/128934748</guid><author>lyc201219</author><pubDate>Wed, 08 Feb 2023 14:21:22 +0800</pubDate><description><![CDATA[在日常开发中，类的public方法提供了对外接口供第三方使用，每个函数的具体实现都在XXX.cpp里，对第三方不可见。对于提供给第三方的库，库作者一般需要提供.h文件给使用者。提供像XXX.h这样的头文件给第三方使用时， .h文件中类的大量成员变量和私有函数都暴露了这个类的太多实现细节，很容易让使用者看出其实现原理。]]></description><category></category></item><item><title><![CDATA[C++RAII惯用法]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/128934519</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/128934519</guid><author>lyc201219</author><pubDate>Wed, 08 Feb 2023 14:01:15 +0800</pubDate><description><![CDATA[RAII（Resource Acquisition Is Initialization，资源获取就是初始化）]]></description><category></category></item><item><title><![CDATA[c++智能指针]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/126465099</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/126465099</guid><author>lyc201219</author><pubDate>Mon, 22 Aug 2022 15:12:19 +0800</pubDate><description><![CDATA[c++智能指针]]></description><category></category></item><item><title><![CDATA[算法总结归纳（二）]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/124288964</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/124288964</guid><author>lyc201219</author><pubDate>Wed, 20 Apr 2022 09:31:32 +0800</pubDate><description><![CDATA[注：题目来源力扣https://leetcode-cn.com/

5、链表专题

链表（Linked List） 是一种常见的基础数据结构， 是一种线性表， 但是并不会按线性的顺序存储数据，而是在每一个节点里存到下一个节点的指针（Pointer） 。

由于不必须按顺序存储， 链表在插入的时候可以达到 O(1)O(1) 的复杂度， 比另一种线性表—— 顺序表快得多， 但是查找一个节点或者访问特定编号的节点则需要 O(n)O(n) 的时间， 而顺序表相应的时间复杂度分别是 O...]]></description><category></category></item><item><title><![CDATA[算法总结归纳（一）]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/123395342</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/123395342</guid><author>lyc201219</author><pubDate>Thu, 10 Mar 2022 11:03:15 +0800</pubDate><description><![CDATA[1、动态规划专题

动态规划（英语：Dynamic programming， 简称 DP） 是一种在数学、管理科学、 计算机科学、 经济学和生物信息学中使用的， 通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。
动态规划常常适用于有重叠子问题和最优子结构性质的问题， 动态规划方法所耗时间往往远少于朴素解法。

动态规划背后的基本思想非常简单。 大致上， 若要解一个给定问题， 我们需要解其不同部分（即子问题） ， 再根据子问题的解以得出原问题的解。...]]></description><category></category></item><item><title><![CDATA[Lua协程整理]]></title><link>https://blog.youkuaiyun.com/lyc201219/article/details/123186953</link><guid>https://blog.youkuaiyun.com/lyc201219/article/details/123186953</guid><author>lyc201219</author><pubDate>Mon, 28 Feb 2022 17:10:19 +0800</pubDate><description><![CDATA[协程跟线程都代表一个执行序列。不同的是，协程把线程中不确定的地方尽可能的去掉，执行序列间的切换不再由CPU隐藏的进行，而是由程序显式的进行。

    所以，使用协程实现并发，需要多个协程彼此协作。

  基本语法：

   coroutine.create (f)

　　传一个函数参数，用来创建协程。返回一个“thread”对象。

   coroutine.isyieldable ()

　　如果正在运行的协程可以让出，则返回真。值得注意的是，只有主协程（线程...]]></description><category></category></item></channel></rss>