전체 글 73

[우아한 테크 코스]6기 프리코스 3주차 회고록

프리코스 3주차 회고록 우아한형제들의 개발자 양성 프로젝트, 우아한테크코스의 프리코스를 경험하게 된 것은 정말 뜻 깊은 시간이었습니다. 이 프리코스를 통해 많은 것을 배우고 성장하는 기회를 얻었습니다. 아래에는 이 경험에서 얻은 교훈과 느낀 점, 그리고 부족한 부분을 솔직하게 정리해보겠습니다. 🚀 기능 요구 사항 로또 게임 기능을 구현해야 한다. 로또 게임은 아래와 같은 규칙으로 진행된다. - 로또 번호의 숫자 범위는 1~45까지이다." - 1개의 로또를 발행할 때 중복되지 않는 6개의 숫자를 뽑는다. - 당첨 번호 추첨 시 중복되지 않는 숫자 6개와 보너스 번호 1개를 뽑는다. - 당첨은 1등부터 5등까지 있다. 당첨 기준과 금액은 아래와 같다. - 1등: 6개 번호 일치 / 2,000,000,000원..

[우아한 테크 코스]6기 프리코스 2주차 회고록

프리코스 2주차 회고록 우아한형제들의 개발자 양성 프로젝트, 우아한테크코스의 프리코스를 경험하게 된 것은 정말 뜻 깊은 시간이었습니다. 이 프리코스를 통해 많은 것을 배우고 성장하는 기회를 얻었습니다. 아래에는 이 경험에서 얻은 교훈과 느낀 점, 그리고 부족한 부분을 솔직하게 정리해보겠습니다. 🚀 기능 요구 사항 초간단 자동차 경주 게임을 구현한다. 주어진 횟수 동안 n대의 자동차는 전진 또는 멈출 수 있다. 각 자동차에 이름을 부여할 수 있다. 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다. 자동차 이름은 쉼표(,)를 기준으로 구분하며 이름은 5자 이하만 가능하다. 사용자는 몇 번의 이동을 할 것인지를 입력할 수 있어야 한다. 전진하는 조건은 0에서 9 사이에서 무작위 값을 구한 후 무작위 ..

[우아한 테크 코스]6기 프리코스 1주차 회고록

프리코스 1주차 회고록 우아한형제들의 개발자 양성 프로젝트, 우아한테크코스의 프리코스를 경험하게 된 것은 정말 뜻 깊은 시간이었습니다. 이 프리코스를 통해 많은 것을 배우고 성장하는 기회를 얻었습니다. 아래에는 이 경험에서 얻은 교훈과 느낀 점, 그리고 부족한 부분을 솔직하게 정리해보겠습니다. 🚀 기능 요구 사항 기본적으로 1부터 9까지 서로 다른 수로 이루어진 3자리의 수를 맞추는 게임이다. 같은 수가 같은 자리에 있으면 스트라이크, 다른 자리에 있으면 볼, 같은 수가 전혀 없으면 낫싱이란 힌트를 얻고, 그 힌트를 이용해서 먼저 상대방(컴퓨터)의 수를 맞추면 승리한다. 예) 상대방(컴퓨터)의 수가 425일 때 123을 제시한 경우 : 1스트라이크 456을 제시한 경우 : 1볼 1스트라이크 789를 제시..

전략 패턴 ( Strategy Pattern )

