반응형

분류 전체보기 401

Spring Boot 프로젝트 외부 경로 파일 접근하기 addResourceHandlers

Spring Boot 프로젝트 외부 경로에 있는 파일 접근하기 addResourceHandlers 실서버에서 배포하여 실행중인 웹 애플리케이션 상에서 웹 사이트에 접속하여 파일 및 이미지 업로드를 실시할 때, 이미지 업로드 경로를 웹 애플리케이션 내부로 설정할 경우 새로 웹 애플리케이션을 배포할 시 실행 중에 추가했던 이미지 파일들이 삭제되는 현상이 발생합니다. 스프링 부트 프로젝트 실행 시 따로 서버를 설정하지 않은 경우 spring boot 내부 톰캣 서버가 작동되는데, 이 서버가 실행되면서 /tmp 폴더 아래에 해당 서버에 대한 데이터를 하나의 폴더로 저장했습니다. 그리고 새로 구동할 때마다 새로운 폴더를 만들어서 이전에 구동했던 데이터가 담긴 폴더는 무시되고 새로 생성된 폴더에서만 해당 서버의 데..

Java 국가 코드 및 국가명 Locale Class로 쉽게 가져오기

Locale Class Java에서 국가코드 및 국가명, 국가별 언어가 필요할 때 Locale Class를 통해 쉽게 가지고 올 수 있습니다. Locale Class에 사용되는 국가명(country)은 'ISO 3166'를 기준으로 하고, 언어(language)는 'ISO 639'를 기준으로 합니다. 사용 예시를 간단하게 보고 아래에서 더 자세한 내용을 보도록 하겠습니다. String[] countries = Locale.getISOCountries(); for(String country : countries) { Locale locale = new Locale("en", country); System.out.printf("2글자 국가 코드 : %s | 3글자 국가 코드 : %s | 영문 국가명 : %s..

Programming/Java 2021.08.28

Web Socket 웹 소켓 개념 정리 (HTTP, Ajax)

Web Socket 이전 웹 소켓이 나오기 전에 통신은 HTTP 통신, Ajax 통신을 사용했습니다. 이 두 가지 통신 방법은 HTTP를 기반으로 이루어졌으며 HTTP는 Request, Response 기반의 Stateless Protocol입니다. stateless protocol은 클라이언트가 서버에 요청을 보내야만 응답을 얻을 수 있는 단방향 통신인데요. 이 경우 서버에 변경사항이 발생했을 때 서버는 클라이언트에 변경사항을 알릴 방법이 없다는 문제가 발생하게 됩니다. 이러한 문제를 해결하기 위해 요청을 보내지 않아도 서버에서 응답을 줄 수 있는 기술인 '웹 소켓 (Web Socket)'이 HTML5의 표준 기술로 개발되었습니다. Web Socket 웹 소캣 개념 정리 웹 소켓(Web Socket)은..

Programming/Web 2021.08.26

비동기 통신 Ajax 개념 (Asynchronous Javascript And Xml)

비동기 통신 Ajax 개념 (Asynchronus Javascript And Xml) ajax는 javascript의 라이브러리로, 클라이언트와 서버 간에 XML 데이터를 주고받는 비동기 통신입니다. (reload 없이 데이터를 불러오는 방식) HTTP 프로토콜은 클라이언트와 서버 사이에서 Request를 보내고, Response를 받으면 연결이 끊어지는 무상태성(stateless)를 가지고 있습니다. 그래서 화면의 내용을 갱신하기 위해서는 다시 request를 보내고 response를 받아 전체 페이지를 갱신해야 합니다. 그렇기 때문에 페이지에서 작은 부분을 갱신하기 위해 전체 페이지를 다시 리로드 하는 자원과 시간이 낭비되는 상황이 생깁니다. 이때 ajax를 사용하면 XMLHttpRequest 객체를..

(Web) HTTP 통신의 개념과 예제

HTTP (Hyper Text Transfer Protocol)란, 브라우저와 서버가 통신할 수 있도록 만들어주는 여러 프로토콜 가운데 한 종류로 웹 브라우저와 웹 서버 사이에 HTML(웹 문서를 만들기 위한 언어) 문서를 주고받는데 쓰이는 통신 프로토콜입니다. * 초기에는 HTTP 파일을 전송하기 위한 목적으로 만들어졌으나 현재는 JSON, Image 파일 등 또한 전송할 수 있습니다. 일반적으로 전송 계층 프로토콜로 TCP를 사용하고, 네트워크 계층 프로토콜로 IP를 사용합니다. 이 두 계층을 합쳐서 TCP/IP라는 이름으로 부릅니다. TCP/IP에서는 IP 주소를 사용해서 통신할 컴퓨터를 결정하고, 포트 번호를 사용해서 해당 컴퓨터의 어떤 프로그램과 통신할지를 결정합니다. (HTTP에서는 기본적으로..

Programming/Web 2021.08.26

Spring Boot Logging 이란? (log4j, logback, log4j2)

Log, Logging이란? 로깅(logging)이란 시스템 동작시 시스템의 상태와 작동 정보를 시간의 경과에 따라 기록하는 것을 말합니다. 그리고 그 기록을 로그라고 합니다. 로깅을 하는 이유는 소프트웨어의 동작 상태를 파악하고 문제가 발생했을 때, 그 동작을 파악해 소프트웨어의 문재를 찾아내고 해결하기 위해서 입니다. 즉, 소프트웨어의 디버깅이나 모니터링을 위하여 정보를 기록하는 곳에 사용되는데 기존의 Debugger나 println에 비해 로그가 가지는 장점은 아래와 같습니다. 상황별 Level 지정하여 Level별 메시지를 선택 가능 응용 프로그램의 실행에 대한 흐름과 에러 확인 가능 프레임워크를 이용하여 간단하고 쉬운 사용 환경 조성 기능 모듈 별로 유연하게 메세지 출력 가능 자유로운 출력 위치..

런타임 Run Time, 컴파일 타임 Compile Time 차이점

런타임 Run Time, 컴파일 타임 Complie Time 런타임과 컴파일 타임은 소프트웨어 프로그램 개발의 단계를 나타내는 프로그래밍 용어입니다. 프로그램을 만들기 위해 개발자는 프로그램이 작동하는 방식을 정의하는 소스코드를 작성합니다. 이 소스코드가 실행 가능한 프로그램이 되려면 컴퓨터가 인식할 수 있는 기계어로 컴파일 되어야 합니다. 컴파일은 일반적으로 사람이 이해하기 쉬운 자연어 형태(고수준 언어)를 기계어, 어셈블리어(저수준 언어)로 번역하는 것인데, 이렇게 컴파일이 진행되는 과정을 컴파일 타임(Compile Time)이라고 합니다. 그리고 이렇게 컴파일 된 프로그램을 사용자가 실행할 수 있습니다. 정상적으로 컴파일 된 응용 프로그램이 실행 중일 때를 런타임(Run Time)이라고 합니다. 런..

Programming/Web 2021.08.24

String class가 final인 이유, String의 불변성 (Immutable)

Java의 final에 대해 공부하면서 String class가 대표적인 final class라는 것을 알게 되었고, String class가 final으로 정의된 이유가 궁금하여 찾아보게 되었습니다. Java String String str1 = new String("Hello"); // new 연산자를 통해 객체 생성 String str2 = "Hello"; // 리터럴 형태로 바로 할당 java에서 문자열(String) 타입의 특징은 참조 타입임에도 불구하고 직접 new 연산자를 통해 객체를 생성하는 방법이 아닌, 문자열 리터럴 형태로 사용하는 것이 허용된다는 것입니다. String의 불변성 (Immutable) String 객체는 최초 한 번 생성되면 절대로 그 값이 변하지 않습니다. String..

Programming/Java 2021.08.24

Static, Stack, Heap / Java 메모리 영역의 구조와 특징

Java를 사용하면서 알아야 할 메모리 구조 및 특징에 대해서 정리합니다. (Static, Stack, Heap) 먼저 프로그램을 구동하기 위해서는 운영체제(OS)가 메모리(RAM)에 데이터 및 명령어를 저장할 공간을 할당하여 줍니다. 메모리는 컴퓨터에 있어 가장 핵심이 되는 부품이고, CPU가 처리할 데이터가 임시로 저장되는 공간입니다. 동작은 하드디스크에 저장된 데이터가 메모리에 올라가서 실행되며, 메모리(RAM)를 주 기억 장치라고 부릅니다. 메모리는 사용할 수 있는 공간이 한정되어 있기 때문에 어떻게 관리하느냐에 따라서 프로그램의 성능(속도 등)이 좌우됩니다. 따라서 Java 어플리케이션에서 메모리를 효율적으로 사용하기 위해서는 메모리 구조와 특징에 대해 이해할 필요가 있습니다. 1. Static..

Programming/Java 2021.08.23

Spring Boot Redis 두 가지 사용 방법 RedisTemplate, RedisRepository

https://wildeveloperetrain.tistory.com/21 Redis란? 레디스의 기본적인 개념 (인메모리 데이터 구조 저장소) Redis란? Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템 (DBMS)입니다. 데이터베이스, 캐시, 메세지 브로커로 사용되며 인메모리 wildeveloperetrain.tistory.com 인메모리 데이터 저장소 Redis 기본 개념에 대한 포스팅입니다. Spring Boot Redis 사용 방법 (RedisTemplate, RedisRepository) * Redis 설치 이후 진행과정입니다. Spring Boot에서는 Spring Date Redis를 통해 Lettuce, Jedis라..

반응형