Java

    [프로그래머스] 하샤드 수 - Java 문제풀이

    문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 사항 x는 1 이상, 10000 이하인 정수입니다. 입출력 예 정답 풀이 class Solution { public boolean solution(int x) { return isHarshad(x); } private boolean isHarshad(int n) { int num = n; int sum = 0; while(num > 0) { sum += num % 10; num /= 10; } return n % s..

    2023.11.23 TIL - JPA 복합키 사용하기 (Feat. 팔로우 API)

    오늘 한 것 팀 프로젝트 팀 프로젝트 팀프로젝트 필수 요구사항들을 끝내고 추가 요구사항중 팔로우 기능을 구현하기로 했다. 기능을 구현하기전 엔티티 설계와 ERD 를 작성했다. 팔로우 엔티티 설계 팔로우는 팔로우를 받는 팔로워_id와 팔로우를하는 팔로잉_id를 갖고있다. entity면 2개의 회원 엔티티이다. 처음에는 이를 회원과 각각 ManyToOne 관계를 맺었는데, 다음과 같은 이유로 복합키를 가진 엔티티로 변경했다. 1. 팔로우 관계가 팔로우 테이블과 회원 테이블 의 연관이 되어있는게 맞는가? 예를들어 게시판과 게시판 타입의 관계를 생각해보면 게시판의 타입을 수정할 때마다 게시판 타입이 변경될 수 있다. 게시판의 상태에 따라 게시판 타입도 변경되는 것이다. 그러므로 둘은 서로 관계를 가지고있다. ..

    [Java] 쓰레드의 상태와 제어

    쓰레드 프로세스가 할당받은 자원을 이용하는 실행의 단위 쓰레드의 생성 프로세스가 작업중인 프로그램에서 실행 요청이 들어오면 쓰레드를 만들어 명령을 처리하도록 함 쓰레드의 자원 프로세스 안에는 여러 쓰레드들이 있고, 쓰레드들은 실행을 위한 프로세스 내 주소 공간이나 메모리공간(Heap)을 공유받음 추가로, 쓰레드들은 각각 명령처리를 위한 자신만의 메모리공간(Stack)도 할당 받음 쓰레드 상태 스레드 객체를 생성하고 start() 메소드를 호출하면 바로 실행되는 것이 아니라 실행 대기 상태가 된다. 실행 대기 상태란 언제든지 실행할 준비가 되어 있는 상태를 의미한다. 실행 상태의 스레드는 run() 메소드를 모두 실행하기 전에 다시 실행 대기 상태로 돌아갈 수 있고, 실행 대기 상태에 있는 다른 스레드가 ..

    [Spring] 스프링(Spring)이란?

    Spring이란? 엔터프라이즈용 Java 애플리케이션을 간편하게 만들게 해주는 도구 스프링이 등장하기 이전에는 비즈니스 로직을 구현하기 위해 기술 자체에 대한 공부를 추가적으로 해야만 했습니다. 비즈니스 로직을 구현하는 기술 자체가 복잡하고 어려웠기 때문입니다. 스프링은 이전 기술에 비해 사용 방법이 상대적으로 덜 복잡합니다. 따라서, 개발 초기에 기본적인 설정과 적용시킬 기술들만 잘 선택을 해준다면, 기술보다는 애플리케이션의 로직 자체에 더 집중하여 비즈니스 로직을 구현할 수 있습니다. 오픈소스 스프링은 모든 사용자에게 무료로 열려 있습니다. 즉, 어떤 개인 및 기업도 스프링을 사용하여 웹 애플리케이션을 개발을 할 수 있으며, 필요하다면 스프링의 코드를 일부 수정하여 사용하여도 무관합니다. 이처럼 오픈..

    2023.11.08 TIL

    오늘 한 것 스프링 챌린지반 특강 Spring 챌린지반 특강 오늘 스프링 챌린지반 특강은 스프링이 무엇인지 어떤 특징을 가지고 있는지에 대해 배웠습니다. 배운 내용을 정리하여 포스팅 해놓았으니 참고하실분은 참고하시면 좋을 것 같습니다~ https://mocha-coding.tistory.com/33 [Spring] 스프링(Spring)이란? Spring이란? 엔터프라이즈용 Java 애플리케이션을 간편하게 만들게 해주는 도구 스프링이 등장하기 이전에는 비즈니스 로직을 구현하기 위해 기술 자체에 대한 공부를 추가적으로 해야만 했습니 mocha-coding.tistory.com

    2023.11.07 TIL

    오늘 한 것 개인 프로젝트 개인프로젝트 SSE 방식으로 알림 기능을 구현했는데, 오늘 회의를 통해 앱 푸시와 알림은 다르다는 것을 알게되었다.. 생각해보니 SSE 구독을 위해선 앱을 켜야 되는데, 보통 앱을 안켜도 푸쉬알림이 온다. 앱 푸쉬는 구글의 FCM으로 구현 가능하다고 하니, 내일 일어나서 알아봐야겠다. 결론: 1. 알림 기능 만들어놓은게 무쓸모가 되었음.. 그래도 공부하고 구현이 가능하니 나중에 웹 개발할 때 요긴하게 써먹어야겠다. 2. FCM 구현 가자!

    2023.11.03 TIL

    오늘 한 것 Spring 강의 듣기 Spring 개인 과제 강의듣기 Spring 주차가 되면서 Spring 강의를 듣게 되었다. 이미 이해하고 있던 것들도 있지만 어렴풋이 이해했던 것들을 다시 정리할 수 있는 시간이 된 것같다. 개인과제 간단한 익명 게시판을 만드는 과제를 받았다. 어느정도 Spring에 대한 지식은 있지만 테스트 코드 작성에 익숙치 않으므로 이번에는 테스트 주도 개발 방식(TDD)으로 구현을 해보려고한다. 이번에도 과제 구현 과정을 포스팅할 예정이다!

    팀 프로젝트 KPT 회고

    자바 주차가 끝나면서 팀과 마지막 프로젝트 과제를 하게되었다. 프로젝트 팀명 : 스프링 A02 팀원 : 김민중, 박지환, 김진훈 개발 기간 : 2023.10.24 ~ 2023.10.30 개발 내용 : 호텔 예약 프로그램 만들기 📜 KPT 회고 1. KEEP (잘 한 것) 협업 기능별로 개발 역할 분담 branch를 활용해서 각각의 기능 개발 브랜치를 만들고 main 브랜치에 병합함 깃허브 이슈를 통해 각 기능에 대한 티켓을 발행하고 담당과 PR을 통해 코드 리뷰를 하며 완성도를 높임 저번 팀 프로젝트에서 하고 싶었던 것들을 잘 적용함 기술 Stream API를 적절히 사용하여 컬렉션 객체를 순회하는 코드를 가독성 좋게 작성함 클래스의 역할과 책임을 적절히 분리하여 객체 지향적으로 설계 및 구현을 시도함 ..