본문 바로가기

공부 기록

(319)
[Java] 큐(Queue) 큐(Queue) - 선입선출(FIFO) : 가장 먼저 삽입된 요소가 가장 먼저 삭제된다. - 선입선출은 양방향(front, rear)에서 이뤄진다. - 너비 우선 탐색(BFS)에서 자주 사용한다. Queue 사용하기 - Queue 선언 Queue queue = new LinkedList(); 보통 LinkedList를 이용한다. 삽입 : queue.offer(x), queue.add(x) queue.offer(1); // 삽입 실패 시 false 반환 queue.add(1); // 삽입 실패 시 IllegalStateException rear에 값을 삽입한다. 삭제 : queue.poll(), queue.remove() int a = queue.poll(); // 큐가 비어있다면 null 반환 int a..
[초보를 위한 쿠버네티스 안내서] 컨테이너 오케스트레이션이란? https://youtu.be/Ia8IfowgU7s 도커 => 모든 실행환경을 컨테이너로. 어디서든 동작, 사용법도 쉽고, 효율적! 컨테이너의 특징 - 가상머신보다 컨테이너 생성이 쉽고 효율적 - 컨테이너 이미지를 이용한 배포와 롤백이 간단함 - 언어나 프레임워크에 상관없이 애플리케이션을 동일한 방식으로 관리 - 개발, 테스팅, 운영 환경은 물론 로컬 PC와 클라우드까지 동일한 환경을 구축 - 특정 클라우드 벤더에 종속적이지 않음 도커 그 이후 : 1. 배포는 어떻게 할까? 2. 서비스 검색은 어떻게 할까? 3. 서비스 노출은 어떻게 할까? 4. 서비스 이상, 부하 모니터링은 어떻게 할까? 컨테이너 오케스트레이션(Container Orchestration) : 복잡한 컨테이너 환경을 효과적으로 관리하기 ..
[10분 테코톡] 범고래, 소주캉의 JDBC, SQL Mapper, ORM https://youtu.be/NFK9qLWpujY 프로그래밍 패러다임(절차 지향, 객체 지향 등)과 데이터 저장 기술(파일 시스템, RDB, NoSQL DB 등)은 별개, 따라서 두 기술 사이의 인터페이스(데이터 접근 기술)가 필요하다. 자바 어플리케이션과 RDB 사이의 대표적 데이터 접근 기술 : JDBC, SQL Mapper, ORM DB에 접근하려면? - DB Connection 얻기 : 커넥션 연결 - SQL 전달 및 실행 : 서버는 DB에게 원하는 동작을 SQL로 표현, 연결된 커넥션을 통해 DB에 전달 - DB Connection 닫기 : DB는 전달된 SQL을 수행하고 그 결과를 응답, 서버는 응답 결과를 활용하고 커넥션 닫음 DB 접근의 어려움 - DB를 다른 DB로 변경하면 서버에 개발..
[10분 테코톡] 클레이의 상속과 조합 https://youtu.be/U4OSS4jJ9ns 상속 : 기존에 정의되어 있는 클래스의 필드와 메서드를 물려받아 새로운 클래스를 생성하는 기법 - 중복 코드 제거와 기능 확장을 쉽게 할 수 있다. - 클래스들의 계층적인 구조를 만들 수 있다. 상속의 문제점 : 하위 클래스가 상위 클래스의 구현에 의존하기 때문에 변경에 취약, 상위 클래스의 모든 public 메서드가 하위 클래스에도 반드시 노출 조합 : 전체를 표현하는 클래스가 부분을 표현하는 객체를 포함해서 부분 객체의 코드를 재사용하는 방법 조합의 장점 : - 부분 객체의 내부 구현이 공개되지 않는다. - 메서드를 호출하는 방식으로 퍼블릭 인터페이스에 의존해서 부분 객체의 내부 구현이 변경되어도 비교적 안전하다. - 부분 객체의 모든 퍼블릭 메서드..
[10분 테코톡] 그린론의 제네릭 https://youtu.be/w5AKXDBW1gQ 제네릭 : 컴파일 타임에 타입을 체크함으로써 코드의 안전성을 높여주는 기능 - 컴파일 타임에 강력한 타입 검사 - 캐스팅(타입 변환) 제거 Object[] list = new Integer[10]; => 가능 => 공변 List list = new ArrayList(); => 불가능 => 무공변 변성(Variance) - 무공변(Invariance) : , 타입 B가 타입 A의 하위 타입일 때, Category가 Category의 하위 타입이 아닌 경우, 즉, 아무런 관계가 없는 경우 - 공변(Covariance) : : Unbounded Wildcards, 모든 타입이 가능 -
[10분 테코톡] 우기의 MySQL 아키텍처 https://youtu.be/vQFGBZemJLQ MySQL 아키텍처 : MySQL 접속 클라이언트 --- MySQL 엔진 --(핸들러 API)-- MySQL 스토리지 엔진 --- 운영체제/하드웨어 (쿼리 캐시) - SQL 실행 결과를 메모리에 캐싱하는 역할 - 동일 SQL 실행 시 이전 결과 즉시 반환 - 테이블의 데이터가 변경되면 캐싱된 데이터 삭제 필요(동시 처리 성능 저하) => MySQL 8.0부터 완전히 제거됨 쿼리 파서 - SQL 문장을 토큰으로 쪼개서 트리(Parse Tree)로 만듦, 이 과정에서 쿼리 문장의 기본 문법 오류 체크 전처리기 - Parse tree를 기반으로 SQL의 문장 구조를 체크 - Parse tree의 토큰이 유효한지 체크 옵티마이저 - SQL 실행을 최적..
[10분 테코톡] 수리의 TCP/IP https://youtu.be/BEK354TRgZ8 TCP/IP : 인터넷에서 컴퓨터들이 서로 정보를 주고 받는 데 쓰이는 프로토콜의 집합 TCP/IP의 계층 - Application Layer : 특정 서비스를 제공하기 위해 애플리케이션끼리 정보를 주고 받을 수 있다. - Transport Layer : 송신된 데이터를 수신 측 애플리케이션에 확실히 전달하도록 한다. - Internet Layer : 수신 측까지 데이터를 전달하기 위해 사용한다. - Network Access Layer : 네트워크에 직접 연결된 기기 간 전송을 할 수 있도록 한다.
[10분 테코톡] 알파의 인터페이스 https://youtu.be/T1BJzC9xb0g Java 8 이후의 Interface 특징 - 인스턴스를 생성할 수 없고 상수만 가질 수 있다. - 메서드 body가 없는 추상 메서드를 가진다. - *디폴트 메서드, static 메서드만 가질 수 있다. (JDK 1.8 이상) * 디폴트 메서드 => 인터페이스에서 메서드 body를 가지는 메서드, 반드시 오버라이드할 필요는 없음, public 접근 제어자 인터페이스를 써야 하는 이유 - 다이아몬드 문제(다중 상속 시, 부모 클래스에 같은 시그니처의 메서드가 있을 때, 어떤 메서드를 상속받아야 하는지 판별할 수 없는 문제) => 인터페이스의 추상 메서드는 구체적인 선언부가 없기 때문에 모호함이 발생하지 않음 - 공통의 조상을 갖지 않는 두 클래스에 관계..