Singleton模式

一、在GOF著作中对Singleton模式的实现方式如下:

/*解一*/   
// Header file Singleton.h
class Singleton   {   public:    static Singleton *Instance(){       //1    if( !m_pInstatnce) //2
m_pInstance = new Singleton;//3    return m_pInstance; //4    }   
void DoSomething();private:    static Singleton *m_pInstatnce=NULL; //5   private:    Singleton(); //6    Singleton(const Singleton&); //7    Singleton& operator=(const Singleton&); //8    ~Singleton();  //9   }     

Continue reading Singleton模式 - 全文阅读

python的memcache和json模块

最近时间比较多,想在以后的项目中应用python。今天做了一下测试。一个小工具的编写。工具的目的根据输入的key,在memcache中查找相应的value。并且对value做一些分析。Value是json格式。

首先下载python-memcached-1.40.tar.gz和python-cjson-1.0.5.tar.gz。然后安装。

安装方法很简单,也很标准。Tar xzf  *.tar.gz  然后进入解压后的目录。最后Python setup.py install。这时memcache,json的python都已经可以用了。可在python命令行下测试import memcache, import cjson。如果一切正常说明安装成功。

Continue reading python的memcache和json模块 - 全文阅读

Django实现大数据量分页查询

一开始是使用如下的代码:
    serverinfolist = ServerLog.objects.all()[0:1]
    paginator = Paginator(serverinfolist, PER_PAGE) # Show 25 contacts per page
    try:
        page = int(request.GET.get(’page’, ‘1′))
    except ValueError:
        page = 1
    try:
        contacts = paginator.page(page)        #取到具体的每一页的内容及属性
    except (EmptyPage, InvalidPage):
        contacts = paginator.page(paginator.num_pages)
       
