- 博客(14)
- 收藏
- 关注
原创 模式匹配与访问者模式
访问者模式最近学习Scala的模式匹配,看了一些资料就看到了原来访问者模式和模式匹配有很密切的关系,所以打算先看看什么是访问者模式。我想很多人可能和我一样写了几年代码但是却从来没有使用过访问者模式,或者都没有听说过这个设计模式,不过没有关系,因为它真的很少会使用到。我们先看一下访问者模式的定义: 访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的
2016-06-07 22:15:19 507
原创 Git背后的object
Git是一个版本库,它用来维护与管理项目的修订版本和历史信息。有时候我会觉得Git像是一个时光机,它能带我穿越时空回到过去,并且改写历史,但Git的功能又不仅仅如此,它可以让你在多个空间来回穿梭,甚至可以合并两个空间。我一直觉得学习一个新的事物,首先要学习它的基础和思想,这样自己才不至于会迷失。所以在我们能穿越时空之前,有些基础但却非常东西是需要学习的,要不然就会出现像至尊宝一样的状况,拿着月光宝盒
2016-01-21 20:05:01 5844 1
转载 值得阅读的文章记录
(1)深入理解JAVA内存模型系列文章(作者:程晓明): http://www.infoq.com/cn/author/%E7%A8%8B%E6%99%93%E6%98%8E
2014-11-14 16:44:31 485
原创 Python单例模式和Borg惯用法及相关问题
一、单例模式 如果你想保证某个类从始至终最多只能有一个实例,那么单例模式可能会是你首先想到的,使用__new__静态方法可以很简单的解决:class Singleton(object): def __new__(cls,*args,**kwargs): if '_inst' not in vars(cls): cls....
2014-02-26 20:47:20 317
原创 Python多线程 VS JAVA多线程
最近在学习Python,在网上遇到一哥们问一个关于用Python多线程的问题。具体就是读取一个文件中的IP信息,然利用百度地图open api获取IP所在地的经纬度,最后再将取回的结果分类为“请求成功”和“请求失败”分别存入两个文件中。由于自己也在学,所以也就拿来做了做,并分别用Python3和Java实现。 稍稍分析了一下需求能看的出来里面性能瓶颈有两个: 1...
2014-02-19 20:58:48 364
原创 Centos 中 vim 中文乱码问题
我从windows系统里把一个UTF-8的文件传到centos里,用vim打开却发现中文全部都是乱码,随即在网上查了原因,找到解决办法。以下是几点要注意的要点:<1> 确认文件的编码file是检测文件类型的命令,用它检测文件类型OK--文件UTF-8编码。 <2> 确认ssh终端的编码如果你使用的是SecureCRT,也要注意要把...
2014-02-17 20:57:57 710
原创 vim多行注释/删除注释
按键操作:注释:ctrl+v 进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符,比如"//",再按Esc,就会全部注释了。删除:先按v,进入visual模式,横向选中列的个数(如"/ /"注释符号,需要选中两列),再按Esc,再按ctrl+v 进入列编辑模式,向下或向上移动光标,选中注释部分,然后按d, 就会删除注释符号。使用替换命令::%s/^/...
2014-02-14 16:58:20 84
原创 python heapq
二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性: 1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。 2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆。下图展示一个最小堆: 由...
2014-01-22 10:04:00 111
原创 Python 类型和对象
Python 类型和对象原址:http://wiki.woodpecker.org.cn/moin/PyTypesAndObjects#A.2Bj9lOm2cJTsBOSGEPTkk- Shalabh ChaturvediCopyright © 2005-2009 Shalabh ChaturvediAll Rights Reserved.(小明同学译 wjm251 A...
2013-12-30 20:19:51 138
原创 五分钟理解元类(Metaclasses)
五分钟理解元类(Metaclasses)真的,它并非巫术。原文地址:http://blog.csdn.net/gzlaiyonghao/article/details/3048947 “元类的魔幻变化比 99% 的用户所担心的更多,当你搞不懂是否真的需要用它的时候,就是不需要。”—Tim Peters本文源于在 PyCon UK 2008 上的一个快速演讲。元类...
2013-12-28 10:27:14 113
原创 Python命名空间的本质
Python的命名空间是Python程序猿必须了解的内容,对Python命名空间的学习,将使我们在本质上掌握一些Python中的琐碎的规则。接下来我将分四部分揭示Python命名空间的本质:一、命名空间的定义;二、命名空间的查找顺序;三、命名空间的生命周期;四、通过locals()和globals() BIF访问命名空间重点是第四部分,我们将在此部分观察命名空间的内容。一、命名空间...
2013-12-27 15:28:55 96
原创 字符串匹配的KMP算法
字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。这种算法不太容易理解,网上有很多解释,但读起来都...
2013-12-02 11:19:40 78
原创 Python中zip()函数用法举例
定义:zip([iterable, ...])zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压),看下面的例子就明白了:>>> a ...
2013-11-26 18:39:16 125
原创 hadoop shuffle机制中针对中间数据的排序过程
如果对Hadoop的shuffle机制有所了解的人都知道,map所产生的中间数据在送给reduce进行处理之前是要经过排序的。具体过程实际上是快速排序,堆排序和归并排序的完美结合。 首先,当map函数处理完输入数据之后,会将中间数据存在本机的一个或者几个文件当中,并且针对这些文件内部的记录进行一次快速排序,这里的排序是升序排序。在map任务将所有的中...
2013-11-03 23:24:11 202
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人