전체 글

Database

[MySQL] MySQL 아키텍처

MySQL 아키텍처 MySQL 커넥터 다양한 방식으로 다양한 언어에서 SQL을 사용할 수 있도록 도와준다. MySQL C API, JDBC, ODBC, .NET 표준 드라이버 등이 있다. MySQL 엔진 MySQL의 두뇌 역할은 한다. SQL 문장을 분석하거나 최적화한다. 커넥션 핸들러, SQL 파서 및 전처리기, 옵티마이저가 중심을 이룬다. MySQL 스토리지 엔진 MySQL의 손발 역할을 한다. MySQL 엔진이 SQL을 분석하고 실행계획을 작성하면 MySQL 스토리지 엔진은 그것에 맞게 실제 데이터를 디스크 스토리지에 저장하거나 가져온다. 대표적으로 InnoDB와 MyISAM이 있다. 핸들러 API MySQL이 스토리지 엔진에게 읽기 또는 쓰기 요청을 보내는 것을 핸들러 요청이라 한다. 이때 사용되..

Database

[DB] SQL JOIN

JOIN이란 두 테이블을 묶어서 하나의 결과 집합을 만드는 것이다. 서브 쿼리를 통해 두 개 이상의 테이블도 조인 가능하다. INNER JOIN 일반적으로 JOIN을 이야기 하면 INNER JOIN이다. 교집합을 생각하면 된다. SELECT FROM [INNER] JOIN ON [WHERE ]; 기준 테이블의 row와 참조 테이블의 row 중 조인 조건이 맞는 row끼리 묶는다. 선택 열은 테이블 간 동일한 이름의 열을 가지고 있을 수 있어 테이블명.속성명으로 명시해줘야한다. 테이블 명에 Alias(별칭)을 사용하면 좀 더 간결하게 작성 가능하다. 조인 조건은 기준 테이블의 row가 참조 테이블의 어떤 row와 병합되어야 하는지 속성의 기준으로 명시한다. 테이블A.fkey = 테이블B.pkey 예시 SE..

알고리즘

[BOJ] 앱 - 7579

🎨 문제 7579번: 앱 입력은 3줄로 이루어져 있다. 첫 줄에는 정수 N과 M이 공백문자로 구분되어 주어지며, 둘째 줄과 셋째 줄에는 각각 N개의 정수가 공백문자로 구분되어 주어진다. 둘째 줄의 N개의 정수는 현재 활 www.acmicpc.net 📘 풀이 배낭 문제와 유사한 문제입니다. 배낭 문제는 DP 배열을 다음과 같이 사용한다면 행: 넣을 수 있는 무게 열: 물건의 종류 저장: 물건의 최대 가치 이 문제는 다음과 같이 생각할 수 있습니다. 행: 사용할 수 있는 비용 열: 앱의 종류 저장: 앱의 최대 메모리 DP의 시간 복잡도는 앱의 종류(N), 사용할 수 있는 최대 비용(MAX_COST)에 의해 N x MAX_COST가 됩니다. N의 최대값은 100, 최대 비용은 단일 앱의 최대 비용(100) x..

DevOps

[쿠버네티스 인 액션] - 실습 트러블슈팅

🚩 목표 쿠버네티스 인 액션 책으로 실습을 하며 겪은 책과 다른 점과 오류 등을 정리합니다. 잘못된 점이나 피드백은 댓글로 남겨주세요. 🪓 실습 환경 WSL2 Ubuntu 20.04 Docker 20.10.17 Kubernetes Client Version: v1.25.4 Kustomize Version: v4.5.7 Server Version: v1.25.3 😂 삽질 2장 도커와 쿠버네티스 첫걸음 더보기 Minikube 가상머신 시작하기 오류 minikube를 설치하고 실행을하는데 dashboard를 여는 명령에서 오류가 발생했습니다. $ minikube dashboard Exiting due to HOST_KUBECTL_PROXY: readByteWithTimeout: EOF 원인 도커 데스크탑 앱에..

알고리즘

[BOJ] Dance Dance Revolution - 2342

