자바 플랫폼에서 응용프로그램에 할당하는 가용 메모리가 있다.

이 중 가비지는 할당되었지만 사용하지 않는 메모리이다.

이때 가비지가 늘어나 가용 메모리가 0이되면 자바 응용프로그램은 더 이상 실행할수 없다.

 

이런 경우를 대비하여 자바 플랫폼은 가용 메모리가 일정 크기 이하로 줄어들면 자동으로 

가비지를 회수하여 가용 메모리를 늘린다. 이것을 가비지 컬렉션이라고 한다.

가비지 컬렉션은 자바 플랫폼에 의해 준비된 가비지 컬렉션 스레드에 의해 처리된다.

 

참조 : JAVA Programming (p.213)

'개발공부 > Java' 카테고리의 다른 글

JSP :: 페이징 처리  (0) 2023.02.16
JSP :: 메일 보내기  (0) 2022.01.06
JAVA :: StringBuffer vs StringBuilder  (0) 2021.12.29
필요한 변수 선언

int rowCount = 0; 
int pageCount = 0;
int rowCountPerPage = 10; // 한 페이지에서 보여줄 수

String pageS = request.getParameter("page"); // page number (optional)

// Check the parameters.
Integer pageNo = getInt(pageS);
if (pageNo == null) {
	pageNo = 1;
}

// 1. select count(*) 해서 총 갯수 구해서 rowCount에 담음
// 2. 원하는 값 구하는 sql문 작성하여 리미트 설정후 sql문에 추가
// 3. 전체 수에서 한 페이지에서 보여줄 수로 나누어 페이지 갯수 설정 pageCount
// For pagination
if (rowCount > rowCountPerPage) {
    int start = (pageNo - 1) * rowCountPerPage; 
    sql += " limit " + start + "," +  rowCountPerPage;
    pageCount = (rowCount / rowCountPerPage) + 1;
} else {
    pageCount = 1;
}

// 4. 페이징 버튼 작업
// 최대 갯수, url, 기존 쿼리스트링 값 유지, 페이지 번호
public String getPageNav2(int pageCount, String path, String queryString,int pageNo) {
	if (pageCount == 0) {
		return "";
	}
	int morePageCount = 4;
	String nav = "<nav aria-label=\"Page navigation\">\n" +
		"<ul class=\"pagination justify-content-center\">\n" +
		"<li class='page-item ";
		 if (pageNo == 1) {
				nav += " disabled ";
			}
		nav += "'><a class='page-link inactive' href='" + path + "'?" + queryString + "page=1'>" +
		"<span aria-hidden=\"true\">|&lt;</span>\n" +
		"</a></li>" +
		"<li class=\"page-item";
	if (pageNo == 1) {
		nav += " disabled";
	}
	nav += "\">\n<a class=\"page-link inactive\" href=\"" + path + "?" +
		queryString + "page=" + (pageNo - 1) + "\" aria-label=\"Previous\">\n" +
	        "<span aria-hidden=\"true\">&lt;</span>\n" +
	      "</a>\n" +
	    "</li>\n";
    int start = pageNo - morePageCount;
    if (start < 1) {
    	start = 1;
    }
    int end = pageNo + morePageCount;
    if (end > pageCount) {
    	end = pageCount;
    }
    for (int i = start; i <= end; i++) {
	    nav += "<li class=\"page-item";
	    if (i == pageNo) {
	    	nav += " active";
	    }
	    nav += "\"";
	    if (i == pageNo) {
	    	nav += " aria-current=\"page\"";
	    }
	    nav += ">\n";
	    if (i == pageNo) {
	    	nav += "<span class=\"page-link\">" + i + "</span>\n";
	    } else {
	    	nav += "<a class=\"page-link\" href=\"" + path + "?" + queryString + "page=" + i + "\">" + i + "</a>\n";
	    }
	    nav += "</li>\n";
	}
    nav += "<li class=\"page-item";
	if (pageNo == pageCount) {
		nav += " disabled";
	}
	nav += "\">\n<a class=\"page-link\" href=\"" + path + "?" + queryString +
		"page=" + (pageNo + 1) + "\" aria-label=\"Next\">\n" +
	        "<span aria-hidden=\"true\">&gt;</span>" +
	      "</a>" +
	    "</li>\n" +
	    "<li class='page-item ";
	    if (pageNo == pageCount) {
				nav += " disabled ";
			}
	    nav += " '><a class='page-link inactive' href='" + path + "?" + queryString + "page="+ pageCount +"'>" +
			"<span aria-hidden=\"true\">&gt;|</span>\n" +
			"</a></li>" +
	  "</ul>\n" +
	"</nav>\n";

	return nav;
}

