lazy ideas in programming(编程中的惰性思想)
lazy ideas:
singleton
1 class eager_meta(type): 2 def __init__(clz, name, bases, dic): 3 super(eager_meta, clz).__init__(name, bases, dic) 4 clz._instance = clz() 5 6 class singleton_eager(object): 7 __metaclass__ = eager_meta 8 9 @classmethod 10 def instance(clz): 11 return clz._instance 12 13 14 class singleton_lazy(object): 15 __instance = None 16 @classmethod 17 def instance(clz): 18 if clz.__instance is None: 19 clz.__instance = singleton_lazy() 20 return clz.__instance
PS:在python中,这样使用单例模式不是很pythonic,更好的办法可见在stackoverflow上的这篇文章《creating-a-singleton-in-python》。另外在多线程环境下,要实现线程安全的单例还是很复杂的,具体讨论可参见iteye上的分析。
proxy:
- remote proxy(远程代理),如RMI, RPC
- virtual proxy(虚代理),根据需要创建开销很大的对象,如文档中图片的加载
- (保护代理):控制对原始对象的访问, 如智能指针
Short-circuit evaluation:
1 ret = any(self.calc_and_ret(e) for e in elements) 2 def self.calc_and_ret(self, e): 3 # do a lot of calc here which effect self 4 return True(or False)
generator:
1 for x in [i*i for i in xrange(10000)] 2 # do sth with i 3 4 for x in (i*i for i in xrange(10000)] 5 # do sth with i
函数式编程语言中的应用:
cache:
1 class Fruit: 2 def __init__(self, item): 3 self.item = item 4 5 class Fruits: 6 def __init__(self): 7 self.items = {} 8 9 def get_fruit(self, item): 10 if item not in self.items: 11 self.items[item] = Fruit(item) 12 13 return self.items[item] 14 15 if __name__ == '__main__': 16 fruits = Fruits() 17 print(fruits.get_fruit('Apple')) 18 print(fruits.get_fruit('Lime'))
Dirty Flag:
CopyOnWrite:
web开发中的惰性加载与惰性预加载:
总结:
lazy ideas in programming(编程中的惰性思想)相关推荐
- python惰性求值的特点_C#教程之C#函数式编程中的惰性求值详解
https://www.xin3721.com/eschool/python.html 惰性求值 在开始介绍今天要讲的知识之前,我们想要理解严格求值策略和非严格求值策略之间的区别,这样我们才能够深有体 ...
- 函数式编程中的副作用概念
前言 为了清楚起见,请记住,副作用不是必需的坏事,有时副作用是有用的(尤其是在函数式编程范式之外). 今天聊一聊函数式编程中的隔离思想,它所想隔离的就是"副作用" 我们先从其他角度 ...
- 2010年《斯坦福大学开放课程: 编程方法》(Open Stanford Course : Programming Methodology)[中英双语字幕][RMVB]更新中
<斯坦福大学开放课程: 编程方法>(Open Stanford Course : Programming Methodology)[中英双语字幕][RMVB] http://www.ver ...
- C#中面向对象编程中的函数式编程
目录 介绍 面向对象编程中仿真的函数式编程技术 粒度不匹配 面向对象的函数式编程构造 相互关系函数式编程/面向对象程序设计 C#中的函数式编程集成 函数级别的代码抽象 操作组合 函数部分应用和局部套用 ...
- c语言面向对象编程中的类_C ++中的面向对象编程
c语言面向对象编程中的类 Object oriented programming, OOP for short, aims to implement real world entities like ...
- Linux下高性能网络编程中的几个TCP/IP选项
Linux下高性能网络编程中的几个TCP/IP选项 转自:http://blog.chinaunix.net/u/12592/showart.php?id=2064847 最近在新的平台上测试程序,以 ...
- 编程中python怎么读-编程语言如何在Python中读写文件
从文件读取和写入文件是任何编程语言的常见需求.任何文件在读写之前都需要打开.大多数编程语言都使用open()方法来打开文件,以便使用文件对象(file object)读写.可以使用不同类型的文件访问模 ...
- Linux 编程中的API函数和系统调用的关系【转】
转自:http://blog.chinaunix.net/uid-25968088-id-3426027.html 原文地址:Linux 编程中的API函数和系统调用的关系 作者:up哥小号 API: ...
- 并行编程中的“锁”难题
在并行程序中,锁的使用会主要会引发两类难题:一类是诸如死锁.活锁等引起的多线程Bug:另一类是由锁竞争引起的性能瓶颈.本文将介绍并行编程中因为锁引发的这两类难题及其解决方案. 1. 用锁来防止数据竞跑 ...
最新文章
- 高清视频实时对讲SDK源码
- 业务工作流平台设计(七)
- chgrp 简明笔记
- centos中bash占用cpu_Docker 多种维度限制容器可用的 CPU
- 如何给腾讯云域名申请免费的SSL证书
- omnicppcomplete php,VIM 常用法 (三)
- linux 创建ll,两台linux建立GRE隧道
- 【SPFA】重建道路(jzoj 1212)
- SonarQube 8.3.x中的Maven项目的测试覆盖率报告
- php webp decode.h,HCTF两道web题目
- 矩阵快速幂的学习(系统的学习)
- java jdbc 表存在_JDBC / Java – 如何检查数据库中是否存在表和列?
- Linux下硬盘分区的最佳方案
- linux文件权限的设置命令
- 使用AVR-GCC编程Arduino
- debian配置JDK环境变量
- #芯片# R8025(RX-8025T)
- Windows 10 创建 删除 合并磁盘分区
- 中英文标点符号切换的组合键_电脑键盘常用组合键(快捷键)之——Ctrl键组合...
- 8行代码实现发微信撩妹(汉语哦)
热门文章
- java1.6 linux_linux java1.6 安装
- Pathlib获取当前文件绝对路径
- c调用其他类的方法_Java 的 Native 方法——今天又进步了
- xgboost算法 c语言,xgboost与sklearn的接口
- 在c++使用文件流(初学者必看)
- ajax firefox,Jquery ajax不在firefox中工作
- linux系统程序PPT,Linux 系统应用与程序设计 问题.ppt
- 网页设计简约_简约设计指南
- 【业务知识】档案数字化加工处理过程
- 笔记-信息化与系统集成技术-供应链管理