📅  最后修改于: 2023-12-03 15:36:50.810000             🧑  作者: Mango
在程序设计中,分页和分段都是常用的数据分割方式。它们在表现形式上很相似,但其本质与应用场景上有着很大区别。下面分别介绍分页和分段及其区别。
分页(Pagination)是指将大型内容按照固定大小分割为多个页面显示的方法,常见于网站和移动应用的数据展示中。用户可以通过翻页的方式逐页查看内容,如新闻列表页面、商品列表页面等。
分页的优点:
分页的缺点:
在程序中,分页通常可以通过限制每页最大数量和当前页码来实现。以下代码片段演示了如何实现分页:
public class PageUtil<T> {
private int pageSize; // 每页数量
private int pageIndex; // 当前页码
private int totalRecord; // 数据总数量
private List<T> data; // 分页查询结果
// getter、setter 省略
// 获取总页码
public int getTotalPage() {
if (totalRecord % pageSize == 0) {
return totalRecord / pageSize;
} else {
return totalRecord / pageSize + 1;
}
}
// 获取起始索引
public int getStartIndex() {
return (pageIndex - 1) * pageSize;
}
// 分页查询
public void query() {
data = db.query("SELECT * FROM table_name LIMIT ?,?", getStartIndex(), pageSize);
}
}
分段(Segmentation)则是将大块存储空间分割成若干大小不等、独立的段,用来满足不同大小和长度的程序运行需要,常出现在操作系统、编译器等底层程序中。
分段的优点:
分段的缺点:
在程序中,分段可以由操作系统进行实现。以下代码片段演示了在C语言中如何分段:
struct ListNode {
int value;
struct ListNode* next;
};
int main() {
// 分段申请内存
struct ListNode* head = (struct ListNode*) malloc(sizeof(struct ListNode));
struct ListNode* curr = head;
for (int i = 0; i < 10; i++) {
curr->value = i;
curr->next = (struct ListNode*) malloc(sizeof(struct ListNode));
curr = curr->next;
}
curr->next = NULL;
// 释放内存
curr = head;
while (curr != NULL) {
struct ListNode* temp = curr;
curr = curr->next;
free(temp);
}
return 0;
}