전략 패턴이란? 전략 패턴은 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해 줍니다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있습니다. 오리를 구현다고 생각해보자 우선 장난감 오리, 청둥오리, 원앙등 오리마다 우는 소리가 다를다 이 때 여러 방법을 사용해서 구현이 가능하다. 첫번째로 if - else 를 사용할수 있다. 1. IF -Else class Duck { String type; public Duck(String type) { this.type = type; } public void quack() { if ("RealDuck".equals(type)) { System.out.println("Quack Quack!"); } else..

디자인 패턴 2023.10.18

MySQL 공간 데이터

공간데이터 공간 공간데이터는 지구상에 존재하는 지형정보를 표현한 데이터이다. 즉 종이지도에 표현된 장, 도로, 나무, 건물, 가로등, 전봇대 등의 모든 표현물을 디지털 지도상에 옮겨 놓은 데이터를 말한다. 이 기능은 주로 지리적 정보 시스템 (GIS)응용 프로그램에서 유용하게 사용된다. 공간 데이터 타입 형식 내부 구조 지도의 개체 예 MySQL의 공각 데이터 개체 점(Point) 1개의 x,y좌표 가로수,논,심볼,텍스트 등 POINT 선(Line) 여러 개의 x,y 좌표 도로, 하천 등 LINESTRING 면(PolyGon) 여러 개의 x,y 좌표 (첫 점 = 끝점) 건물 POLYGON 공간 데이터의 저장 MySQL 버전 지원 데이터 타입 저장 단위 비고 3.23 이전 없음 지도 파일의 저장결로만 텍스..

DB 2023.10.12

전체 텍스트 검색과 파티션

전체 텍스트 검색 전체 텍스트 검색은 긴 문자로 구성된 구조화되지 않은 텍스트 데이터 등을 빠르게 검색하기 위한 부갖거인 MYSQL의 기능이다. 저장된 텍스트의 키워드 기반의 쿼리를 위해서 빠른 인덱싱이 가능하다. 이 기능은 FULLTEXT 인덱스를 사용하여 작동한다. 전체 텍스트 인덱스(FULLTEXT 인덱스) MySQL과 같은 관계형 데이터베이스 관리 시스템에서 제공하는 특별한 종류의 인덱스로 이 인덱스는 텍스트 기반의 데이터를 효율적으로 검색할 수 있게 해준다. FULLTEXT 인덱스는 일반적으로 자연어 처리 알고리즘을 사용하여 주어진 키워드가 텍스트 필드 내에서 어떻게 나타나는지를 분석한다. 전체 텍스트 인덱스는 InnoDB와 MYISAM 테이블만 지우너한다 전체 텍스트 인덱스는 char, var..

DB 2023.10.07

DB 스토어드 프로시저

스터어드 프로시저 스토어드 프로시저는 데이터베이스 시스템에서 실행할 수 있는 하나 이상의 SQL 명령문의 묶음이다. MYSQL에서 제공된느 프로그래밍 기능이라고 생각하면 된다. 클리이언트 애플리케이션에서 호출하여 실행할 수 있으며 자주 사용되는 일반적인 쿼리를 사용하는 것보다 이것을 모듈화 시켜서 필요할 때마다 호출 하면 편리하게 사용할 수 있다. 스토어드 프로시저의 장점 여러 SQL문이 묶여 있기 때문에 트래픽을 줄이고 실행 속도를 높일 수 있다. 재사용성이 올라간다. 중복된 코드를 줄이고 유지보수가 쉬워진다. 보안을 강화할 수 있다. 스토어드 프로시저의 단점 디버깅이 어려워 진다. 데이터베이스 마다 다른 프로기르맹 언어와 문법을 사용하므로, 이식성이 떨어질 수 있다. 스토어드 프로시저의 정의 형식 C..

DB 2023.10.06

인덱스(INDEX)

인덱스 MySQL의 인덱스는 데이터베이스에서 데이터를 빠르게 검색할 수 있도록 도와주는 자료 구조입니다. 인덱스가 없다면 데이터베이스는 테이블의 모든 레코드를 순회해야 하기 때문에 검색이 느려질 수 있다. 책의 맨처음에 나오는 목차처럼 해당 컬럼이 어디에 있는지 저장하여 해당부분만 검색할 수 있게 하여 검색속도를 향상시킨다. 인덱스의 장점 테이블 전체를 스캔하는 것보다 빠른 데이터 검색이 가능하다. WHERE,JOIN,GROUP BY,ORDER BY등의 SQL 구문에서 성능이 향상된다 인덱스를 사용하면 데이터 정렬 및 그룹화 작업을 빠르게 수행할 수 있다. 클러스터링 인덱스를 사용하면 실제 테이블에 접근하지 않고도 원하는 데이터를 추출할 수 있다 인덱스의 단점 인덱스가 있으면 데이터를 삽입,수정,삭제할 ..

DB 2023.10.05

[DB] 뷰

뷰 뷰는 하나 이상의 테이블로 부터 생성된 가상 테이블이다. 뷰는 실제로 데이터를 저장하지 않으며, 기존 테이블의 데이터를 특정 조건에 따라 필터링 하거나 집계하여 보여준다. SQL 쿼리를 통해 생성되고, 일반적인 테이블 처럼 사용이 가능하다. 뷰의 장점 복잡한 쿼리를 간단한 뷰로 만들어 사용자가 쉽게 데이터에 접근할 수 있게 한다. 뷰를 사용하면 특정 열이나 행에 대한 접근을 제한해 보안 수준을 높힐 수 있다. 동일한 쿼리를 여러번 사용할 필요가 없이 재사용이 가능하며, 유지보수에 용이다. 뷰를 통해 데이터를 조작하면, 원본 데이터에는 영향을 주지 않으므로 무결성을 유지할 수 있다. 뷰의 단점 뷰는 실시간으로 기존 테이블의 데이터를 익어오기 때문에 복잡한 뷰는 성능 저하를 초래할 수 있다. 일부 뷰는 ..

DB 2023.09.27

MYSQL 제약 조건

제약 조건 제약조건이란 데이터의 무결성을 지키기 위한 제한된 조건을 의미한다. MYSQL은 데이터의 무결성을 위해 5가지의 제약조건을 제공한다. PRIMARY KEY 제약 조건 FOREIGN KEY 제약 조건 UNIQUE 제약 조건 CHECK 제약조건 DEFAULT 정의 NULL 값 허용 기본 키 제약 조건 테이블에 존재하는 많은 행의 데이터를 구분할 수 있는 식별자를 기본키(PRIMARY KEY)라고 부른다. 대부분의 테이블은 키본 키를 가지져야 하고 없어서 구성이 가능하지만 대부분 기본 키를 설정해 주어야 한다. 기본 키 제약 조건은 기본키는 테이블 별로 하나만 존재해야 하며 이는 해당 테이블의 각 레코드를 유일하게 식별한다. NULL 값을 허용하지 않으며 자동으로 UNIQUE 제약조건이 부여된다. ..

DB 2023.09.27