본문 바로가기

공부 기록

(319)
CPU 스케줄러는 프로세스를 어떻게 스케줄링 하는 걸까요? 선점/비선점의 차이는 뭘까요? 디스패처는 또 뭐죠? https://youtu.be/LgEY4ghpTJI CPU Scheduler : CPU가 항상 일을 할 수 있도록 실행될 프로세스를 선택하는 역할 Dispatcher : 선택된 프로세스를 실제로 CPU에서 실행될 수 있도록 만드는 역할(선택된 프로세스에게 CPU를 할당). Context switching. 커널 모드에서 유저 모드로의 전환. 적절한 위치로 선택된 프로세스를 이동 - 여러 문서에서는 스케줄러가 둘의 역할을 다 하는 것처럼 설명하기도 함 스케줄링의 선점 방식 비선점(Nonpreemptive) 스케줄링 : 프로세스가 자발적으로 running 상태에서 빠져나간다(running -> terminated, waiting, ready). 운영체제가 적극적 또는 강제적으로 개입하지 않는다. => 신사적..
[10분 테코톡] 수달의 JPA N+1 문제 https://youtu.be/ni92wUkAmQI JPA N+1 문제 : 요청이 1개의 쿼리로 처리되길 기대했는데 N개의 추가 쿼리가 발생하는 현상 지연(Lazy) 로딩 : 엔티티를 조회할 때 사용할 때까지 데이터 로딩을 미룬다. Fetch join : 연관된 엔티티나 컬렉션을 한 번에 같이 조회하는 기능(연관된 엔티티까지 영속성 컨텍스트에 전부 올린다.) 즉시(Eager) 로딩 시에도 N+1 문제가 발생 => 최대한 지연 로딩 + fetch join을 사용한다.
[10분 테코톡] 아마찌의 ORM vs SQL Mapper vs JDBC https://youtu.be/VTqqZSuSdOk Persistence : 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성 == 영속성 JDBC(Java Database Connectivity) : 자바에서 DB에 접속할 수 있도록 하는 자바 API Persistence Framework : JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 DB와 연동되는 시스템을 빠르게 개발 SQL Mapper : SQL 문과 객체의 필드를 매핑하여 데이터를 객체화 패러다임 불일치 : 객체지향(추상화, 상속, 다형성) RDB(데이터 중심의 구조). 각각 지향하는 목적이 달라서 사용 방법과 표현 방식에 차이가 있다. ORM(Object Relational Mapping) : 객체와 관..
[10분 테코톡] 잉, 페퍼의Spring Data JPA 삽질일지 https://youtu.be/kJexMyaeHDs 비영속 -> 영속 : .persist 준영속 -> 영속 : .merge (merge 전과 후 객체는 명백히 다르다.) 삭제 상태의 엔티티는 ID값이 있고 영속성 컨텍스트와 연결되어 있으며 DB에서 제거되도록 예약되어 있다. 프록시 객체 : 엔티티를 상속 받은 가짜 객체
불변 객체(immutable object)는 안정적인 개발에 아주 도움이 됩니다! 불변 객체의 개념과 장점, 구현 방법을 자바 예제를 통해 배워보아요~! https://youtu.be/EOGOJdBy2Rg 불변 객체 객체 생성 이후에는 객체의 상태가 바뀌지 않는 객체 불변 객체의 장점 - 이해하기 쉽고 안정적인 서비스 개발에 도움이 된다. - map, set, cache에 쓰기에 적절하다. - (일반적으로) thread-safe하다. => 여러 스레드가 하나의 객체를 공유해서 사용할 때 데이터 불일치 없이 사용 가능 - 불변 객체를 필드로 쓰면 방어적 복사를 할 필요가 없다. Java에서 불변 객체 만들기 - 생성자 제외, 상태를 바꾸는 메서드는 모두 제거 - 모든 필드를 private final로 지정 - final 클래스 지정 => 클래스 상속 금지 == 자녀 클래스의 메서드 오버라이드 금지 - mutable 객체의 레퍼런스를 공유해서 사용하지 말 것..
[입문용] 프로토콜과 OSI 7 layer 설명! 네트워크의 기능들이 어떻게 구조화 돼서 동작하는지를 설명합니다! https://youtu.be/6l7xP7AnB64 네트워크 - 컴퓨터나 기타 기기들이 리소스를 공유하거나 데이터를 주고 받기 위해 유선 혹은 무선으로 연결된 통신 체계 -- 애플리케이션 목적에 맞는 통신 방법 제공 -- 신뢰할 수 있는 데이터 전송 방법 제공 -- 네트워크 간의 최적의 통신 경로 결정 -- 목적지로 데이터 전송 -- 노드 사이의 데이터 전송 ---> 통신 기능이 제대로 동작하기 위해서는 참여자들 사이에서 약속된 통신 방법이 있어야 한다. 네트워크 프로토콜 - 네트워크 통신을 하기 위해 통신에 참여하는 주체들이 따라야 하는 형식, 절차, 규약 네트워크의 모든 기능들을 단 하나의 프로토콜로 구현할 수는 없다. => 모듈화 => layered architecture(계층 구조) OSI mod..
셸 스크립팅 에센스 E01 - 셸. 커널. 터미널. (shell. kernel. terminal) https://youtu.be/9ZLSLi5a6Xw 커널 - 운영체제의 핵심, 하드웨어를 직접 제어, 사용자가 제어할 수 없다. 셸(Shell) - 운영체제(커널)을 감싸는 껍데기(shell) - 운영체제의 서비스를 사용자나 응용프로그램에 노출 - 셸의 인터페이스 : GUI, CLI OS > Shell > CLI Terminal OS > Shell > GUI > CLI Terminal Emulator(우리가 보통 사용하는 터미널)
[Spring] AOP AOP(Aspect Oriented Programming) - 관점 지향 프로그래밍 - 관점 지향 => 핵심적인 관점, 부가적인 관점으로 나누어서 그 관점을 기준으로 각각 모듈화한다. MVC 웹 어플리케이션에서는 대부분 Web Layer, Business Layer, Data Layer로 정의된다. - Web layer : REST API를 제공, 클라이언트 중심의 로직 적용 - Business layer : 내부 정책에 따른 로직 개발 - Data layer : DB 및 외부와의 연동 처리 - 특정한 함수 호출 전이나 후에 공통적인 처리가 필요할 때 유용하다. => 로깅, 트랜잭션, 인증 - OOP로 처리하기에는 다소 까다로운 부분을 AOP를 도입하여 공통 기능을 쉽게 추가/수정/삭제할 수 있도록 한다..