<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[量变到质变]]></title><description><![CDATA[python学习记录]]></description><link>https://blog.youkuaiyun.com/ppabcde</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ppabcde]]></copyright><item><title><![CDATA[转发：如何查看 EntityValidationErrors 详细信息的解决方法]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/104376999</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/104376999</guid><author>ppabcde</author><pubDate>Tue, 18 Feb 2020 16:10:31 +0800</pubDate><description><![CDATA[使用EF框架，封装很好，但是今天就在提交数据的时候，发现了 EntityValidationErrors，却不知道很多个字段到底是哪个错了。
找到以下链接：
https://www.cnblogs.com/aaronguo/archive/2012/03/29/2423353.html
提示用以下方式提出异常信息
try { }
catch (System.Data.Entity.Validati...]]></description><category></category></item><item><title><![CDATA[《C#程序设计及应用教程》第三版 （马骏主编 ）的一个bug]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/83684454</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/83684454</guid><author>ppabcde</author><pubDate>Sat, 03 Nov 2018 10:00:05 +0800</pubDate><description><![CDATA[《C#程序设计及应用教程》第三版 （马骏主编 ）的一个bug
时钟动画的一个BUG
原著283页，有如下代码：
 private void ClearCanvas()
        {
            if (acList != null)
            {
                foreach (var ac in acList)
                {...]]></description><category></category></item><item><title><![CDATA[pyqt5自定义拖放功能的实现解说]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/79266962</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/79266962</guid><author>ppabcde</author><pubDate>Tue, 06 Feb 2018 09:18:06 +0800</pubDate><description><![CDATA[样例仍然来自《Rapid GUI Programming with Python and Qt》一书。 
中文版240页对拖放的支持有一段很重要的说明，但是有点语焉不详，所以结合代码部分重新给自己解释一下。 
书中说：


  setAcceptDrops()方法从QWidget继承而来，不过setDragEnabled()则不是，因此在默认情况下，只有部分窗口部件中它才是可用的。如果打算创建一个]]></description><category></category></item><item><title><![CDATA[PyQt5 QSettings的几个坑]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/79248813</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/79248813</guid><author>ppabcde</author><pubDate>Sat, 03 Feb 2018 19:05:27 +0800</pubDate><description><![CDATA[关于PyQt5中QSettings的一个坑

为什么这么多坑，其中一个原因是文档不全，资料最全的是qt4，但是按4来学习，则有跳坑无数。 
其中几个，在用python3+PyQt5改写Python Qt GUI快速编程的第6章实例主窗口一文中已经写了很多。 
其实这一章我也是走过的，但是对settings没有测试。 
但是今天一个问题困了一天的时间。 
其中保存是这样的：]]></description><category></category></item><item><title><![CDATA[关于pyuic的使用方法]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/79244577</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/79244577</guid><author>ppabcde</author><pubDate>Sat, 03 Feb 2018 08:22:56 +0800</pubDate><description><![CDATA[关于pyuic5,有时提供的是pyuic5.exe， 有时是pyuic5.bat，用法都一样。
重要的参数有2个，一个是o,一个是x（嗯，确实是有点那个）
pyuic $FileName$ -o ui_$FileNameWithoutExtension$.py -x
意思是，将 file.ui这个文件，生成一个名字为ui_file.py的文件，这个文件可直接执行（-x)的意思。
那么生成的]]></description><category></category></item><item><title><![CDATA[chrome被hao123主页绑架的解决]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/60865463</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/60865463</guid><author>ppabcde</author><pubDate>Wed, 08 Mar 2017 08:08:43 +0800</pubDate><description><![CDATA[有些东西，本身也许不讨厌，但是你强迫我，那就非解决不可。


比如，hao123，用什么东西后台修改chrome的快捷方式，将hao123的主页作为启动参数来绑定，这样修改chrome本身的设定无效。
查到百度的各种方案都无效，问了下谷歌，只扫到一个答案，非常简洁，用 AdwCleaner可除。
果然，附带清了很多广告。


附上我的清除记录……等下，把QQ也整个删除了？QQ，你到]]></description><category></category></item><item><title><![CDATA[python数据结构与算法 39 树的遍历]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/29206767</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/29206767</guid><author>ppabcde</author><pubDate>Sat, 07 Jun 2014 17:18:05 +0800</pubDate><description><![CDATA[树的遍历

在学习完成树的基本结构以后，我们开始研究一些树的应用模式。访问树的全部节点，一般有三种模式，这些模式的不同之处，仅在于访问节点的顺序不同。我们把这种对节点的访问称为“遍历”，这三种遍历模式叫做前序、中序和后序。下面我们对遍历模式作更仔细的定义，同时研究使用这延续模式的例子。
前序遍历]]></description><category></category></item><item><title><![CDATA[python数据结构与算法 38 分析树]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/25628847</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/25628847</guid><author>ppabcde</author><pubDate>Mon, 12 May 2014 16:11:37 +0800</pubDate><description><![CDATA[分析树

树的结构完成以后，该是时候看看它能做点什么实事儿了。这一节里，我们研究一下分析树。分析树能够用于真实世界的结构表示，象语法或数学表达式一类的。



图1
一个简单语句的分析树



图1所示是一个简单语句的层级结构，把语句表示为树结构可以让我们用子树来分析句子的组成部分。



图2 ((7+3)∗(5−2))的分析树
我们也可以把数学表达式如((7+3]]></description><category></category></item><item><title><![CDATA[python数据结构与算法 37 树的实现]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/25203851</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/25203851</guid><author>ppabcde</author><pubDate>Wed, 07 May 2014 13:13:49 +0800</pubDate><description><![CDATA[树的实现

记住上一节树的定义，在定义的基础上，我们用以下的函数创建并操作二叉树：

BinaryTree() 创建一个二叉树实例 getLeftChild() 返回节点的左孩子 getRightChild() 返回节点的右孩子 setRootVal(val) 把val变量值赋给当前节点 getRootVal() 返回当前节点对象。 insertLeft(val) 创建一个新二叉树作为当前]]></description><category></category></item><item><title><![CDATA[python数据结构与算法 36 树的基本概念]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/25135231</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/25135231</guid><author>ppabcde</author><pubDate>Tue, 06 May 2014 16:01:41 +0800</pubDate><description><![CDATA[树

学习目标


理解什么是树及使用方法 学会使用树实现映射 用列表实现树 用类和引用实现树 用递归实现树 用堆实现优先队列
树的例子

前面我们学习过栈和队列这类线性数据结构，并且体验过递归，现在我们学习另一种通用数据结构，叫做树。树在计算机科学中应用广泛，象操作系统、图形学、数据库系统、网络等都要用到树。树和他们在自然界中的表哥——植物树——非常相似，树也有根，有分枝，有叶子]]></description><category></category></item><item><title><![CDATA[python数据结构与算法 35 快速排序]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/24933633</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/24933633</guid><author>ppabcde</author><pubDate>Sat, 03 May 2014 20:37:52 +0800</pubDate><description><![CDATA[快速排序

快速排序也使用了分而治之的策略来提高性能，而且不需要额外的内存，但是这么做的代价就是，列表不是对半切分的，因而，性能上就有所下降。
快速排序选择一个数值，一般称为“轴点”，虽然有很多选取轴点的方法，我们还是简单地把列表中第一个元素做为轴点了。轴点的作用是帮助把列表分为两个部分。列表完成后，轴点所在的位置叫做“切分点”，从这一点上把列表分成两部分供后续调用。
图12所示，54将作]]></description><category></category></item><item><title><![CDATA[python数据结构与算法 34 归并排序]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/24787567</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/24787567</guid><author>ppabcde</author><pubDate>Wed, 30 Apr 2014 14:12:13 +0800</pubDate><description><![CDATA[归并排序

在提高排序算法性能的方法中，有一类叫做分而治之。我们先研究其中第一种叫做归并排序。归并排序使用递归的方法，不停地把列表一分为二。如果列表是空或只有一个元素，那么就是排好序的（递归基点），如果列表有超过1个的元素，那么切分列表并对两个子列表递归使用归并排序。一旦这两个列表排序完成，称为“归并”的基本操作开始执行。归并是把两个有序列表合并成一个新的有序列表的过程。图10是我们熟悉的列表]]></description><category></category></item><item><title><![CDATA[python数据结构与算法 33 希尔排序]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/24692887</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/24692887</guid><author>ppabcde</author><pubDate>Tue, 29 Apr 2014 09:38:41 +0800</pubDate><description><![CDATA[希尔排序

希尔排序，有时称为递减增量排序，是在插入排序基础上，把列表拆成几个较小的子表，然后对每个子表使用插入排序的方法。选出子表的方法是希尔排序的关键，它并不是把列表的中相近的元素取出来组成子表，而是使用了一个增量值I,有时也叫做“间隙”，然后每隔一个间隙选中一个元素来组成子表。
这可以从图6中看出来，列表中有9个元素，如果我们使用增量3，就有3个子表，每个子表单独做插入排序。完成之后的]]></description><category></category></item><item><title><![CDATA[python数据结构与算法 32 插入排序]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/24347473</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/24347473</guid><author>ppabcde</author><pubDate>Wed, 23 Apr 2014 09:57:30 +0800</pubDate><description><![CDATA[插入排序

插入排序虽然仍然是O(n2)，但工作模式就有稍微不同。它总是在列表的低端保持一个有序的子列表，后面的元素被逐个“插入”到前面的有序子表，这样有序的子表就逐渐变大。图4是插入排序的过程，阴影部分是排好序的子列表。



开始的时候我们假设一个只有一个元素（在0位上）的列表而且是有序的，每次遍历的时候，从1到n-1的每个元素，与有序的子列表进行比较。当回顾已经排序的子表时候，比]]></description><category></category></item><item><title><![CDATA[python数据结构与算法 29-3 用哈希表实现映射]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/24307793</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/24307793</guid><author>ppabcde</author><pubDate>Tue, 22 Apr 2014 14:41:02 +0800</pubDate><description><![CDATA[实现map抽象数据类型

字曲是python里最有用的数据集合之一，回想一下，字典是一对键值-数据的组合，键值是用来查找相应的数据，我们把这种思想称为“映射”
映射的抽象数据类型定义如下，这是一个无序的键-值对集合，键值总是唯一的以便建立与数据的对应关系。映射的操作方法如下：
·            Map() 创建一个新的空的映射，返回一个空集合。
·            put(]]></description><category></category></item><item><title><![CDATA[python数据结构与算法 29-2 冲突解决]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/24303557</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/24303557</guid><author>ppabcde</author><pubDate>Tue, 22 Apr 2014 13:27:19 +0800</pubDate><description><![CDATA[冲突解决

现在返回到前面提到的冲突问题。当两个元素的哈希值指向同一个槽位，就应该有个系统的方法把第二个元素放进表中。这个过程叫做“冲突解决”。我们前面说过的，如果哈希函数是完美的，不会发生冲突。但完美无缺的事很少，所以冲突解决就成为哈希算法中的重要部分。
一种方法是为引起冲突的元素找到另一个位置。简单的做法就是从原来的位置开始，顺序向前查找，直到遇到一个空闲的槽位为止。注意的是我们可能需要]]></description><category></category></item><item><title><![CDATA[python数据结构与算法 29-1 哈希查找]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/24043993</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/24043993</guid><author>ppabcde</author><pubDate>Tue, 22 Apr 2014 08:20:16 +0800</pubDate><description><![CDATA[前面的章节中，我们利用数据集中元素的相对位置信息来提高查找算法的性能。比如知道列表是有序的，可以使用二分查找。本节我们走得更远一些，创建一个数据结构，使得查找性能提高到O(1)，称为哈希查找。]]></description><category></category></item><item><title><![CDATA[python数据结构与算法 31 选择排序]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/24137757</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/24137757</guid><author>ppabcde</author><pubDate>Sat, 19 Apr 2014 21:24:25 +0800</pubDate><description><![CDATA[选择排序

选择排序是冒泡排序的改进，一次遍历只做一次交换。它在一次遍历中找到最大的元素，结束时放到合适的位置，正如冒泡排序一样，一次遍历后最大的元素就位。第二次遍历后，第二大的元素就位，这样持续进行，需要n-1个遍历来为n个元素排序。
图3显示了一整个的排序过程，一次遍历，剩余最大的元素被选中并正确就位，所以第一次选择了93，第二次选择77，第三次55，等等。后面是代码.



d]]></description><category></category></item><item><title><![CDATA[python数据结构与算法30 冒泡排序]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/24044035</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/24044035</guid><author>ppabcde</author><pubDate>Fri, 18 Apr 2014 19:54:10 +0800</pubDate><description><![CDATA[排序

排序是将集合中的元素以某种规律放置的过程。例如，一个单词的列表，可以按字母顺序排列或按长度排列；一个城市的列表可以按人口，面积，邮政编码来排序。对有序列表的好处，前面在研究二分查找等案例时领略过的。
有许多许多的排序算法被开发和研究，这也说明排序在计算机科学中的重要性。大数据量的排序要占用海量的计算资源，象查找一样，排序的算法效率与元素的数量有关，对小的数据集来说，复杂的排序方法不值]]></description><category></category></item><item><title><![CDATA[python数据结构与算法28 二分查找]]></title><link>https://blog.youkuaiyun.com/ppabcde/article/details/23938723</link><guid>https://blog.youkuaiyun.com/ppabcde/article/details/23938723</guid><author>ppabcde</author><pubDate>Thu, 17 Apr 2014 15:52:09 +0800</pubDate><description><![CDATA[二分查找

在有序表的查找算法中，比较的过程用好了，可以从有序的特性中获得更多好处。在顺序查找中，与第一个元素比较之后，后面还有n-1个要比较。与顺序查找不同的是，二分查找从中间元素开始比对，如果中间元素就是要找的，完成；如果不是，就要考虑到有序的特性，如果要找的数据比中间项要大，那么列表的前半部分可以忽略，如果这个数据确实在列表里，那也一定在后半部分。
在后半部分继续这个过程，从中间元素开]]></description><category></category></item></channel></rss>