본문 바로가기

Java | spring/Java Basic32

Java 파일 업로드, 다운로드 처리(+파일 사이즈 제한 세팅 방법) 프로그램을 개발하다 보면 파일 업로드, 다운로드 처리하는 경우가 다수 있다. 간단하게 게시판을 만들더라도, 첨부파일을 올리거나 이미지를 올릴 수 있게 하는 기능을 기본적으로 구현한다. 웹 서비스에서 파일 업로드 게시판 서비스를 제공한다면, 게시글을 작성할 때 파일만 업로드하는게 아니라 글을 작성하고 파일도 함께 첨부하게 된다. 이런 경우 일반 데이터는 텍스트로 전달하고 첨부파일은 바이너리 데이터로 전송해야 한다.(파일 업로드 시 파일 데이터는 바이너리 데이터로 전송) HTTP로 데이터 전송 시 entype을 multipart/form-data 전송하면 각각의 항목이 Part로 구분해서 한번에 전달이 된다. Form 태그로 전송 시 아래와 같이 써야 한다. enctype="multipart/form-dat.. 2023. 12. 17.
알아도 어려운 트랜잭션 개념정리 트랜잭션은 백엔드 개발자라면 제대로 알고 있어야 하는 개념이다. 간단한 서비스만 개발한다면 덜 중요하게 느껴지기도 하겠지만 복잡한 서비스를 개발하고 운영을 하다보면 중요성을 느끼게 된다. 대용량 데이터 동기화 등을 처리하다 보면 트랙잭션을 어떻게 처리 하느냐에 따라 데이터의 정합성 등에 영향을 주게 된다. 단건이 아닌 여러건의 배치를 진행하다 보면 트랜잭션으로 인해 단건(나는 각 처리 단위별로 롤백되게 하고자 했었음)이 아닌 전체가 롤백되어 서비스 오픈 전 테스트를 하다 놀란적이 있기도 했다. 이 때 관련 설정을 보고 다양한 테스트를 하면서 내용을 배우기도 했다. 참고로 정보처리기사 등 자격증을 준비하다보면 필수적으로 알아야하는 문제로 나오는 개념이기도 하다. 문제를 풀다보면 가끔 헷갈려서 잘못된 답을 .. 2021. 6. 4.
Optional 제대로 알기, 면접 대비! (+간단 실무 코드 예시) 프로그래밍을 하다보면 null 처리를 필수적으로 하게 된다. 기존에는 null 체크를 해서 Null이 아닌 경우 뒤의 로직으로 넘어가게 분기처리를 하는 형태로 작업을 하게 된다. 이러한 null을 처리하기 위해 자바 8 이후 부터는 옵셔널 Optional을 사용한다. 옵셔널을 상세하게는 아니여도 다른 사람의 코드를 보면서 이런식으로 쓴다고는 알고는 있지만, 남에게 설명할 정도는 아니라면 면접 대비를 한다 생각하고, 옵셔널에 대해 상세하게 알아보도록 하자. 신입 개발자가 optional을 제대로 쓰고 알고 있다면 괜찮아 보인다는 선임의 이야기가 있었다. (뭐 사람마다 다를 수 있지만) 나도 이 기회에 제대로 알아봐야지 참고로 Optional을 사용하기 위해서는 자바 버전 8 이상을 사용하고 있어야 한다. .. 2021. 6. 3.
Mac java 여러 버전 설치 맥에 여러 프로젝트를 실행하다 보면 해당 프로젝트에 맞는 java를 설치해야 하는 경우가 있다. 그런 경우 아래와 같은 순서로 기존 설치된 자바 버전 이외에도 다른 버전을 설치 할 수 있다. 오늘은 brew를 이용해서 설치를 해보자. brew가 설치되어 있지 않다면 아래 명령어를 활용하여 설치하자. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" macOS용 패키지관리자 Homebrew가 궁금하다면 아래 링크에 들어가 봐도 좋다. https://brew.sh/index_ko 저장소 연결하는 명령어 brew tap adoptopenjdk/openjdk ~ master* ❯ brew t.. 2021. 5. 26.
Java 네트워크 프로그래밍 : 용어, TCP/UDP 네트워크 프로그래밍 ==> 서로 멀리 떨어진 두대이상의 컴퓨터가 서로 데이터를 주고 받는 프로그래밍(원격지의) 자바는 네트워크 프로그래밍을 위하여 java.net 패키지에 관련 클래스를 제공한다. https://docs.oracle.com/javase/8/docs/api/java/net/package-summary.html java.net (Java Platform SE 8 ) Interface Summary Interface Description ContentHandlerFactory This interface defines a factory for content handlers. CookiePolicy CookiePolicy implementations decide which cookies shoul.. 2019. 5. 8.
Java class file, 자바 파일 클래스 주요 메소드 파일인지 아닌지 판단하는 메소드 boolean isDirectory() Tests whether the file denoted by this abstract pathname is a directory. boolean isFile() Tests whether the file denoted by this abstract pathname is a normal file. package com.file.exam01; import java.io.File; public class FileTest01 { public static void main(String[] args) { // TODO Auto-generated method stub //File f = new File("c:/my/hello.txt"); File .. 2019. 5. 8.
Java Stream, 파일 입출력의 기본 스트림 Stream 순서가 있는 자료의 흐름을 stream이라고 한다. 파일로 데이터를 출력하려면 이 데이터들이 순서를 가지고 내보내 져야 한다. 또, 파일로 부터 데이터를 읽어 오려면 역시 파일의 내용이 순서대로 읽어 와 져야 한다. 이와 같이 순서 있는 자료의 흐름을 stream이라고 한다. 자바는 순서 있는 자료의 흐름을 위하여 stream을 제공한다. 크게 두가지 형태의 stream을 제공한다. 문자단위의 stream 글자 단위로 입출력이 이루어 진다. 이것은 메모장 같은 곳에서 바로 확인 할 수 있다. 문자단위의 입출력을 위해 자바가 제공하는 클래스 Reader : 문자 단위 읽기 위한 최상위 클래스 writer : 쓰기 위한 최상위 클래스 byte 단위의 stream InputStream : .. 2019. 5. 8.
Java 파일처리 기본 : 입출력, 스트림 프로그램 실행한 결과를 화면에 출력하는 것은 "휘발성"으로 저장되지 않는다. 만약 실행한 결과를 영구적으로 보관하고자 한다면 "파일"이나 "데이터베이스"에 저장할 수 있다. 또, 프로그램 실행에 필요한 자료를 키보드로 입력 받는 것은 처리 자료가 많다면 번거롭다. 이때, 파일로부터 자료를 읽어 들여 처리 할 수 있다. 자바 입출력 자바는 파일처리를 위하여 java.io 패키지에 관련 클래스들을 제공합니다. 파일로 데이터를 입력, 출력 할 수 있다. 이것을 입출력이라고 한다. 때에 따라 파일이 아니라 네트워크로 원격직에 있는 다른 컴퓨터에게 데이터를 출력하고 입력할 수도 있다. 이와 같이 데이터를 파일이나 네트워크를 통해 입력, 출력 하는 것을 모두 "입출력"이라고 한다. 스트림 stream 자바는 이러한.. 2019. 5. 8.
Thread 사이의 통신, 1:1 동작 멀티쓰레드 일반적으로 쓰레드는 2개 이상의 객체가 동시에 어떤 작업을 수행하도록 할 때 사용한다. 그렇기 때문에 지금까지 사용한 멀티 쓰레드 프로그램은 가능하면 2개 이상의 객체가 동시에 어떤 작업을 수행하도록 했다. 그래서 반드시 1:1로 동작하지는 않았다. 하지만 경우에 따라서는 1:1로 동작하는 멀티 쓰레드를 용해야 하는 경우가 있다. 그런 경우에는 Thread 사이의 통신을 하면 된다. 자바의 제일 상위 클래스인 Object의 wait 메소드와 notify 메소드를 이용하면 구현이 가능하다. wait( ) : 객체를 대기 시키기 위한 메소드 notify( ) : 대기중인 객체를 깨우기 위해 사용하는 메소드 1:1 멀티쓰레드 예제 - 생산자는 제품(정수)을 만들고, 소비자는 해당 정수를 사용하는 프로그램 만들.. 2019. 5. 8.
반응형