落后就要挨打,爱拼才会赢。有限的生命也可以创造奇迹,只要每天都有进步!
有一种拼博叫坚持...

如何在zen-cart中使用自定义session

最近在给zen cart添加图片验证码功能的时候同时碰到了一个问题,自己定义的session在zen cart程序中读取不到值,分析了一下原因,原来是这样的:

zen cart自定义了session的处理函数,session_save_path设在了/cache/文件夹,在include/configure.php里有个选项

define(‘STORE_SESSIONS’, ‘db’); // use ‘db’ for best support, or ” for file-based storage 设置session的保存方式。

不同的程序间要想共享session数据,至少要遵循以下几个条件:session_save_path 相同,session_id相同,当然session的保存方式肯定要一样,php默认的session保存方式就是文件存储,而保存目录就在系统的临时目录。

继续阅读 »

阅读全文»

Python threading模块

python是支持多线程的,并且是native的线程。主要是通过thread和threading这两个模块来实现的。thread是比较底层的模 块,threading是对thread做了一些包装的,可以更加方便的被使用。这里需要提一下的是python对线程的支持还不够完善,不能利用多 CPU,但是下个版本的python中已经考虑改进这点,让我们拭目以待吧。

threading模块里面主要是对一些线程的操作对象化了,创建了叫Thread的class。一般来说,使用线程有两种模式,一种是创建线程要执行的 函数,把这个函数传递进Thread对象里,让它来执行;另一种是直接从Thread继承,创建一个新的class,把线程执行的代码放到这个新的 class里。下面是代码实例:                  继续阅读 »

阅读全文»

Java获取当前路径的方法

1、利用System.getProperty()函数获取当前路径:
System.out.println(System.getProperty(“user.dir”));//user.dir指定了当前的路径

2、使用File提供的函数获取当前路径:
File directory = new File(“”);//设定为当前文件夹
try{
System.out.println(directory.getCanonicalPath());//获取标准的路径
System.out.println(directory.getAbsolutePath());//获取绝对路径
}catch(Exceptin e){}

File.getCanonicalPath()和File.getAbsolutePath()大约只是对于new File(“.”)new File(“..”)两种路径有所区别。

# 对于getCanonicalPath()函数,“.“就表示当前的文件夹,而”..“则表示当前文件夹的上一级文件夹
# 对于getAbsolutePath()函数,则不管”.”、“..”,返回当前的路径加上你在new File()时设定的路径
# 至于getPath()函数,得到的只是你在new File()时设定的路径
继续阅读 »

阅读全文»

Java中Log4j日志使用总结

一、Log4j日志管理系统简单使用说明

通常,我们都提供一个名为 log4j.properties的文件,在第一次调用到Log4J时,Log4J会在类路径(../web-inf/class/当然也可以放到其它任何目录,只要该目录被包含到类路径中即可)中定位这个文件,并读入这个文件完成的配置。这个配置文件告 诉Log4J以什么样的格式、把什么样的信息、输出到什么地方。
Log4j有三个主要的组件:Loggers(记录器),Appenders(输出源)和Layouts(布局),这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。下面对三个组件分别进行说明:

1、 Loggers
Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度,明白这一点很重要,这里Log4j有一个规则:假设Loggers级别为P,如果在Loggers中发生了一个级别Q比P高,则可以启动,否则屏蔽掉。
假设你定义的级别是info,那么error和warn的日志可以显示而比他低的debug信息就不显示了。      继续阅读 »

阅读全文»

java集合框架总结

Java平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。

结构图: 继续阅读 »

阅读全文»

Java中应用Redis

下面介绍一下Java中Redis的基本应用:

首先, 下载jedis.jar包:https://github.com/xetorthio/jedis/downloads

加入到包含路径,我使用的是eclipse,由于是初学java,使用的最基本的方式,详见:
http://www.docin.com/p-242584543.html

接下来是实践了,实例代码如下:    继续阅读 »

阅读全文»

Redis初识及安装

一、何为Redis?
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

详情:http://baike.baidu.com/view/4595959.htm                 继续阅读 »

阅读全文»

《赢在中国》经典语录

1、一个年轻人,如果三年的时间里,没有任何想法,他这一生,就基本这个样子,没有多大改变了。
2、成功者就是胆识加魄力,曾经在火车上听人谈起过温州人的成功,说了这么三个字,“胆子大”。这其实,就是胆识,而拿得起,放得下,就是魄力。
3、这个世界,有这么一小撮的人,打开报纸,是他们的消息,打开电视,是他们的消息,街头巷尾,议论的是他们的消息,仿佛世界是为他们准备的,他们能够呼风唤雨,无所不能。你的目标,应该是努力成为这一小撮人。
4、如果,你真的爱你的爸妈,爱你的女朋友,就好好的去奋斗,去拼搏吧,这样,你才有能力,有经济条件,有自由时间,去陪他们,去好好爱他们。
5、这个社会,是快鱼吃慢鱼,而不是慢鱼吃快鱼。        继续阅读 »

阅读全文»

PHP5.3.X新特性总结

一、向后不兼容的变化
尽管绝大多数PHP5代码不需修改即可运行,但是请留意一些向后不兼容的变化:
1.所有PHP5.3.X附带的extension使用了新的参数解析API,如果传入不兼容的参数将导致函数返回NULL。
有部分例外情况,例如get_class()在发生错误的时候继续返回FALSE
2. array相关函数:natsort(), natcasesort(), usort(), uasort(), uksort(), array_flip(), 和 array_unique()不再接受object类型的参数,如果要使用,请先把object转换为数组。
3. SplFileInfo和其他目录相关的类返回的路径字符结尾处的“/”将被移除。
4. __toString魔术方法不再接受参数
5. __get, __set, __isset, __unset, 和 __call必须使用public并且不能再定义为静态方法
6. 魔术方法__call现在能调用private和protected方法。
7. 函数内include或者require一个文件,文件内将不能使用func_get_arg(), func_get_args() 和 func_num_args()函数。
8. 以下关键词成为保留关键词,不能以其为其他函数、类命名。
goto
namespace          继续阅读 »

阅读全文»

php中const与define的使用区别

1、const用于类成员变量定义,一旦定义且不能改变其值。define定义全局常量,在任何地方都可以访问。PHP5.3.0以后,const同样可用于定义全局变量,跟define一样。

2、define不能在类中定义而const可以。

3、const不能在条件语句中定义常量

if (…) {
const FOO = ‘BAR’; // invalid
}

but

if (…) {
define(‘FOO’, ‘BAR’); // valid
}                        继续阅读 »

阅读全文»