목록전체 (156)
Dazzling 개발 노트
[코드트리] 배열의 이해 Java에서 배열을 선언하기 위해서는 다음과 같이 선언했었습니다. int[] a = new int[100]; 이렇게 선언하여 만들어지는 배열을 정적 배열이라고 부릅니다. 정적 배열의 경우에는 배열의 선언과 동시에 그 크기를 정해줘야 하며, 한번 선언된 이후부터는 크기를 바꿀 수 없습니다. 하지만 자주 길이가 바뀌는 경우라면, 명확히 메모리를 낭비하고 있는 것이 아닐까요? 이러한 문제를 해결하기 위해 나온 것이 바로 동적 배열입니다. 동적 배열은 자유롭게 길이가 줄어들고 늘어날 수 있습니다. 즉, 정확히 사용하고 싶은 만큼만 공간을 차지하여 사용하는 방식입니다. 동적 배열에서 삽입, 삭제, 탐색하는 과정은 모두 정적 배열과 동일하기 때문에 시간복잡도는 완전히 일치하지만, 메모리를 ..
1. Spring Boot 프로젝트 생성 https://start.spring.io/ 의존성까지 추가한 후에 Generate 클릭 시 압축파일이 다운된다. 압축을 해제한다. 2. Intelij에서 다운받은 파일의 경로를 Open 한다. 프로젝트가 정상적으로 열린 경우, 위와 같은 directory를 확인할 수 있다. 3. 프로젝트 실행 jdk를 선택한 후 intelij에서 설정 준비가 완료되면 src > main > java 내에 Application.java 파일을 실행할 수 있게 된다. 초록색 실행 버튼을 눌러 프로젝트를 실행한다. 4. 프로젝트 실행 확인 프로젝트가 정상적으로 실행되면 아래와 같은 콘솔을 확인할 수 있다. 8080포트를 통해 확인한다. 번외). 프로젝트 실행 시 오류 발생 아래와 같..
Port 0000 was already in use는 자주 발생하는 오류 중 하나이다. 사용중인 포트를 종료하고 다시 시작해주면 된다. Windows # 사용중인 포트의 PID 확인 netstat -ano | findstr 8080 # 사용중인 포트를 PID로 종료시키기 taskkill /F /pid 4460 # 액세스가 거부되는 경우 cmd를 관리자 권한으로 열어서 실행 Mac lsof -i tcp:8080 sudo kill -9 PID명
기본 연산 강제로 여러 줄의 코드를 한 줄로 몰지 않는 이상, 한 줄에는 하나의 명령이 올 것 입니다. 가장 간단한 연산은 역시 대입일 것입니다. set a = 10 실제로 a라는 변수를 만들고, 10이라는 값을 할당하는 과정에서 컴퓨터는 많은 연산을 하지만, 우리는 단순하게 O(1)의 연산을 수행했다고 볼 것입니다. 조건문도 비슷합니다. set a = 5 if a != 10 print('hello') print 같은 메서드를 O(1)이라고 가정한다면, 대입도 O(1)이고 print도 O(1)이니 if a != 10 만 정확하게 알면 될 것 입니다. 그러나 결국 단순히 두 값을 비교하는 연산을 수행하기 때문에, 결과적으로 조건문도 O(1)의 시간복잡도를 보여주게 됩니다. 따라서 위 코드의 시간복잡도는 O..
본래 점근적 표기법은 수학적인 개념이기 때문에 엄밀한 정의를 설명하기엔 수학적 지식이 약간 필요하지만, 우리는 간단하게 개념을 이해할 수 있는 수준으로 설명하도록 하겠습니다. 점근적 표기법에는 크게 O, Ω, Θ가 있습니다. 각각 빅-오, 빅-오메가, 빅-세타라고 부릅니다. 간단한 다항식 n3+n2+n−1이라는 식이 있다고 가정하겠습니다. O는 가장 높은 차수 보다 같거나 높은 식을 뜻합니다. 즉, n3+n2+n−1에서 가장 높은 차수는 n3 이므로 O(n3), O(n5), O(n100) 모두 맞는 말이지만, 우리는 앞으로 이 식을 보게 되었을 때 좀 tight하게 O(n3) 라고 부르게 될 것이며, 이것이 바로 시간복잡도를 재는 척도로 쓰이게 됩니다. 이때 표현은 n3+n2+n−1=O(n5) 와 같이 ..
AWS Jam 이벤트가 끝난지 벌써 3주가 지났다. 프로젝트를 하다보니 시간이 정말 빨리 흐르는 것 같다..ㅎ Jam에 대한 추억이 가물가물해질 때 쯤 이번주에 멀티클라우드 특강을 듣게 되었다. 11일 월요일부터 14일 목요일까지 진행된 멀티클라우드 특강에 대한 후기도 적어보고자 한다~.~ 특강은 크게 이론 1~2시간, 실습 2~3시간으로 구성되어 총 4시간에 걸쳐 진행되었다. 이론 시간에는 현재 트렌드나 왜 멀티클라우드를 사용하는지, 왜 알아야 하는지 같은 기본적인 내용을 들을 수 있었다. 실습 시간에는 Packer와 Terraform 교육 환경에서 실습을 진행했다. 덕분에 이론도 알고, 직접 Terraform을 사용도 해보고, Azure도 슬쩍 맛볼 수도 있었다. 멀티클라우드 특강이 무엇인지, 왜 필..
CI/CD? CI/CD는 Continuous Integration/ Continuous Delivery(Deployment)의 약자이다. 소프트웨어의 변경 사항이 지속적으로 통합되고 동시에 배포함으로써 개발 주기를 단축하고 서비스의 품질을 향상시킨다. CI/CD는 크게 3단계로 나누어 진다. - 지속적인 통합 ( Continuous Integration ) - 지속적인 전달 ( Continuous Delivery ) - 지속적인 배포 ( Continuous Deployment ) Continuous Integration 지속적으로 코드의 통합을 진행하면서 코드의 품질을 유지한다. 이 과정에서 이루어지는 주된 작업은 빌드, 테스트, 병합이다. 빌드, 테스트, 병합을 자동화된 프로세스로 최대한 자주 통합한다..