《设计模式之禅》之享元模式

一、享元模式的定义

享元模式是池技术的重要实现方式,其定义如下:
使用共享对象可有效地支持大量的细粒度的对象。

享元模式的定义为我们提出了两个要求:细粒度的对象和共享对象。我们知道分配太多的对象到应用程序中将有损程序的性能,同时还容易造成内存溢出,那怎么避免呢?就是享元模式提到的共享技术。

要求细粒度对象,那么不可避免地使得对象数量多且性质相近,那我们就将这些对象的信息分为两个部分:内部状态和外部状态。

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

错误背景:
使用Python2.7写一个简单爬虫报的错。

错误详细信息如下:

1
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

错误原因:
1.python默认使用ASCII处理字符流。

2.Unicode编码与ASCII编码的不兼容,Python脚本文件是由utf-8编码的。

解决方法(在当前python文件最上面加上如下代码):

1
2
3
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

《设计模式之禅》之解释器模式

一、解释器模式的定义

解释器模式是一种按照指定规定语法进行解析的方案,在现在项目中使用较少,其定义如下:
给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。

《设计模式之禅》之备忘录模式

一、备忘录模式的定义

备忘录模式提供了一种弥补真实世界缺陷的方法,让”后悔药”在程序的世界中真实可行,其定义如下:
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

user.name has multiple values

详细错误信息如下:

1
2
3
warning: user.email has multiple values
error: cannot overwrite multiple values with a single value
Use a regexp, --add or --replace-all to change user.email.

错误原因:
通过git config –list命令 发现有多个user.name