39일차 - 알고리즘 코드카타
·
Java & Spring/코딩테스트
- 회고81. N개의 최소공배수 : https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr- 풀이 과정class Solution { public int solution(int[] arr) { for (int i = 0; i 최소 공배수 = 두 수의 곱 / 최대 공약수최대 공약수를 구하는 재귀함수 정의만약 a,b,c의 최소 공배수를 구한다면 a,b에대한 최소 공배수를 구하고 그 공배수와 c의 최소공배수를 구하면 된다.for문으로 순회하며 ..
Self-invocation(자기 호출)
·
Java & Spring/트러블슈팅
Self-invocation(자기 호출)이란? Self-invocation(자기 호출)은 클래스 내의 메서드가 동일 클래스의 다른 메서드를 호출하는 상황에서 발생Spring 프레임워크에서 @Transactional 어노테이션을 사용할 때, 이 self-invocation은 문제가 발생할 수 있다.그 이유는 Spring의 트랜잭션 관리가 AOP(Aspect-Oriented Programming) 기반의 프록시(Proxy)를 사용하기 때문이다. Self-invocation이 왜 문제가 되는가?프록시는 트랜잭션 시작, 커밋 또는 롤백을 처리하는데, 자기 호출이 발생할 경우 프록시가 아닌 실제 객체가 메서드를 호출하게된다.이로 인해 트랜잭션 관리가 적용되지 않고, 예상대로 트랜잭션이 시작되지 않거나 커밋되지 ..
프록시(Proxy)란?
·
이론공부
프록시의 개념프록시는 실제 객체에 대한 접근을 제어하기 위해 사용되는 중간 객체로 이를 통해 클라이언트는 프록시 객체를 통해 실제 객체의 메서드를 호출하게 되며, 프록시는 요청을 처리하거나 추가적인 작업을 한 뒤 실제 객체에 전달한다.Spring에서의 프록시 사용Spring에서는 AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)를 사용하여 트랜잭션 처리, 보안, 로깅 등의 횡단 관심사를 처리하는데, 이때 프록시를 사용, @Transactional 어노테이션을 사용하면 Spring이 해당 메서드에 프록시 객체를 만들어서 트랜잭션을 관리프록시의 동작 방식클라이언트가 프록시 객체의 메서드를 호출.프록시는 요청을 가로채고, 메서드 호출 전에 추가 로직을 실행할 수 있음.예를 들어..
기술면접 준비(1)
·
이론공부
RESTful한 API설계의 장점개념 RESTful : REST원칙을 따르는 API 설계 방식으로, HTTP프로토콜을 기반으로 자원을 정의하고 그 자원에                대한 상태 정보를 주고받는 방식자원(Resource) : URI로 식별되는 개체표현(Repesentation) : 클라이언트가 자원에 접근할 때, 자원의 상태를 JSON, XML등의 형식으로 전송무상태성(StateLessness) : 서버는 각 요청을 독립적으로 처리, 클라이언트의 상태를 서버에 저장하지 않음캐시 가능(Casheable) : HTTP의 캐싱 메커니즘을 사용해 응답을 클라이언트 측에 저장 가능(성능최적화)계층화 구조(Layerd System) : 클리언트와 서버 사이에 프록시, 게이트웨이 등을 중간 계층으로 배치..
37일차 - Spring강의(JPA Audting)
·
Java & Spring/Spring
JPA Auding : 시간에 대해서 자동으로 값을 넣어주는 기능@Getter@MappedSuperclass@EntityListeners(AuditingEntityListener.class)public abstract class Timestamped { @CreatedDate @Column(updatable = false) @Temporal(TemporalType.TIMESTAMP) private LocalDateTime createdAt; @LastModifiedDate @Column @Temporal(TemporalType.TIMESTAMP) private LocalDateTime modifiedAt;}@MappedSuperclassJPA Entity 클래스..
[TIL](2024)09.02 ~ 09.06
·
Java & Spring/TIL
09월 02일 (월)- 오늘 한 일Spring 숙련주차 팀 프로젝트 시작팀 프로젝트 회의팀 프로젝트 와이어프레임 작성하기댓글 CRUD 구현하기(1/4)-  회고API명세서, ERD, 와이어프레임을 작성하고 작업을 시작하니 틀이 잡힌 상태로 시작해 시작이 수월한 느낌이 들었다.09월 03일 (화)- 오늘 한 일댓글 CRUD구현 및 테스트 완료JWT를 활용하여 PUT, DELETE 재구현github commit & push-  회고이번 팀프로젝트를 진행하면서 CRUD구현이 능숙해졌다.아직 JWT부분이 잘 이해가 안간다.09월 04일 (수)- 오늘 한 일댓글 신고 기능 추가 구현Jpa Audting 학습-  회고신고 기능을 추가하면서 Transaction Invocation Error 발생 우선 클래스를 분리..
34일차 - 알고리즘 코드카타
·
Java & Spring/코딩테스트
- 회고80. 예상 대진표 : https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr- 풀이 과정코드 보기class Solution{ public int solution(int n, int a, int b){ int s = 1; int answer = 0; for(int i = 1; s != n; i++){ s = (int)Math.pow(2, i); if(a % 2 !=..
33일차 - 알고리즘 코드카타
·
Java & Spring/코딩테스트
- 회고79. 카펫 : https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr -풀이과정class Solution { public int[] solution(int brown, int yellow) { int[] answer = new int[2]; for(int i=3;i=i){ if ((i - 2) * (width - 2) == yellow) { ans..
31일차 - Spring강의(Entity 연관 관계)
·
Java & Spring/Spring
□ 1 대 1 관계(@OneToOne)▷ 단방향 관계외래 키 주인 정하기 : 1대1 관계에서는 외래 키 주인을 직접 지정해야한다.외래 키의 주인만 외래 키를 등록, 수정, 삭제 할 수 있다.주인이 아닌 쪽은 읽기만 가능하다.- 음식 Entity가 외래 키의 주인인 경우- 음식 Entity 코드코드 보기@Entity@Table(name = "food")public class Food { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private double price; @OneToOne @JoinColumn(name = "user_id") p..
[TIL](2024)08.26 ~ 08.30
·
Java & Spring/TIL
08월 26일 (월)- 오늘 한 일프로그래머스 코딩테스트 1문제 진행 및 회고Spring 숙련주차 개인과제 시작08월 27일 (화)- 오늘 한 일Spring 숙련주차 개인과제Entity 연관 관계08월 28일 (수)- 오늘 한 일Spring 숙련주차 개인과제 JPA를 활용헌 CRUD구현- 회고CRUD구현이 아직 낯설다고 느껴진다.08월 29일 (목)- 오늘 한 일프로그래머스 코딩테스트 1문제 진행 및 회고08월 30일 (금)- 오늘 한 일프로그래머스 코딩테스트 1문제 진행 및 회고과제 복습 진행