Language/JAVA

Java 21 Release 예정대로 9월 19일자로 Java 21 GA 릴리즈 되었습니다. (이미지 출처 - Inside Java) 1. Java 21 Release Note Java 21 전체 릴리즈 노트는 여기서 확인할 수 있습니다. - https://jdk.java.net/21/release-notes - https://inside.java/2023/09/19/the-arrival-of-java-21 2. 주요 기능 요약 Java 21에 추가되는 새로운 기능들 중 Preview나 Incubator는 제외하고, 주요 기능만 살펴보면 아래와 같습니다. 2.1 Virtual Threads (Project Loom) 가 추가됩니다. (**JEP 444**) *"가상 스레드가 마이크로서비스에서 엔터프라이즈..
JDK 20 릴리즈 2023년 3월 21일 JDK 20이 릴리즈 되었습니다. 이 릴리스에는 새로운 프리뷰 및 인큐베이션 라운드와 함께 Project Amber , Project Loom 및 Project Panama 에 대한 지속적인 기여를 제공하는 JEP가 포함되어 있습니다 . 여기에서 이러한 새로운 기능 중 몇 가지를 살펴봅니다. JDK 20에는 Project Valhalla를 나타내는 JEP가 없다는 점은 주목할 가치가 있습니다 . Oracle은 Java 프로그래밍 언어 및 가상 머신 버전 20 을 출시했습니다 . 이 최종 기능 세트의 7개 JEP에는 다음이 포함됩니다. JEP 429: 범위 값(인큐베이터) JEP 429: Scoped Values (Incubator) JEP 429: Scoped ..
JPA(Java Persistence API)는 자바 ORM 기술 표준입니다. JPA는 아래 그림처럼 애플리케이션과 JDBC 사이에서 동작합니다. ORM(Object-Relational Mapping)은 이름 그대로 객체와 데이터베이스를 매핑한다는 뜻입니다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 데이터 베이스에 저장할 때, Insert SQL을 직접 작성하는 것이 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 됩니다. JPA 소개 과거 자바 빈즈(EJB)라는 기술 표준을 만들었는데 그 안에는 엔티티 빈이라는 ORM 기술도 포함되어 있었습니다. 하지만 너무 복잡하고 기술 성숙도도 떨어졌으며 자바 엔터프라이즈(J2EE) 애플리케이션 서버에서만 동작 ..
public static boolean fileMoveDir(String orgDir, String newDir, String fileName, String fileExtend) throws IOException{ boolean result = false; if(fileExtend.equals("zip")){ byte[] buffer = new byte[1024]; File folder = new File(newDir); if(!folder.exists()){ folder.mkdir(); } ZipInputStream zis = new ZipInputStream(new FileInputStream(orgDir+File.separator+fileName)); ZipEntry ze = zis.getNextE..
import java.time.DayOfWeek; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; public class PreviousDaysExcludingWeekends { public static List getPreviousWeekdays(int days) { List weekdays = new ArrayList(); LocalDate date = LocalDate.now().minusDays(1); // start from yesterday while (weekdays.size() < days) { if (!isWeekend(date)) { weekdays.add(date); } date = date...
package com.healthcare.common.upload.http; import java.io.File; import java.io.InputStream; import java.io.OutputStream; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; import javax.servlet.ServletInputStream; public class FilePart extends Part { private String fileName; private String filePath; private String contentType; private PartInputStream..
/** * 해당 특수문자를 원하는 문자열로 변환시킨다. * \r\n일경우 \r은 무조건 반환하는 문자열에서 skip한다. * @param str * @param speChar * @param convertStr * @return */ public static String convertSpecialCharToHtml(String str,char speChar, String convertStr){ String finishStr = ""; int strLeng = str.length(); StringBuffer convertBuff = new StringBuffer(strLeng+50); for(int i=0;i
/** * \r\n의 존재 여부를 찾는다면 \n만 입력 * @param str * @param speChar * @return 존재할경우 true */ public static boolean existSpecialCharToHtml(String str, char speChar){ boolean isExist = false; int strLeng = str.length(); for(int i=0;i
클라이언트와 지속적인 연결을 유지하지 못하는 것이 http protocol의 특징이므로, 이전 요청한 클라이언트와의 연결을 유지하기 위해서 Session을 사용한다.컨테이너(톰캣) 단에서 Session ID를 발행하고, 해당 Session ID와 Cookie를 맵핑 한 다음 해당 쿠키를 클라이언트에서 사용하도록 하면 클라이언트를 구분해서 받을 수 있다.* 세션 ID는 다음과 같은 방법으로 사용할 수 있다.HttpSession session = request.getSession();위와 같이 하게 되면, request로부터 세션 ID를 가지고 올 수 있고, 제일 처음 요청이라면 response 객체에 보낼 쿠키도 생성하게 된다.* 세션이 이미 있는지, 아니면 처음 요청으로 새롭게 만들게 되었는지를 확인하려..
웹에서의 중복로그인 방지의 일반적인 방법 일반적으로 많이 사용되는 중복로그인 방지 기능의 개발에 대해, 러프한 설계 수준에서 정리해 보겠습니다. (아는데까지만..) 개요 - 하나의 userId로 동시에 두곳 이상에서 연결(로그인된..)될 수 없다는 뜻으로, 보안이슈에 해당합니다. - 먼저 로그인한 연결이 A, 나중에 로그인을 시도하는 연결이 B라면, B가 로그인했을때 A의 연결을 끊는(튕겨내는) 방법, 또는 A의 연결을 유지하고 B의 로그인시도를 막는 방법이 있으며, 주로 전자의 방법을 취합니다. 히스토리 - 웹 이전의 CS 프로그램 시절에는 클라이언트의 연결을 직접 제어가 가능했으므로 기술적인 문제가 없었습니다. - 웹으로 넘어와서, ActiveX가 횡행하던 시절에는 주로 ActiveX를 이용하여 중복..
_world
'Language/JAVA' 카테고리의 글 목록