<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Duc_Duke的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Duc_Duke</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Duc_Duke]]></copyright><item><title><![CDATA[n后问题]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/101059644</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/101059644</guid><author>Duc_Duke</author><pubDate>Fri, 20 Sep 2019 14:37:15 +0800</pubDate><description><![CDATA[递归思路：把棋盘存储为一个N维数组a[N+1]，数组中第i个元素的值代表第i行的皇后位置，这样便可以把问题的空间规模压缩为一维O(N)，在判断是否冲突时也很简单，首先每行只有一个皇后，且在数组中只占据一个元素的位置，行冲突就不存在了，其次是列冲突，判断是否有a[i]与当前要放置皇后的列k相等即可。至于斜线冲突，通过观察可以发现所有在斜线上冲突的皇后的位置都有规律即它们所在的行列互减的绝对值相等。...]]></description><category></category></item><item><title><![CDATA[Go_Hello World]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/100555599</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/100555599</guid><author>Duc_Duke</author><pubDate>Thu, 05 Sep 2019 12:30:00 +0800</pubDate><description><![CDATA[用Go语言编写第一个程序Hello World

代码如下：
packagemain
import"fmt"
funcmain(){
fmt.Printf("Helloworld\n")
}



package：声明，表示该Go代码属于包main
fmt：该程序所依赖的包
func：函数的标识关键字
Printf：打印函数

Go源文件以package声明开头，表示该Go代码...]]></description><category></category></item><item><title><![CDATA[Go_安装与配置]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/100550039</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/100550039</guid><author>Duc_Duke</author><pubDate>Thu, 05 Sep 2019 12:13:22 +0800</pubDate><description><![CDATA[Go：https://studygolang.com/dl                 Go环境
Git：https://git-scm.com/download/              Go插件
VS CODE：https://code.visualstudio.com/           Go编...]]></description><category></category></item><item><title><![CDATA[排序_堆排]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/100155591</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/100155591</guid><author>Duc_Duke</author><pubDate>Fri, 30 Aug 2019 14:22:34 +0800</pubDate><description><![CDATA[堆：Heap是计算机科学中一类特殊的数据结构的统称，通常是一个可以被看做一棵完全二叉树的数组对象。堆是非线性数据结构，相当于一给2一维数组，有两个直接后继。堆的性质：堆中某个节点的值总是不大于或不小于其父节点的值，且总是一棵完全二叉树。堆的分类：大根堆、小根堆大根堆：将根节点最大的堆叫做最大堆或大根堆，及根节点的元素值最大，且所有父节点的值大于其左右子节点的值小根堆：将根节点最小的堆叫做最小堆或...]]></description><category></category></item><item><title><![CDATA[Linux_libco协程库剖析]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/99874211</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/99874211</guid><author>Duc_Duke</author><pubDate>Thu, 22 Aug 2019 13:42:15 +0800</pubDate><description><![CDATA[非对称协程（asymmetric coroutines）：是跟一个特定的调用者绑定的，协程让出 CPU 时，只能让回给原调用者。那到底是什么东西“不对称”呢？其实，非对称在于程序控制流转移到被调协程时使用的是 call/resume 操作，而当被调协程让出 CPU时使用的却是 return/yield 操作。此外，协程间的地位也不对等，caller 与 callee 关系是确定的，不可更改的，非...]]></description><category></category></item><item><title><![CDATA[Linux_协程、libco]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/98953969</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/98953969</guid><author>Duc_Duke</author><pubDate>Tue, 20 Aug 2019 19:12:11 +0800</pubDate><description><![CDATA[协程：协程,又被称为用户级线程,是在应用层被调度,可以减少因为调用系统调用而阻塞的线程切换的时间

基本原理：协程实质上可以看成是子程序、函数。一个线程上面可以运行多个协程，但是同一时间只能运行一个协程，协程在线程上的切换，是由于遇到阻塞的操作，或者主动让出线程使用权。比如，有10个协程，当前线程正在运行协程1，然后协程1执行一个recv的阻塞操作，协程的调度器能够检测到这个操作，将协程1切换出...]]></description><category></category></item><item><title><![CDATA[求一个二叉树中两个结点的最大距离]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/99707422</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/99707422</guid><author>Duc_Duke</author><pubDate>Tue, 20 Aug 2019 13:15:56 +0800</pubDate><description><![CDATA[求一个二叉树中两个结点的最大距离分为两个情况：
1: 最大距离为从左子树的最深节点，通过根节点，再到右子树的最深节点
2: 或路径不穿过根节点，而是左子树或右子树的最大距离路径

template&lt;class T&gt;
struct BinaryTreeNode
{
BinaryTreeNode(const T&amp; value): data(value), leftc...]]></description><category></category></item><item><title><![CDATA[C++_智能指针、强转指针]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/99671970</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/99671970</guid><author>Duc_Duke</author><pubDate>Mon, 19 Aug 2019 16:05:39 +0800</pubDate><description><![CDATA[智能指针：
C++ 98
  auto_ptr
C++11
  unique_ptr shared_ptr weak_ptr

auto_ptr：所有权唯一，新的智能指针取消旧智能指针所有权 ，赋值或者拷贝导致智能指针提前失效 
（一个较为早期的版本（日常是不用的）解决拷贝构造（多次释放）的方法是管理权转移（以前的对象不再管理，把旧对象的管理空间的权限交给旧对象拷贝出的...]]></description><category></category></item><item><title><![CDATA[C++_封装 、继承 、多态]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/99672000</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/99672000</guid><author>Duc_Duke</author><pubDate>Mon, 19 Aug 2019 15:48:15 +0800</pubDate><description><![CDATA[C++的三大特征：封装 、继承 、多态。
封装突破了C语言函数的概念，可以隐藏实现细节，使得代码模块化，继承可以扩展已存在的模块，它们目的都是为了：代码重用。而多态是为了实现另一个目的：接口重用。


封装：即隐藏对象的属性和实现细节，仅对外公开接口，控制在程序中属性的读和修改的访问级别；将抽象得到的数据和行为（或功能）相结合，形成一个有机的整体，也就是将数据与操作数据的源代码进行有机的结合，形成...]]></description><category></category></item><item><title><![CDATA[C++_内存池]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/99684040</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/99684040</guid><author>Duc_Duke</author><pubDate>Sun, 18 Aug 2019 17:24:39 +0800</pubDate><description><![CDATA[默认内存管理的不足：
malloc/free 和 new/delete 在堆上申请和释放内存都有一定的额外开销。开销来自维护 内存空闲块表。malloc和new 申请堆内存时，首先查找内部维护的内存空闲块表，并且需要根据一定的算法找到合适大小的空闲内存块。如果该空闲内存块过大，还需要切割成已分配的部分和较小的空闲块。然后系统更新内存空闲块表，完成一次内存分配。类似地，在free和delete释放内...]]></description><category></category></item><item><title><![CDATA[C++_浅拷贝、深拷贝、写时拷贝]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/99684030</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/99684030</guid><author>Duc_Duke</author><pubDate>Sun, 18 Aug 2019 16:34:17 +0800</pubDate><description><![CDATA[浅拷贝：编译器只是直接将指针的值拷贝过来，结果多个对象共用了一块内存，当一个对象调用了析构函数将这块内存释放掉之后，另一些对象不知道这块空间已经还给了系统，再次调用析构函数进行释放时发现已经释放了，就会造成程序崩溃。在类的成员中有指针类型的成员变量的时候，必须对其写出显式的拷贝构造函数和赋值运算符重载函数，否则，默认的拷贝构造函数和赋值运算符重载函数只会对该指针进行浅拷贝（即直接将指针的值拷贝过...]]></description><category></category></item><item><title><![CDATA[C++_运算符重载]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/99672136</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/99672136</guid><author>Duc_Duke</author><pubDate>Fri, 16 Aug 2019 19:11:54 +0800</pubDate><description><![CDATA[运算符重载：使自定义类型满足和内置类型相同的运算功能
C++语言支持函数重载，重载的底层实现是，C++编译器编译函数符号的时候，是根据函数名和形参的个数，类型来共同决定的，因此如果一组函数只是函数名相同，而参数列表不同的话，那么它们生成的符号也是不同的，就不会产生冲突了，编译过程中，函数生成的符号不同。在编译器编译时，根据调用点用户传入的实参，来选择一个类型最为匹配的函数重载版本进行调用，这一...]]></description><category></category></item><item><title><![CDATA[const、static]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/99683648</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/99683648</guid><author>Duc_Duke</author><pubDate>Fri, 16 Aug 2019 18:37:51 +0800</pubDate><description><![CDATA[const 有如下特点以及应用场景：
在 C++中 const 是用来定义常量的，不能作为左值被修改，而且必须初始化。const 常量的初始值如果是一个明确的值，那么常量在编译期会被常量的初始值替换。在 C++中修饰的量也可以是常变量（和 C 语言相同），此时它只是不能作为左值，其他性质和普通变量一样，不能定义数组大小，没有编译时期值替换规则等，
const 可以修饰成员方法，成为常成员方法，在...]]></description><category></category></item><item><title><![CDATA[数据库基础1]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/99671749</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/99671749</guid><author>Duc_Duke</author><pubDate>Fri, 16 Aug 2019 12:23:47 +0800</pubDate><description><![CDATA[一、存储引擎
二、索引
三、事务



一、存储引擎：一种文件的存储机制
MySQL的默认存储引擎：V5.1之前默认存储引擎是MyISAM；在此之后默认存储引擎是InnoDB
查看默认存储引擎：show variables like '%engine%'MyISAM： 不支持外键，不支持事务，支持全文索引，底层B+树，表锁（每次锁定一个表的数据），在线分析处理操作速度快     .fr...]]></description><category></category></item><item><title><![CDATA[数据库基础2_SQL基础操作]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/99675351</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/99675351</guid><author>Duc_Duke</author><pubDate>Fri, 16 Aug 2019 11:58:33 +0800</pubDate><description><![CDATA[SQL基础操作
DDL 数据定义语言：create drop  alter  show
一：库
     创建库：creat database [if not exists]name;         db：数据库
     删除库：drop databsae [if exists]name;            if ...]]></description><category></category></item><item><title><![CDATA[全排列、子集问题]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/99549011</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/99549011</guid><author>Duc_Duke</author><pubDate>Wed, 14 Aug 2019 19:16:42 +0800</pubDate><description><![CDATA[输入一个字符串，打印出该字符串中字符的所有排序，例如输入字符串abc，则打印出字符串a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab、cba//解法一：经典的解法
#include&lt;iostream&gt;
#include&lt;string.h&gt;
using namespace std;

void PermutationNumber(char *pstr...]]></description><category></category></item><item><title><![CDATA[给定数组元素，插入(替换)一个元素，使得它左边的值小于等于它，右边的值大于它，求位置？]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/99565205</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/99565205</guid><author>Duc_Duke</author><pubDate>Wed, 14 Aug 2019 14:25:06 +0800</pubDate><description><![CDATA[给定数组元素，插入一个元素，使得它左边的值小于等于它，右边的值大于它，求这个元素插入的位置：

//用vector初始化数组元素（随机值）void Init_Vector(vector&lt;int&gt; &amp;ivec)
{
 for(int i = 0;i&lt;10;++i)
 {
  ivec.push_back(rand()%100);
 }
}//...]]></description><category></category></item><item><title><![CDATA[BST]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/99324052</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/99324052</guid><author>Duc_Duke</author><pubDate>Mon, 12 Aug 2019 21:12:59 +0800</pubDate><description><![CDATA[BST(Binary Search Tree)：二叉查找树，也叫二叉搜索树，二叉排序树，其目的是为了提高查找的效率，其查找在平均和最坏的情况下都是logn级别，接近二分查找

BST性质：
若它的左子树不空，则左子树上所有结点的值均小于它的根结点的值；
若它的右子树不空，则右子树上所有结点的值均大于它的根结点的值；
它的左、右子树也分别为二叉排序树。

BST原理：
通常采取二叉链表作为二叉排序...]]></description><category></category></item><item><title><![CDATA[二叉树_线索化二叉树]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/99214739</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/99214739</guid><author>Duc_Duke</author><pubDate>Sun, 11 Aug 2019 20:06:27 +0800</pubDate><description><![CDATA[#include&lt;assert.h&gt;
#include&lt;iostream&gt;
#include&lt;vector&gt;
#include&lt;stack&gt;
#include&lt;queue&gt;

using namespace std;



typedef char ElemType;#define END '#'typedef enum //存在...]]></description><category></category></item><item><title><![CDATA[union_整形->IP(点分十进制)]]></title><link>https://blog.youkuaiyun.com/Duc_Duke/article/details/99189542</link><guid>https://blog.youkuaiyun.com/Duc_Duke/article/details/99189542</guid><author>Duc_Duke</author><pubDate>Sun, 11 Aug 2019 17:18:20 +0800</pubDate><description><![CDATA[解法一：普通处理
#include&lt;stdio.h&gt;
void PrintIP(unsigned int ip)
{
  int i = 0;
 int a =0;
 for(int i = 0;i&lt;4;++i)
 {
  a = ip &amp; 0x0ff;
  printf("%d.",a);
  ip&gt;&...]]></description><category></category></item></channel></rss>