<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[FatTigerx的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/FatTigerx</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; FatTigerx]]></copyright><item><title><![CDATA[使用GitLab进行CI/CD简介]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/103766541</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/103766541</guid><author>FatTigerx</author><pubDate>Wed, 08 Jan 2020 17:27:43 +0800</pubDate><description><![CDATA[使用GitLab进行CI/CD简介
CI/CD方法论简介

软件开发的连续方法基于自动执行脚本，以最大程度地减少在开发应用程序时引入错误的情况。从开发新代码到部署新代码，他们几乎不需要人工干预，甚至根本不需要干预。
它涉及到在每次小的迭代中就不断地构建，测试和部署代码更改，从而减少了基于错误或失败的先前版本开发新代码的情况。
持续集成

考虑一个应用程序，其代码存储在GitLab的Git存储库中。...]]></description><category></category></item><item><title><![CDATA[python3.8究竟更新了什么？]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/102571544</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/102571544</guid><author>FatTigerx</author><pubDate>Tue, 15 Oct 2019 18:54:35 +0800</pubDate><description><![CDATA[2019.10.15日python 3.8.0 稳定版正式发布，让我们来看看究竟有什么新特性和优化吧。

Python 3.8.0 稳定版 部分新特性：

PEP 572 ，赋值表达式
PEP 570 ，仅位置参数
PEP 587 ，Python 初始化配置（改进嵌入）
PEP 590 ，Vectorcall：用于 CPython 的快速调用协议
PEP 578 ，运行时审核挂钩
PEP 574 ...]]></description><category></category></item><item><title><![CDATA[Django数据库字段类型与SQL对应关系备忘]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/102497242</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/102497242</guid><author>FatTigerx</author><pubDate>Fri, 11 Oct 2019 10:59:03 +0800</pubDate><description><![CDATA[_data_types = {
‘AutoField’: ‘integer AUTO_INCREMENT’,
‘BigAutoField’: ‘bigint AUTO_INCREMENT’,
‘BinaryField’: ‘longblob’,
‘BooleanField’: ‘bool’,
‘CharField’: ‘varchar(%(max_length)s)’,
‘CommaSeparat...]]></description><category></category></item><item><title><![CDATA[正则表达式--备忘录]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/90110277</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/90110277</guid><author>FatTigerx</author><pubDate>Wed, 19 Jun 2019 11:15:13 +0800</pubDate><description><![CDATA[正则表达式

概述
正则表达式，Regular Expression，缩写为 regex、regexp、RE等。
正则表达式是文本处理极为重要的技术，用它可以对字符串按照某种规则进行检索、替换。
1970年代，Unix 之父 ken Thompson 将正则表达式引入到 Unix 中文本编辑器 ed 和 grep 命令中，由此正则表达式普及开来。
1980年后，per 语言对 Henry Spen...]]></description><category></category></item><item><title><![CDATA[Python--动态为类增加属性的几种方式总结]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/90550684</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/90550684</guid><author>FatTigerx</author><pubDate>Mon, 27 May 2019 09:42:13 +0800</pubDate><description><![CDATA[前言:
Python是一门动态强类型语言，想要实现为类增添属性有好几种方式，本篇博客就此做一个简单的总结。

在总结之前，让我们先来看看python的反射

反射概述：
运行时，区别于编译时，指的是程序被加载到内存中执行的时候。
反射，reflection，指的是运行时获取类型定义信息。
一个对象能够在运行时，像照镜子一样，反射出其类型信息。

简单说，在Python中，能够通过一个对象，找出其t...]]></description><category></category></item><item><title><![CDATA[Python--堆排序]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/90202433</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/90202433</guid><author>FatTigerx</author><pubDate>Tue, 14 May 2019 16:05:43 +0800</pubDate><description><![CDATA[堆排序 Heap Sort


空间复杂度

只是使用了一个交换用的空间，空间复杂度就是 O(1)


稳定性

不稳定的排序算法





是利用堆性质的一种选择排序，在堆顶选出最大值或者最小值
时间复杂度

堆排序的时间复杂度为 O(nlogn)
由于堆排序对原始记录的排序状态并不敏感，因此它无论最好、最坏和平均时间复杂度均为 O(nlogn)





概述

若以升序排序说明，把数组转换成...]]></description><category></category></item><item><title><![CDATA[Python--shutil模块细说]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/90106836</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/90106836</guid><author>FatTigerx</author><pubDate>Sat, 11 May 2019 11:35:27 +0800</pubDate><description><![CDATA[shutil 模块

文件拷贝：使用打开2个文件对象，源文件读取内容，写入目标文件中来完成拷贝过程。但是这样丢失 stat 数据信息(权限等)，因为根本没有复制这些信息过去。
另外一种情况，目录复制又怎么办呢？
Pyhton 提供了一个方便的库 shutil(高级文件操作)
copy 复制

copyfileobj(fsrc,fdst[,length])
文件对象的复制，fsrc 和 fdst 是...]]></description><category></category></item><item><title><![CDATA[Python路径操作细说]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/90055228</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/90055228</guid><author>FatTigerx</author><pubDate>Fri, 10 May 2019 21:31:55 +0800</pubDate><description><![CDATA[路径操作

路径操作模块
3.4版本之前
os.path 模块
from os import path

p = path.join('/etc','sysconfig','network')
print(type(p),p)
print(path.exists(p))

print(path.split(p))
print(path.dirname(p),path.basename(p))

p...]]></description><category></category></item><item><title><![CDATA[Python文件操作——基础操作]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/89516607</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/89516607</guid><author>FatTigerx</author><pubDate>Fri, 10 May 2019 10:35:31 +0800</pubDate><description><![CDATA[文件操作

冯诺依曼体系架构

CPU 由运算器和控制器组成

运算器，完成各种算数运算、逻辑运算、数据传输等数据加工处理
控制器，控制计算机各部件协调运行
存储器，用于记忆程序和数据，例如内存
输入设备，将数据或者程序输入到计算机中，例如键盘，鼠标
输出设备，将数据或程序的处理结果展现给用户，例如显示器、打印机等
一般说IO操作，指的是文件IO，如果指的是网络IO，都会直接说网络IO



文件...]]></description><category></category></item><item><title><![CDATA[Python-argparse模块]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/89891940</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/89891940</guid><author>FatTigerx</author><pubDate>Tue, 07 May 2019 21:34:45 +0800</pubDate><description><![CDATA[argparse 模块
什么是argparse？
argparse ——命令行选项、参数和子命令解释器
argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数，然后 argparse 将弄清如何从 sys.argv 解析出那些参数。argparse 模块还会自动生成帮助和使用手册，并在用户给程序传入无效参数时报出错误信息。

一个可执行文件或者脚本都可以接受参数
$ ls...]]></description><category></category></item><item><title><![CDATA[Python 序列化和反序列化]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/89810835</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/89810835</guid><author>FatTigerx</author><pubDate>Sat, 04 May 2019 11:51:49 +0800</pubDate><description><![CDATA[序列化和反序列化

文章目录==序列化和反序列化==为什么要序列化定义pickle 库序列化、反序列化试验序列化应用JsonJson 的数据类型==json模块==Python 与 json常用方法MessagePack常用方法
为什么要序列化

内存中的字典、列表、集合以及各种对象，如何保存到一个文件中？
如果是自己定义的类的实例，如何保存到一个文件中？
如何从文件中读取数据，并让它们在内存中再...]]></description><category></category></item><item><title><![CDATA[Python-NNN-问]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/89602946</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/89602946</guid><author>FatTigerx</author><pubDate>Sat, 27 Apr 2019 18:04:13 +0800</pubDate><description><![CDATA[——本篇为在学习Python的时候从网上顺手迁来的Python n 个问。
                  本博客持续更新==&gt;&gt;&gt;


简述解释型和编译型编程语言？
解释型：在执行程序时，计算机才一条条的将代码解释成机器语言给计算机来执行
编译型：是把源程序的每一条语句都编译成机器语言，并保存成二进制文件，这样计算机运行该程序时可以直接以机器语言来运行此程序，运行速度很快
...]]></description><category></category></item><item><title><![CDATA[Pyhon 之 functools]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/89503288</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/89503288</guid><author>FatTigerx</author><pubDate>Wed, 24 Apr 2019 21:24:41 +0800</pubDate><description><![CDATA[Pyhon 之 functools
functools模块

reduce方法

reduce方法，顾名思义就是减少
reduce(function,sequence[,initial])-&gt;value
可迭代对象不能为空；初始值没有提供就在可迭代对象中取一个元素



from functools import reduce
nums = [6,9,4,2,4,10,5,9,6,9]
pr...]]></description><category></category></item><item><title><![CDATA[Python参数注解]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/89496396</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/89496396</guid><author>FatTigerx</author><pubDate>Wed, 24 Apr 2019 20:19:59 +0800</pubDate><description><![CDATA[函数定义的弊端

Python 是动态语言，变量随时可以被赋值，且能赋值为不同的类型
Python 不是静态编译型语言，变量类型是在运行期决定的
动态语言很灵活，但是这种特性也是弊端

def add(x,y):
    return x + y
print(add(4,5))
print(add('hello','world'))
print(add(4,'hello')） 运行错误


难发现...]]></description><category></category></item><item><title><![CDATA[Python改变参数值的函数]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/89434825</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/89434825</guid><author>FatTigerx</author><pubDate>Sun, 21 Apr 2019 17:35:35 +0800</pubDate><description><![CDATA[改变参数值的函数
例1：银行账户计算利率——账户余额计算利息的函数
def addInterest(balance, rate):
	newBalance = balance * (1 + rate)
	balance = newBalance

def main():
	amount = 1000
	rate = 0.05
	addInterest(amount,rate)
	print(amo...]]></description><category></category></item><item><title><![CDATA[Python中三种简单的基础排序算法（冒泡，选择，插入）]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/89419497</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/89419497</guid><author>FatTigerx</author><pubDate>Sat, 20 Apr 2019 17:44:29 +0800</pubDate><description><![CDATA[冒泡法排序

冒泡法

属于交换排序
两两比较大小，交换位置。如同水泡咕嘟咕嘟往上冒
结果分为升序和降序排序


升序

n个数从左至右，编号从0开始到n-1，索引0和1的值比较，如果索引0大，则交换两者位置，如果索引1大，则不交换。继续比较索引1和2的值，将大值放在右侧。直至n-2和n-1比较完，第一轮比较完成。第二轮从索引0比较到 n-2，因为最右侧n-1位置上已经是最大值了。依次类推，每一轮...]]></description><category></category></item><item><title><![CDATA[Python高阶函数与柯里化]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/89408198</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/89408198</guid><author>FatTigerx</author><pubDate>Fri, 19 Apr 2019 21:48:27 +0800</pubDate><description><![CDATA[高阶函数
一等公民

函数在 Python 是一等公民（First-Class Object）
函数也是对象，是可调用对象
函数可以作为普通变量，也可作为函数的参数、返回值


高阶函数
高阶函数（High-order Function）

数学概念 y = f(g(x))
在数学和计算机科学中，高阶函数应道是至少满足下面一个条件的函数

接收一个或多个函数作为参数
输出一个函数



观察下面的...]]></description><category></category></item><item><title><![CDATA[Python树]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/89388154</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/89388154</guid><author>FatTigerx</author><pubDate>Fri, 19 Apr 2019 21:03:29 +0800</pubDate><description><![CDATA[树

非线性结构
树是 n(n&gt;=0) 个元素的集合

n = 0 时，称为空树
树只有一个特殊的没有前驱的元素，称为树的根 Root
树中除了根节点外，其余元素只能有一个前驱，可能有零个或者多个后继


递归定义

树 T 是 n(n&gt;=0) 个元素的集合。n = 0 时，称为空树
有且只有一个特殊元素根，剩余元素都可以被划分为 m 个互不相交的集合 T1、T2、T3、…、Tm，而每...]]></description><category></category></item><item><title><![CDATA[Python装饰器]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/89406366</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/89406366</guid><author>FatTigerx</author><pubDate>Fri, 19 Apr 2019 20:49:01 +0800</pubDate><description><![CDATA[装饰器

需求

一个加法函数，想要增强它的功能，能够输出被调用过的以及调用的参数信息



def add(x,y):
    return x + y

增加信息输出功能
def add(x,y):
    print('call add,x + y')
    return x + y


上面的加法函数是完成了需求，但是有一下缺点

打印是一个功能，这条语句和 add 函数耦合太高
加法函...]]></description><category></category></item><item><title><![CDATA[Python生成器]]></title><link>https://blog.youkuaiyun.com/FatTigerx/article/details/89348974</link><guid>https://blog.youkuaiyun.com/FatTigerx/article/details/89348974</guid><author>FatTigerx</author><pubDate>Thu, 18 Apr 2019 17:42:17 +0800</pubDate><description><![CDATA[生成器
生成器generator

生成器指的是生成器对象，可以由生成器表达式得到，也可以使用 yield 关键字得到一个生成器函数，调用这个函数得到一个生成器对象
生成器对象，是一个可迭代对象，是一个迭代器
生成器对象，是延迟计算，惰性求值的

生成器函数

函数体中包含 yield 语句的函数，就是生成器函数，调用后返回生成器对象

m = (i for i in range(5))
prin...]]></description><category></category></item></channel></rss>