如何处理分页,最牛面试者如此回答

(一)

1. 分页的页数计算.

2. 数据库的差异, 并介绍常用数据库分页方式.

3. ORM框架支持的统一分页

4. 分页相关的框架.

5. 前台分页和后台分页区别.

6. 分页模型的封装.

7. 通过分页模型封装, 封装出一个分页搜索的接口.

(二)

比如在 util 下写到个公共类 PageBean  然后在到里面写道
私有的 数字型 总记录数、总页数、当前页、每页显示记录数、上一页、下一页
在到LIST集合里写上 每页的集合 在里面写个方法
在到ACTION 里调用FORM跟这个方法,给它总记录当前页数以及你自己的方法
然后在
request.setAttribute("XX",XX );
return mapping.findForward("XXX")
页面调用ACTION 如XX.什么什么 的 就可以了

(三)

通常是封装一个分页对象,记录当前分页的状态,比如当前第几页,每页多少条,一共多少条,当页显示多少条等等,然后所有的从页面到数据库的操作,都是对这个对象的设置和读取而已,这个对象要良好的设计,要隐藏各字段的set方法,只暴露get方法和一个总的设置方法如setTotalRecords()方法,通过对总记录数的设置,自动计算其它字段的值,不要让用户可以自己设置各字段的值。

(四)

X86的分页机制和相应系统结构
  32bits的线性地址空间可以直接映射到物理地址空间,也可以间接映射到许多小块的物理空间(磁盘存储空间)上。这种间接映射方式就是分页机制。X86可用页大小为4KB、2MB和4MB(2MB和4MB只能在Pentium和Pentium Pro处理器中使用,本文中限定采用4KB页)。
  在分页机制,X86使用了四种数据结构:
  · 页目录项(PDE,Page Directory Entry):32bits结构,高20bits为页表基地址(物理地址),以4KB为递增单位,低12bits为页表属性,具体换算参见后面初始化部分;
  · 页目录(Page directory):存储页目录项,位于一页中,总共可容纳1024个页目录项;
  · 页表项(PTE,Page Table Entry):32bits结构,高20bits为页基地址(物理地址),低12bits为页属性;
  · 页表(Page table):存储页表项,位于一页中,总共可容纳1024个页表项;
  · 页(Page):4KB的连续地址空间;
  为了实现分页机制和提高地址转换的效率,X86提供和使用了如下的硬件结构:
  · 页标志位(PG,Page):该标志位为1,说明采用页机制;实际就是控制寄存器CR0的第31bit;
  · 页缓存/快表(TLBs,Translation Lookaside Buffers):存储最近使用的PDE和PTE,以提高地址转换的效率;
  · 页目录基地址寄存器(PDBR,Page Directory Base Register):用于存储页目录的基地址(物理地址),实际就是控制寄存器CR3;
  为了实现将线性地址映射到物理地址,X86将32bits线性地址解释为三部分:第31bit到第22bit为页目录中的偏移,用于索引页目录项(得到对应页表的基地址);第21bit到第12bit为页表中的偏移,用于索引页表项(得到对应页的基地址);第11bit到第0bit为页中的偏移。这样,通过两级索引和页中的偏移量,最后能正确得到线性地址对应的物理地址。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值