질문 피드백 클래스 단위의 @Transactional 사용 저는 개인적으로 클래스 레벨에 Transactional을 사용하는 것을 선호하지 않습니다. 트랜잭션은 굉장히 비용이 큰 작업이고, 불필요한 트랜잭션으로 성능이 낮아지는 문제도 있지만 더 큰 문제는 의도되지 않은 트랜잭션으로 인해 데드락이 발생할 수 있다 라는 것이 생각입니다. 실제 현업에서 대규모 트래픽을 처리하기 위해 데드락이 발생하지 않도록 설계하는 것이 굉장히 중요한데요. 개발하는 과정에서도 이 기능에 데드락이 발생할 요소가 있을까? 트랜잭션을 꼭 잡아야 가능한 기능일까? 구조를 변경하여 락이 필요 없는 구조로 바꿀 수 없을까? 에 대해 끊임없이 고민하게 되는데, 이러한 고민을 하는 시점이 저는 메서드에 Transactional 처리를 하는..
[Auth] 인증과 인가 인증과 인가 인증(Authentication): 로그인 기능, 인증된 사용자인지 확인하는 것 인가(Authorization): 사용 권한이 있는지 확인하는 것 쿠키, 세션, 토큰 쿠키는 클라이언트 측의 저장소이다. 쿠키에 저장이 되면 쿠키는 서버 요청시마다 보내지게 된다. 탈취될 위험이 있어 보안적으로 중요한 내용은 저장하지 않는 편이다. 세션을 통한 인증은 서버측에서 세션저장소에 사용자를 등록하고 이것을 sessionId 값으로 관리한다. 클라이언트에 세션아이디를 알려주고 클라이언트는 세션아이디를 서버에 보내 사용자를 확인한다. 서버는 세션아이디를 가지고 세션저장소에서 인증정보를 확인한다. 사용자가 많아진다면 서버의 세션저장소의 부하가 발생한다. 서버는 토큰을 로그인한 사용자에..
[Q & A] 피드백 1 질문과 답변-1 Q. Void 타입으로 body없는 경우도 많이 리턴하나요?? 필요하면 void로 반환하기도 한다.(수정, 삭제가 제대로 됐는지 검증하는건 서버가 가져야 할 책임이지 클라이언트가 확인할 필요는 없다.) 보통은 빈 response body를 내려주는 경우가 많음. Q. Optional 사용에 대한 의견 쿼리 호출 횟수를 줄이는게 당연히 좋지만 그전에 읽기 좋은 코드를 작성하는게 먼저임 쿼리 한 번 더 호출했다고 서버 응답이 엄청 느려지고 그러진 않는다. 하지만 읽기 어려운 코드는 개발자가 수정하는데 많은 시간이 들기 때문에 더 큰 비용이 든다. optional은 외부와 통신하면서 null이 발생할 수 밖에 없는 상황이 있을 때 어떻게 처리할지 결정 할때만 사용합니다..
진행 3명의 면접관, 2명의 코치, 2명의 기록자로 이뤄서 모의 면접을 진행했다. 레벨1 학습로그를 기반으로 약 20분간의 면접과 종료 후, 짧은 피드백이 이루어졌다. 질문 자기소개? 비전공자 건축 프로그래밍에 관심 가진 이유? 사용해봤던 프로그래밍 언어? java를 사용하는 이유, java의 장점? 객체지향이 뭐라고 생각하나? 답변) 코드를 이해하기 쉽게 하는 도구 다양한 생성자와 인터페이스를 이용해 객체의 활용도를 높였다고 했는데 어떻게? 정적 팩토리 메서드란? 생성자를 다양하게 하는 것 vs 정적 팩토리 메서드로 다양하게 하는 것? 생성자를 다양하게 주는 것을 선택할 것이다. 캐싱이 아니라면 생성자를 다양하게 하다보면 인자가 많아질텐데 builder 패턴을 사용하면 좋다고 했는데 왜? Builder..
예상 질문 정리 ✔️ 기본질문 자기소개 장/단점 앞으로 어떤 개발자가 되고 싶은지 ✔️ 기술질문 자료구조 왜 배열을 안 쓰고 리스트 사용하는지? : 배열과 제네릭 타입은 2가지 차이를 가진다. 배열은 계층구조가 있다면, 상위 타입이 변하면 같이 변한다. 하지만 제네릭(리스트)타입은 계층구조가 아니기 때문에 관련이 없다. 배열은 실수를 런타임에 알지만, 리스트는 컴파일타임에 알 수 있다. 배열을 런타임에도 자신이 담기로 한 원소의 타입을 인지하지만 제네릭은 타입정보가 런타임에는 소거된다. -이펙티브자바_아이템28 LinkedList 자료구조는? 어떤 특징? : 연속적으로 저장되는 타입이 아니라 각 노드들의 연결관계를 가지고 있는 자료구조이다. 리스트의 삽입, 삭제는 O(n)이고, 검색은 O(1)이지만, 링..
STEP 1,2,3 PR링크 학습로그 1-1 [Java] Functional Interface - 3 내용 - Consumer 타입은 인자로 받아 리턴하지 않고 소진한다. - Command 명령어를 Consumer 를 받아 함수 표현식을 accept()로 실행가능하다. if 분기문을 줄일 수 있다. - Function 값으로 표현식을 받아 apply()로 실행가능하다. [Java] StreamAPI - 3 내용 - reduce(BinaryOperator accumulator) => Optional - reduce(T identity, BinaryOperator accumulator) => T - reduce(U identity, BiFunction accumulator, BinaryOperator com..
STEP 1 PR링크 학습로그 1-1 [Java] LinkedList - 1 내용 LinkedList는 크기로 초기화가 되지 않음 LinkedList는 Queue, List 인터페이스를 구현함. 따라서 List 기능인 shuffle과 Queue를 같이 사용하려면 LinkedList 타입으로 받아주어야 한다. List타입으로 지정하면 Queue 구현이 안되고, Queue 타입으로 지정하면 shuffle 사용이 되지 않아 다운캐스팅 없이 LinkedList 타입으로 받아줘야 두 가지 인터페이스의 API를 모두 사용이 가능하다. 링크 javadocs LinkedList [OOP] Interface & abstract Class - 5 내용 언제 interface를 사용하고 언제 abstract를 사용하는게 좋..
Step1 PR 링크 학습로그 1-1 [TDD] TDD - 5 내용 TDD 원칙을 따라 구현하고자 하였다. 더 사전에 어떻게 객체에게 책임과 역할을 분배할 것인지 고민하게 되고 전체적인 구조를 생각하게 된다. // 주석으로 먼저 해야할 일을 적어보고 구현하면 역할 분담을 구체화하는데 도움이 되었다. 다양한 생성자와 인터페이스를 사용하여 객체의 활용도를 높인다. 테스트가 가능하게 최대한 값을 주입받도록 한다. 도메인에서 있는 최대한 많은 부분을 테스트코드로 작성하려고 했다. [Framework] MVC - 3 내용 TDD를 진행하니 좀 더 도메인 위주로 구현이 가능했다. MVC 패턴을 적용하기 좀 더 수월해진듯 하다. View와 Domain의 역할분리를 위해서 다소 반복되더라도 view 위한 코드는 vie..
- Total
- Today
- Yesterday
- CS
- 학습로그
- 마스터즈코스
- 알고리즘
- Transaction
- 코드스쿼드
- 모의면접준비
- 객체지향
- React
- 우테코수업
- 네트워크
- JS
- 회고
- 개발공부일지
- 글쓰기미션
- 월간회고
- javascript
- JPA
- Spring
- 카카오
- DB
- java
- TCP/IP
- 우아한테크코스
- 운영체제
- 내부코드
- python
- OS
- 인증
- TIL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |