`
文章列表
简单工厂模式又称静态工厂方法模式,定义一个用于创建对象的接口,包含下面几个组成 工厂类角色(本模式的核心,含有一定的业务逻辑和判断逻辑,使用一个具体类实现) 抽象产品角色(具体产品集成的父类或者实现的藉口,用抽象类或接口实现) 具体产品角色(工厂类创建的对象就是此角色的实例,使用一个具体类实现) 举例如下:   1,工厂类角色(工厂方法返回类型是抽象产品角色,实际返回具体产品角色实例)   class Helper{ public static Tool setLanguage(String lan) throws Exception { if(lan.equals ...
首先看看下面的应用场景 传统的服务器端为若干个客户端提供服务,一般需要开启多个服务器端进程。为了进一步提升服务器端的处理能力,可以如图所示将服务解耦为两部分(adapter与workers),它们之间通过消息队列传输数据,其中workers处理具体业务,adapter负责接入请求以及反馈结果,具体包含下面两个工作。 1,将所有客户端的请求发送到消息队列(进而传给后台处理) 2,后台处理完毕后将结果返回响应队列,client adapter获取到结果后返回给相应客户端。 我们选择用Jetty(8),redis以及php简单实现这个场景,主要用到jetty的continuation机制和 ...
用下面用nginx+mongodb+php实现一个简单的存储系统,提供简单的文件上传下载功能(下载支持Range头)。 (后台用磁盘和mongo的gridfs分别存储大于1M和小于等于1M的文件)   A,前台文件上传页面(同时列举所有文件)(test.php) <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> </head> <body> & ...
A,首先分别实现MVC的基类以及路由模块   控制器(controller.inc) <?php class Controller { private static $instance; public function __construct() { self::$instance =& $this; } public static function &get_instance() { ...
  首先介绍数据加密算法(Data Encryption Algorithm,DEA),它属于对称密钥密码体制.   DES是一种分组密钥,加密前先对整个明文分组,每个分组64位长的二进制。然后对每个64位二进制加密处理,产生一组64位密文,最后将所有密 ...
  reiserfs   日志型文件系统发展比 ext2/3 晚近许多。在技术上使用的是 B*-tree 为基础的文件系统,其特色为能很有效率地处理大型文件到众多小文件都可以用很高的效率处理;实务上 ReiserFS 在处理文件小于 1k 小文件时,甚至效率可以比 ext3 快约10倍。   特点: 1,先进的日志机制,确保每个实际数据修改前,相应的日志已经写入硬盘。 2,高效的磁盘空间利用,对一些小文件不分配inode,而是打包存于一个磁盘分块。 3,快速的搜索定位,由于基于快速平衡树搜索(B*Tree,比B+Tree快很多) 4,支持海量磁盘,最大卷容量16TB,适 ...
下面考虑网站一个简化版用户账户系统,从注册,登录,使用,登出四个方面做个简单的设计   account表包含下面三个字段 id 一个表唯一的id,标识用户 user 用户名 passwd 用户密码(为了防止数据库被侵入泄露密码,需要如md5(passwd)或者crypt单向加密)   1,用户注册(POST /register.php)   ① 如果网站是https协议,直接通过POST方式提交用户名和密码等信息; ② 如果是http协议,考虑到有可能传输数据被监听,可以用js对信息加密(比如对密码计算md5); 注:由于用户注册是一次性行为,这里可以简化业务 ...
一直觉得rpm包安装有点麻烦,下面记录个例子以作参考   我的suse 11里面的zypper安装库没有pcre-devel,通过rpm包管理方式安装一个 首先下载rpm安装包,找到对应suse 11的版本(下载地址)   root $rpm -i pcre-8.10-4.1.src.rpm root $cd /usr/src/packages/SPECS/ root $rpmbuild -bb pcre.spec root $cd /usr/src/packages/RPMS/x86_64/ root $ll total 912 -rw-r--r-- 1 root roo ...
mogilefs开源项目 Application level -- no special kernel modules required. No single point of failure -- all three components of a MogileFS setup (storage nodes, trackers, and the tracker's database(s)) can be run on multiple machines, so there's no single point of failure. (you can run trackers on t ...
首先推荐的方案是下载lnmp一键安装包,由于我这边是suse系统,貌似没有suse的安装脚本,索性简单搭建一个凑合着用   通过spawn-fcgi启动多个cgi实例     spawn-fcgi -a 127.0.0.1 -p 9000 /root/bin/php-cgi   nginx的配置文件如下     user ciaos ciaos; worker_processes 2; events { use epoll; worker_connections 51200; } http { include m ...
当access token过期后,可以通过refresh token去请求更新access token,当然需要服务器端支持这个逻辑,OAuth2.inc中已经有了相应代码。添加mongooauth驱动中对grant_type的支持   /** * Overrides OAuth2::getSupportedGrantTypes(). */ protected function getSupportedGrantTypes() { return array( OAUTH2_GRANT_TYPE_AUTH_CODE, OAUTH2 ...
对于没有服务端的第三方应用,使用账号密码授权也是一种方式(不过需要基于用户对这个应用足够信任的前提)   1,申请Client ID(填写应用ID号和密码,这里不需要填写回调网址)   访问 http://localhost/oauth/server/examples/mongo/addclient.php   填写ID=50001,Secret=pwd提交,查询数据库如下     > db.clients.find() { "_id" : "50001", "pw" : "pwd" ...
首先下载oauth2.0服务器端库——Oauth2.0,我这里用它已经实现的mongo驱动来演示第三方网站如何申请授权 (当然我们还需要启动mongo服务),下面就用mongo目录里面的例子来测试一下   1,申请Client ID(注册一个开发者应用,填写应用ID,Secret以及回调网址)   访问 http://localhost/oauth/server/examples/mongo/addclient.php    填写 ID=50021 Secret=rainbow Callback=http://localhost/callback,提交后数据库中生成clie ...
可以用mongodb自带的GridFS实现一个简单的分布式小文件存储系统,mongo提供命令行工具mongofiles以及各种语言的驱动提供GridFS操作的接口。   1,mongofiles操作文件   写文件到GridFS   $ mongofiles.exe put test.txt -d ciaos -l d:\test.txt connected to: 127.0.0.1 added file: { _id: ObjectId('50b436be961c6ba1158ef731'), filename: "test.txt", chunkSize ...
转自:http://liangbing8612.blog.51cto.com/2633208/652333   在virtualbox中装好Ubuntu后,发现硬盘空间太小,怎样才能增加硬盘容量?那就是再建一个硬盘: 1. 添加新硬盘      设置 -> Storage -> SATA控制器->右击,选择“添加虚拟硬盘”      然后,根据需求创建合适的硬盘 2. 重启虚拟机      查看现有系统的磁盘空间         sudo fdisk -l      可看到新加的虚拟硬盘,一般名为:Disk /dev/sdb 3. 给新加的硬盘分区 要 ...
Global site tag (gtag.js) - Google Analytics