🎨 문제 2342번: Dance Dance Revolution 입력은 지시 사항으로 이루어진다. 각각의 지시 사항은 하나의 수열로 이루어진다. 각각의 수열은 1, 2, 3, 4의 숫자들로 이루어지고, 이 숫자들은 각각의 방향을 나타낸다. 그리고 0은 수열의 마 www.acmicpc.net 📘 풀이 DP와 분할정복을 혼합하여 풀었습니다. 완전 탐색의 경우 왼발과 오른발을 쓰는 지(두가지)와 입력 수열의 길이가 100,000이 최대이므로 시간 복잡도가 2의 100,000제곱으로 TLE가 발생합니다. DP 배열 DP = int[눌러야하는 발판][왼발 위치][오른발 위치] 눌러야할 발판은 입력받은 배열의 길이입니다. 마지막 발판은 0이므로 1을 빼주어도 됩니다. 발의 위치는 다섯가지로 중앙, 위, 아래, 왼쪽,..

회고

오픈소스 컨트리뷰션 아카데미 회고 (2)

📆 아카데미 일정 크게 두 파트로 진행된다. 1. Challenges 2. Masters Challenges 단계는 오픈소스에 익숙해지기 위한 몸풀기 단계이다. 프로젝트별로 진행하는 내용은 다르지만, 공통적으로 git 강의를 수강할 수 있다. 오픈소스와 git에 대해 잘 모르거나 push, pull만 할 줄 아는 사람이라면 무조건 듣는 것을 추천한다! 나는 여기서 나의 부족함을 알았기 때문이다. FOSSLight Hub에서 진행한 내용은 개발환경 세팅과 간단한 이슈를 해결하는 것이었다. Masters 단계는 본격적으로 오픈소스에 기여하는 단계이다. 우리 프로젝트에서는 주요 Task 별로 4명씩 팀을 나누어 기여를 진행하였다. 이번 글에서는 Challenges 단계에 있었던 일을 적어보려 한다. 📝 Git..

회고

오픈소스 컨트리뷰션 아카데미 회고 (1)

접하게된 계기 학교가 제주인 나는 대외 활동을 제주 밖으로 해본적이 없다. 이것이야 말로 우물 안의 개구리의 표본이 아닌가..! 라는 생각이 들어 대외활동을 알아보던 중 오픈소스 컨트리뷰션 아카데미라는 것이 있다는 걸 알았다. 20개가 넘는 오픈소스 프로젝트가 있었다. 그 중 하나의 프로젝트에 지원해 오픈소스에 기여해보는 프로그램이었다. 각 팀마다 멘토님도 계시고 4학년 막학기에 해도 부담이 크지 않을 것 같아 지원하게 되었다. 지원하기 기본적인 인정사항을 작성하고 3개정도의 프로젝트에 각각 지원서를 냈던걸로 기억한다. 나는 FOSSLight Hub, Apache Zeppelin, OpenStack 프로젝트에 지원했다. 프로젝트를 고른 방법은 다음과 같다. 1. Java, Spring으로 되어있는 프로젝..

알고리즘

[프로그래머스] 두 큐 합 같게 만들기 - JAVA

카카오 2022 테크 인턴쉽 코딩테스트 2번 문제로 공식 해설을 기반으로 문제를 풀었습니다. 2022 테크 여름인턴십 코딩테스트 해설 2022년 카카오 여름 인턴십 코딩 테스트가 지난 5월 7일에 5시간에 걸쳐 진행되었습니다. 시간이 부족하여 문제를 풀지 못하는 아쉬움이 없도록 1시간을 늘려 테스트를 진행한 것이 작년과 조금 tech.kakao.com 문제는 프로그래머스에서 확인하실 수 있습니다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 두 가지 풀이법이 있습니다. Queue 자료형을 사용하는 것과 투포인터 알고리즘을 사용하는 것입니다. 우선 ..

알고리즘

[프로그래머스] 성격 유형 검사하기 - JAVA

카카오 2022 테크 인턴쉽 코딩테스트 1번 문제로 공식 해설을 기반으로 문제를 풀었습니다. 2022 테크 여름인턴십 코딩테스트 해설 2022년 카카오 여름 인턴십 코딩 테스트가 지난 5월 7일에 5시간에 걸쳐 진행되었습니다. 시간이 부족하여 문제를 풀지 못하는 아쉬움이 없도록 1시간을 늘려 테스트를 진행한 것이 작년과 조금 tech.kakao.com 문제는 프로그래머스에서 확인할 수 있습니다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 간단한 구현 문제입니다. 4개의 지표가 존재하고 각 지표는 두 가지 유형 중 하나입니다. 이 유형들의 점수를 ..