1주 차 온보딩 github https://github.com/donghoonyeom/java-baseball-6/tree/donghoonyeom GitHub - donghoonyeom/java-baseball-6 Contribute to donghoonyeom/java-baseball-6 development by creating an account on GitHub. github.com [시작하면서] 프리코스 1주 차 온보딩 미션을 진행하면서 느꼈던 부분과 클린 코드 문서를 통해 배웠던 부분을 회고해보려고 한다. [클린 코드] 부끄럽지만 난 지금까지 개발을 공부하면서 클린코드를 진행한 적이 없다. 처음 알게 된 건 우테코 디스코드 커뮤니티에서 한 지원자분께서 클린코드에 대한 내용을 올려주셨었는데 우테..
해시 테이블(Hash Table)이란? 데이터를 저장하고 검색하는 데 사용되는 자료구조 중 하나. 특히, 데이터를 효율적으로 검색할 수 있도록 설계되어 있다. 해시 테이블은 '해시 함수'라는 함수를 사용하여 데이터를 배열의 인덱스로 변환하고, 해당 인덱스에 데이터를 저장한다. 해시 함수는 데이터의 특정 특성을 활용하여 고유한 해시 값(해시 코드 또는 해시 키)을 생성하는 역할을 한다. 이렇게 생성된 해시 값은 배열의 인덱스로 사용되어 데이터가 해시 테이블 내 어느 위치에 저장되어야 할지를 결정한다. 일반적으로 해시 함수는 입력 데이터와 출력 해시 값의 길이가 다르더라도, 동일한 입력에 대해 항상 동일한 해시 값을 반환해야 한다. 이렇게 해시 함수를 설계함으로써 해시 충돌을 최소화 할 수 있다. 해시 테이..
맵(Map)이란? 맵은 특정 순서에 따라 키와 매핑된 값의 조합으로 형성된 자료구조이다. 맵은 키-값 쌍의 집합으로, 특정 키를 통해 연결된 값을 검색하고 저장하는 데 사용된다. 맵의 특징 유일한 키(Key) : 하나의 키는 맵 내에서 유일해야 합니다. 중복된 키를 허용하지 않는다. 효율적인 검색 : 키를 사용하여 값을 검색하는 과정이 빠르고 효율적이어야 한다. 맵은 일반적으로 해시 테이블(hash table) 등을 이용하여 빠른 검색을 지원 동적 크기 조정 : 맵은 동적으로 크기를 조정하여 새로운 key-value 쌍을 추가하거나 기존 키-값 쌍을 삭제할 수 있어야 한다. 순서 보장 여부 : 일부 맵 구현은 삽입된 순서를 보장하여 데이터를 저장하지만, 다른 구현은 순서를 보장하지 않을 수 있다. 언어 ..
우선순위 큐란? 각 요소들이 각각의 우선 순위를 갖고있고, 요소들의 대기열에서 '우선 순위가 높은 요소'가 '우선 순위가 낮은 요소'보다 먼저 제공되는 자료구조다. 힙을 기반으로 구현되나 힙과는 다른 개념이다. 힙은 기본적으로 중점이 되는 것이 '최솟값 또는 최댓값 빠르게 찾기'인 반면, 우선순위 큐는 우선순위가 높은 순서대로 요소를 제공받는다. 기본적으로 큐와 유사한 형태를 가지고 있으며, 다만 큐는 데이터가 들어온 순서대로 처리되지만, 우선순위 큐는 우선순위가 높은 데이터가 먼저 처리됩니다. 우선순위 큐는 최댓값이나 최솟값을 빠르게 찾아내는데 유용하게 사용됩니다. 우선순위 큐의 연산 삽입(Insertion): 요소를 우선순위에 맞게 삽입 삭제(Deletion): 우선순위가 가장 높은(또는 낮은) 요소..
큐(Queue)란? 큐(Queue)는 데이터를 임시로 저장하고 처리하는 자료구조 중 하나입니다. 이는 데이터를 선입선출(First-In-First-Out, FIFO)의 순서로 다루는 구조이며, 스택과는 반대되는 개념을 가지고 있다. 삽입 및 삭제에 O(1) , 탐색에 O(n)이 걸린다. 큐는 일상 생활에서 줄 서기와 유사한 개념으로 이해할 수 있습니다. 가장 먼저 온 사람이 먼저 서비스를 받는 것과 같이, 큐에 추가된 데이터도 가장 먼저 처리되어 나옵니다. CPU작업을 기다리는 프로세스, 스레드 행렬, 네트워크 접속을 기다리는 행렬, 너비 우선 탐색, 캐시도 같은 개념이다.
트랜잭션이란? 트랜잭션(Transaction)은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말하며, 데이터베이스에 접근하는 방법은 쿼리이므로, 즉 여러 개의 쿼리들을 하나로 묶는 단위를 말한다. 트랜잭션은 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 그리고 지속성(Durability)이라는 특성을 갖는다. 이 네 가지 특성은 트랜잭션의 안전성과 무결성을 보장하는데 중요한 역할을 한다. 더보기 트랜잭션의 흐름 트랜잭션 시작 (BEGIN 또는 START TRANSACTION 명령) 데이터베이스 작업 수행 (SELECT, INSERT, UPDATE, DELETE 등) 모든 작업이 성공적으로 수행되면 커밋 (COMMIT 명령으로 트랜잭션 완료)..
정규화 과정은 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나 이를 해결하거나, 저장공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정을 말한다. 여기서 말하는 데이터베이스 이상 현상은 예를 들어 회원이 한 가지의 등급을 가져야 하는 상황에서 여러 개의 등급을 가지고 있거나, 데이터를 삭제할 때 필요한 데이터가 같이 삭제되고, 데이터를 삽입하는데 하나의 필드값이 NULL이 되면 삽입이 안 되어서 삽입하기 어려운 현상을 말한다. 정규화는 정규화 원칙을 기반으로 정규형을 만들어가는 과정이며, 정규화된 정도를 정규형으로 표현한다. 기본 정규형은 제 1정규형, 제2 정규형, 제3 정규형, 보이스-코드 정규형(BCNF)이 있고, 고급 정규형으로는 제4 정규형과 제5 정규형이..
ERD 의미 ERD(Entity Relationship Diagram)는 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션 간의 관계들을 정리한 것이다. 설계 과정에서 중요한 도구로서 데이터베이스의 구조를 이해하고 분석하는 데 도움을 주며, 데이터베이스의 효율성과 일관성을 유지하고 향상하는 데 기여한다. 또한 팀 간의 협업과 유지 보수를 간편하게 만들어준다. 따라서 프로젝트의 성공을 위해 ERD를 적절하게 활용하는 것이 중요하다. 만약 우리가 서비스를 구축한다고 하면 가장 신경 써야 할 부분이다. ERD의 중요성 ERD는 시스템의 요구 사항을 기반으로 작성되며 이 ERD를 기반으로 데이터베이스를 구축한다. 데이터베이스를 구축한 후에도 디버깅이나 비즈니스 프로세스 재설계가 필요한 경우에 ..
조건문은 말 그대로 주어진 조건식의 결과에 따라 별도의 명령을 수행하도록 제어하는 명령문입니다. 자바에서 사용되는 조건문은 크게 if문과 switch문이 있습니다. if 문 if문은 소괄호 안에는 boolean 값으로 평가될 수 있는 조건식을 넣어주고, 중괄호 안의 실행 블록에는 조건식이 참일 때 실행하고자 하는 코드를 적어주면 된다. 소괄호 안에 조건문이 참(true) 일 때만 주어진 명령문이 실행된다. 참고로 else문은 생략이 가능하다. public class ifexam { public static void main(String[] args) { int num1 = 10; int num2 = 5; int num3 = 10; if(num1 == num3) { //if문의 조건식이 참이어서 실행 Sy..
컴퓨터는 CPU, DMA 컨트롤러, 메모리, 타이머, 디바이스 컨트롤러 등으로 이루어져 있습니다. CPU CPU란 (Central Processing Unit)의 약자로 중앙 처리 장치라고 부르기도 하며, 제어장치, 레지스터, 산술논리연산장치로 이어져 있습니다. 컴퓨터의 두뇌로서, 명령어를 해석하고 실행하는 역할을 수행합니다. 산술 및 논리 연산, 데이터처리, 제어 등의 작업을 처리합니다. 레지스터(Register) : CPU 내부에 위치한 작고 빠른 기억 장소로, 명령어와 데이터를 일시적으로 저장하는 역할을 합니다. 레지스터는 CPU에서 가장 빠른 액세스 속도를 가지므로, 중앙 처리 장치와 메모리 간의 데이터 이동을 감소시키고 연산 속도를 향상시킵니다. 또한 주소 레지스터, 데이터 레지스터, 명령어 레..