当前位置:  编程技术>综合
本页文章导读:
    ▪[设计模式]Iterator迭代器模式      问题 iterator模式应该是最为熟悉的模式了,最简单的证明就是在实现Composite模式,Flyweight模式,Observer模式中就直接用到了STL提供的Iterator来遍历Vector或者List数据结构。 Iterator模式也正是用来.........
    ▪交叉编译linux内核      一.下载linux内核源码      我使用的是linux-loongson-release-zb-kernel.tgz      将其解压到/usr/src目录下: tar -xzvf linux-loongson-release-zb-kernel.tgz      这样在此.........
    ▪flex tomcat端口被占用的问题      概述: 在启动Tomcat,提示8080端口(如果安装的时候端口被修改了,使用你自己设置的端口)被占用了。解决方法如下: 1.  开始-> 运行 -> 输入cmd 2. 输入 netstat -ano, 查看是哪个程序占.........

[1][设计模式]Iterator迭代器模式
    来源: 互联网  发布时间: 2013-11-19
问题

iterator模式应该是最为熟悉的模式了,最简单的证明就是在实现Composite模式,Flyweight模式,Observer模式中就直接用到了STL提供的Iterator来遍历Vector或者List数据结构。

Iterator模式也正是用来解决对一个聚合对象的遍历问题,将对聚合的遍历封装到一个类中进行,这样就避免了暴露这个聚合对象的内部表示的可能。

iterator迭代器模式

提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。

小demo

iterator.h

#ifndef ITERATOR_H
#define ITERATOR_H

typedef int DATA;
class Iterater;
// 容器的抽象基类
class Aggregate
{
public:
	virtual ~Aggregate(){}
	virtual Iterater* CreateIterater(Aggregate *pAggregate) = 0;
	virtual int GetSize() = 0;
	virtual DATA GetItem(int nIndex) = 0;
};

// 迭代器的抽象基类
class Iterater
{
public:
	virtual ~Iterater(){}

	virtual void First()		= 0;
	virtual void Next()			= 0;
	virtual bool IsDone()		= 0;
	virtual DATA CurrentItem()	= 0; 
};

// 一个具体的容器类,这里是用数组表示
class ConcreateAggregate	: public Aggregate
{
public:
	ConcreateAggregate(int nSize);
	virtual ~ConcreateAggregate();
	virtual Iterater* CreateIterater(Aggregate *pAggregate);
	virtual int GetSize();
	virtual DATA GetItem(int nIndex);
private:
	int m_nSize;
	DATA *m_pData;
};

// 访问ConcreateAggregate容器类的迭代器类
class ConcreateIterater : public Iterater
{
public:
	ConcreateIterater(Aggregate* pAggregate);
	virtual ~ConcreateIterater(){}

	virtual void First();
	virtual void Next();
	virtual bool IsDone();
	virtual DATA CurrentItem();
private:
	Aggregate  *m_pConcreateAggregate;
	int			m_nIndex;
};

#endif

 

iterator.cpp

#include <iostream>
#include "Iterator.h"

ConcreateAggregate::ConcreateAggregate(int nSize) : m_nSize(nSize), m_pData(NULL)
{
	m_pData = new DATA[m_nSize];
	
	for (int i = 0; i < nSize; ++i)
	{
		m_pData[i] = i;
	}
}

ConcreateAggregate::~ConcreateAggregate()
{
	delete [] m_pData;
	m_pData = NULL;
}

Iterater* ConcreateAggregate::CreateIterater(Aggregate *pAggregate)
{
	return new ConcreateIterater(this);
}

int ConcreateAggregate::GetSize()
{
	return m_nSize;
}

 

main.cpp

#include "Iterator.h"
#include <iostream>

int main()
{
	Aggregate* pAggregate = new ConcreateAggregate(4);
	Iterater*  pIterater  = new ConcreateIterater(pAggregate);

	for (; false == pIterater->IsDone(); pIterater->Next())
	{
		std::cout << pIterater->CurrentItem() << std::endl;
	}
    system("pause");
	return 0;
}

 

作者:ouyangshima 发表于2013-1-13 19:23:20 原文链接
阅读:0 评论:0 查看评论

    
[2]交叉编译linux内核
    来源: 互联网  发布时间: 2013-11-19

一.下载linux内核源码

     我使用的是linux-loongson-release-zb-kernel.tgz

     将其解压到/usr/src目录下: tar -xzvf linux-loongson-release-zb-kernel.tgz

     这样在此目录下会生成linux-loongson-release目录

二.下载交叉编译工具

     下载地址: http://dev.lemote.com/files/binary/toolchain/kernel/gcc-3.4.6-newbin.ls2f.tar.gz

     解压放到/opt目录下,先要修改/opt的权限

           sudo chmod 766 /opt

           tar -xzf  gcc‐3.4.6‐newbin.ls2f.tar.gz -C /opt

    然后在环镜变量中制定其路径

          export PATH=/opt/gcc-3.4.6-newbin/bin:$PATH          也可把它写入~/.bashrc,便于多次使用

    设置可执行权限

         chmod +x /opt/gcc-3.4.6-newbin/bin -R

三.内核配置

     在源码目录下:

          cp arch/mips/configs/loongson3a_xxxx_config

     注:目前在arch/mips/configs下有5个龙芯3a的配置文件

          loongson3a_dawning_config
          loongson3a_rs780e_config
          loongson3a_server_2u_defconfig
          loongson3a_server_blade_defconfig
          loongson3a_server_config
    然后再make config 你会发现龙芯3a默认配置已经写到配置文件中去了.

四.编译内核

      1.本地编译直接 make完成内核的编译

      2.交叉编译情况下,进入内核源码根目录下,输入:  make  ARCH=mips CROSS_COMPILE=mipsel-linux-

          也可修改makefile,对于反复编译此法一劳永逸.修改根目录下的makefile

                    给ARCH变量赋值: ARCH ?= mips
                    给CROSS_COMPILE 变量赋值CROSS_COOMPILE ?= mipsel‐linux‐

      注:此步执行前要make menuconfig 进入配置界面把 Enable  loadable module support 选中.再把它的下一级目录的3和4,或2和4选中.

          并且修改完要选择 Save an Alternate Configuration File进行保存.


作者:buaa_shang 发表于2013-1-13 19:19:54 原文链接
阅读:0 评论:0 查看评论

    
[3]flex tomcat端口被占用的问题
    来源: 互联网  发布时间: 2013-11-19

概述: 在启动Tomcat,提示8080端口(如果安装的时候端口被修改了,使用你自己设置的端口)被占用了。解决方法如下:

1.  开始-> 运行 -> 输入cmd

2. 输入 netstat -ano, 查看是哪个程序占用了8080的端口,记住该进程的PID

3. 打开任务管理器,

4. 查找对应第2步的PID的进程.( 如果任务管理器没有PID这一列,请打开 查看-> 选择列, 把PID这一项选上)

5. 关闭该进程,重启tomcat

作者:shileimohan 发表于2013-1-13 19:18:35 原文链接
阅读:0 评论:0 查看评论

    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3