当前位置:  编程技术>综合
本页文章导读:
    ▪Bigjava 第七章 复习题      1. 下面循环中的语句多长时间执行一次? while(false)语句; 答:不执行 2.如果在InvestmentTest程序的main方法中,将RATE设置为0将会出现什么情况? 答:死循环 3.将waitYear方法的for循环写为while循环.........
    ▪用ASDF来组织Lisp程序编译和加载       源代码下载地址: http://download.csdn.net/detail/cq20110310/4988409 一.建立示例程序hello world 1.编写asdf 文件hello.asd (defpackage :hello-system (:use #:asdf #:cl)) (in-package :hello-system) (defsystem hello :name "he.........
    ▪从Samples中入门IOS开发(三)------ 文档浏览      IOS提供了对各种文档(PDF, PPT, word, txt, jpg等)的浏览功能,这个非常使用,因为我们难免需要app里浏览各种文档。官方的Sample code DocInteraction展示了如何在IOS浏览各种格式的文档。本Sample非常.........

[1]Bigjava 第七章 复习题
    来源:    发布时间: 2013-11-10

1. 下面循环中的语句多长时间执行一次?

while(false)语句;

答:不执行

2.如果在InvestmentTest程序的main方法中,将RATE设置为0将会出现什么情况?

答:死循环

3.将waitYear方法的for循环写为while循环。

答:while(years<=n){

years++;

....

}

4.下面的for循环执行多少次?

for(i=0;i<=10;i++) System.out.println(i*i);

答:11次

5.如何修改嵌套循环,使其输出一个正方形而不是三角形?

答:for(int i=1;i<=width;i++){
   for(int j=1;j<=n;j++){

 

6.在下列嵌套循环执行后,n的值是多少?

int n=0;

for(int i=1;i<=5;i++)

   for(int j=0;j<i;j++)

      n=n+j;

 



已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐
  • —软件人才免语言低担保 赴美带薪读研!—




    
[2]用ASDF来组织Lisp程序编译和加载
    来源: 互联网  发布时间: 2013-11-10

源代码下载地址:

http://download.csdn.net/detail/cq20110310/4988409


一.建立示例程序hello world


1.编写asdf 文件hello.asd

(defpackage :hello-system (:use #:asdf #:cl))

(in-package :hello-system)

(defsystem hello
  :name "hello world"
  :version "0.1"
  :author "cq"
  :depends-on ()
  :components ((:file "package")
               (:file "hello" :depends-on ("package"))))

这个是asd即编译和加载lisp的依赖关系

defpackage定义一个系统的包名 hello-sytem, 是从后面三个包集成来的。

in-package 导入包,如果要用一个包,必须用in-package导入这个包。

接下来的 defsystem 宏就定义了整个项目的代码结构,以及一些无用的附加信息。重要的部分是 components,它定义了两个有明确依赖关系的源代码文件 package.lisp, 和 hello.lisp,一般而言,对于稍具规模的正规 lisp 程序,至少需要三个代码文件:一个用来定义 package,一个存放配置信息(这里省掉),一个放实际的业务逻辑代码。如果此项目依赖于其他 asdf 格式的 lisp 软件包,那么写在 depends-on 段里即可。


2.包定义文件package.lisp

(in-package :hello-system)

(defpackage hello
  (:nicknames hello)
  (:use #:cl)
  (:export main *default-name*))

定义了一个包,名为:hello,然后用 use 段设置这个包可以访问所有标准 Common Lisp 符号,根据 Lisp 标准他们位于 common-lisp 包里,这个包的昵称是 cl。最后我导出了两个 hello 包里的符号作为外部接口。


3.实现文件hello.lisp

(in-package :hello)

(defvar *default-name* "world")

(defun main (args)
  (if (null args)
      (format t "hello ~a~%" *default-name*)
      (hello args)))

(defun hello(names)
  (when names
    (format t "hello ~a~%" (car names))
    (hello (cdr names))))

定义了两个函数main和hello

上述代码里有两个函数定义,main 函数是整个程序的入口,入口参数是一个列表,如果列表为空的话就产生默认输出然后程序结束,否则就调用另一个函数 hello 来实际产生针对每个列表元素的输出,注意到这个函数我采用了尾递归的写法,这在 lisp 程序里是非常自然的编程风格,完全没有任何性能折损而且相比循环结构节省了显式的循环变量。


二.编译和加载lisp文件

1,每个模块都要有一个描述文件,module-name.asd(本例中就是hello.asd)。该文件声明了模块名,和构成该模块的文件列表。可以描述lisp文件之间的依赖关系,也可以描述模块之间的依赖关系。asd文件,类似于VC的工程文件,类似于make文件。


加载模块的方法1:


(push #p”example/” asdf:*central-registry*) :添加asd文件所在的目录


       (asdf:load-system “module-name”) :加载一个模块(本例hello)





加载模块的方法2:


(load “example/module-name.asd”) :读取asd文件的内容,不加载模块()


(asdf:load-system “module-name”) :加载一个模块


三.测试代码

CL-USER: (hello:main nil)
hello world
NIL
CL-USER: (hello:main '("a" "netease" "sa"))
hello a
hello netease
hello sa
NIL
hello是包名,main是函数名

也可以用in-package先导入包,在直接输入函数名。


源代码下载地址:

http://download.csdn.net/detail/cq20110310/4988409


引用文章地址

1.http://tianchunbinghe.blog.163.com/blog/static/7001200692314249376/

2.http://blog.csdn.net/dragonzht/article/details/8299539


作者:cq20110310 发表于2013-1-12 17:33:23 原文链接
阅读:10 评论:0 查看评论

    
[3]从Samples中入门IOS开发(三)------ 文档浏览
    来源: 互联网  发布时间: 2013-11-10

IOS提供了对各种文档(PDF, PPT, word, txt, jpg等)的浏览功能,这个非常使用,因为我们难免需要app里浏览各种文档。官方的Sample code DocInteraction展示了如何在IOS浏览各种格式的文档。

本Sample非常简单,在tableview里列出了预定的和制定目录下的文档列表,点击某个文档时,能切换view并预览文档内容:


从这个sample里能学到的关键点是:

  • 从文件目录中载入文件列表
  • 监控文档目录中文件的变动,并实时反馈在UI上
  • 预览各种文档内容
从文件目录中载入文件列表

IOS提供了NSFileManager来访问文件系统,从以下代码能很清晰地了解到如何通过NSFileManager查询某个目录路径下所有所有文件:

- (void)directoryDidChange:(DirectoryWatcher *)folderWatcher
{
	[self.documentURLs removeAllObjects];    // clear out the old docs and start over
	
	NSString *documentsDirectoryPath = [self applicationDocumentsDirectory];
	
	NSArray *documentsDirectoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectoryPath error:NULL];
    
	for (NSString* curFileName in [documentsDirectoryContents objectEnumerator])
	{
		NSString *filePath = [documentsDirectoryPath stringByAppendingPathComponent:curFileName];
		NSURL *fileURL = [NSURL fileURLWithPath:filePath];
		
		BOOL isDirectory;
        [[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:&isDirectory];
		
        // proceed to add the document URL to our list (ignore the "Inbox" folder)
        if (!(isDirectory && [curFileName isEqualToString: @"Inbox"]))
        {
            [self.documentURLs addObject:fileURL];
        }
	}
	
	[self.tableView reloadData];
}
在UI上展现文件列表就是通过tableView的datasource来完成,在上一节的分享中已分析此部分,此时只需reloadData刷新一下即可。

监控文档目录中文件的变动,并实时反馈在UI上

对文件目录的监控本例子是借助系统内核函数来完成,先看代码:

- (BOOL)startMonitoringDirectory:(NSString *)dirPath
{
	// Double initializing is not going to work...
	if ((dirKQRef == NULL) && (dirFD == -1) && (kq == -1))
	{
		// Open the directory we're going to watch
		dirFD = open([dirPath fileSystemRepresentation], O_EVTONLY);
		if (dirFD >= 0)
		{
			// Create a kqueue for our event messages...
			kq = kqueue();
			if (kq >= 0)
			{
				struct kevent eventToAdd;
				eventToAdd.ident  = dirFD;
				eventToAdd.filter = EVFILT_VNODE;
				eventToAdd.flags  = EV_ADD | EV_CLEAR;
				eventToAdd.fflags = NOTE_WRITE;
				eventToAdd.data   = 0;
				eventToAdd.udata  = NULL;
				
				int errNum = kevent(kq, &eventToAdd, 1, NULL, 0, NULL);
				if (errNum == 0)
				{
					CFFileDescriptorContext context = { 0, self, NULL, NULL, NULL };
					CFRunLoopSourceRef      rls;

					// Passing true in the third argument so CFFileDescriptorInvalidate will close kq.
					dirKQRef = CFFileDescriptorCreate(NULL, kq, true, KQCallback, &context);
					if (dirKQRef != NULL)
					{
						rls = CFFileDescriptorCreateRunLoopSource(NULL, dirKQRef, 0);
						if (rls != NULL)
						{
							CFRunLoopAddSource(CFRunLoopGetCurrent(), rls, kCFRunLoopDefaultMode);
							CFRelease(rls);
							CFFileDescriptorEnableCallBacks(dirKQRef, kCFFileDescriptorReadCallBack);
							
							// If everything worked, return early and bypass shutting things down
							return YES;
						}
						// Couldn't create a runloop source, invalidate and release the CFFileDescriptorRef
						CFFileDescriptorInvalidate(dirKQRef);
                        CFRelease(dirKQRef);
						dirKQRef = NULL;
					}
				}
				// kq is active, but something failed, close the handle...
				close(kq);
				kq = -1;
			}
			// file handle is open, but something failed, close the handle...
			close(dirFD);
			dirFD = -1;
		}
	}
	return NO;
}

这段代码基本上都是对内核c函数的使用,虽然有些晦涩,但流程还是很简单的,首先是对系统事件的监控,然后基于IOS的thread框架来callback文件目录变动后的回调,回调的具体内容实现在KQCallback中,此方法也非常简单,实际上就是基于Delegate模式调用到上一段的directoryDidChange方法,继而刷新tableview的内容。具体的c函数的用法这里就不多说,但值得我们学习的是如何在IOS的层面上调用底层BSD系统API。

预览各种文档内容

本例子中最核心的点反而是最简单的,IOS提供了QLPreviewController,通过此controller能直接得到预览各种文档的view,你只需要把view塞到navigationController中即可,代码如下:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSURL *fileURL;
    if (indexPath.section == 0)
    {
        fileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:documents[indexPath.row] ofType:nil]];
    }
    else
    {
        fileURL = [self.documentURLs objectAtIndex:indexPath.row];
    }
    [self setupDocumentControllerWithURL:fileURL];
    [self.docInteractionController presentPreviewAnimated:YES];
    
    QLPreviewController *previewController = [[QLPreviewController alloc] init];
    previewController.dataSource = self;
    previewController.delegate = self;
    
    // start previewing the document at the current section index
    previewController.currentPreviewItemIndex = indexPath.row;
    [[self navigationController] pushViewController:previewController animated:YES];
    [previewController release];
}
具体如何设定预览的内容和行为,是在QLPreviewControllerDelegate和QLPreviewControllerDataSource中完成的,所以这里只需要在controller中实现QLPreviewControllerDelegate和QLPreviewControllerDataSource相关方法即可:

// Returns the number of items that the preview controller should preview
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)previewController
{
    NSInteger numToPreview = 0;
    
    NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
    if (selectedIndexPath.section == 0)
        numToPreview = NUM_DOCS;
    else
        numToPreview = self.documentURLs.count;
    
    return numToPreview;
}


// returns the item that the preview controller should preview
- (id)previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)idx
{
    NSURL *fileURL = nil;
    
    NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
    if (selectedIndexPath.section == 0)
    {
        fileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:documents[idx] ofType:nil]];
    }
    else
    {
        fileURL = [self.documentURLs objectAtIndex:idx];
    }
    
    return fileURL;
}

第一个方法是设定一组文档浏览的个数,会影响到在文档预览中的上/下一页,第二个方法是指定文档预览的文件路径,由此可见在IOS中预览各种文档是件很简单的事儿,并且可预览的格式非常广,只要在mac的预览能支持的,这里都能支持,简单测试后发现基本能支持所有常规文档。





作者:cutesource 发表于2013-1-12 17:32:40 原文链接
阅读: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始终保持在浏览器中央,兼容各浏览器版本
Web服务器/前端 iis7站长之家
▪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