文档库 最新最全的文档下载
当前位置:文档库 › yaffs2源代码分析(经典,值得一阅)

yaffs2源代码分析(经典,值得一阅)

yaffs2源代码分析(经典,值得一阅)
yaffs2源代码分析(经典,值得一阅)

Android源代码结构分析

目录 一、源代码结构 (2) 第一层次目录 (2) bionic目录 (3) bootloader目录 (5) build目录 (7) dalvik目录 (9) development目录 (9) external目录 (13) frameworks目录 (19) Hardware (20) Out (22) Kernel (22) packages目录 (22) prebuilt目录 (27) SDK (28) system目录 (28) Vendor (32)

一、源代码结构 第一层次目录 Google提供的Android包含了原始Android的目标机代码,主机编译工具、仿真环境,代码包经过解压缩后,第一级别的目录和文件如下所示: . |-- Makefile (全局的Makefile) |-- bionic (Bionic含义为仿生,这里面是一些基础的库的源代码) |-- bootloader (引导加载器),我们的是bootable, |-- build (build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具) |-- dalvik (JAVA虚拟机) |-- development (程序开发所需要的模板和工具) |-- external (目标机器使用的一些库) |-- frameworks (应用程序的框架层) |-- hardware (与硬件相关的库) |-- kernel (Linux2.6的源代码) |-- packages (Android的各种应用程序) |-- prebuilt (Android在各种平台下编译的预置脚本) |-- recovery (与目标的恢复功能相关) `-- system (Android的底层的一些库)

Struts2框架工作原理及应用体会

2012年第11卷第6期 产业与科技论坛2012.(11).6 Industrial &Science Tribune Struts2框架工作原理及应用体会 □宋 君 张家爱 【摘要】通过针对特定用户的分析,搭建以Struts2为技术核心的旅行社管理系统。本文简单的介绍了MVC 、 Struts2的工作原理,同时总结了在项目制作过程中所得到的心得。 【关键词】 Struts2;MVC ;FilterDispatcher ;Action 【基金项目】本文为大学生科技创新院级基金项目(编号:2011070)成果 【作者单位】宋君,吉林农业科技学院信息工程学院;张家爱,吉林农业科技学院信息工程学院教师 本着锻炼自我与积极参与到实用性技术的目标,以发掘自身创新意识为前提。利用空闲时间,在老师的指导下,进行了一次大学生创新项目的实践性活动。本着实用原则,以某中小旅行社为客户(根据用户需求,匿名),以Struts2框架为基点,进行了一次旅行社管理系统的开发。在项目结束之余, 特将在项目过程中经历的种种认识进行了简单的总结,希望让阅读本文的朋友们,更多的参与到此类活动中。 一、基础思想— ——MVC 简述作为时下经典框架之一, MVC 具有其独特的价值。MVC 框架简单的说,就是将数据模型与用户视图进行分离。通过控制器进行协调处理的一种结构是框架。同时,也是本文中要讨论的Sturts2框架的基础思想。 M 是指模型层(Model ),V 是指用户视图(View ),C 则是指控制器 (Controller )。这种划分方式是以将模型层与视图层进行代码分离,从而降低两者之间的耦合性,使同一程序可以使用不同形式进行表现。不同层之间的修改不会或尽量少的印象到其他层功能的史前为前提。有效的提高的代码的维护性和设计难度。 图1 二、 Struts2工作原理(一)Struts2框架组成。Struts2框架由三个主要部分组成:核心控制器、业务控制器,以及由用户实现的业务逻辑组件。这里我们将侧重于核心控制器与业务控制器的理解与说明。 (二)核心控制器:FilterDispatcher 。FilterDispatcher 是Struts2框架的核心控制器,在此,我们可以将FilterDispatcher 看作一个类似于过滤网的过滤器。当用户发出请求,并到达Web 硬哟那种时,该过滤器会过滤用户请求。如果用户请求的结尾为action ,则将该请求转入Struts2框架进行处理。当Struts2框架获得了*.actio 请求后,会根据请求前面“*”的那部分内容,决定调用哪个业务逻辑组件作为响应单位。这里需要说明的是Struts2用来处理用户请求的Action 实例并不是业务控制器,而是作为Action 的代理———正因为Struts2的一大特点,与Servlet API 的非耦合性,使得用户实现的业务控制器无法直接处理用户请求。有效的提高了后期调试维护的效率。而Struts2框架再次提供了了一系列的拦截器。这些拦截器负责将HttpServletRequest 请求的参数解析出来,传入Action 中,并毁掉Action 的Execute 方法来处理用户请求。用户实现的Action 类仅作为Struts2的Action 代理的代理目标。用户实现的业务控制器则包含了对用户请求的处理。用户的请求数据包含在HttpServletRequest 对象中,而用户的Action 类无需访问HttpServletRequest 对象。拦截器负责将HttpServletRequest 里的请求数据解析出来,并传给业务逻辑组件Action 实例。 (三)业务控制器。业务控制器就是前文提到的用来实现用户Action 的实力,这里的每个Action 类通常包含有一个execute 方法,当业务控制器处理完用户的请求后,该方法将会针对此次处理返回一个字符串— ——该字符串就是一个逻辑树图名。当程序开发人员开发出系统所需要的业务控制器后,还需要针对性的配置Struts2的Action ,即需要配置Ac- tion 的以下三个部分:(1)Action 所处理的URl 。(2)Action 组件所对应的实现类。(3)Action 里包含的逻辑试图和物理资源之间的对应关系。每个Action 都要处理一个用户请求,而用户请求则总是包含有指定的URL 。当核心控制器过滤用户请求,并调用后,根据请求的URL 和Action 处理URL 之间的对应关系来处理转发。 · 342·

网众NXP错误代码解析

网众NXP错误代码解析 DDE(1)未知错误 DDE(2)磁盘快照打开模式错误 DDE(3)磁盘已经打开 DDE(4)磁盘文件没有找到 DDE(5)超级工作站文件已经存在 1)还原时发现超级工作站更新文件存在 2)转存时发现超级工作站更新文件存在 DDE(6)超级工作站文件不存在 DDE(7)还原点文件不存在 DDE(8)快照文件大小错误 DDE(9)超级工作站文件大小错误 DDE(10)还原点文件大小错误 DDE(11)错误的文件格式 DDE(12)分区备份文件大小错误 DDE(13)分区备份文件页面大小错误 DDE(14)快照文件索引没有找到,转存文件格式错误 DDE(15)错误的磁盘版本 快照版本和磁盘版本不匹配 1)普通工作站启动 这台工作站设定成了开机不删除工作站文件,然后做过超级工作站更新或者做过工作站转存

2)工作站转存 这台工作站启动过以后,做过超级工作站更新或者在其他工作站上做过工作站转存 3)还原 还原点的版本和磁盘版本不对应 /root/.xfetrash目录太大,占满了磁盘空间 xfe 文件管理器有个特性,可以指定删除文件时放到回收站里,也就是/root/.xfetrash目录, 关闭方法: 桌面-> 文件管理器-> Edit 菜单-> Preference -> Option 选项卡 第一项:Use trash can for file delete (safe delete) 把前面的打勾去掉 清空这个目录: 1)cd /root/.xfetrash rm -fr * 2)打开文件管理器,在Location中输入/root/.xfetrash,然后删除这个目录下面所有的文件 系统错误代码:Linux 0 = 成功

yaffs2文件系统制作

交叉编译器ARM-Linux-gcc4.1.2 开发板TX2440A Busybox-1.15.1.tar.bz2(在Linux中被称为瑞士军刀) mkyaffs2image工具 首先创建一个名字为root_2.6.31的文件夹,在其中创建如下文件夹 etc bin var dev home lib mnt proc root sbin sys tmp usr opt共14个文件夹 解压Busybox tar xjvf busybox 进入源目录,修改Makefile 第164行,CROSS_COMPILE=arm-linux- 第190行,ARCH=arm 执行#make men onfig进行配置 配置选项大部分都是保持默认的,只需要注意选择以下这几个选项,其他的选项都不用动:Busybox Setting---> Build Options---> [*]Build Busybox as a static binary(no shared libs) [*]Build with Large File Support(for accessing files>2GB) Installation Options--->

(./_install)Busybox installation prefix 进入这个选项,输入busybox的安装路径,如:../rootfs Busybox Library Tuning---> [*]vi-style line editing commands [*]Fancy shell prompts 要选择这个选项:“Fancy shell prompts”,否则挂载文件系统后,无法正常显示命令提示符:“[\u@\h\W]#” 配置完成以后 执行#make #make install 然后就会在上一级目录下生成rootfs文件夹,里面包含几个文件夹/bin/sbin/usr linuxrc 把这些文件全部复制到刚建好的root_2.6.31目录下, #cp–rf*../root_2.6.31 在dev目录下,创建两个设备节点: #mknod console c51 #mknod null c13 然后进入自己建立的etc目录 拷贝Busybox-1.15.2/examples/bootfloopy/etc/*到当前目录下。 #cp-r../../busybox-1.15.2/examples/bootfloopy/etc/*./ 包括文件:fstab init.d inittab profile

抖音上很潮很火的短句子

抖音上很潮很火的短句子 1、我说了所有的慌,你全都相信,简单的我爱你,你却老不信。 2、有些风景只能喜欢却不能收藏,就像有的人只适合遇见却不适合久伴一样。 3、我没什么能让你快乐,可我从来没想过让你难过。 4、当初我看上你,因为我脑子进水了,现在我脑子抖干了。 5、有时候我真想忘了你,只记得这个世界,然而,我常常忘了整个世界,只记得你。 6、忘掉昨天的烦恼。新的一天。用新的态度。来面对! 7、别来评价我的容貌,因为我不靠脸吃饭,别来评价我的德行,因为你不比我高尚。 8、照顾好自己,如果尚有余力,记得保护美好的东西,不畏不怖不怂不退不磨叽。 9、我们安慰别人的时候总是能说出一百个理由,而安慰自己却偏偏迷失了方向。 10、既许一人以偏爱,愿尽余生之慷慨。 11、茫茫人海,他们总是能寻寻觅觅地将目光定位到某个人身上,

将冗长无趣的仪式变成一场不足为外人道的独家记忆。 12、因为爱你,所以你想要的,哪怕是乱世春秋,我也给。 13、很多事,不是我想,就能做到;很多东西,不是我要,就能得到;很多人,不是我留,就能留住。所以,是我的终究是我的,不是我的,我懒得要。 14、时间可以治愈一颗受伤的心,同样也可以撕裂一颗等待的心。 15、如果两个人想好好的在一起,至少有一个人特别特别会忍。 16、这个世界就是这么奇怪:懂道理的人很多,讲道理的人很少。 17、光头强砍不到树,灰太狼吃不到羊,就像你永远不会爱我。 18、有时候觉得自己变丑了就拿出身份证,于是发现自己多虑了。 19、如果不是相互喜欢,你的痴情就是别人的负担,如果真的没在一起,你也别难过,也许他只是在你无聊的时候给了你一些陪伴,死缠烂打的样子特别丑,即使不舍。 20、如果我的人生是一部电影,你就是那弹出来的广告。 21、回不去的地方叫故乡,到不了的地方叫远方,多少人就这样,一直在路上。 22、不属于我的东西,紧握在手里,只会弄痛自己。 23、我们之间没了暧昧,依然有着相互的关心。我们之间没了关

黑莓手机错误代码详解 blackberry系统错误提示

黑莓手机错误代码详解 blackberry系统错误提示 希望国内的黑莓用户对黑莓手机出错提示有个很好的认识,从而来解决问题。 101 Previous startup failed 当jvm启动过程中,前一个启动的项目失败了,设备已经被重置。这个错误表明jvm 在启动时找到“启动进行中”这个标志位已经设置了,当前屏幕信息为:有意停止“系统继续重置”这个死循环,来纠正系统当前不正确的启动操作 102 Invalid code in filesystem 在文件系统中发现无效的代码。手持设备的系统检查.cod文件的变动时,在一些.cod 文件中检测到这个问题。他肯可能是表明生成过程中发生了错误,即在cod文件中存在一个有问题的签名。如果一些用户操作设备导致这个问题的发生,文件系统的代码被破坏,复位的周期将是连续循环的。唯一的恢复方法是擦去设备并且恢复一个新的系统。 103 Cannot find starting address 找不到启动的地址,用于启动系统的引导cod文件找不到。这个错误表明一个用于引导系统的cod文件没有安装到设备上,或者格式不正确。 104 Uncaught: 非预期:《java模块名》jvm诊断出一个非预期的java代码异常错误抛出,程序可以继续执行,或者手持设备可以用桌面管理器连是USB线安装一个程序调试器来查看这些错误信息。事件日志里应该包含了异常错误的信息 105 Example, DbRecSize( %d ) -> %d 举例,DbRecSize( %d ) -> %d文件系统API已经为一种特定的操作返回一种错误状态码,他可能表明在jvm上存在一个无效的或者错误的文件系统 106 Graphics system error 图形系统错误,在设备的图形系统里一个错误发生并被检测到 107 operator new() called 在jvm里,操作new()回调一个c++类,该函数代码没有被正确的从VMRamObject对象来继承,新操作符需要被正确的继承。提取当前的(-后复位)的BUGDISP 108 operator delete() called 在jvm里,操作delete

linux-2.6.18移植

Linux-2.6.18移植 有了我们的交叉编译环境和我们先前学的内核基础知识,下面我们就开始我们的内核移植了,我们所用的是博创的 S3C2410 。 关于 linux-2.6.18.tar.bz2 的下载网站先前我们说过,我们要先到该官方网站上去下载一个全新的内核。 [root@Binnary ~ ]# tar –jxvf linux-2.6.18.tar.bz2 [root@Binnary ~ ]# make mrproper 如果你是新下载的内核,那这一步就不用了。但如果你用的是别人移植好的内核,那最好在编译内核之前先清除一下中间文件,因为你们用来编译内核的交叉编译工具可能不同。 第一步:修改Makefile文件 将 改为 第二步:修改分区设置信息 我们要先在BootLoader中查看相应的分区信息 vivi>help 然后修改内核源码中的分区信息。分区信息文件在 a rch/arm/mach-s3c2410/common-smdk.c 将其中的

改为如下内容:

第三步:内核通过 BootLoader把数据写入NAND Flash,而vivi的ECC效验算法和内核的不同,内核的效验码是由NAND Flash控制器产生的,所以在此必须禁用NAND Flash ECC。所以我们就要修改 drivers/mtd/nand/s3c2410.c 这个文件。将 中的 chip->ecc.mode = NAND_ECC_SOFT ,改为如下 chip->ecc.mode = NAND_ECC_NONE。

只此一处。 第四步:下面是devfs的问题,因为2.6.12内核以后取消了devfs的配置选项,缺少了它内核会找不到mtdblock设备。所以我们需要修改 fs/Kconfig 文件,或者是从2.6.12的fs/Kconfig中拷贝下面几项到2.6.18的fs/Kconfig中去,我们采用修改的方法来完成。 修改 fs/Kconfig支持devfs 。 在Pseudo filesystems 主菜单的最后添加我们所要的内容。 第五步:文件系统的支持 Yaffs 文件系统 YAFFS文件系统简介 YAFFS,Yet Another Flash File System,是一种类似于JFFS/JFFS2的专门为Flash设计 的嵌入式文件系统。与JFFS相比,它减少了一些功能,因此速度更快、占用内存更少。 YAFFS和JFFS都提供了写均衡,垃圾收集等底层操作。它们的不同之处在于: (1)、JFFS是一种日志文件系统,通过日志机制保证文件系统的稳定性。YAFFS仅仅 借鉴了日志系统的思想,不提供日志机能,所以稳定性不如JAFFS,但是资源占用少。 (2)、JFFS中使用多级链表管理需要回收的脏块,并且使用系统生成伪随机变量决定 要回收的块,通过这种方法能提供较好的写均衡,在YAFFS中是从头到尾对块搜索, 所以在垃圾收集上JFFS的速度慢,但是能延长NAND的寿命。 (3)、JFFS支持文件压缩,适合存储容量较小的系统;YAFFS不支持压缩,更适合存 储容量大的系统。 YAFFS还带有NAND芯片驱动,并为嵌入式系统提供了直接访问文件系统的API,用 户可以不使用Linux中的MTD和VFS,直接对文件进行操作。NAND Flash大多采用 MTD+YAFFS的模式。MTD( Memory Technology Devices,内存技术设备)是对Flash 操作的接口,提供了一系列的标准函数,将硬件驱动设计和系统程序设计分开。 Yaffs 文件系统内核没有集成,可以对其主页下载: https://www.wendangku.net/doc/3d8874419.html,/cgi-bin/viewcvs.cgi/#dirlist

struts2 实验报告

1.系统分析与设计 1.1 系统功能描述 本系统是个非常简单的注册、登录系统。本系统的实现是基于Struts2、Spring、Hibernate 三个框架,系统功能单一,业务逻辑简单。 当用户注册信用户时,就是向系统中增加一个新用户,对应的数据库增加一条记录。 当用户输入注册信息时,系统提供了基本的输入验证判断用户输入是否合法,只有当用户输入满足基本输入要求时,才会被提交到实际的登录系统,进行实际的登录处理。 系统还使用了随机产生的图形验证码来防止刷新,防止用户通过单击浏览器的书安心按钮来重复注册多个用户。 系统还提供了一种Ajax方式来验证用户输入的注册名是否有效,系统要求所有的用户名不能重复。故当用户输完用户名后,系统立即在页面上方提示用户该用户名是否可用,如果系统中没有该用户名,则系统提示该用户名可用;否则提示用户该用户名重复,用户必须重新选择用户名注册。 当用户注册一个新用户名之后,就可以使用系统的登录功能来登录系统了,用户输入登录用的用户名、密码后,系统一样提供了基本的输入校验。 除此之外,系统还采用了随机产生图形验证码来防止恶意用户的暴力破解,系统随机生成一个图形验证码,而用户登录必须输入图形验证码中显示的字符串,只有用户输入的字符串和系统随机生成的验证码字符相同时,系统才允许用户登录。 1.2 系统功能流程

1.3 数据库设计 相关的映射文件: 一旦提供了上面的映射文件,Hibernate 就可以理解User 和user_table 之间的对应关系。 2.系统实现与测试 2.1 系统采用的关键技术 MVC 框架采用了Struts2框架,Struts2框架的易用性,极好的简化了系统的MVC 层的实现;本系统使用了Struts2的JSON 插件来完成Ajax 功能,除此之外本系统为了避免进行底层的Ajax 交互,还是用了一个简单Prototype.js 函数库,用以简化Ajax 编程。Struts2框架的稳定性,为系统的稳定运行提供了保证。

值得欣赏的经典句子

1、如果有来生,我要做一棵树,站成永恒,没有悲欢的姿势。一半在土里安详,一半在风里飞扬,一半洒落阴凉,一半沐浴阳光,非常沉默,非常骄傲,从不依靠,从不寻找。 2、一个成熟的人往往发觉可以责怪的人越来越少,人人都有他的难处。 3、时光静好,与君语;细水流年,与君同;繁华落尽,与君老。 4、自爱、沉稳、而后爱人。 5、真正的才华如火焰般难以收藏,总会燎原。 6、美是一种态度,与年龄无关。 7、一个不欣赏自己的人,是难以快乐的 8、你若安好,便是晴天。 9、人生如果错了方向,停止就是进步。 10、低头要有勇气,抬头要有底气。 11、微小的幸福就在身边,容易满足就是天堂。 12、心若没有栖息的地方,到哪里都是在流浪。 13、漂亮只能为别人提供眼福,却不一定换到幸福。 14、人,长的漂亮不如活的漂亮。 15、每一种创伤,都是一种成熟。 16、旋转木马是最残忍的游戏,彼此追逐却有永恒的距 离。

17、因为懂得,所以慈悲。 18、死生契阔,与子成悦,执子之手,与子偕老。 19、一个知己就好象一面镜子,反映出我们天性中最优美 的部分。 20、不要总是羡慕别人的美好,要用心经营自己的幸福。 21、人生这部大戏,一旦拉开序幕,不管你如何怯场,都 得演到戏的结尾。 22、再长的路,一步步也能走完,再短的路,不迈开双脚 也无法到达。 23、为别人鼓掌的人也是在给自己的生命加油。 24、失败是什么?没有什么,只是更走近成功一步;成功 是什么?就是走过了所有通向失败的路,只剩下一条 路,那就是成功的路。 25、生气是拿别人做错的事来惩罚自己。 26、发光并非太阳的专利,你也可以发光。 27、奋斗没有终点,任何时候都是一个起点。 28、做人凡事要静;静静地来,静静地去,静静努力,静 静收获,切忌喧哗。 29、永远不要解释,做过的事,要有勇气承担。 30、不正式上路,永远达不到目的地。 31、人与人之间,无论何种关系,都是远些安全。 32、有得有失,才是人生,切忌忿忿不平。

debug灯常见的错误代码含义如下

常见的错误代码含义如下: 1、“C1”内存读写测试,如果内存没有插上,或者频率太高,会被BIOS认为没有内存条,那么POST就会停留在“C1”处。 2、“0D”表示显卡没有插好或者没有显卡,此时,蜂鸣器也会发出嘟嘟声。 3、“2B”测试磁盘驱动器,软驱或硬盘控制器出现问题,都会显示“2B”。 4、“FF”表示对所有配件的一切检测都通过了。但如果一开机就显示“FF”,这并不表示系统正常,而是主板的BIOS出现了故障。导致的原因可能有:CPU没插好,CPU核心电压没调好、CPU频率过高、主板有问题等。 实战DEBUG灯——Award BIOS篇] DEBUG灯的使用也很简单,下面针对几种常见的故障代码和大家讨论一下解决问题的方法。需说明的是,目前市场上的主板绝大部分使用的是AWARD BIOS或AMI BIOS,由于目前DEBUG 灯实际上是调用了主板BIOS的自检过程,所以主板BIOS程序的不同,DEBUG灯显示的代码也不同,解决问题的方法也不可一概而论。因此我们也将分两个部分讨论。 以下的说明中将选择最常见的故障代码及解决方法,至于其他更详细的代码含义,请读者参考DEBUG灯的说明手册。 1. Award BIOS篇 错误代码:00(FF) 代码含义:主板没有正常自检 解决方法:这种故障较麻烦,原因可能是主板或CPU没有正常工作。一般遇到这种情况,可首先将电脑上除CPU外的所有部件全部取下,并检查主板电压、倍频和外频设置是否正确,然后再对CMOS进行放电处理,再开机检测故障是否排除。如故障依旧,还可将CPU从主板上的插座上取下,仔细清理插座及其周围的灰尘,然后再将CPU安装好,并加以一定的压力,保证CPU与插座接触紧密,再将散热片安装妥当,然后开机测试。如果故障依旧,则建议更换CPU测试。另外,主板BIOS损坏也可造成这种现象,必要时可刷新主板BIOS后再试。

Yaffs2文件系统中对NAND Flash磨损均衡的改进

Yaffs2文件系统中对NAND Flash磨损均衡的改进 摘要:针对以NAND Flash为存储介质时Yaffs2文件系统存在磨损均衡的缺陷,通过改进回收块选择机制,并在数据更新中引入冷热数据分离策略,从而改善NAND Flash的磨损均衡性能。实验借助Qemu软件建立Linux嵌入式仿真平台,从总擦除次数、最大最小擦除次数差值和块擦除次数标准差等方面进行对比。实验结果表明,在改进后的Yaffs2文件系统下NAND Flash的磨损均衡效果有明显提升,这有益于延长NAND Flash的使用寿命。 关键词: Yaffs2文件系统;NAND Flash;垃圾回收;冷热数据 0 引言 NAND Flash存储设备与传统机械磁盘相比,具有体积小、存储密度高、随机存储和读写能力强、抗震抗摔、功耗低等特点[1]。它被广泛用于智能手机、车载智能中心、平板电脑等智能终端中。近年来,以NAND Flash为存储介质的固态硬盘也得到越来越多的应用。目前Yaffs2文件系统(Yet Another Flash File System Two,Yaffs2)[1]是使用最多、可移植性最好的专用文件系统,在安卓、阿里云OS、Linux等嵌入式系统中都有使用。在Yaffs2文件系统下以NAND Flash为存储介质时存在磨损均衡的缺陷,可通过对回收块选择机制作改进和引入冷热数据分离策略来提高磨损均衡的效果。 1 Yaffs2和Nand Flash关系 这里以使用最多的Linux操作系统为实践,将Yaffs2文件系统移植到Linux操作系统中。Linux系统通常可以分为3层:应用层、内核层和设备层,其中支持NAND Flash设备的Yaffs2文件系统属于内核层,。 最上层用户应用程序通过VFS(Virtual File System)提供的统一接口,将数据更新等文件操作传递给Yaffs2。VFS代表虚拟文件系统,它为上层应用提供统一的接口。有了这些接口,应用程序只用遵循抽象后的访问规则,而不必理会底层文件系统和物理构成上的差异。然后Yaffs2通过MTD(Memory Technology Device)提供的统一访问接口对NAND Flash进行读、写和擦除操作,从而完成数据的更新或者存储操作。MTD代表内存技术设备,它为存储设备提供统一访问的接口。最终,在NAND Flash上以怎样的格式组织和存储数据由Yaffs2文件系统决定。 NAND Flash由若干块(block)组成,每个块又是由若干页(page)组成,页中含有数据区和附加区。NAND Flash的页根据状态不同,可以分为有效页、脏页、空闲页。有效页中存放有效数据,脏页中存放无效数据,空闲页是经过擦除后可以直接用于写入数据的页。NAND Flash在写入数据前需要执行擦除操作,因此数据不能直接在相同的位置更新。当一个页中数据需要更新时,必须将该页中有效数据拷贝到其他空闲页上再更新,并将原来页上的数据置为无效。随着时间的推移,许多无效页累积在存储器中使得空闲页逐渐减少。当存储器中的空闲空间不足时,启动垃圾回收操作,利用回收块选择机制从待回收块中选取满足要求的块来擦除,从而得到足够的空闲空间。NAND Flash中块的擦除次数有限,通常为10 000次~100 000次[2]。当某个块的擦除次数超过使用寿命时,该块将无法正常用于数据存储。因此,垃圾回收应利用合理的回收块选择机制,从待回收块中找到回收后能产生良好磨损均衡效果且付出较少额外代价的块来回收,从而获得足够的空闲空间用于数据更新操作。 2 Yaffs2在磨损均衡方面的缺陷 Yaffs2中回收块的选择机制[3]是从待回收块中找到有效数据最少的块来回收。回收过程中,Yaffs2能够减少有效数据的额外读和写操作。当数据更新处于均匀分布的情况下,Yaffs2表现出较好的磨损均衡效果。 但是,通常情况下数据的更新频率不同,有些数据经常更新,而有些数据很少更新。经

如何看懂源代码--(分析源代码方法)

如何看懂源代码--(分析源代码方法) 4 推 荐 由于今日计划着要看Struts 开源框架的源代码 昨天看了一个小时稍微有点头绪,可是这个速度本人表示非常不满意,先去找了下资 料, 觉得不错... 摘自(繁体中文 Traditional Chinese):http://203.208.39.132/translate_c?hl=zh-CN&sl=en&tl=zh-CN&u=http://ww https://www.wendangku.net/doc/3d8874419.html,/itadm/article.php%3Fc%3D47717&prev=hp&rurl=https://www.wendangku.net/doc/3d8874419.html,&usg=AL kJrhh4NPO-l6S3OZZlc5hOcEQGQ0nwKA 下文为经过Google翻译过的简体中文版: 我们在写程式时,有不少时间都是在看别人的代码。 例如看小组的代码,看小组整合的守则,若一开始没规划怎么看,就会“噜看噜苦(台语)”不管是参考也好,从开源抓下来研究也好,为了了解箇中含意,在有限的时间下,不免会对庞大的源代码解读感到压力。网路上有一篇关于分析看代码的方法,做为程式设计师的您,不妨参考看看,换个角度来分析。也能更有效率的解读你想要的程式码片段。 六个章节: ( 1 )读懂程式码,使心法皆为我所用。( 2 )摸清架构,便可轻松掌握全貌。( 3 )优质工具在手,读懂程式非难事。( 4 )望文生义,进而推敲组件的作用。( 5 )找到程式入口,再由上而下抽丝剥茧。( 6 )阅读的乐趣,透过程式码认识作者。 程式码是别人写的,只有原作者才真的了解程式码的用途及涵义。许多程式人心里都有一种不自觉的恐惧感,深怕被迫去碰触其他人所写的程式码。但是,与其抗拒接收别人的程式码,不如彻底了解相关的语言和惯例,当成是培养自我实力的基石。 对大多数的程式人来说,撰写程式码或许是令人开心的一件事情,但我相信,有更多人视阅读他人所写成的程式码为畏途。许多人宁可自己重新写过一遍程式码,也不愿意接收别人的程式码,进而修正错误,维护它们,甚至加强功能。 这其中的关键究竟在何处呢?若是一语道破,其实也很简单,程式码是别人写的,只有原作者才真的了解程式码的用途及涵义。许多程式人心里都有一种不自觉的恐惧感,深怕被迫去碰触其他人所写的程式码。这是来自于人类内心深处对于陌生事物的原始恐惧。 读懂别人写的程式码,让你收获满满 不过,基于许多现实的原因,程式人时常受迫要去接收别人的程式码。例如,同事离职了,必须接手他遗留下来的工作,也有可能你是刚进部门的菜鸟,而同事经验值够了,升级了,风水轮流转,一代菜鸟换菜鸟。甚至,你的公司所承接的专案,必须接手或是整合客户前一个厂商所遗留下来的系统,你们手上只有那套系统的原始码(运气好时,还有数量不等的文件)。 诸如此类的故事,其实时常在程式人身边或身上持续上演着。许多程式人都将接手他人的程式码,当做一件悲惨的事情。每个人都不想接手别人所撰写的程式码,因为不想花时间去探索,宁可将生产力花在产生新的程式码,而不是耗费在了解这些程式码上。

2020励志语录经典短句100句

2020励志语录经典短句100句小编始终相信“天生我才必有用”。我要继续奋斗,展示自己的才能,努力成为新世纪的优秀人才。做人就是如此,下面是小编收集整理的句子,希望对大家有所帮助,欢迎阅读。 1、要想成为强者,决不能绕过挡道的荆棘,也不能回避风雨的冲刷。 2、意志力是人的一条救生索,它能够帮忙我们脱离困境,引导我们走向胜利。 3、没有不会做的事,只有不想做的事。 4、一份信心,一份努力,一份成功;十分信心,十分努力,十分成功。 5、过错是暂时的遗憾,而错过则是永远的遗憾! 6、撑不住的时候能够说“我好累”,但永远不要说“我不行”。 7、如果敌人让你生气,那说明你没有胜他的把握。 8、人生就像赛跑,不在乎你是否第一个到达尽头,而在乎你有没有跑完全程。 9、任何的限制,都是从自己的内心开始的。 10、希望,只有和勤奋作伴,才能如虎添翼。 11、遇到困难时不要抱怨,既然改变不了过去,那么就努力改变未来。 12、顽强的毅力能够征服世界上任何一座高峰。 13、行动不必须带来快乐,而无行动则决无快乐。

14、学问二字,须要拆开看,学是学,问是问光阴易逝,岂容我待。 15、成功之前我们要做就应做的事情,成功之后我们才能够做喜欢做的事情。 16、如果放弃太早,你永远都不知道自己会错过什么。 17、不做任何人的公主,只做自己的女王。收起无谓的委屈,收起不需的眼泪,此刻起只做自己的女王。 18、奋斗的双脚在踏碎自己的温床时,却开拓了一条创造之路。 19、方向比速度重要,智慧比吃苦重要,学习比学历重要,机遇比关系重要,要什么比做什么重要! 20、每一个闪闪发光的人都在背后熬过了一个又一个不为人知的黑夜。 21、只要更好,不求最好!奋斗是成功之父。 22、什么都能够舍弃,但不可舍弃快乐;什么都能够输掉,但不可输掉笑容。 23、现实很近又很冷,梦想很远却很温暖。 24、不要活在过去的阴影里,把每一天当作人生的新一天,生活才会多彩多姿。 25、不要让追求之舟停泊在幻想的港湾,而应扬起奋斗的风帆,驶向现实生活的大海。 26、太阳虽有黑点,却在奋力燃烧中树立了光辉的形象。 27、做对的事情比把事情做对重要。 28、自己打败自己是最可悲的失败,自己战胜自己是最可贵

2-Linux

Linux-2.6.32.2内核在mini2440上的移植(二)---yaffs2文件系统移植 移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容) 2.1, yaffs2文件系统移植 【1】获取yaffs2 源代码 现在大部分开发板都可以支持yaffs2 文件系统,它是专门针对嵌入式设备,特别是使用nand flash 作为存储器的嵌入式设备而创建的一种文件系统,早先的yaffs 仅支持小页(512byte/page)的nand flash,现在的开发板大都配备了更大容量的nand flash,它们一般是大页模式的(2K/page),使用yaffs2 就可以支持大页的nand flash,下面是yaffs2 的移植详细步骤。 在https://www.wendangku.net/doc/3d8874419.html,/node/346可以下载到最新的yaffs2 源代码,需要使用git工具( 安装方法见Git版本控制软件安装与使用),在命令行输入: [root@localhost ~]# cd ./linux-test [root@localhost linux-test]# git clone git://https://www.wendangku.net/doc/3d8874419.html,/ya ffs2 Cloning into yaffs2... remote: Counting objects: 6592, done. remote: Compressing objects: 100% (3881/3881), done. remote: Total 6592 (delta 5237), reused 3396 (delta 2642) Receiving objects: 100% (6592/6592), 3.34 MiB | 166 KiB/s, d one. Resolving deltas: 100% (5237/5237), done.

Struts2的工作机制原理分析及实例

Struts2的工作机制分析及实例 一、概述 本章讲述Struts2的工作原理。 读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过。实际上Struts1.x 与Struts2并无我们想象的血缘关系。虽然Struts2的开发小组极力保留Struts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同。 Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork 的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在WebWork基础之上的Struts2是一个运行稳定、性能优异、设计成熟的WEB框架。 本章主要对Struts的源代码进行分析,因为Struts2与WebWork的关系如此密不可分,因此,读者需要下载xwork的源代码,访问https://www.wendangku.net/doc/3d8874419.html,/xwork/download.action即可自行下载。 下载的Struts2源代码文件是一个名叫struts-2.1.0-src.zip的压缩包,里面的目录和文件非常多,读者可以定位到 struts-2.1.0-src\struts-2.0.10\src\core\src\main\java目录下查看Struts2的源文件,如图14所示。 (图14) 二、主要的包和类 Struts2框架的正常运行,除了占核心地位的xwork的支持以外,Struts2本身也提供了许多类,这些类被分门别类组织到不同的包中。从源代码中发现,基本上每一个Struts2类都访问了WebWork提供的功能,从而也可以看出Struts2与WebWork千丝万缕的联系。但无论如何,Struts2的核心功能比如将请求委托给哪个Action处理都是由xwork完成的,Struts2只是在WebWork 的基础上做了适当的简化、加强和封装,并少量保留Struts1.x中的习惯。

Windows事件查看器事件代码详解

0 操作成功完成。 1 函数不正确。 2 系统找不到指定的文件。 3 系统找不到指定的路径。 4 系统无法打开文件。 5 拒绝访问。 6 句柄无效。 7 存储控制块被损坏。 8 存储空间不足,无法处理此命令。 9 存储控制块地址无效。 10 环境不正确。 11 试图加载格式不正确的程序。 12 访问码无效。 13 数据无效。 14 存储空间不足,无法完成此操作。 15 系统找不到指定的驱动器。 16 无法删除目录。 17 系统无法将文件移到不同的驱动器。 18 没有更多文件。 19 介质受写入保护。 20 系统找不到指定的设备。 21 设备未就绪。 22 设备不识别此命令。 23 数据错误(循环冗余检查)。 24 程序发出命令,但命令长度不正确。 25 驱动器找不到磁盘上特定区域或磁道。 26 无法访问指定的磁盘或软盘。 27 驱动器找不到请求的扇区。 28 打印机缺纸。 29 系统无法写入指定的设备。 30 系统无法从指定的设备上读取。 31 连到系统上的设备没有发挥作用。 32 另一个程序正在使用此文件,进程无法访问。 33 另一个程序已锁定文件的一部分,进程无法访问。 36 用来共享的打开文件过多。 38 已到文件结尾。 39 磁盘已满。 50 不支持请求。 51 Windows 无法找到网络路径。请确认网络路径正确并且目标计算机不忙或已关闭。如果 Windows 仍然无法找到网络路径,请与网络管理员联系。 52 由于网络上有重名,没有连接。请到“控制面板”中的“系统”更改计算机名,然后重试。 53 找不到网络路径。 54 网络很忙。

55 指定的网络资源或设备不再可用。 56 已达到网络 BIOS 命令限制。 57 网络适配器硬件出错。 58 指定的服务器无法运行请求的操作。 59 出现了意外的网络错误。 60 远程适配器不兼容。 61 打印机队列已满。 62 服务器上没有储存等待打印的文件的空间。 63 已删除等候打印的文件。 64 指定的网络名不再可用。 65 拒绝网络访问。 66 网络资源类型不对。 67 找不到网络名。 68 超出本地计算机网络适配器卡的名称限制。 69 超出了网络 BIOS 会话限制。 70 远程服务器已暂停,或正在启动过程中。 71 已达到计算机的连接数最大值,无法再同此远程计算机连接。 72 已暂停指定的打印机或磁盘设备。 80 文件存在。 82 无法创建目录或文件。 83 INT 24 上的故障。 84 无法取得处理此请求的存储空间。 85 本地设备名已在使用中。 86 指定的网络密码不正确。 87 参数不正确。 88 网络上发生写入错误。 89 系统无法在此时启动另一个进程。 100 无法创建另一个系统信号灯。 101 另一个进程拥有独占的信号灯。 102 已设置信号灯,无法关闭。 103 无法再设置信号灯。 104 无法在中断时请求独占的信号灯。 105 此信号灯的前一个所有权已结束。 107 由于没有插入另一个软盘,程序停止。 108 磁盘在使用中,或被另一个进程锁定。 109 管道已结束。 110 系统无法打开指定的设备或文件。 111 文件名太长。 112 磁盘空间不足。 113 没有更多的内部文件标识符。 114 目标内部文件标识符不正确。 117 应用程序发出的 IOCTL 调用不正确。 118 验证写入的切换参数值不正确。 119 系统不支持请求的命令。

Struts2考试题分析

题目1 以下不届丁 Struts2中result 的type 届性() ? A. action B. redirect 题目2 下歹0有关拦截器说法错误的是? 「A.struts 通过拦截器完成执行action 请求处理方法前一系歹U 操作。例如: 数据封装、文件上传、数据校验等 'B.在struts 中,直接访问jsp 页面,struts 将使用默认拦截器栈处理当前 请求。 厂C.在执行action 时,struts 将执行若干拦截器1、2、3,执行action 完成 后,将继续执行拦截器3、2、1 'D.默认情况,在一个action 没有配置拦截器的引用,说明当前action 将不 使用拦截器 题目3 以下哪些是Action 接口提供的返回值? W A A. success ,D B. none C. error 财 D.input 题目4 如果要实现struts2的数据检验功能 广A 普通的Action 类可以实现 C. redirectAction D. dispatcher

「B继承自Action接口的可以实现 面C继承自ActionSupport类可以实现 厂D继承自ActionValidate 类可以实现 题目5 struts2默认的处理结果类型是: ? A.dispatcher ' B.redirect 「C.chain D. forward 题目6 在值栈的上下文Context中,存在一些固定的key表示不同的对象,以下描述正确的是? A. request,表示request作用域的数据 'B.session,表示session 作用域的数据 阿 C.application ,表示application 作用域的数据 * D.parameters ,表示请求参数的所有数据 题目7 以下届丁struts2配置文件中的配置元素是:()多选) A. B. 厂 C. 厂 D.

相关文档
相关文档 最新文档