<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[shark_tear的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/shark_tear</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; shark_tear]]></copyright><item><title><![CDATA[函数装饰器和类装饰器实现单例类]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/104688912</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/104688912</guid><author>shark_tear</author><pubDate>Fri, 06 Mar 2020 08:55:53 +0800</pubDate><description><![CDATA[单例类，指的是这个类只能创建一个实例，创建完成后，其他类实例都无法再创建。今天我们来看一下，使用函数装饰器和类装饰器怎么实现这种特殊一点的类。

函数装饰器实现

装饰器算是类里面比较难的内容之一，但是实际上它的思想并不复杂。简单点说，就是在你原来内容的基础上，在外面给你加点东西，实现类似装饰的效果。但是它是怎么实现的呢？一般来说，都是通过拦截函数调用来实现的，比如：用装饰器装饰函数的时候，它拦截...]]></description><category></category></item><item><title><![CDATA[下划线在Python中的用途]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/104666151</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/104666151</guid><author>shark_tear</author><pubDate>Thu, 05 Mar 2020 00:22:09 +0800</pubDate><description><![CDATA[学习Python基础知识部分的时候，经常会用到下划线，因为下划线在Python中有一些特殊的意义。今天我们来看一下，下划线在Python中有哪些应用。

1. 用于表示最后一个表达式的值。

在linux的shell里，当你执行完一条shell命令的时候，会有一个变量$?来表示这个表达式的执行结果，即这个表达式执行成功了还是没有。而Python中，则是使用_来表示最后一个表达式的值。我们来看代码示...]]></description><category></category></item><item><title><![CDATA[Linux系统Python虚拟环境管理软件pyenv]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/104629322</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/104629322</guid><author>shark_tear</author><pubDate>Tue, 03 Mar 2020 11:54:12 +0800</pubDate><description><![CDATA[在学习Python的时候，最经常遇到的问题就是包版本的问题，比如说这个应用需要libtool包的1.1.1版本，而之前开发的应用则只能运行在1.0.1版本上。那么怎么让两个应用都能够正常运行起来呢？聪明的开发者们提出了虚拟环境的概念，就像电脑的虚拟机一样，创建一个虚拟环境就像创建了虚拟机。你在虚拟环境里做任何操作都不会影响到其他的虚拟环境，也不会影响到系统环境。同时你也可以在你的虚拟环境里安装任何...]]></description><category></category></item><item><title><![CDATA[Python虚拟环境模块virtualenv]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/104616226</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/104616226</guid><author>shark_tear</author><pubDate>Mon, 02 Mar 2020 17:49:44 +0800</pubDate><description><![CDATA[相信只要学习python的同学对于虚拟环境这个概念肯定不会太陌生，虚拟环境指的是一个个单独隔离的python开发环境。各个虚拟环境之间互不干扰，都有自己独立的开发包。就像是在电脑上装了很多个虚拟机，每个虚拟机里面你随便折腾，不会影响到物理机，也不会影响到其他虚拟机。

既然这么有用，那么Python里面用来创建虚拟环境的模块virtualenv是怎么使用的呢？我们一起来看一下。

virtuale...]]></description><category></category></item><item><title><![CDATA[算法题猜数字-Python实现]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/104566786</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/104566786</guid><author>shark_tear</author><pubDate>Fri, 28 Feb 2020 23:26:10 +0800</pubDate><description><![CDATA[今天刷的第一道算法题，先拿一道简单点的试试手，这道题目的要求是：

两个人甲乙在猜数字，甲先从1，2，3三个数字中随机抽3次，结果是guess。乙随后也随机抽三次，结果是answer。然后对比甲乙两个人的结果。示例如下：

guess：[1,2,3], answer: [1, 2, 3]

那么结果就是猜对了3次

guess: [1,2,3] answer:[3,2,1]

那么结果就是猜对了1...]]></description><category></category></item><item><title><![CDATA[Python日志模块logging]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/104545120</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/104545120</guid><author>shark_tear</author><pubDate>Thu, 27 Feb 2020 21:10:31 +0800</pubDate><description><![CDATA[在上一篇文章《Python系统模块os》中我留了一个问题，就是python中怎么删除非空的目录，这里给出答案。Python删除非空目录使用的是shutil模块。这个模块一般用于复制文件，但是它也具有删除非空目录的能力。我们看一下它是怎么删除的。


&gt;&gt;&gt; os.makedirs('dir1/dir2')
&gt;&gt;&gt; os.listdir('dir1')
['dir...]]></description><category></category></item><item><title><![CDATA[Python系统模块os]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/104527865</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/104527865</guid><author>shark_tear</author><pubDate>Wed, 26 Feb 2020 23:41:14 +0800</pubDate><description><![CDATA[在昨天的文章里，我们说到，python官方库中比较重要的两个模块是sys和os，然后在昨天的文章中列出了几个sys模块内部函数的用法。今天我们来看一下另外一个重要模块os的用法。
os模块是直接和系统调用或者说系统提供的api打交道的模块，因此可以把它的功能分为3大类，分别是：
1. POSIX工具，即处理文件系统相关的功能
2. 提供跨平台能力的功能或函数
3. 运行系统命令相关的函数

下面我...]]></description><category></category></item><item><title><![CDATA[Python系统模块sys]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/104506629</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/104506629</guid><author>shark_tear</author><pubDate>Tue, 25 Feb 2020 22:02:07 +0800</pubDate><description><![CDATA[在python官方提供的核心库中，有两大比较重要的核心库，分别是sys和os，这两个库模块都是直接和操作系统打交道的模块，因此想要熟练掌握python系统编程，对这两个模块的了解就必不可少了。

今天我们来看一下sys这个模块，既然这个模块是和操作系统打交道的，那么我们来看一下它涉及系统信息的功能。

## 1. 输出系统平台和版本
在很多Python库中，进行系统版本的判别就是使用sys模块来进...]]></description><category></category></item><item><title><![CDATA[Python Web框架简介]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/104487402</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/104487402</guid><author>shark_tear</author><pubDate>Mon, 24 Feb 2020 22:38:32 +0800</pubDate><description><![CDATA[我们都知道，在开发工作中，使用现成的框架或者库来做开发的话，可以节省大量的工作，这也是开发人员常说的，不要重复造轮子。在使用Python做Web开发的时候，有哪些web框架可以来帮我们提高效率，加快网站上线呢？我们来看这些常用的Web开发框架。

1. Flask

基于BSD协议开源的Web框架，它是一个轻量级的Web框架，启动非常迅速且简单。它依赖于Werkzeug这个WSGI这个WSGI工具...]]></description><category></category></item><item><title><![CDATA[从硬盘安装CentOS7.0时遇到的一些错误和解决办法]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/39523667</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/39523667</guid><author>shark_tear</author><pubDate>Wed, 24 Sep 2014 15:27:18 +0800</pubDate><description><![CDATA[从硬盘安装CentOS7.0时遇到的一些错误和解决办法


1.  mount： no medium found 和 /dev/root do not exist
这两种情况都是找不到CentOS7.0 的安装文件，问题出在用EasyBCD设置启动文件时，没有指定安装文件（.iso）在哪个硬盘里面，在出现上面的错误时，输入cd /dev，然后再输入ls两个命令，显示出来的信息里面会有sda]]></description><category></category></item><item><title><![CDATA[图形的保存和重绘]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/8709369</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/8709369</guid><author>shark_tear</author><pubDate>Sun, 24 Mar 2013 20:40:59 +0800</pubDate><description><![CDATA[函数：
SetScrollSizes() 进行滚动条的相关属性设置
OnInitialUpdate()该函数是在窗口创建完成之后第一个调用的函数。利用此函数进行窗口的初始化。
Create() Close()  PlayMetaFile()  DeleteMetaFile() 元文件操作函数。
CopyMetaFile() 将元文件的内容复制到指定的文件
知识点：
图形保存时的三要素：]]></description><category></category></item><item><title><![CDATA[绘图控制]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/8698251</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/8698251</guid><author>shark_tear</author><pubDate>Fri, 22 Mar 2013 12:49:07 +0800</pubDate><description><![CDATA[函数：
SetPixel();设置一个点
MoveTo()  LineTo() 用于绘制直线
RecTangle() 用于绘制矩形
Ellipse() 用于绘制椭圆
DoModal() 用于创建模态对话框
CColorDialog CFontDialog 颜色对话框和字体对话框
CreateFontIndirect()根据选择的字体类型来初始化字体对象
HBRUSH OnCtrCo]]></description><category></category></item><item><title><![CDATA[对话框知识点和函数（三）]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/8523412</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/8523412</guid><author>shark_tear</author><pubDate>Tue, 22 Jan 2013 21:11:01 +0800</pubDate><description><![CDATA[函数：
ShowWindow();
用来显示按钮或者其他窗口
void  AddPage（CPropertyPage *pPage）
在属性表单中添加属性页对象
SetWizardMode()
设置向导模式，即创建向导类型的对话框
void  SetWizardButton(DWORD dwFlags)
设置向导对话框页面按钮
CListBox::AddString()
用来向]]></description><category></category></item><item><title><![CDATA[对话框知识点和函数（二）]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/8523408</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/8523408</guid><author>shark_tear</author><pubDate>Mon, 21 Jan 2013 08:57:01 +0800</pubDate><description><![CDATA[知识点：
 对话框扩展和伸缩功能的实现：
首先获取伸缩前后对话框的大小，然后对对话框进行设置。
图片控件的visible选项控制其是否可见，sunken选项控制其下陷状态。
输入焦点的传递；
在程序运行时，窗口创建完成之后，对话框及其子控件未创建之前就发送WM_CREATE消息
在程序运行时，当对话框及其上的子控件创建完成将要显示之前会发送一个WM_INITDIALOG消息。
在VS]]></description><category></category></item><item><title><![CDATA[函数和菜单知识点（一）]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/8491597</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/8491597</guid><author>shark_tear</author><pubDate>Thu, 10 Jan 2013 22:02:43 +0800</pubDate><description><![CDATA[函数：
CWnd::Getmenu();CMenu* GetMenu() const;
用来获取指向菜单项对象的指针
CWnd::GetSubMenu();CMenu* GetSubMenu(int nPos) const;
用于获取由nPos参数指定的子菜单的指针
UINT CHeckMenuItem（UINT nIDCheckItem，UINT nCheck）;
为菜单项添加标记或]]></description><category></category></item><item><title><![CDATA[友元的一点笔记]]></title><link>https://blog.youkuaiyun.com/shark_tear/article/details/8184181</link><guid>https://blog.youkuaiyun.com/shark_tear/article/details/8184181</guid><author>shark_tear</author><pubDate>Wed, 14 Nov 2012 20:53:27 +0800</pubDate><description><![CDATA[如果A类的成员函数成为B类的友元成员函数，并且在A类的成员函数里面有B类的引用。则必须小心排列类声明和类定义的顺序。
因为A类的成员函数有B类的引用，所以编译器必须先看到B类的声明。但是A类的成员函数又是B类的友元成员函数，所以编译器必须看到A类的定义，形成一个死循环。因此，对B类使用前向声明（forward declaration），让编译器知道B类的定义稍后提供。

class B]]></description><category></category></item></channel></rss>