摘要: 转http://www.jb51.net/article/28034.htm今天头让我修改个javascript方法,验证输入的日期是否符合要求。恩。我们的要求是yyyy-mm-dd这样的格式,其他的统统不符合要求。原来的方法没用正则表达式,用了一堆判断。其实我也很头疼正则表达式,百度了一些资料,总结一下,这里留个备份吧。要考虑的问题:合法的日期是多少;每个月的天数不一样;闰年的问题。。。。1、合法的日期:MSDN上规定--在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间查看ht 阅读全文
posted @ 2013-06-21 09:37 曾经的你| 阅读(12991) 评论(0) 推荐(0) 编辑
摘要: 以下是我自己学习设计模式的思考总结。简单工厂模式简单工厂模式是工厂模式中最简单的一种,他可以用比较简单的方式隐藏创建对象的细节,一般只需要告诉工厂类所需要的类型,工厂类就会返回需要的产品类,但客户端看到的只是产品的抽象对象,无需关心到底是返回了哪个子类。客户端唯一需要知道的具体子类就是工厂子类。除了这点,基本是达到了依赖倒转原则的要求。假如,我们不用工厂类,只用AbstractProduct和它的子类,那客户端每次使用不同的子类的时候都需要知道到底是用哪一个子类,当类比较少的时候还没什么问题,但是当类比较多的时候,管理起来就非常的麻烦了,就必须要做大量的替换,一个不小心就会发生错误。而使用了工 阅读全文
posted @ 2013-06-19 09:47 曾经的你| 阅读(63453) 评论(4) 推荐(10) 编辑
摘要: 最近学习Android的开发,学完书本之后,决定研究如何开发一个微博客户端来实践。第一步当然是用户授权。但是新浪开放平台的说明实在写得不太清楚,用GOOGLE+研读的方法,总算是实验成功了。这里有别人已经提供好的一份代码和说明http://www.cnblogs.com/ok-lanyan/archive/2012/07/15/2592070.html下面的说明没有代码,如果不太明白,直接运行这个项目就行。这是我自己总结的三步,虽然不是太准确吧,但大概就是这样了。1.首先去新浪开放平台申请一个应用。http://open.weibo.com/选择创建应用→然后就是填表了友情提示:就算是做实验学 阅读全文
posted @ 2013-06-18 21:02 曾经的你| 阅读(11281) 评论(0) 推荐(0) 编辑
摘要: 最近widget都是有焦点和无焦点两种情况,这时我们只需要它在有焦点时改变样式,无焦点时不变。这时候可以通过qApp->setStyleSheet设置全局所有可能用到的widget的样式。如1 a.setStyleSheet("QPushButton:focus{border: 3px solid red}");就可以设置按钮被聚焦时,外边画出一个红框。但是这里注意:不能使用两行qApp->setStyleSheet来设置样式,这样下面的一次调用会覆盖掉上面的一次调用。如1 a.setStyleSheet("QPushButton:focus{bord 阅读全文
posted @ 2013-06-05 23:51 曾经的你| 阅读(2269) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/alex_sym/article/details/7409566su:Swith user 切换用户,切换到root用户cat: Concatenate 串联uname: Unix name 系统名称df: Disk free 空余硬盘du: Disk usage 硬盘使用率chown: Change owner 改变所有者chgrp: Change group 改变用户组ps:Process Status 进程状态tar:Tape archive 解压文件chmod: Change mode 改变模式umount: Unmount 卸载ldd: 阅读全文
posted @ 2013-06-04 21:07 曾经的你| 阅读(1235) 评论(0) 推荐(0) 编辑
摘要: 部分摘自http://www.cnblogs.com/codingmylife/archive/2010/04/30/1725139.html最近做的项目,需要线程中间发出一个信号,然后由进程中间的一个槽函数来接收。传递的参数是我自己定义的结构体和enum,不知为何发出信号后,始终不能由槽函数接收。于是到网上搜索了一下,有了下面的原理。QObject::connect: Cannot queue arguments of type 'ERROR_LEVEL'(Make sure 'ERROR_LEVEL' is registered using qRegiste 阅读全文
posted @ 2013-06-04 13:09 曾经的你| 阅读(9109) 评论(0) 推荐(0) 编辑
摘要: 最近在研究如何实现一个线程池。具体线程池的实现不是我想说的重点,而是关于线程的一些操作问题。先说一下我的每个工作线程都有一个自己对应的锁,而且锁只在线程自身使用。(这方便下面的理解)一、线程的异步取消的问题我的线程池对外提供两个函数,create_threadpool()和destroy_threadpool()用来创建和销毁线程池,创建的过程是初始化工作线程→初始化管理线程→….工作,销毁的过程是销毁管理线程→销毁工作线程→……工作。在这两个过程中遇到的第一个问题是如何取消线程。目前我搜集到的有3种方法:1.通过pthread_kill()函数发送SIGQUIT信号2.通过pthread_c 阅读全文
posted @ 2013-05-29 16:58 曾经的你| 阅读(4297) 评论(0) 推荐(0) 编辑
摘要: 转自http://weihe6666.iteye.com/blog/1170141条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。 一 pthread_cond_wait定义:函数原型:int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) 参数: cond 条件变量 mutex 互斥锁第一个参数*cond是指 阅读全文
posted @ 2013-05-16 12:56 曾经的你| 阅读(6099) 评论(0) 推荐(0) 编辑
摘要: 1. 互斥锁创建 有两种方法创建互斥锁,静态方式和动态方式。POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER来静态初始化互斥锁,方法如下: pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER; 在LinuxThreads实现中,pthread_mutex_t是一个结构,而PTHREAD_MUTEX_INITIAL... 阅读全文
posted @ 2013-05-16 11:52 曾经的你| 阅读(12207) 评论(0) 推荐(0) 编辑
摘要: 最近学习如何进行单元测试,于是研究了一下CppUTest的用法,虽然这工具经常被推荐,但奇怪的是网上资料缺比较少,可能是因为太简单了的原因吧,先记录下来给自己看。1.下载CppUTest2.Linux常用安装三板斧./configure --prefix=目录makemake install3.使用CppUTest上有一个如何开始的说明先编写一个cpp文件 1 /*注意,这个头文件必须包含,不然编译就报错,比较坑的是官网并没说要添加这个*/ 2 #include "CppUTest/UtestMacros.h" 3 4 TEST_GROUP(FirstTestGroup) 阅读全文
posted @ 2013-05-16 08:12 曾经的你| 阅读(7461) 评论(6) 推荐(0) 编辑