전체 글156 2주차. 애플리케이션 레이어 HTTP, HTTPS, DNS [HTTP] 1. HTTP 프로토콜에 대해서 설명해주세요. 더보기 HTTP는 웹에서 정보를 주고 받게 해주는 프로토콜입니다. HTTP는 클라이언트와 서버로 구현됩니다. 클라이언트가 HTTP 메서드로 서버에게 요청을 보내면, 서버는 HTTP 상태코드로 응답하는 방식으로 동작합니다. "HTTP(Hypertext Transfer Protocol)는 웹 프로토콜 중 하나로, 클라이언트와 서버 간 통신을 가능하게 합니다." 기본적으로 Request-Response 형태로 동작을 하는데 클라이언트가 서버에게 특정 리소스에 대한 Request를 보내면, 서버는 해당 요청에 대한 Response를 클라이언트에게 전송합니다. 2. HTTP의 요청/응답 모델에 대해 설명해주세요. 더보기 클라이언트가 서버에게 요청하고 응답.. 2024. 1. 17. [백준] 18111번 마인크래프트 _ Python [초기 접근 방법] 1. 모든 땅을 고르게 한다. min ~ max 까지 땅의 높이를 고르게 했을 때, 소요 시간을 파악한다. 이전 소요 시간보다 크면 멈추고 출력 (최적화) 2. 시간을 계산한다. if n > k (목표 높이가 높을 때) n의 높이로 설정했을 때, n-k 쌓을 블록이 필요 → 1 elif n < k (목표 높이가 낮을 때) k-n 블록을 제거 → 2 3. B + push < need n 높이로 고르게 만드는 건 불가능 [생각] - 완전 탐색 문제 - 파이썬으로 제출할 때, elif로 조건 처리하게 되면 시간초과가 난다. else 로 256MN 처리를 줄여줘야 통과할 수 있다. [코드] # 풀이 시간 : 30분 # 시간복잡도 : O(256MN) # 공간복잡도 : O(MN) # 참고 : -.. 2024. 1. 16. 5. API 개발 고급 - 실무 필수 최적화 OSIV : Open Session In View - 현재 JPA에서의 EntityManager와 같은 역할을 과거 Hibernate 에서 Session을 사용하였다. @Transactional → setAutoCommit() DB 커넥션을 획득하는 시점은 일반적으로 트랜잭션을 시작할 때 이다. 그럼 DB 커넥션의 반환 시점은 언제가 될까? 위 시점을 OSIV 설정을 통해 결정한다. if OSIV = True 트랜잭션이 끝나도 'DB 커넥션'과 영속성 컨텍스트가 유지되게끔 한다. 따라서 (API) Controller 나 View Template에서의 지연 로딩이 가능해진다. 사용자에게 반응되기 전까지 오랫동안 DB 커넥션 리소스를 사용한다. if OSIV = False 트랜잭션이 끝날 때, 'DB 커넥션.. 2024. 1. 13. 1주차. 컴퓨터 네트워크와 네트워크 레이어 1. 컴퓨터 네트워크는 무엇인가요? 더보기 컴퓨터 네트워크는 컴퓨터간에 서로 연결되어 데이터를 주고 받을 수 있는 통신망입니다. 현대에는 월드 와이드 웹(www)이라는 네트워크 통신망에서 주로 HTTP를 사용해 데이터를 주고 받습니다. 컴퓨터 네트워크는 컴퓨터 및 네트워크 장치들이 데이터를 주고받을 수 있도록 연결된 구조를 의미합니다. 2. 컴퓨터 네트워크에서 데이터를 전송하는 방식에 대해 설명해주세요. 더보기 컴퓨터 네트워크에서 데이터를 전송하는 방식은 회선 교환 방식과 패킷 교환 방식이 있습니다. 회선 교환 방식은 일대일 네트워크 연결 회선을 미리 점유해서 데이터 전송을 하는 방식입니다. 회선을 점유하는 동안은 다른 컴퓨터가 데이터를 전송할 수 없습니다. 패킷 교환 방식은 데이터를 패킷이라는 작은 단.. 2024. 1. 11. [백준] 1865번 웜홀 _ Python [초기 접근 방법] - 출발을 하였을 때보다 시간이 되돌아가 있는 경우가 있는지 없는지 체크 → 음의 사이클 유무 파악 → 벨만포드 알고리즘 사용 [생각] 1. '타임머신' 문제 이후 오랜만에 풀었던 벨만포드 알고리즘 문제 2. 어떻게 접근하는지, 풀어야하는지 잊어서 여러 블로그를 참고해서 이해했다. 3. 파이썬에서 float('inf') - int 를 해도 그대로 무한대이다.. 4. 시작 지점과 관계가 없다면, 그저 현재 그래프에서 음의 사이클이 있는지 파악하게 된다. 음.. 일단 타임머신 문제에서 parameter로 1을 넘겼지만, 1 시작 지점과 관계없이 알고리즘이 진행되었다. ( 이 때는, 1 노드 시작을 하려면 "minDis[start] != INF" 를 넣어야 하는지도 인지하지 못했음... ㅎ.. 2024. 1. 9. 4. API 개발 고급 - 컬렉션 조회 최적화 목표. OneToMany 관계 최적화 하기 Order를 조회할 때, OneToMany 관계인 OrderItem(컬렉션)을 조회할 때 성능을 최적화하는 방법 정리. 컬렉션 페이징 조회 최적화 1. ToOne 관계를 모두 fetch join 한다. 2. 컬렉션은 지연 로딩으로 조회한다. (fetch join X) 3. 지연 로딩 최적화를 위해서 hibernate.default_batch_fetch_size / @BatchSize 를 적용한다. - hibernate.default_batch_fetch_size : 글로벌 설정(application.yml) - @BatchSize : 개별 설정 → 컬렉션이나 프록시 객체를 설정한 size만큼, 한번에 IN Query로 조회한다. 1. V1 : 엔티티 직접 노출 .. 2024. 1. 9. 이전 1 ··· 13 14 15 16 17 18 19 ··· 26 다음