摘要: Java程序员应该了解的10个面向对象设计原则摘要:Java编程最基本的原则就是要追求高内聚和低耦合的解决方案和代码模块设计。查看Apache和Sun的开放源代码能帮助你发现其他Java设计原则在这些代码中的实际运用。面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton、Decorator、Observer这样的设计模式,而不重视面向对象的分析和设计。甚至还有经验丰富的Java程序员没有听说过OOPS和SOLID设计原则,他们根本不知道设计原则的好... 阅读全文
posted @ 2012-12-05 23:24 xjx_user 阅读(605) 评论(0) 推荐(1) 编辑
摘要: Android客户端开发3.1 服务器开发服务器的主要功能是为客户端提供服务,客户端发送服务请求给服务器,服务器完成客户端的请求,然后把结果返回给客户端,因此,构建服务器的主体是构建能够满足各种服务请求的功能函数,以下列出了客户端将会用到一些函数:☞搜索函数: public string searchButton(string keyword)☞用户注册函数: public string UserRegister(string type, string androidId, string username, string pwd)☞获得分类下的数据函数:public string GetCon 阅读全文
posted @ 2012-12-05 19:13 xjx_user 阅读(2833) 评论(4) 推荐(2) 编辑
摘要: Arm汇编指令的英文解释:http://wenku.baidu.com/view/f1b43b42a8956bec0975e34b.html各类电子书:http://www.enjoylinux.cn/Downloads.asp 课程大纲:http://www.enjoylinux.cn/course_view.asp?id=301 8门课程的上课顺序:http://www.enjoylinux.cn/course.asp课程顺序:课程1-嵌入式体验入门班课程2-嵌入式Linux应用开发班课程3-ARM系统进阶班 课程4-ARM系统深入班 课程5-Linux内核驱动进阶班课程6-Linux内核 阅读全文
posted @ 2012-12-05 18:37 xjx_user 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 改造nachos内核以支持多道程序一、实验目的本次实验的目的在于改造nachos内核以支持多道程序。实验内容分四部分:实现新的内存管理模块以完成基本分页管理;实现Exec系统调用;实现Exit和Join系统调用(选做);编写简单的用户态测试程序以测试新改造的多道程序环境(详细内容请看nachos-labs.pdf)。二、实验内容2.1 实现新的内存管理模块以支持基本分页管理 系统已经实现了分页管理的硬件支持——页表和地址变换机构,请参考machine/translate.cc和machine/translate.h 目前的系统仅支持单道程序,因此尽管使用分页地址变换机构来进行地址重定位,但内存 阅读全文
posted @ 2012-12-05 16:09 xjx_user 阅读(1002) 评论(0) 推荐(0) 编辑
摘要: 锁:只是将原来由信号量的value改成现在的 cheld(bool) 开始用false表示没锁 接下来 Acquier()后就有锁 当release()后重新获得锁 --释放锁 其余的改变主要是条件变量是要用到 isheldbycurrenThread() 用到保存当前线程的cheldThread线程变量指针.条件变量: wait(); 直接添加进条件变量的队列 锁放开 睡觉 锁的获得(竞争锁) signal();条件变量不会向锁一样需要死循环的等到能进入缓冲区所以释放不需要改变 value与cheld的值以让别人不需要死循环或 判断是否需要执行与 判断该是否还可以执行。信号量与锁与条件变量的 阅读全文
posted @ 2012-12-05 15:58 xjx_user 阅读(309) 评论(0) 推荐(0) 编辑
摘要: nachos下的线程编程一、 实验内容本次实验的目的在于掌握使用nachos中的线程来解决较为复杂的并发问题。实验内容分三部分:实现事件栅栏原语并进行正确性测试;实现闹钟原语并进行正确性测试;利用事件栅栏和闹钟原语来解决电梯问题实现事件栅栏原语事件栅栏(EventBarrier)是一种同步机制,使用事件栅栏可以让一组线程以同步的方式等待和应答某事件(Event)。事件栅栏的调用者分为两类:或者调用Wait操作,或者调用Signal操作。使用事件栅栏,无论是Wait操作的调用者或者是Signal操作的调用者最终都将同步地通过栅栏(如果他们原先不同步,则进度较快... 阅读全文
posted @ 2012-12-05 15:53 xjx_user 阅读(1098) 评论(0) 推荐(0) 编辑
摘要: nachos下双向量表的设计(通过锁机制排除1的错误)21、理解线程并发和同步的概念2、学会实现两个常用的线程同步的机制---锁和条件变量3、学会使用锁和条件变量来确保共享变量是线程安全的二、实验内容:本次实验的目的在于将nachos中的锁机制和条件变量的实现补充完整,并利用这些同步机制实现几个基础工具类。实验内容分三部分:实现锁机制和条件变量,并利用这些同步机制将实验一中所实现双向有序链表类修改成线程安全的;实现一个线程安全的表结构;实现一个大小受限的缓冲区dllist类:#include<cstdlib>#include"dllist.h"#include& 阅读全文
posted @ 2012-12-05 15:45 xjx_user 阅读(508) 评论(0) 推荐(0) 编辑
摘要: nachos下双向量表的设计一. 实验目的本次实验的目的在于对nachos进行熟悉,并初步体验nachos下的并发程序设计。二. 实验内容安装nachos;用C++实现双向有序链表;在nachos系统中使用你所写的链表程序并演示一些并发错误三. 实验运行实例一. 实验相关步骤实验需要编写三个相关文件,它们是dllist.h、dllist.cc、dllist-driver.cc,在dllist.h定义了双向链表,即定义了两个类,element和dllist,其具体代码如下:class element{public:int key;element *prev;el... 阅读全文
posted @ 2012-12-05 15:29 xjx_user 阅读(1015) 评论(0) 推荐(0) 编辑
摘要: unix《unix命令集》http://pan.baidu.com/share/link?shareid=148857&uk=1678594189注:命令行中的参数一般不使用双引号(尤其是单关键词) 除非双关键词且用空格,或其它分隔符分开后 此时一般要双引号shell 命令行的转意字符是\echo $PATH //获得系统环境变量的当前值include一个文件(类) 要: 1.4.#ifndef _ALARM_ #define _ALARM_ #endif解压复制方法:(cp /home/allen/materials/code-linux.tar.gz ./)... 阅读全文
posted @ 2012-12-05 15:07 xjx_user 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 编制模拟“五个哲学家”问题的程序一.实验目的学习和掌握并发进程同步的概念和方法。二.实验要求1、程序语法 philosopher [ -t <time> ]<time>是哲学家进餐和沉思的持续时间值,缺省值为2秒。2、五个哲学家的编号为0~4,分别用五个进程独立模拟。3、程序的输出要简洁,仅输出每个哲学家进餐和沉思的信息。例如,当编号为3的哲学家在进餐时,就打印: philosopher 3 is eating而当他在沉思时,则打印: philosopher 3 is thinking除此之外不要输出其他任何信息。4、利用线程或IPC机制进行同步。5、程序应该一直运行, 阅读全文
posted @ 2012-12-05 14:26 xjx_user 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 信号处理一.实验目的本实验要求利用可靠信号机制解决信号处理时可能出现的时间窗口,以及非局部转移等问题,将学习使用sigaction,alarm,sigpending,sigsetjmp和siglongjmp等函数解决在处理信号时遇到的问题。二.实验设计我们可以直接利用系统shell(在cs8是bash):execl(“/bin/sh”, “sh”, “-c”, buf, (char *) 0); 这样程序sigtest就具有系统shell的全部功能。需要处理的信号:因为需要使用闹钟,所以实验需要处理两个信号:SIGALRM和SIGQUIT。如果当前程序正在执行用户命令,则信号处理函数必须“杀死 阅读全文
posted @ 2012-12-05 14:16 xjx_user 阅读(470) 评论(0) 推荐(0) 编辑
摘要: 编制模拟“五个哲学家”问题的程序一.实验目的学习和掌握并发进程同步的概念和方法。二.实验要求1、程序语法 philosopher [ -t <time> ]<time>是哲学家进餐和沉思的持续时间值,缺省值为2秒。2、五个哲学家的编号为0~4,分别用五个进程独立模拟。3、程序的输出要简洁,仅输出每个哲学家进餐和沉思的信息。例如,当编号为3的哲学家在进餐时,就打印: philosopher 3 is eating而当他在沉思时,则打印: philosopher 3 is thinking除此之外不要输出其他任何信息。4、利用课堂已教授的知识而不使用线程或IPC机制进行同步 阅读全文
posted @ 2012-12-05 14:12 xjx_user 阅读(615) 评论(0) 推荐(0) 编辑
摘要: 实验3 目录树的遍历实验报告一.实验目的:掌握与文件和目录树有关的系统调用和库函数。二.实验要求:1、编写程序myfind命令语法: myfind <pathname> [-comp <filename> | -name <str>…]命令语义:(1)myfind <pathname> 的功能:除了具有与程序4-7相同的功能外,还要输出在<pathname>目录子树之下,文件长度不大于4096字节的常规文件,在所有允许访问的普通文件中所占的百分比。程序不允许打印出任何路径名。(2)myfind <pathname> -co 阅读全文
posted @ 2012-12-05 14:06 xjx_user 阅读(628) 评论(0) 推荐(0) 编辑
摘要: 同步与异步write的效率比较实验二同步与异步write的效率比较一.实验内容:UNIX的文件I/O系统调用,及UNIX系统有关时间函数的使用二.实验原理: 1、程序的参数和输入实验要求程序必须指定输出的文件名,而该文件是否按同步方式打开,则是可以选择的。因此程序至少带一个、至多两个输入参数。程序默认从标准输入STDIN_FILENO读取输入文件,可以利用shell的输入定向功能选择具体的输入文件。2、系统调用times()的说明#include <sys/times.h>clock_t times(struct tms *buf);struct tms { cl... 阅读全文
posted @ 2012-12-05 14:00 xjx_user 阅读(667) 评论(0) 推荐(0) 编辑
摘要: 实现带参数的简单shell调用系统函数:int execve(const char *path, const char *argv[],const char *envp[]);函数说明:path:要执行的程序路径名,比如“/bin/ls”,“cd”,“/usr/bin/gcc”等等。argv:参数表,比如ls命令中可带的命令行参数-l,-a等。注意,argv的第一个元素必须是要执行的程序(命令)的路径名。envp:环境变量表,供要执行的命令使用。实参数用NULL或系统环境变量environ均可。注意,因为environ由系统提供,属于外部变量,所以说明时必须用“e... 阅读全文
posted @ 2012-12-05 13:30 xjx_user 阅读(573) 评论(0) 推荐(0) 编辑