Java 10

[TIL] 프로세스와 스레드의 차이

오늘 이력서 작성 중, 같이 교육받았던 형님이 Slack에 메시지를 올렸다. CS 기술 면접에서 첫 질문으로 프로세스와 스레드의 차이점에 대해 설명하라는 질문을 받았다고 하셨다. 그러고 곰곰히 생각해봤다. 나는 프로세스랑 스레드의 차이점을 확실히 이해하고 설명할 수 있나? 12월에 pintOS 운영체제를 학습하면서 그토록 스레드와 프로세스를 가지고 놀면서 마스터했다고 생각했지만, 막상 설명하려고 생각해보니 명확히 설명하지 못할 것 같았다. 그래서 ! 오늘 다시 프로세스와 스레드의 정의를 바로 지난달에 발표를 마친 let's Note 프로젝트에 적용하여 한번 이해해보는 시간을 가져보려고 한다. 프로세스란 ? 프로세스는 죽어있는 프로그램에 생명이 부여되어 실행되고 있는 상태를 말한다는 운영체제 속 문구가 생..

Java 2024.03.24

[TIL] AWS S3를 이용하여 Spring JPA에 미디어 API 구현하기

요근래 B형 독감에 걸려서 3일간 공부를 못했다. 나만무 프로젝트 기간의 시작이다 보니 3일동안의 공백이 너무 컸다. 이제 다시 빡세게 좀 마음을 다잡고 프젝 기간에 불태워보려고 한다. 우리 나만무 프로젝트가 미디어 파일을 업로드하고 로드해야하는 플랫폼이다 보니 S3를 활용해보려 한다. Spring JPA에서 어떻게 AWS S3를 활용할 수 있는지 알아보자. AWS S3는 5GB의 용량까지 프리 티어로 사용할 수 있다. 따라서 해당 프리 티어 S3를 사용해보자. S3에서 버킷을 생성하면 보안 키를 생성해줄 것이다. 그 이후에 우리 project에서 AWS SDK를 지원하는 dependency를 추가해준다. software.amazon.awssdk s3 org.springframework.boot spri..

Java 2024.01.20

[TIL] Spring Security에 JWT 필터 추가하기

오늘 포스팅에서는 spring security 모듈을 적용하고 그 안에 JWT 인증 필터를 추가하여 JWT토큰으로 인증을 구현해 본 내용을 포스팅하겠습니다. spring security는 front-end 팀원분과 개인 공부를 위해 기본적인 crud와 회원가입 및 로그인 인증이 구현된 간단한 게시물 웹사이트를 만들기 위해 공부했습니다. Spring Security spring security 디펜던시를 추가해보면 6.1 버전이 23년 6월에 종료되어서 새로 코드에 대해 이해를 해야 했습니다. 먼저 spring security 자체가 어떻게 작동하는지 공부하고 이를 어떻게 커스터마이징 해야 할지부터 고민했습니다. spring security 디펜던시를 적용하지 않더라도 spring framework 자체에..

Java 2024.01.12

Spring-boot 빌드 오류 : java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.cfg.DatatypeFeature

끔찍한 오류를 체험하고 식은 땀을 흘리면서 해결했음. 원래 되던 spring project가 jar를 배포하기 위해 빌드를 초기화했더니 갑자기 되던 실행이 로컬에서도 안되던 것. 근데 발생한 오류가 바로 Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.cfg.DatatypeFeature 이 오류였다. 갑자기 발생한 'Class 없어' 오류에 너무 당황하여 찾아보니까, jackson 종속성은 spring-boot 자체에 내포되어 있어서 의존성을 따로 추가하면 conflict가 발생한다는 것. 며칠 전에 objectMapper 로직을 작성하기 위해 dependency를 추가했었는데, 이 objectMapper가 jacks..

Java 2024.01.07

[TIL] JAVA : @Bean, IoC 컨테이너, 의존성 주입

어제 하루종일 CRUD 노가다를 마무리하고 JWT를 저녁에 입문했는데, 애들 장난이라고 생각하고 공부하면 절대 스프링의 제작 의도대로 Spring security 디펜던시를 사용할 수 없을 것 같다고 생각됬다. 오늘부터는 정말 약한 의지가 아니라 뇌빼고 모르는거 다 찾아본다는 마인드로 security 정복에 나선다. 오늘 할일 1. @Bean 어노테이션의 의미는 무엇인가 ? 2. Filter Chain Froxy의 동작 방법 + HttpFilterChain의 내부 구조에 대해 이해하고 보안에 관한 원하는 코드 짜는 방법 공부하기 3. spring jpa 는 어떻게 DB 서버와 통신하는가? @Bean 어노테이션의 의미 spring security가 바뀌면서 지원해주던 config를 직접 개발자가 커스텀하여..

