<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qiting00的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qiting00</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qiting00]]></copyright><item><title><![CDATA[在前后端项目中引入 gitHooks commit-msg验证笔记]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/130688092</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/130688092</guid><author>qiting00</author><pubDate>Mon, 15 May 2023 17:01:01 +0800</pubDate><description><![CDATA[前后端项目中引入 gitHooks commit-msg 验证]]></description><category></category></item><item><title><![CDATA[Python3 ThreadPoolExecutor线程池 笔记]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/120816388</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/120816388</guid><author>qiting00</author><pubDate>Sun, 17 Oct 2021 21:20:05 +0800</pubDate><description><![CDATA[Python3 ThreadPoolExecutor线程池
用到的模块：concurrent.futures
为什么需要线程池
主线程中可以获取某一个线程的状态或者某一个任务的状态，以及返回值。
futures可以让多线程和多进程编码接口一致
怎么使用
线程池的基类是concurrent.futures模块中的Executor，Executor提供了两个子类，即 ThreadPoolExecutor 和 ProcessPoolExecutor，其中 ThreadPoolExecutor 用于创建线程池，而 ]]></description><category></category></item><item><title><![CDATA[React生命周期学习]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/113760940</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/113760940</guid><author>qiting00</author><pubDate>Wed, 19 May 2021 20:32:19 +0800</pubDate><description><![CDATA[React生命周期学习笔记
1.概念
每个组件的实例，从创建、运行到销毁，在这个过程中，会触发一系列事件，这些事件就叫做组件的生命周期函数
流程图如下：
待补充
2.生命周期
挂载阶段
当组件实例被创建并插入DOM中时，其生命周期调用顺序如下：
constructor
如果不初始化state 或者 不进行方法绑定，则不需要为React组件实现构造函数
constructor(props) {
  super(props);
  // 不要在这里调用 this.setState() 这是禁止操作
  this]]></description><category></category></item><item><title><![CDATA[python2和3区别笔记]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/111467567</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/111467567</guid><author>qiting00</author><pubDate>Mon, 21 Dec 2020 09:48:31 +0800</pubDate><description><![CDATA[python2和3区别笔记
文章目录1.输入和输出2.除法运算3.字符串4.range()函数5.数据类型6.True和False7.类8.2to3--代码转换1.使用 2to32.修复器
1.输入和输出


input函数，python3中仅保留了input函数，来得到一个&lt;class 'str'&gt;的值，而python2中raw_input用来获取字符串，input用来获取数字
# python3.x
a = input("请输入: ")		# 123
print(type(a), a)  	]]></description><category></category></item><item><title><![CDATA[c++的内存映像]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/84403776</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/84403776</guid><author>qiting00</author><pubDate>Fri, 23 Nov 2018 22:25:51 +0800</pubDate><description><![CDATA[先来看一个问题：类的空指针能不能调用类的成员函数呢？


class A{
public:
	A(){}
	~A(){}
	void func_1(){cout&amp;lt;&amp;lt;&quot;调用成功！&quot;&amp;lt;&amp;lt;endl;}
	void func_2(){}
	void func_3(int x){}
	static int s_func(int x){}
protected:
	A(const A&amp;a...]]></description><category></category></item><item><title><![CDATA[c++中类的大小计算]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/83387408</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/83387408</guid><author>qiting00</author><pubDate>Thu, 25 Oct 2018 22:06:42 +0800</pubDate><description><![CDATA[
#include&amp;lt;c++/4.8.2/iostream&amp;gt;
using namespace std;

class A
{
    int a;
};//sizeof(A) 4

class B     //静态数据
{
    int a;
    static int b;
};//4,静态成员存储在静态区，不影响类的大小。

class C     //虚函数
{
    vir...]]></description><category></category></item><item><title><![CDATA[单链表的简单实现]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/79117543</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/79117543</guid><author>qiting00</author><pubDate>Sat, 20 Jan 2018 23:07:18 +0800</pubDate><description><![CDATA[关于单链表的操作中，关系到头节点创建和更改的要用二级指针或者一级指针引用，其他的可用一级指针#pragma once
#include
#include
using namespace std;

typedef struct ListNode
{
	int data;
	struct ListNode* next;
}Node;

void PrintList(Node* head);
Node]]></description><category></category></item><item><title><![CDATA[红黑树的简单实现-RBTree]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/78504087</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/78504087</guid><author>qiting00</author><pubDate>Fri, 10 Nov 2017 23:25:19 +0800</pubDate><description><![CDATA[红黑树]]></description><category></category></item><item><title><![CDATA[堆的简单实现]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/78503905</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/78503905</guid><author>qiting00</author><pubDate>Fri, 10 Nov 2017 22:43:46 +0800</pubDate><description><![CDATA[堆数据结构是一种数组对象，可被视为一颗完全二叉树 
堆结构的二叉树存储 
最大堆:父>子 
最小堆:父<子 
如下图，先建立一个大堆 
 
下面用代码模拟实现一个大堆（插入 ，头删）#include <iostream>
#include <vector>
#include <assert.h>using namespace std;template <class T>
class Heap
{
p]]></description><category></category></item><item><title><![CDATA[信号屏蔽（pending）]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/73718559</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/73718559</guid><author>qiting00</author><pubDate>Sun, 25 Jun 2017 16:16:00 +0800</pubDate><description><![CDATA[本文主要简单介绍下linux下信号的阻塞，解除阻塞并递达。 
先介绍下相关概念： 
信号递达（Delivery）：实际执行信号的处理动作 ， 
有3种状态： 
1.忽略 
2.执行默认操作（一般为终止进程） 
3.自定义动作（信号的捕捉）信号未决（Pending）：信号从产生到递达之间的状态   （在这里信号可以被阻塞（Block）） 
信号阻塞（Block）：将信号保持在未决状态，直到被解除阻塞之]]></description><category></category></item><item><title><![CDATA[动态顺序表的简单实现]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/71325895</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/71325895</guid><author>qiting00</author><pubDate>Sun, 07 May 2017 14:01:08 +0800</pubDate><description><![CDATA[顺序表是在计算机内存中以数组的形式保存的线性表，是指用一组地址连续的存储单元依次存储数据元素的线性结构。 
这样的存储方式使得线性表逻辑上相邻的元素，其在物理存储单元中也是相邻的。只要知道了第一个元素的存储地址，就可以知道线性表中任何一个元素的存储地址#include<iostream>
using namespace std;
#include<assert.h>template<class T>]]></description><category></category></item><item><title><![CDATA[静态顺序表的简单实现]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/71247233</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/71247233</guid><author>qiting00</author><pubDate>Fri, 05 May 2017 23:46:52 +0800</pubDate><description><![CDATA[静态顺序表的增删查改



#include
using namespace std;
const int MAXSIZE = 100;
templateclass T>
class Sqlist
{
public:
    Sqlist()
    {
        length = 0;
    }
    ~Sqlist()
    {
        length = 0;
    }]]></description><category></category></item><item><title><![CDATA[vector容器类简单示例]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/71194846</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/71194846</guid><author>qiting00</author><pubDate>Fri, 05 May 2017 12:28:51 +0800</pubDate><description><![CDATA[vector作为STL提供的标准容器之一，是经常要使用的，有很重要的地位，并且使用起来也是灰常方便。vector又被称为向量，vector可以形象的描述为长度可以动态改变的数组，功能和数组较为相似。实际上更专业的描述为：vector是一个多功能的，能够操作多种数据结构和算法的模板类和函数库，vector之所以被认为是一个容器，是因为它能够像容器一样存放各种类型的对象，简单地说，vector是一个能够]]></description><category></category></item><item><title><![CDATA[list 迭代器的简单实现]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/71126783</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/71126783</guid><author>qiting00</author><pubDate>Wed, 03 May 2017 17:10:50 +0800</pubDate><description><![CDATA[List是一个容器，在STL库中（标准模板库）。实质上就是一个双向链表，而且这个双向链表是有头的；他有一个空的头结点，插入删除时不用判断表中有无数据，双向循环可以轻易的_head->prev轻松地找到最后一个节点end。 
     它使用内置的迭代器来遍历和管理这个容器，迭代器就像指针一样管理着这个空间，重载实现了与指针一样的++、*、= 、!=等操作符。迭代器实质上就是遍历访问容器里面的元素。不]]></description><category></category></item><item><title><![CDATA[智能指针的简单实现-SharePtr]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/70665877</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/70665877</guid><author>qiting00</author><pubDate>Mon, 24 Apr 2017 21:50:19 +0800</pubDate><description><![CDATA[SharePtr的简单实现#include <iostream>
#include<string>
using namespace std;
#pragma warning(disable:4996)
template<class T, class Del>
class SharePtr
{
public:
    SharePtr(T* ptr) //构造函数
        :_ptr(ptr)]]></description><category></category></item><item><title><![CDATA[Linux下vim的设置]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/69789317</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/69789317</guid><author>qiting00</author><pubDate>Sat, 08 Apr 2017 23:51:47 +0800</pubDate><description><![CDATA[vim的设置 
 对于Linux新手来说，vim是个很好的编辑器，只不过还是有些缺点的，就是有点简陋，用起来不是很舒服。现在有个方法可以改善这种情况，就是通过手动设置vim来达到这种目的。可以任意设置。 
 首先，在根目录下切换为超级用户（输入su,回车之后输入密码），然后创建一个叫做.vimrc的文件（输入touch .vimrc）,之后进入.vimrc(输入vim .vimrc)。之后就进入了编]]></description><category></category></item><item><title><![CDATA[Linux系统下ACM时间查看修改和文件目录权限处理]]></title><link>https://blog.youkuaiyun.com/qiting00/article/details/64923445</link><guid>https://blog.youkuaiyun.com/qiting00/article/details/64923445</guid><author>qiting00</author><pubDate>Wed, 22 Mar 2017 18:38:36 +0800</pubDate><description><![CDATA[ACM时间是Linux系统下分别代表Access,Modify和Change三个时间。输入stat+文件名即可输出。 
如下图所示： Access：文件最近被访问的时间（访问） 
Modify : 文件内容最近被修改的时间（修改） 
Change : 文件属性最近被修改的时间（改变）接下来说一下这些时间的修改。Access时间的修改： 
可以使用touch -a 文件名  的格式 
文件内容被访问一]]></description><category></category></item></channel></rss>