'개발공부 > Java' 카테고리의 다른 글

JAVA :: 가비지 컬렉션 (garbage collection)  (0) 2023.06.15
JSP :: 메일 보내기  (0) 2022.01.06
JAVA :: StringBuffer vs StringBuilder  (0) 2021.12.29

실행 환경 이클립스 FTP Remote

 

1. mail.jar, activation.jar 다운 및 lib에 넣어주기 (참고 블로그에서 다운가능 or 메이븐)

2. 사용할 smtp 메일 사이트 설정(naver, daum, 등등 여러가지 있는듯)

   메일 설정에서 smtp를 사용으로 설정해야함. 거기에서 port 번호 등 정보를 얻을 수 있다.

3. jsp 작성(변수를 잘 확인하고 사용하길 바람)

<%@ page import="java.util.Map"%>
<%@ page import="java.util.List"%>
<%@ page import="java.util.Properties"%>

<%@ page import="javax.mail.Message"%>
<%@ page import="javax.mail.MessagingException"%>
<%@ page import="javax.mail.PasswordAuthentication"%>
<%@ page import="javax.mail.Session"%>
<%@ page import="javax.mail.Transport"%>
<%@ page import="javax.mail.internet.InternetAddress"%>
<%@ page import="javax.mail.internet.MimeMessage"%>
<%@ page import="javax.mail.Address"%>
<%@ page import="javax.mail.Authenticator"%>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");

String type	= "";
String title = "";
String name = "";
String tell = "";
String from = "보내는 email(smtp 서버 id사용)";
String to = "받는 email";
String subject = "";
String host = "smtp.naver.com"; // 사용하는 smtp 서버
Properties p = new Properties(); // 정보를 담을 객체
 
p.put("mail.transport.protocol", "smtp");
p.put("mail.smtp.host",host);
p.put("mail.smtp.port", "587"); //naver : 587 
p.put("mail.smtp.starttls.enable", "true");
p.put("mail.smtp.auth", "true");
p.put("mail.smtp.ssl.enable", "true"); // 이 부분을 넣으니 daum smtp도 잘 작동함
p.put("mail.smtp.ssl.trust", host);    // 이 부분을 넣으니 daum smtp도 잘 작동함

Session ses = Session.getInstance(p, new javax.mail.Authenticator() {
	protected PasswordAuthentication getPasswordAuthentication() {
		return new PasswordAuthentication("smtp ID", "smtp PW");
	}
});

try{
	MimeMessage msg = new MimeMessage(ses); // 메일의 내용을 담을 객체	

    msg.setSubject(subject); //  제목 

    StringBuffer buffer = new StringBuffer();
    buffer.append("유형 : ");
    buffer.append(type+"<br>");
    buffer.append("제목 : ");
    buffer.append(title+"<br>");    
    buffer.append("이름 : ");
    buffer.append(name+"<br>");
    buffer.append("연락처 : ");
    buffer.append(tell+"<br>");    


	Address fromAddr = new InternetAddress(from);
	msg.setFrom(fromAddr);	
	out.println(buffer);
	Address toAddr = new InternetAddress(to);
	msg.addRecipient(Message.RecipientType.TO, toAddr); // 받는 사람 
	
	msg.setContent(buffer.toString(), "text/html;charset=UTF-8"); // 내용
	Transport.send(msg); // 전송
	out.print("message sent successfully...");

} catch(Exception e){
    e.printStackTrace();
    return;
}
%>

3. 잘 실행되면 메일 확인가능하다...(네이버랑 다음이 조금 다른거 같다. )

 

참고 블로그 : [1] https://hunit.tistory.com/306  

                  [2] https://yoon-developer.tistory.com/13

'개발공부 > Java' 카테고리의 다른 글

JAVA :: 가비지 컬렉션 (garbage collection)  (0) 2023.06.15
JSP :: 페이징 처리  (0) 2023.02.16
JAVA :: StringBuffer vs StringBuilder  (0) 2021.12.29
String             :  문자열 연산이 적고 멀티쓰레드 환경일 경우
StringBuffer     :  문자열 연산이 많고 멀티쓰레드 환경일 경우
StringBuilder   :  문자열 연산이 많고 단일쓰레드이거나 동기화를 고려하지 않아도 되는 경우 

# StringBuffer 사용법

StringBuffer sb= new StringBuffer("hello");

sb.append(" world");


출처: https://ifuwanna.tistory.com/221 [IfUwanna IT]

'개발공부 > Java' 카테고리의 다른 글

JAVA :: 가비지 컬렉션 (garbage collection)  (0) 2023.06.15
JSP :: 페이징 처리  (0) 2023.02.16
JSP :: 메일 보내기  (0) 2022.01.06

+ Recent posts