标签: paging

分页SQL Server 2005结果

如何在SQL Server 2005中分页结果?

我在SQL Server 2000中尝试过,但没有可靠的方法来做到这一点.我现在想知道SQL Server 2005是否有任何内置方法?

我的意思是,例如,如果我按用户名列出用户,我希望能够只返回前10个记录,然后是接下来的10个记录,依此类推.

任何帮助将非常感激.

sql paging sql-server-2005

39
推荐指数
3
解决办法
6767
查看次数

计算页面大小

我正在阅读页面表的示例,只是发现了这个:

考虑具有32位逻辑地址空间的系统.如果此类系统中的页面大小为4 KB(2 ^ 12),则页表可能包含最多100万个条目(2 ^ 32/2 ^ 12).假设每个条目由4个字节组成,每个进程可能只需要4 MB的物理地址空间.

我真的不明白这4MB结果代表什么.它是否代表实际页表占用的空间?

paging memory-management

37
推荐指数
4
解决办法
7万
查看次数

多级页表如何节省内存空间?

我试图了解多级页表如何节省内存.根据我的理解,多级页表总共消耗比单级页表更多的内存.

示例:考虑页面大小为64KB且32位处理器的内存系统.页表中的每个条目都是4个字节.

单级页表:表示页面偏移需要16(2 ^ 16 = 64KB)位.所以休息16位用于索引到页表.所以

*页面大小= 2 ^ 16(页数)*4字节(每页表项的大小)= 2 ^ 18字节*

多级页表:在两级页表的情况下,让我们使用前10个最高位来索引到第一级页表.接下来10位索引到第二级页表,其具有页码到帧号映射.其余12位表示页面偏移量.

第二级页表的大小= 2 ^ 10(条目数)*4字节(每个条目的大小)= 4 KB

所有二级页表的总大小= 2 ^ 10(二级页表的数量)*4KB(每个二级页表的大小)= 4 MB

第一级页表的大小= 2 ^ 10(条目数)*(10/8)字节(每个条目的大小)= 1.25 KB

存储第一级和第二级页表所需的总内存= 4 MB + 1.25 KB

因此我们需要更多内存来存储多级页表.

如果是这种情况,多级页表如何节省内存空间?

memory paging operating-system virtual-memory page-tables

37
推荐指数
2
解决办法
4万
查看次数

了解虚拟地址,虚拟内存和分页

我一直在学习这些主题并阅读了许多文章和书籍,但他们都缺乏一些补充信息,让我更加困惑.所以在这里,我想在我提出问题时解释我所知道的.希望这个主题对我这样的人有用.如果有必要,我还想学习我的知识和更正的有效性.

虚拟内存

有些文章说"虚拟内存是硬盘的一些空间,模拟物理内存,这样我们就可以拥有比实际更多的内存." 其他一些文章说"虚拟内存是物理内存(RAM)的组合,硬盘的一部分就像物理内存和页面表."然而它们是不同的东西,我不明白为什么有这样的不同解释.

让我们来看第二个解释,因为维基百科也是如何描述虚拟内存的.此时虚拟地址是有意义的,因为我们直接使用虚拟内存中的地址而不是物理内存.

顺便说一句,我的Mac说我有8GB的物理内存和8GB的虚拟内存.在这种情况下,VM是否包含物理内存,还是HD用作内存的空间量?我的程序有16GB内存吗?

在此输入图像描述

问题1:

Intel i5具有36位地址总线,这意味着您可以寻址64GB内存.假设我在我的电脑上安装了4GB RAM.但是,我的程序可能不知道所安装内存的大小,因为它将在具有不同内存大小的许多不同系统上使用.这就是虚拟内存变得方便的地方.它抽象出安装的内存的实际大小.

但是,当我的程序想要访问内存地址0xFFFFFFFFF时会发生什么?我只安装了4GB,也许还有一些高清内存空间.

我对这个问题有两个理论:

1.由于页面表由操作系统维护,操作系统对该地址进行解码,找出哪个页面并检查页面表中的页面,看看它们是否有与之关联的物理地址(有效和无效标志),如果是然后转到虚拟地址中定义的物理内存+偏移量中的页面入口点的物理地址并带来该值.否则会发生页面错误,操作系统在辅助存储中查找该页面,获取它并将其放入内存并更新页面表.

2.它抛出OutOfMemory类型的异常,表示我没有任何给定地址可以解决的内存.

第一个理论的缺点是当程序想要使用64GB内存时会发生什么?然后我们需要有60GB的高清内存空间,因为我们只有4GB.但是,在屏幕截图下面MAC告诉我,只有8GB的虚拟内存.

问题2:

进程如何放入虚拟内存?我的意思是每个进程都有可用的0x0 - 0xFFFFFFFFF虚拟内存空间,或者只有一个虚拟内存地址空间可以放置所有进程吗?

如果每个进程都假定它们具有可用的所有内存,则内存如下所示:

在此输入图像描述

如果只有一个虚拟内存概念,那么它将如下所示:

在此输入图像描述

页表

因此,页表是位于物理地址和虚拟地址之间的数据结构.它是一个关联数组(或类似字典),对于每个页面(键),都有一个物理地址关联(值).

OS使用MMU(内存管理单元)执行从虚拟地址到物理地址的转换.

在此输入图像描述

问题3:

是否有一个巨大的巨型页面表,其中包含每个进程的所有页面,或者每个进程都有自己的页面表?

分页

分页是一种内存管理方法.虚拟内存和物理内存由内存管理单元分为页面(固定和相同大小的块).当您在内存和辅助存储之间交换页面时,此技术非常有用,以便您可以在它们之间交换页面.例如,您的程序请求位于地址中的数据.但是,程序使用的地址是虚拟地址,MMU使用页表对其进行转换.在此期间,MMU检查页表是否在页表中存在所请求的内容,如果不是,则OS从辅助存储器获取它并更新页表.

问题4:

假设一个进程从一个地址请求数据,该地址被转换为已经有一些数据的物理地址.如何知道数据不属于请求者进程,应该替换为辅助存储中的数据?

例如,有脏位用于是否将该页面写回硬盘,但我不认为这是决定所有者进程的原因.

paging virtual-memory virtual-address-space

36
推荐指数
2
解决办法
1万
查看次数

Spring Data JPA中的分页(限制和偏移)

我希望用户能够在我的查询方法中指定限制(返回的数量的大小)和偏移量(返回的第一个记录/返回的索引).

这是我没有任何分页功能的类.我的实体:

@Entity
public Employee {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;

    @Column(name="NAME")
    private String name;

    //getters and setters
}
Run Code Online (Sandbox Code Playgroud)

我的存储库:

public interface EmployeeRepository extends JpaRepository<Employee, Integer> {

    @Query("SELECT e FROM Employee e WHERE e.name LIKE :name ORDER BY e.id")
    public List<Employee> findByName(@Param("name") String name);
}
Run Code Online (Sandbox Code Playgroud)

我的服务界面:

public interface EmployeeService {

    public List<Employee> findByName(String name);
}
Run Code Online (Sandbox Code Playgroud)

我的服务实施:

public class EmployeeServiceImpl {

    @Resource
    EmployeeRepository repository;

