代码改变世界

转:ZendFramework中领域逻辑的处理

2012-02-01 16:18 by 马哈鱼, 372 阅读, 0 推荐, 收藏, 编辑
摘要:ZendFramework一直为人所诟病的缺点就是不能优雅的处理领域逻辑,这里谈谈我的一些解决思路:先看看一般情况下我们都是怎么写Model,Controller的:Model的一般写法:classArticlesextendsZend_Db_Table{}Controller的一般写法:classArticlesControllerextendsZend_Controller_Action{ protected$_articles; public functioninit() {$this->_articles= newArticles(); } public functioncrea 阅读全文

mysql root 远程登陆问题的解决

2012-01-31 17:23 by 马哈鱼, 3643 阅读, 0 推荐, 收藏, 编辑
摘要:今天使用mysql workbench 连接vmware上的mysql时,一直无法连接,查阅了网上的相关资料之后,收集了一些解决方法:1、授权法:mysql的root用户默认情况下只能在本地登陆,不能远程,若远程连接,需要授权: mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; mysql>FLUSH PRIVILEGES; ('root'@'%',指定root用户可以在任意一台计算机上连接数据库服务器,若要指定特定的计算机,可将%替换 阅读全文

Linux进程环境

2012-01-04 17:58 by 马哈鱼, 492 阅读, 0 推荐, 收藏, 编辑
摘要:一 main函数当内核使用一个exec函数执行C程序时,在调用main函数之前先调用一个特殊的启动例程,可执行程序将此例程指定为程序的起始地址。启动例程从内核获取命令行参数和环境变量,然后为调用main函数做好准备。二 进程终止 进程终止的方式有8种,前5种为正常终止,后三种为异常终止: 1 从main函数返回; 2 调用exit函数; 3 调用_exit或_Exit; 4 最后一个线程从启动例程返回; 5 最后一个线程调用pthread_exit; 6 调用abort函数; 7 接到一个信号并终止; 8 最后一个线程对取消请求做出响应。 (1)exit函数 #include <stdl 阅读全文

C++重载操作符和转换

2012-01-04 17:56 by 马哈鱼, 557 阅读, 0 推荐, 收藏, 编辑
摘要:重载操作符的定义重载操作符是具有特殊名称的函数:保留字 operator 后接需定义的操作符号。重载操作符具有返回类型和形参表。重载操作符的形参数目(包括成员函数的隐式 this 指针)与操作符的操作数数目相同,函数调用操作符可以接受任意数目的操作数。 重载操作符必须具有至少一个类类型或枚举类型的操作数。这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含义。重载操作符并不保证操作数的求值顺序,尤其是,不会保证内置逻辑 AND、逻辑 OR和逗号操作符的操作数求值。 操作符为非成员函数时,通常将它们设置为所操作的类的友元函数。 重载操作符的设计 不要重载具有内置含义的操作符。重载逗号. 阅读全文

C++面向对象编程的若干概念

2012-01-03 14:50 by 马哈鱼, 699 阅读, 1 推荐, 收藏, 编辑
摘要:面向对象基于三个基本概念:抽象,继承和动态绑定。在C++中,用类实现数据抽象;派生类继承基类成员;动态绑定在运行时决定是使用基类的成员还是派生类的成员。继承能够定义相似但不同的类,动态绑定能够写出忽略这些不同的程序。动态绑定 动态绑定使我们可以在程序中使用类继承层次中的任一对象,无需关心对象的类型,无需区分函数是在基类中定义还是在派生类中定义。C++中,通过引用或指针调用虚函数时发生动态绑定,引用或虚函数既可以指向基类对象,也可以指向派生类对象,这是动态绑定的关键,被调用的函数是由引用或指针指向的实际对象类型决定的。 虚函数 基类通常应该将派生类需要重定义的函数定义为虚函数。除了构造函数之外. 阅读全文

C++模板和泛型编程

2012-01-03 14:27 by 马哈鱼, 755 阅读, 1 推荐, 收藏, 编辑
摘要:模板是泛型编程的基础。泛型编程就是以独立于任何类型的形式编写代码,使用泛型时,需要具体程序实例提供使用的类型或值。和面向对象一样,泛型编程也要依赖于某种形式的多态。在泛型编程中,我们所编写的类和函数能够多态地用于跨越编译时不相关的类型。一个类或一个函数可以用来操纵多种类型的对象。模板定义 非类型模板形参:模板形参不必都是类型,在调用函数时非类型形参将用值代替,值的类型在模板形参表中指定。对模板的非类型形参而言,求值结果相同的表达式将认为是等价的。 编写模板时,代码不可能针对特定类型,但模板代码总是要对将使用的类型做一些假设。产生的程序是否合法,取决于函数中使用的操作以及所用类型支持的操作。编写 阅读全文

Linux下的系统数据文件和信息

2012-01-03 14:15 by 马哈鱼, 634 阅读, 0 推荐, 收藏, 编辑
摘要:一 口令文件口令文件保存了系统用户的信息,这些信息的各个字段都包含在<pwd.h>中定义的passwd结构中。口令文件存放在/etc/passwd中,是一个ASCII文件,关于文件内容有几点要注意: 1 有一个用户名为root的登陆项,用户ID为0(超级用户); 2 加密口令字段包含了一个占位字符,在早期的UNIX系统版本中,该字段存放加密口令,现在将加密口令存放在另一个地方(阴影口令文件/etc/shadow); 3 不推荐加密口令字段为空; 4 shell字段为空,则取系统默认值/bin/sh,若为/dev/null,则阻止该用户登陆系统,也可以使用/bin/false或/bi 阅读全文

linux下的标准I/O库

2011-11-24 16:49 by 马哈鱼, 1081 阅读, 2 推荐, 收藏, 编辑
摘要:标准I/O库处理很多细节,以方便用户使用,但是如果不深入了解其操作,也会带来一些问题。一 流和FILE对象 当使用标准I/O库打开或创建一个文件时,已经使一个流和一个文件相关联。流的定向决定了所读写的字符是单字节(ASCII字符集)还是多字节(国际字符集)。一个流被创建时,是没有定向的。如果在未定向的流上使用一个多字节IO函数(<wchar.h>),则将该流的定向设置为宽定向的;若在未定向的流上使用一个单字节IO函数,则将该流的定向设置为字节定向的。只有两个函数可以改变流的定向,freopen清除一个流的定向(稍后介绍),fwide设置一个流的定向。 #include<std 阅读全文

Linux文件和目录

2011-11-24 16:32 by 马哈鱼, 724 阅读, 0 推荐, 收藏, 编辑
摘要:本章将围绕stat函数来说明文件的属性和修改这些属性的函数,详细地介绍文件系统的结构以及对目录进行操作的各个函数。一 stat、fstat和lstat函数 #include<sys/stat.h> int stat( const char *restrict pathname, struct stat *restrict buf ); int lstat( const char *restrict pathname, struct stat *restrict buf ); int fstat( int file_des, struct stat *buf ); 这三个函数将与文件 阅读全文

linux文件I/O

2011-10-29 19:11 by 马哈鱼, 2872 阅读, 1 推荐, 收藏, 编辑
摘要:Linux系统中的大多数文件I/O只用到5个函数:open,read,write,lseek及close。本专题所涉及的函数都被称为不带缓冲的I/O,不带缓冲指的是read或read都是通过内核的一个系统调用实现的,它们是POSIX.1和Single UNIX Specification的组成部分。我们将进一步讨论多个进程间的文件共享及所涉及的内核数据结构。文件描述符 文件描述符是一个非负整数,当使用open或create时,会返回一个文件描述符来标识该文件,可将其作为参数传递给read或write使用。文件描述符0(符号常量:STDIN_FILENO)与进程的标准输入相关联,文件描述符1.. 阅读全文