▼ Backend/자바 (JAVA)
-
JAVA | 압축(zip)파일 해제하기▼ Backend/자바 (JAVA) 2022. 6. 7. 16:58
java.util.zip 자바에서 기본적으로 제공하는 패키지로 압축 파일(zip)의 압축 및 해제를 할 수 있다. 구성환경 Windows 10, IntelliJ IDEA 2022.1.2, Java 1.8 압축 파일 해제 예제 import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; public class CompressUtil { public void unCompressZip() throws Exception { // 압축(zip) 파일의 경로 String zipFolder = "C:\\Users\\NB061\\Downloads\\"; // 경로/demo.zip 이름으로된 파일에 대한 파일 객체 생성 File..
-
JAVA | 파일 압축(zip) 하기▼ Backend/자바 (JAVA) 2022. 6. 7. 12:04
java.util.zip 자바에서 기본적으로 제공하는 해당 패키지를 이용하여 파일의 zip 압축 및 해제 할 수 있다. 구성환경 Windows 10, IntelliJ IDEA 2022.1.2, Java 1.8 파일 압축 예제 import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java..
-
JAVA | try-with-resource, 자원을 자동으로 해제▼ Backend/자바 (JAVA) 2021. 12. 13. 17:05
기존의 자원 해제 방법 try - finally 지금까지 개발을 해오면서 파일 관련 처리를 할 때면 자원 관련 객체인 InputStream, OutputStream을 사용하다 보니(꼭 파일 관련 처리가 아니더라도) 그럴 때마다 사용했던 자원에 대한 close() 처리를 finally 에서 해주고 있었다. 큰 문제는 없었지만 클린 코드, 리팩터링 관련해서 공부하다 보니 finally에서 자원을 해제하지 않고도 자원을 해제할 수 있는 방법이 있었다. try - finally BufferedInputStream in = null; BufferedOutputStream out = null; try { in = new BufferedInputStream(inputStream); try { out = new Buf..
-
JAVA | JVM(Java Virtual Machine) 이란▼ Backend/자바 (JAVA) 2021. 12. 10. 17:32
JVM(Java Virtual Machine) 자바 가상 머신으로 자바 바이트 코드를 실행할 수 있는 주체다. CPU나 운영체제(플랫폼)의 종류와 무관하게 실행이 가능하다. 운영체제 위에서 동작하는 프로세스로 자바 코드를 컴파일해서 얻은 바이트 코드를 해당 운영체제가 이해할 수 있는 기계어로 바꿔 실행시켜주는 역할을 한다. 1. .java → javac.exe → ByteCode Java Source Code로 작성된 .java 파일이 Java Complier(javac.exe)를 통해 ByteCode(.class)로 변환된다. 바이트코드는 JVM(자바가상머신)이 이해할 수 있는 기계어이다. 2. Class Loader class 파일을 JVM내로 로드하여 바이트코드를 해당 운영체제의 기계어에 맞게 변환..
-
JAVA | 파일 다운로드 구현하기▼ Backend/자바 (JAVA) 2021. 9. 30. 15:34
▶ JAVA 파일 다운로드 파일명을 파라미터로 받아 다운로드하는 간단한 파일 다운로드 예제입니다. 여기서 확장하여 파일 최대사이즈, 확장자, 경로등에 대해 프로퍼티에서 관리, 파일 데이터를 데이터베이스로 관리하여 구현할 수 있습니다. FileController package com.boot.common.web; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.net.URLEncoder; import javax.servlet.http.HttpS..
-
JAVA | 파일 업로드 구현하기▼ Backend/자바 (JAVA) 2021. 9. 29. 11:46
▶ JAVA 파일 업로드 간단한 다중 파일 업로드 예제입니다. 확장할 경우 파일의 크기 및 확장자를 비교하여 제한을 두거나 파일 경로에 대한 프로퍼티 관리 및 파일 데이터를 데이터베이스에 저장하여 파일관리 등을 할 수 있습니다. HTML 전송 Controller package com.melon.boot.board.web; import javax.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.sprin..
-
JAVA | 비밀번호의 암호화 (SHA, SALT)▼ Backend/자바 (JAVA) 2021. 8. 19. 14:56
▶ SHA(Secure Hash Algorithm) 비밀번호 암호화로 단방향 암호화 기법을 많이 사용하는데 그중에서도 SHA에 대해 알아본다. 대분류 중분류 MD 길이 블록 길이 최대 메시지 길이 대표 알고리즘 해쉬 알고리즘 (Hash Algorithm) SHA-1 160bit 512bit 2^64-1bit SHA-1 SHA-2 224bit 512bit 2^64-1bit SHA-224 SHA-2 256bit 512bit 2^64-1bit SHA-256 SHA-2 384bit 1024bit 2^128-1bit SHA-384 SHA-2 512bit 1024bit 2^128-1bit SHA-512 ▶ 왜 단방향 암호화를 사용할까? 단순한 이유는 시스템이 사용자의 비밀번호의 원본 데이터를 알아야 할 필요가 없고..
-
JAVA | 개발 시 점검해야 할 항목 및 성능개선을 위한▼ Backend/자바 (JAVA) 2021. 6. 30. 11:26
명명 규칙은 잘 지켰는가? 클래스 이름을 보고 어떤 일을 하는 클래스인지 바로 인식이 가능한지를 확인해야 한다. 문제에 더 빨리 접근할 수 있도록 자바의 기본 명명 규칙을 따르자. 필요한 부분에 예외 처리는 되어 있는가? 예외 처리를 제대로 하지 않으면 사용자는 아무런 응답을 받지 못하고, 운영하는 시스템을 더 이상 사용하지 않을 수도 있다. 문제가 발생했을 때 원인을 밝히기 위해서 예외 처리는 필수다. 예외 화면은 지정되어 있는가? 예외 화면에 대한 표준이 있는지 확인해 보아야 한다. 만약 예외 화면을 구성하지 않고 지정하지도 않는다면, 사용자는 서버의 종류가 어떤 것인지 알게 될 것이다. 때에 따라서는 시스템에 어떤 클래스가 있는지도 확인할 수 있을 것이다. 예외 정보를 혹시 e.printStackT..