    @Override
    public List<Employee> findByName(String name) {
        return repository.findByName(name);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我尝试提供支持偏移和限制的分页功能.我的实体类保持不变.

我的"新"存储库包含一个可分页的参数:

public interface EmployeeRepository extends JpaRepository<Employee, …
Run Code Online (Sandbox Code Playgroud)

paging spring pagination jpa spring-data

34
推荐指数
5
解决办法
6万
查看次数

使用gridview asp.net进行排序和分页

我正在尝试使用gridview进行手动排序和分页,但没有成功.

问题是,当用户单击要排序的列时,它会对该页面进行排序,但不会对gridview后面的数据源(数据视图)进行排序.因此,当他们进入不同的页面时,他们的排序就会丢失.我正在寻找一种实际排序gridview背后的数据源的排序.这是我到目前为止:

protected void GridView_OnSort(object sender, GridViewSortEventArgs e)
    {
        String sortExpression = e.SortExpression;

        if (GridViewSortDirection == SortDirection.Ascending)
        {
            DataView myDataView = new DataView(mybll.GetItemsOrdered());
            myDataView.Sort = sortExpression + " DESC";
            GridView.DataSource = myDataView;
            GridView.DataBind();
        }
        else
        {
            DataView myDataView = new DataView(mybll.GetItemsOrdered());
            myDataView.Sort = sortExpression + " ASC";
            GridView.DataSource = myDataView;
            GridView.DataBind();
        }
    }
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.谢谢.

asp.net sorting paging gridview

31
推荐指数
2
解决办法
15万
查看次数

如何以编程方式更改Kendo UI网格页面索引?

我有一个剑道ui网格.假设指向网格的JS变量被调用grid.如何以编程方式转到第3页?谢谢.

grid paging kendo-ui kendo-grid

31
推荐指数
2
解决办法
4万
查看次数

使用ROW_NUMBER时从SQL Server返回总记录

我想返回数据库中的记录总数,以便我可以设置分页.在SQL Server 2008中使用以下分页方法时,如何返回数据库中的记录总数?

    ALTER PROCEDURE [dbo].[Nop_LoadAllOptimized]
    (
        @PageSize int = 20,
        @PageNumber int = 1,
        @WarehouseCombinationID int = 1,
        @CategoryId int = 58,
        @OrderBy int = 0,
        @TotalRecords int = null OUTPUT
    )
    AS
    BEGIN
    WITH Paging AS (
        SELECT rn = (ROW_NUMBER() OVER (
        ORDER BY 
            CASE WHEN @OrderBy = 0 AND @CategoryID IS NOT NULL AND @CategoryID > 0
            THEN pcm.DisplayOrder END ASC,
            CASE WHEN @OrderBy = 0
            THEN p.[Name] END ASC,
            CASE WHEN @OrderBy = 5
            THEN …
Run Code Online (Sandbox Code Playgroud)

sql-server paging sql-server-2008-r2

30
推荐指数
2
解决办法
3万
查看次数

Android水平滚动视图表现得像iPhone(分页)

我在Horizo​​ntalScrollView中有一个LinearLayout.内容只是一张图片.在滚动时,我需要实现与在相当于HSW的iPhone上设置分页选项时相同的行为(滚动列表应该停在列表中的每个页面上,而不是继续移动).

这是如何在Android中完成的?我应该自己实现这个功能,还是要设置特定的属性或HSV的子类来实现?

paging android scroll image

29
推荐指数
3
解决办法
4万
查看次数

加载页面后,selenium获取当前URL

我在Java中使用Selenium Webdriver.我想在点击"下一步"按钮后从第1页到第2页获取当前网址.这是我的代码:

    WebDriver driver = new FirefoxDriver();
    String startURL = //a starting url;
    String currentURL = null;
    WebDriverWait wait = new WebDriverWait(driver, 10);

    foo(driver,startURL);

    /* go to next page */
    if(driver.findElement(By.xpath("//*[@id='someID']")).isDisplayed()){
        driver.findElement(By.xpath("//*[@id='someID']")).click();  
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='someID']")));
        currentURL = driver.getCurrentUrl();
        System.out.println(currentURL);
    }   
Run Code Online (Sandbox Code Playgroud)

在获取当前url之前,我有隐式和显式等待调用以等待页面完全加载.但是,它仍然打印出第1页的网址(预计它将成为第2页的网址).

java paging selenium webdriver

25
推荐指数
1
解决办法
11万
查看次数