전체 글 47

시간 복잡도(Time Complexity)와 Big-O 표기법(Big-O Notation)

효율적인 알고리즘 알고리즘에서 문제를 푸는 것 만큼이나 중요한 문제는 공간과 시간의 활용을 어떻게 효율적으로 할 것인지에 대한 문제이다. 이에, 공간 복잡도와 시간 복잡도는 다양한 알고리즘의 평가 도구로 사용된다. 공간 복잡도: 얼마나 메모리를 적게 쓰는가? 시간 복잡도: 얼마나 빠른가(CPU에 얼마나 부담을 주는가)? 최신의 머신에서는 공간 복잡도에 대해 과거에 비해 고민이 많이 줄었으나(그러나 알고리즘 평가시 보조적인 역할을 한다), 시간 복잡도는 문제를 효율적으로 해결하기 위해 필수적으로 고민해야 하는 이슈이다. 공간 복잡도 Space Complexity 프로그램이 실행되고 완료되기까지 사용하는 총 저장 공간량을 의미한다. 고정 공간: 알고리즘과 상관 없는 공간으로 코드와 단순 변수, 상수가 해당된..

01 | 데이터베이스와 테이블 만들기

MySQL 설치 | 환경 변수 등록 | 윈도우 터미널에 Git Bash 설정(Git Bash 기본 터미널 보기 싫다) .... 등 준비 기초 명령어 데이터베이스 조작 명령어: 존재하는 데이터베이스 나열 SHOW databases; 명령어: 데이터베이스 생성 CREATE DATABASE 공백은 넣지 말 것. 코드는 대문자로 쓰는 것을 추천: 시인성 좋음 여러 줄에 걸쳐 명령을 해도 mysql은 알아 듣는다. 명령어: 삭제 DROP DATABASE ; 명령어: 데이터베이스 선택 USE ; -- 다음 명령으로 바뀐 데이터베이스를 확인할 수 있다. SELECT database(); workbench에서 더블클릭한 것과 같은 효과 테이블 조작 a collection of related data held in st..

Programming/DB 2023.09.25

01 | Introduction to Operating Systems

운영체제 (이화여자대학교 반효경 교수) Operating System 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 - 협의의 운영체제: 운영체제 핵심 부분으로 메모리에 상주하는 부분, 즉 커널 - 광의의 운영체제: 커널 뿐 아니라 각종 주변 시스템 유틸리티 포함 목적 자원을 효율적으로 관리🌟 프로세서, 기억장치, 입출력 장치 등의 효율적 관리: 형평성 있는 자원 분배, 주어진 자원 내에서 최대의 성능 내도록(효율성) 사용자 및 운영체제 자신의 보호 프로세서, 파일, 메시지 등 관리 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공: 추상화 하드웨어를 직접 다루는 복..

01 | 무중단 배포환경 구축(Blue/Green) - 1

버전 관리: Github CI/CD: Github Actions, Code Deploy, S3 정적 분석: Sonar Cloud (+ Peer inspection) 서버 / 클라우드: AWS 구현: Spring framework 빌드: Gradle 배포시 서버 보조(리버스 프록시): NginX DB: MySQL, Redis Tools 직접 구축해 나가면서 아래의 설명들을 더 잘 이해할 수 있었다. 자세한 개념과 설명은 출처 글들을 읽어보기 바란다. 이 글에서는 각각에 대해 자세하게 파고들지는 않았다. Github Actions 출처 1 출처 2 Github Actions는 Github 저장소를 기반으로 소프트웨어 개발 워크플로우를 자동화, 사용자의 설정에 맞추어 지정, 실행할 수 있는 도구이다. Buil..

CI/CD

CI/CD는 지속적인 통합Continuous Integration, 배포Deployment의 약자이다. 지속적인 통합: CI 코드 변경 사항을 자주 통합하는 것 변경 사항은 자동화된 빌드 및 테스트 프로세스를 거쳐 메인 코드 브랜치에 병합 변경사항이 다른 부분에 영향을 미치는지 확인하고, 문제가 발생할 경우 즉시 수정 가능 지속적인 배포: CD CI의 확장 코드 변경 사항이 자동으로 프로덕션 환경에 배포되는 것 개발자는 사용자에게 새로운 기능과 버그 수정 신속하게 제공 👉 배포 환경 한번 구축으로 버그 수정 등 배포된 코드에 대한 관리가 매우 쉬워짐

Programming/DevOps 2023.09.08

나만의 무기 : 회고

나만의 무기 개요 5 주의 기간에 4~5 명의 팀원을 반 내에서 모집(!)하여 프로젝트를 진행한다. 프로젝트는 마지막 주 발표(시연)와 포스터를 통해 협력사, 정글 구성원과 결과를 공유한다. 진행한 프로젝트: 로드메이커 해당 프로젝트에 대한 내용은 Github 리포지터리에 있음(아직은 개선해야 하는 부분이 많습니다!). 블로그에는 그 내용보다는 그 과정에서 얻은 기술적, 비기술적 내용들이나 문제 해결에 대한 내용들을 포스트해 나갈 것 같다. Hard Skills Java, Spring Boot, JPA, QueryDSL Github Actions AWS CodeDeploy, EC2, S3 MySQL 여러 Conventions: Code convention, Commit Convention Soft Ski..

1456. 거의 소수: 에라토스테네스의 체(Seive of Eratosthenes)

1456. 거의 소수 문제 어떤 수가 소수의 N제곱(N ≥ 2) 꼴일 때, 그 수를 거의 소수라고 한다. 두 정수 A와 B가 주어지면, A보다 크거나 같고, B보다 작거나 같은 거의 소수가 몇 개인지 출력한다. 제한 1 ≤ A ≤ B ≤ 1014 에라토스테네스의 체 정수론: 소수 에라토스테네스의 체는 범위 내에 있는 소수를 구하는 알고리즘으로, O(N)의 시간복잡도를 가진, 소수를 구하는 방법 중 가장 빠른 알고리즘이다. 당신이 이걸 고안해내지 않는 바에야 모르면 못 푼다. 못할 건 없겠지만 시간 낭비다. 어떤 한 수가 소수인지 아닌지 판단하는 소수 판별법과는 다르므로 하나의 수가 소수인지 판단하는 것은 나중에 살펴보자. 설명 소수도, 합성수도 아닌 유일한 자연수 1을 제외한다. 2를 제외한 2의 배수를..