게시판 - 페이징 구현
먼저 용어가 혼선될 수 있는데, 운영체제 개론에서도 "페이징"이라는 이야기가 나옵니다.
다른 이야기입니다.
지금 다루는 알고리즘은 게시판 등에 사용되는 페이징 알고리즘에 대해서 소개합니다.
게시판에 보면, 하단에 페이지를 선택하는 영역이 있습니다.
|
게시판의 큰 구조 |
Pager 영역이라고 불리는 페이징 알고리즘을 구현하는 로직에 대해서 소개합니다.
1. 구현을 위한 아이디어 작성하기
스프레드시트 등의 프로그램을 통해서 게시판 로직을 실험해볼 수 있습니다.
페이징 구현 |
2. 실험하기
종이에 그려볼 수도 있으며 이처럼 실험을 해볼 수도 있습니다.
실험의 예 |
스프레드시트 - 실험의 예 |
3. 코드
페이저 구현 소스코드입니다.
package web.pager; import java.util.ArrayList;
public class Pager { private int page; public void setPage(int page) { public int getCountList() { public void setCountList(int countList) { public int getCountPage() { public void setCountPage(int countPage) { public int getTotalCount() { public void setTotalCount(int totalCount) { // 핵심 로직 private void make() {
// % 표기 -> 스프레드시트 MOD함수로 사용됨. if (totalCount % countList > 0) { if (totalPage < page) { startPage = ((page - 1) / 10) * 10 + 1; // 소수점이 0으로 처리됨. (자료형의 <Cast>형 변환) -> 스프레드시트 참조
if (endPage > totalPage) { if (startPage > 1) { if (page < totalPage) { |
소스코드 - Pager.java |
|
Java - Pager 영상 |
171031_javaPager.zip / 영상
using System; namespace ConsoleApp1 int page = 1; int totalCount = 449; int totalPage = totalCount / countList; if (totalCount % countList > 0) if (totalPage < page) int startPage = ((page - 1) / 10) * 10 + 1; // 실험을 해본 결과로는 / 10으로 해도 되고, ((page - 1) / countList ) * countPage + 1 // 이렇게 해도 무방함. - 숫자 10이 표현하는 것에 대해서 보충.
Console.Write("<a href=\"?page=1\">처음</a>"); if (page > 1) for (int iCount = startPage; iCount <= endPage; iCount++) if (iCount == page) if (page < totalPage) //System.out.println(endPage + "야" + totalPage); if (endPage < totalPage)
} |
c# - Program.cs |
c# - Pager 영상 |
4. 참고 자료
1. "페이징(Paging)에 대한 이해 - (1) 페이지 번호를 생성하자.", https://okky.kr/article/282819, zepinos님
'공부 > 알고리즘(Algorithm)' 카테고리의 다른 글
알고리즘 - 정렬(Sorting) (0) | 2017.10.01 |
---|