    return render_to_response(’serverlinux/server_infos.html’, {”listobjects”: contacts,”flag”:True})

Continue reading Django实现大数据量分页查询 - 全文阅读

ORM编程思想

1、何谓“持久化”

持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。
(在JAVA里面如果想要实现一个对象的持久化需要实现一个接口!)
2、何谓“持久层”

持久层(Persistence Layer),即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联。

(使用者与数据实体这两个概念应当要如何去理解呢?
使用者:调用数据部分。一般是控制器层
数据实体:一般是存储到了关系数据库!

何谓“对象数据映射(ORM)”

ORM-Object/Relational Mapper,即“对象-关系型数据映射组件”。对于O/R,即 Object(对象)和 Relational(关系型数据),表示必须同时使用面向对象和关系型数据进行开发。

(编程:熟练掌握面向对象思想即面向对象 O
 数据库:掌握关系型数据 两者结合就是实现 对象-关系 的映射!)

Continue reading ORM编程思想 - 全文阅读

python常用的时间方法

我们先导入必须用到的一个module
>>> import time
设置一个时间的格式,下面会用到
>>>ISOTIMEFORMAT=’%Y-%m-%d %X’
看一下当前的时间,和其他很多语言相似这是从epoch(1970 年 1 月 1 日 00:00:00)开始到当前的秒数。
>>> time.time()
1180759620.859
上面的看不懂,换个格式来看看
>>> time.localtime()
(2007, 6, 2, 12, 47, 7, 5, 153, 0)
localtime返回tuple格式的时间,有一个和它类似的函数叫gmtime(),2个函数的差别是时区,gmtime()返回的是0时区的值,localtime返回的是当前时区的值。
>>> time.strftime( ISOTIMEFORMAT, time.localtime() )
‘2007-06-02 12:54:29′
用上我们的时间格式定义了,使用strftime对时间做一个转换,如果取现在的时间,time.localtime() 可以不用。

>>> time.strftime( ISOTIMEFORMAT, time.localtime( time.time() ) )
‘2007-06-02 12:54:31′
>>> time.strftime( ISOTIMEFORMAT, time.gmtime( time.time() ) )
‘2007-06-02 04:55:02′
上面展示了gmtime和localtime的区别。
查看时区用
>>> time.timezone
-28800
上面的值是一个秒值,是当前时区和0时区相差的描述,-28800=-8*3600,即为东八区。

帖几个简单的函数

def ISOString2Time( s ):
    ”’
    convert a ISO format time to second
    from:2006-04-12 16:46:40 to:23123123
    把一个时间转化为秒
    ”’
    return time.strptime( s, ISOTIMEFORMAT )
def Time2ISOString( s ):
    ”’
    convert second to a ISO format time
    from: 23123123 to: 2006-04-12 16:46:40
    把给定的秒转化为定义的格式
    ”’
    return time.strftime( ISOTIMEFORMAT, time.localtime( float( s ) ) )
def dateplustime( d, t ):
    ”’
    d=2006-04-12 16:46:40
    t=2小时
   return  2006-04-12 18:46:40
   计算一个日期相差多少秒的日期,time2sec是另外一个函数,可以处理,3天,13分钟,10小时等字符串,回头再来写这个,需要结合正则表达式。
    ”’
    return Time2ISOString( time.mktime( ISOString2Time( d ) )+time2sec( t ) )
def dateMinDate( d1, d2 ):
    ”’
    minus to iso format date,return seconds
    计算2个时间相差多少秒
    ”’
    d1=ISOString2Time( d1 )
    d2=ISOString2Time( d2 )
    return time.mktime( d1 )-time.mktime( d2 )

Django at a glance–Django初窥

由于Django发展于快节奏的newsroom环境中,它被设计用来使通常的web开发更加快捷简单。以下是一个非正式的介绍:使用Django来写一个数据库驱动(database-driven)的web app。
本文意在给你足够的技术细节来懂得Django是如何工作的,而不是作为一个tutorial或reference–这些东西我们都有。当你准备开始一个项目时,你可以start with the tutorial或者dive right into more detailed documentation.
Design your model虽然可以使用Django without a database, Django有一个对象关系映射器(object-relational mapper),通过它你得以在Python代码中描述你的数据库模型(database layout)这种数据-模型机制(data-model syntax)为表示你的数据模型提供了众多的方式—-so far, 它正用来解决会耗时两年(two years’ worth)的数据库模式(database-schema)问题。

Continue reading Django at a glance–Django初窥 - 全文阅读

Python线程编程的两种方式

Python中如果要使用线程的话,python的lib中提供了两种方式。一种是函数式,一种是用类来包装的线程对象。举两个简单的例子希望起到抛砖引
玉的作用,关于多线程编程的其他知识例如互斥、信号量、临界区等请参考python的文档及相关资料。

1、调用thread模块中的start_new_thread()函数来产生新的线程,请看代码:

###        thread_example.py
import time
import thread
def timer(no,interval):                       #自己写的线程函数
        while True:
                print ‘Thread :(%d) Time:%s’%(no,time.ctime())
                time.sleep(interval)
def test():
        thread.start_new_thread(timer,(1,1))  #使用thread.start_new_thread()来产生2个新的线程
        thread.start_new_thread(timer,(2,3))
if __name__==’__main__’:
        test()

这个是
thread.start_new_thread(function,args[,kwargs])
函数原型,其中function参数是你将要调用的线程函数;args是讲传递给你的线程函数的参数,他必须是个tuple类型;而kwargs是可选的参数。
线程的结束一般依靠线程函数的自然结束;也可以在线程函数中调用thread.exit(),他抛出SystemExit exception,达到退出线程的目的。

2、通过调用threading模块继承threading.Thread类来包装一个线程对象。请看代码

### threading_example.py
import threading
import time
class timer(threading.Thread):             #我的timer类继承自threading.Thread类
        def __init__(self,no,interval): 
                threading.Thread.__init__(self)      #在我重写__init__方法的时候要记得调用基类的__init__方法
                self.no=no
                self.interval=interval
        def run(self):                     #重写run()方法,把自己的线程函数的代码放到这里
                while True:
                        print ‘Thread Object (%d), Time:%s’%(self.no,time.ctime())
                        time.sleep(self.interval)
def test():
        threadone=timer(1,1)               #产生2个线程对象
        threadtwo=timer(2,3)
        threadone.start()                  #通过调用线程对象的.start()方法来激活线程
        threadtwo.start()
if __name__==’__main__’:
        test()

其实thread和threading的模块中还包含了其他的很多关于多线程编程的东西,例如锁、定时器、获得激活线程列表等等,请大家仔细参考python的文档!

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=107470

用Psyco让Python运行得像C一样快

Python 的设计在很多方面都类似于 Java 的设计。两者都利用了解释专门的伪编译字节码的虚拟机。JVM 比 Python 更高级的一个方面在于优化了字节码的执行。Psyco,一种 Python 专用编译器,帮助平衡了这一竞争。Psyco 现在是个外部模块,但是在将来的某一天它可能会包括到 Python 本身中去。只需极少量的额外编程,通常就可以使用 Psyco 将 Python 代码的速度提高好几个数量级。在本文中,David Mertz 研究了 Psyco 是什么,并在一些应用程序中对它进行了测试。

 

Continue reading 用Psyco让Python运行得像C一样快 - 全文阅读

STL中的常用的vector,map,set,Sort用法

STL中的常用的vector,map,set,Sort用法   C++的标准模板库(Standard Template Library,简称STL)是一个容器和算法的类库。容器往往包含同一类型的数据。STL中比较常用的容器是vector,set和map,比较常用的算法有Sort等。

Continue reading STL中的常用的vector,map,set,Sort用法 - 全文阅读

 Page 2 of 13 « 1  2  3  4  5 » ...  Last » 

Contact us

Admin: Bryan Wu