본문 바로가기

분류 전체보기

(644)
변수와 객체와 메모리의 관계! 자바를 예로 들어 변수와 객체는 메모리에 어떻게 저장되는지 정말 쉽게 설명해요! https://youtu.be/GIsr_r8XztQ 애플리케이션은 어떻게 실행되는가? - 애플리케이션 : 일반 사용자가 사용할 기능을 제공하는, 컴퓨터가 실행할 수 있는 명령어들의 집합 - 메모리 : 실행된 애플리케이션이 상주하는 곳 => 애플리케이션이 실행되기 위해선 반드시 메모리에 올라가야 한다. - CPU : 명령어를 실행하는 주체 메모리 구조 - 애플리케이션에 할당되는 메모리는 내부적으로 여러 영역으로 나뉜다. - stack 메모리 : 함수나 메서드의 지역 변수와 매개 변수가 저장됨. 함수나 메서드가 호출될 때마다 스택 프레임이 쌓임 - heap 메모리 : 객체가 저장됨 * 참조 변수는 주소값을 가진다. => (내부적으로 어떤 형태로든 주소값을 갖고 있긴 하겠지만) C언어의 포인터처럼 주소값 자체..
CPU 스케줄러는 프로세스를 어떻게 스케줄링 하는 걸까요? 선점/비선점의 차이는 뭘까요? 디스패처는 또 뭐죠? https://youtu.be/LgEY4ghpTJI CPU Scheduler : CPU가 항상 일을 할 수 있도록 실행될 프로세스를 선택하는 역할 Dispatcher : 선택된 프로세스를 실제로 CPU에서 실행될 수 있도록 만드는 역할(선택된 프로세스에게 CPU를 할당). Context switching. 커널 모드에서 유저 모드로의 전환. 적절한 위치로 선택된 프로세스를 이동 - 여러 문서에서는 스케줄러가 둘의 역할을 다 하는 것처럼 설명하기도 함 스케줄링의 선점 방식 비선점(Nonpreemptive) 스케줄링 : 프로세스가 자발적으로 running 상태에서 빠져나간다(running -> terminated, waiting, ready). 운영체제가 적극적 또는 강제적으로 개입하지 않는다. => 신사적..
30일차 - VirtualBox와 CentOS VirtualBox에서 CentOS 설치하기 CentOS 설치 시 소프트웨어 선택 > Minimal Install ROOT 비밀번호 설정 > root가 비밀번호로 SSH 로그인하도록 허용 체크 설치 직후 스냅샷 찍기 root로 접속 후에 명령어 입력 1. ip addr : 현재 랜카드(IP) 목록 확인 2. ifup enp0s8 : enp0s8이라는 랜카드 활성화 3-1. ssh root@{ip주소} : root 계정으로 해당 PC에 SSH 접속 3-2. Are you sure you want to continue connecting ? ... yes 입력 3-3. root@ ~ password : 패스워드 입력 application.yml 분리하기 application.yml파일에 카카오, 구글 클라이..
29일차 - 로그인 연동하기 내 서비스에서 카카오 로그인하기 https://developers.kakao.com/ Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 내 애플리케이션 > 애플리케이션 추가하기 > 앱 이름, 사업자명 입력하고 저장 추가된 앱 클릭 > 제품 설정 > 카카오 로그인에서 활성화, Redirect URI 설정 앱 설정 > 요약 정보에 있는 REST API 키를 내 서비스 코드에 복붙(application.yml) spring: security: oauth2: client: registration: kakao: clientId: {클라이언트 ID} 내 서비..
[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 객체의 레퍼런스를 공유해서 사용하지 말 것..