<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[agn7047的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/agn7047</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; agn7047]]></copyright><item><title><![CDATA[Git 协作：Fetch Pull Push Branch Remote Rebase Cherry-pick相关]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563372</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563372</guid><author>agn7047</author><pubDate>Thu, 19 Sep 2019 19:06:00 +0800</pubDate><description><![CDATA[前言
学习git的时候，我们首先学习的是最常用的，自己独立开发Software时用的命令：

git init                                                                 //初始化git仓库
git add &lt;file_name&gt;                                   ...]]></description><category></category></item><item><title><![CDATA[apt-get update 101错误解决办法]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563369</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563369</guid><author>agn7047</author><pubDate>Thu, 08 Aug 2019 17:38:00 +0800</pubDate><description><![CDATA[在一次装好Ubuntu系统， 执行

sudo apt-get update

时，报了错
"
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/raring-security/Release.gpg Cannot initiate the connection to security.ubuntu.com:...]]></description><category></category></item><item><title><![CDATA[Python函数参数中的冒号与箭头]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563371</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563371</guid><author>agn7047</author><pubDate>Wed, 17 Apr 2019 16:08:00 +0800</pubDate><description><![CDATA[在一些Python的工程项目中，我们会看到函数参数中会有冒号，有的函数后面会跟着一个箭头，你可能会疑惑，这些都是什么东西？
其实函数参数中的冒号是参数的类型建议符，告诉程序员希望传入的实参的类型。函数后面跟着的箭头是函数返回值的类型建议符，用来说明该函数返回的值是什么类型。
更官方的解释：此为type hints，是Python 3.5新加的功能，作用如上所述，官方文档为https...]]></description><category></category></item><item><title><![CDATA[Python中的多线程编程，线程安全与锁(二)]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563370</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563370</guid><author>agn7047</author><pubDate>Thu, 20 Dec 2018 20:32:00 +0800</pubDate><description><![CDATA[在我的上篇博文Python中的多线程编程，线程安全与锁(一)中，我们熟悉了多线程编程与线程安全相关重要概念，Threading.Lock实现互斥锁的简单示例，两种死锁（迭代死锁和互相等待死锁）情况及处理。今天我们将聚焦于Python的Threading模块总结和线程同步问题。
1. Threading模块总结
1.1 Threading模块概览
threading用于提供线程相关...]]></description><category></category></item><item><title><![CDATA[使用pdb模块调试Python]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563368</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563368</guid><author>agn7047</author><pubDate>Fri, 14 Dec 2018 20:21:00 +0800</pubDate><description><![CDATA[在Python中，我们需要debug时，有三种方式：

加log语句。最简单的方式是添加print()语句来输出我们想要获知的状态或者变量，好处是简单容易操作，坏处是debug完了之后，还需要将print语句注释掉；进阶的方法是使用logging模块写log语句，这样做的好处是：能把log语句分级，并且能够根据参数决定输出什么样层级的log，用这种方法可以让我们不用注释掉log语句。...]]></description><category></category></item><item><title><![CDATA[Python中的多线程编程，线程安全与锁(一)]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563366</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563366</guid><author>agn7047</author><pubDate>Wed, 28 Nov 2018 15:12:00 +0800</pubDate><description><![CDATA[1.多线程编程与线程安全相关重要概念
在我的上篇博文聊聊Python中的GIL中，我们熟悉了几个特别重要的概念：GIL，线程，进程，线程安全，原子操作。
以下是简单回顾，详细介绍请直接看聊聊Python中的GIL

GIL:Global Interpreter Lock，全局解释器锁。为了解决多线程之间数据完整性和状态同步的问题，设计为在任意时刻只有一个线程在解释器...]]></description><category></category></item><item><title><![CDATA[聊聊Python中的GIL]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563363</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563363</guid><author>agn7047</author><pubDate>Mon, 19 Nov 2018 18:50:00 +0800</pubDate><description><![CDATA[对于广大写Python的人来说，GIL(Global Interpreter Lock,全局解释器锁)肯定不陌生，但未必清楚GIL的历史和全貌是怎样的，今天我们就来梳理一下GIL。
1. 什么是GIL
GIL的全称是 Global Interpreter Lock，全局解释器锁。之所以叫这个名字，是因为Python的执行依赖于解释器。Python最初的设计理念在于，为了解决多线程之...]]></description><category></category></item><item><title><![CDATA[Python中的单元测试模块Unittest快速入门]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563360</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563360</guid><author>agn7047</author><pubDate>Wed, 14 Nov 2018 16:24:00 +0800</pubDate><description><![CDATA[前言
为什么需要单元测试？
如果没有单元测试，我们会遇到这种情况：已有的健康运行的代码在经过改动之后，我们无法得知改动之后是否引入了Bug。如果有单元测试的话，只要单元测试全部通过，我们就可以保证没有Bug被引入。因此，单元测试是保证软件工程质量的一个很重要的方面。
Python中的单元测试
Python最强大的地方在于，开发效率高，并且有丰富的Package，避免重复造轮子。那...]]></description><category></category></item><item><title><![CDATA[设计模式之策略模式的Python实现]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563367</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563367</guid><author>agn7047</author><pubDate>Thu, 25 Oct 2018 19:15:00 +0800</pubDate><description><![CDATA[1.策略模式解决的是什么问题
策略模式解决的应用场景是这样的：在业务场景中，需要用到多个算法，并且每个算法的参数是需要调整的。那么当不同的行为堆砌到同一个类中时，我们很难避免使用条件语句来选择合适的行为。我们需要解决的是把算法封装起来，达到算法的变化不会影响到使用算法的客户的效果。实际上就是把算法模块给完全独立出来，并且易于配置、修改和扩展，实现“开闭”原则。
通俗来讲就是针对一...]]></description><category></category></item><item><title><![CDATA[设计模式之单例模式与工厂模式的Python实现(二)]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563365</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563365</guid><author>agn7047</author><pubDate>Fri, 12 Oct 2018 17:30:00 +0800</pubDate><description><![CDATA[2.工厂模式
工厂模式是创建型设计模式的一种。核心的思想是，通过传递给类或函数某种产品的信息来创建产品并返回。当我们想得到产品a对象，只需把产品a的名字传递给工厂函数就能得到产品a对象。而核心思想的背后是为了遵循著名的“开闭原则”：对扩展开放，对修改封闭。当添加新功能时，对已经有的函数代码不需要修改，只需要添加新功能相关的代码即可。
举一个最简单的例子：假如我们要写一个计算器，实现...]]></description><category></category></item><item><title><![CDATA[设计模式之单例模式与工厂模式的Python实现(一)]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563450</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563450</guid><author>agn7047</author><pubDate>Thu, 20 Sep 2018 14:00:00 +0800</pubDate><description><![CDATA[1. 单例模式
单例模式（Singleton Pattern）是一种常用的软件设计模式，该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中，某个类只能出现一个实例时，单例对象就能派上用场。
比如，某个服务器程序的配置信息存放在一个文件中，客户端通过一个 AppConfig 的类来读取配置文件的信息。如果在程序运行期间，有很多地方都需要使用配置文件的内容，也就是说，很...]]></description><category></category></item><item><title><![CDATA[Python中的返回函数与闭包]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563447</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563447</guid><author>agn7047</author><pubDate>Tue, 11 Sep 2018 17:00:00 +0800</pubDate><description><![CDATA[返回函数，顾名思义，就是高阶函数可以把函数作为return值返回。与闭包的关系是：闭包需要以返回函数的形式实现。

一.返回函数
比如我们有一个求和函数：

&gt;&gt;&gt; def calc_sum(num_list):
    s = 0
    for i in num_list:
        s += i
    return s

&gt;...]]></description><category></category></item><item><title><![CDATA[Python的高阶函数小结]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563449</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563449</guid><author>agn7047</author><pubDate>Mon, 10 Sep 2018 16:56:00 +0800</pubDate><description><![CDATA[一.高阶函数定义
简而言之，Python的高阶函数就是指一个函数作为参数传递给另外一个函数的用法。
举一个最简单的高阶函数来说明：

&gt;&gt;&gt; def add(x,y,f):
    return f(x) + f(y)

&gt;&gt;&gt; add(1,-2,abs)
3

可能会有同学问，直接return abs(x) + abs(y)不就...]]></description><category></category></item><item><title><![CDATA[Python的生成器Generator小结]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563445</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563445</guid><author>agn7047</author><pubDate>Fri, 07 Sep 2018 15:48:00 +0800</pubDate><description><![CDATA[一.生成器的介绍
在介绍生成器（Generator）之前，我们首先需要熟悉列表生成式，列表生成式是Python内置的简单又强大的用来创建列表的生成式。
举个例子，
如果我们想生成[1*1,2*2,3*3,4*4,5*5,6*6,7*7,8*8,9*9]
比较笨的方法是

l = []
for i in range(1,10):
    l.append(i*i)

...]]></description><category></category></item><item><title><![CDATA[Vim插件YCM的安装]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563446</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563446</guid><author>agn7047</author><pubDate>Mon, 03 Sep 2018 17:25:00 +0800</pubDate><description><![CDATA[YouCompleteMe(YCM)是一款非常好用的Vim插件，但是很多人安装的时候会出问题（尤其是涉及到C和C++的补全），我安装的时候也遇到了问题，现在解决了，给大家参考：
Step1:通过Vundle安装YCM,具体参考我的上一篇博文
Step2:

cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-complet...]]></description><category></category></item><item><title><![CDATA[用Vundle管理Vim插件]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563451</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563451</guid><author>agn7047</author><pubDate>Mon, 03 Sep 2018 14:52:00 +0800</pubDate><description><![CDATA[作为程序员，一个好用的Vim，是极其重要的，而插件能够使原本功能羸弱的Vim变得像其他功能强大的IDE一样好用。然而下载、配置插件的过程比较繁琐，大家往往需要自己进行下载/配置等操作，如果还涉及到更新/删除插件，那就更麻烦了。
幸运的是我们有Vundle来管理Vim插件。Vundle本身就是个Vim插件，有了这个插件，我们只需要配置好~/.vimrc这个文件，就可以通过命令管理其他Vi...]]></description><category></category></item><item><title><![CDATA[声卡(Sound Card)基本概念]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563444</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563444</guid><author>agn7047</author><pubDate>Tue, 24 Jul 2018 10:06:00 +0800</pubDate><description><![CDATA[声卡 (Sound Card)是实现声音的模拟/数字信号相互转换、信号处理的一种硬件。
声卡的基本功能是把来自话筒、磁带、光盘的原始声音信号加以转换（模数转换或者数模转换），输出到耳机、扬声器、扩音机、录音机等声响设备，或通过音乐设备数字接口(MIDI)使声音设备发出声音。

重要概念
1.在先不考虑耳机/话筒中自带独立声卡的情况下，无论是电脑、手机，3.5mm耳机接口输出的...]]></description><category></category></item><item><title><![CDATA[Linux中Source的用法]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563442</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563442</guid><author>agn7047</author><pubDate>Wed, 04 Jul 2018 15:08:00 +0800</pubDate><description><![CDATA[source命令：source命令的功能：使Shell读入指定的Shell程序文件并依次执行文件中的所有语句source命令通常用于重新执行刚修改的初始化文件，使之立即生效，而不必注销并重新登录。用法：source filename 或 . filenamesource命令(从 C Shell 而来)是bash shell的内置命令;点命令(.)，就是个点符号(从Bourne Shell...]]></description><category></category></item><item><title><![CDATA[Kernel Space与User Space（转）]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563440</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563440</guid><author>agn7047</author><pubDate>Tue, 12 Jun 2018 15:38:00 +0800</pubDate><description><![CDATA[对于刚刚接触Linux的菜鸟来说，可能会不理解大家常说的Kernel Space和User Space是什么意思，我简单搜了一下，发现阮一峰写过一个比较简洁的介绍，贴下来给大家：
学习 Linux 时，经常可以看到两个词：User space（用户空间）和 Kernel space（内核空间）。
简单说，Kernel space 是 Linux 内核的运行空间，User space ...]]></description><category></category></item><item><title><![CDATA[[Python]Pandas简单入门（转）]]></title><link>https://blog.youkuaiyun.com/agn7047/article/details/101563390</link><guid>https://blog.youkuaiyun.com/agn7047/article/details/101563390</guid><author>agn7047</author><pubDate>Fri, 01 Jun 2018 14:20:00 +0800</pubDate><description><![CDATA[本篇文章转自https://colab.research.google.com/notebooks/mlcc/intro_to_pandas.ipynb?hl=zh-cn#scrollTo=zCOn8ftSyddH
是Google的Machine Learning课程中关于Pandas的入门教程，感觉讲的很简单很实用，直接搬运过来

学习目标：

大致了解...]]></description><category></category></item></channel></rss>