<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/snowflurry</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; snowflurry]]></copyright><item><title><![CDATA[重定向的输出不见了？]]></title><link>https://blog.youkuaiyun.com/snowflurry/article/details/53008956</link><guid>https://blog.youkuaiyun.com/snowflurry/article/details/53008956</guid><author>snowflurry</author><pubDate>Wed, 02 Nov 2016 16:09:15 +0800</pubDate><description><![CDATA[程序输出重定向到文件或者管道之后，输出异常？可能是被缓冲了！]]></description><category></category></item><item><title><![CDATA[Python装饰器真的只是语法糖吗？]]></title><link>https://blog.youkuaiyun.com/snowflurry/article/details/51275087</link><guid>https://blog.youkuaiyun.com/snowflurry/article/details/51275087</guid><author>snowflurry</author><pubDate>Thu, 28 Apr 2016 16:03:04 +0800</pubDate><description><![CDATA[经常用Python的人对装饰器（decorator）应该不陌生。装饰器本质上只是个语法糖，理解起来很容易。官方文档解释用@deco装饰foo与设置foo=deco(foo)等价，然而真的如此吗？本文给了一个反例。]]></description><category></category></item><item><title><![CDATA[Python正则表达式中元字符的转义处理]]></title><link>https://blog.youkuaiyun.com/snowflurry/article/details/51138435</link><guid>https://blog.youkuaiyun.com/snowflurry/article/details/51138435</guid><author>snowflurry</author><pubDate>Tue, 12 Apr 2016 23:27:27 +0800</pubDate><description><![CDATA[当你在Python代码中尝试生成正则表达式，一定会遇到这个问题。 
（正确答案请直接看最下面黑体字→_→）假设我们要将一段文本text中的某个关键词keyword替换为repl，因为某些原因不能使用str.replace而需要用到正则表达式，比如只替换keyword位于行首的情况，那可以用下面的代码：re.sub('^' + keyword, repl, text)多数时候它能正常工作：>>> te]]></description><category></category></item><item><title><![CDATA[Python多线程，生产者-消费者-终结者]]></title><link>https://blog.youkuaiyun.com/snowflurry/article/details/47335373</link><guid>https://blog.youkuaiyun.com/snowflurry/article/details/47335373</guid><author>snowflurry</author><pubDate>Fri, 07 Aug 2015 10:29:48 +0800</pubDate><description><![CDATA[Python多线程程序，实现了一个循环缓冲区，一个数据生产者线程和若干个数据消费者线程，主线程负责监测系统状态，在必要时通知所有线程退出。其中多线程用threading.Thread()类实现，通知机制用threading.Condition()类实现，循环缓冲区用collections.deque()类实现。]]></description><category></category></item><item><title><![CDATA[Linux下Arduino IDE无法选择串口的问题]]></title><link>https://blog.youkuaiyun.com/snowflurry/article/details/47031429</link><guid>https://blog.youkuaiyun.com/snowflurry/article/details/47031429</guid><author>snowflurry</author><pubDate>Thu, 23 Jul 2015 23:48:17 +0800</pubDate><description><![CDATA[最近在用树莓派和Arduino做项目，树莓派上装的是别人编译好的Raspbian系统，自己安装了Arduino（此处和后文说的Arduino都是指IDE而非硬件），结果发现没法选择串口，Tools菜单下面Serial Port一栏是灰色的，点不了。想到是权限问题，去ls了一下串口文件，发现文件名是ttyAMA0，所有者root，组别tty，权限是660：所以只要把平时用的用户加到tty组，理论上就有]]></description><category></category></item><item><title><![CDATA[视频编解码的步骤和主要技术]]></title><link>https://blog.youkuaiyun.com/snowflurry/article/details/46930833</link><guid>https://blog.youkuaiyun.com/snowflurry/article/details/46930833</guid><author>snowflurry</author><pubDate>Fri, 17 Jul 2015 17:56:56 +0800</pubDate><description><![CDATA[视频压缩过程一般分三个步骤：
时间维压缩 - 以参考帧的数据预测当前帧的数据，输出预测向量和残差
空间维压缩 - 将当前帧的残差作为图像进行压缩，又分为三步 
 2.1 图像变换 - 一般用DCT或小波，目的是使变换后的数据尽可能小和稀疏，最好大部分都是0 
 2.2 量化 - 这是整个过程中唯一有损的一步 
 2.3 排序编码 - 将上一步的输出按某种规律重新排序，让大小接近的数据尽可能在一起，然]]></description><category></category></item><item><title><![CDATA[xHCI驱动学习(2) 初始化]]></title><link>https://blog.youkuaiyun.com/snowflurry/article/details/46648795</link><guid>https://blog.youkuaiyun.com/snowflurry/article/details/46648795</guid><author>snowflurry</author><pubDate>Fri, 17 Jul 2015 17:36:22 +0800</pubDate><description><![CDATA[上一篇分析数据结构的时候沿着xhci_pci_probe函数的执行顺序走了一遍，再总结一下它的主要调用链：（括号里是函数代码所属的文件名）
(xhci-pci.c) xhci_pci_probe 
(hcd-pci.c) usb_hcd_pci_probe 
(hcd.c) usb_create_hcd 
(hcd.c) usb_create_shared_hcd
(hcd.c) usb_add_h]]></description><category></category></item><item><title><![CDATA[xHCI驱动学习(1) 核心数据结构]]></title><link>https://blog.youkuaiyun.com/snowflurry/article/details/46635067</link><guid>https://blog.youkuaiyun.com/snowflurry/article/details/46635067</guid><author>snowflurry</author><pubDate>Thu, 25 Jun 2015 12:47:35 +0800</pubDate><description><![CDATA[虽然Linux内核拥有C语言构建的身体，但它骨子里散发的是面向对象的气质，这一个个的对象就是struct。面对一个内核模块的时候，首先要找出关键的struct和它们之间的关系，才能摸清代码的骨骼脉络。今天来理清USB xHCI相关的数据结构类型usb_hcd、xhci_hcd、hc_driver和全局变量xhci_pci_driver、xhci_hc_driver、xhci_pci_hc_driver之间的关系。]]></description><category></category></item><item><title><![CDATA[xHCI驱动学习(0) 模块启动]]></title><link>https://blog.youkuaiyun.com/snowflurry/article/details/46623429</link><guid>https://blog.youkuaiyun.com/snowflurry/article/details/46623429</guid><author>snowflurry</author><pubDate>Wed, 24 Jun 2015 16:20:01 +0800</pubDate><description><![CDATA[最近在学习Linux内核中USB相关内容的实现，读完了fudan_abc大神师兄的《USB那些事儿之我是USB Core》，感觉荡气回肠，因为大神不仅教给我们代码的奥义，也教给我们读代码的奥义。因此，接下来尝试用学到的“鱼”和“渔”，从USB Core“启下”，自己学习xHCI驱动的代码。


xHCI是USB 3.x的host controller规范，首先进入drivers/usb/ho]]></description><category></category></item></channel></rss>