Java 2024.01.03

Errorfix : compatible version of org.hibernate.dialect.MySQL57Dialect

java spring jpa 구현체인 hibernate를 사용하면서 발생한 버그이다. Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot /autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: 'void org.hibernate.dialect. MySQL57Dialect...

Java 2024.01.02

[TIL] spring을 공부하기 전 배워야 할 것들 (2) : 빌드 도구의 선택

처음으로 자바 스프링에 대해 공부할 때, 항상 서두에 듣게 되는 선택지는 바로 Maven vs Gradle 이다. 나는 처음 자바의 개발환경을 선택하기 위해 Maven과 Gradle이라는 자바의 빌드 툴의 선택지에 들어섰을 때, Maven은 현재 많은 개발 환경에서 이미 사용중이고 Gradle은 비교적 최신(2013년도)에 나온 빌드 스크립트라고 배웠었다. 이때, Maven이 더 많은 사용량을 차지하지만 Gradle을 추천받아 Gradle의 사용법을 배웠었다. 하지만 왜 maven이 더 많이 사용되는데 gradle을 추천했는지는 이해하지 못했다. 그 궁금증을 풀기 위해 오늘은 자바의 빌드 도구 중 무엇을 선택할 것인지 정하기 위해 도구들에 대해 공부해 보겠다. 2. 빌드 툴이 무엇인가? - Maven V..

Java 2023.12.30

[TIL] spring을 공부하기 전 배워야 할 것들 (1) : Java의 특징과 빌드 과정

오늘부터 java 스프링에 대해 공부할 것이다. 예전엔 어떻게 하면 api를 만들어 보낼 수 있는지에 집중했었지만, OS를 공부하면서 내부 구조가 어떻게 되고 왜 사람들이 maven과 gradle 중에 하나를 선택하는지 그것들이 무엇인지 등 조금 세부적으로 공부해서 내가 주체적으로 선택한 이유를 알고 사용하고 싶다고 생각했다. 그래서 이번엔 java 스프링을 본격적으로 배우기 전에 배워야 할 것들에 대해 공부하고, 그것들을 포스팅해보겠다. 1. 자바의 빌드 과정과 특징 자바의 빌드 과정 자바의 컴파일 순서를 보자. 1. 개발자가 작성한 .java 소스 파일은 자바 가상 머신이 읽을 수 있는 .class 바이트 코드로 컴파일 된다. 이 컴파일은 Java Compiler인 javac 가 수행한다. 2. 이후..

Java 2023.12.30

[JAVA] 인터페이스의 기본부터 응용까지 (2) - 인터페이스 사용법 익히기

실패는 나를 절대 실패시키지 못한다. 실패라 믿고 포기하는 순간 나는 실패한다. 오늘은 전 축구선수 이영표님께서 하신 말씀에 되게 감명받아 문구로 시작해봅니다. (실패했다고 착각하지 맙시다 모두 !) 이전 포스팅에서 인터페이스가 무엇인지, 왜 사용하는지 알아봤으니 이제 사용해볼 차례입니다. 인터페이스 선언하기 public interface ridable{ static void ride(){ System.out.println("i can ride"); } static void stop(){ System.out.println("stop!"); } } 간단하게 달리는 것들을 위한 인터페이스를 생성해보았는데요! 공부하면서 자연스레 알게된 코드 컨벤션으로 인터페이스는 기능이 정의할 메소드들의 집합이기 때문에 -a..

Java 2023.05.24

[JAVA] 인터페이스의 기본부터 응용까지 (1) - 인터페이스? 왜 사용하나요?

오늘 포스팅의 한줄 목표 - "달인이 되기 위해선 칼질부터 연습하라" 기본기를 충분히 다지기 위하여 프로그래밍의 중요한 요소 중 하나라고 생각되는 인터페이스에 대해 공부해 봅시다 ! 인터페이스, 너는 누구냐. 먼저 인터페이스를 만들기 위해 인터페이스가 무엇인지 ChatGPT에 물어봤습니다. 인터페이스가 무엇인지 정리해보자면, 인터페이스란, 클래스(인터페이스)와 클래스(인터페이스를 구현한 구현 클래스) 사이의 계약과 같으며, 인터페이스를 구현한 클래스는 인터페이스가 정의한 모든 메서드를 구현해야하는 계약조건을 가진다. (오호.. 너무나 당연한 소리;) 무엇인지는 감이 옵니다. 우린 이미 사실 알고 있었잖아요 그쵸? (몰랐다면 이 포스팅은 당신을 위한것) 그럼 인터페이스를 왜 사용하는지 또한 안 물어볼 수 ..

Java 2023.05.23