본문 바로가기

전체 글

(172)
운영체제의 주소 바인딩 알아보기 운영체제 - 주소 바인딩 Goal 프로그램이 물리적 메모리에 어떻게 올라가서 주소를 할당받는지 이해하기 메모리의 주소 집마다 고유의 주소가 있는 것처럼 메모리 역시 주소를 통해 접근할 수 있는 저장장치입니다. 주소 바인딩 프로그램이 실행을 위해 메모리에 적재된다면 그 프로세스를 위한 독자적인 주소 공간이 생성됩니다. 우리는 이 주소를 논리적인 주소(logical address) 또는 가상 주소(vritual addres)라고 칭합니다. 이와 같은 논리적 주소는 각 프로세스마다 독립적으로 할당되며 0번지부터 시작되고, CPU는 이와 같은 논리적 주소에 근거해 명령을 실행합니다. 그리고 물리적 주소(physical adderss)는 물리적 메모리에 실제로 올라가는 위치를 말합니다. 보통 물리적 메모리의 낮은..
Spring Dependecy Injection 알아보기 Spring Dependency Injection의 동작원리를 이해해보자 GOAL 객체지향에서의 의존성을 이해한다. DI의 개념과 도입 이유를 이해한다. Spring에서의 동작원리를 이해한다. 객체지향 프로그래밍 객체지향 프로그래밍은 무엇이고? 객체지향 프로그래밍에서 의존성이라는 단어는 어떻게 사용될까요? 컴퓨터 프로그래밍의 패러다임 중 하나로 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것입니다. 그리고 객체란 물리적으로 존재하는 실생활의 물건 또는 우리가 추상적으로 생각할 수 있는 개념 중 자신의 속성을 가지면서 다른 것과 식별이 가능한 것을 말합니다. 객체지향에서의 의존성이란? 의존이란 단어는 의지하여 생활하거나 존재하는 ..
AWS EC2에 CI/CD 파이프라인을 위한 젠킨스 구축하기(2) - 도커 설치 및 원격배포 이전 글에서는 ec2 인스턴스에 젠킨스를 설치했습니다. 저는 이제 이 젠킨스 서버에서 요청을 통해 원격(Remote)으로 서버를 배포하도록 구성하겠습니다. 먼저 젠킨스를 설치한 인스턴스에 몇가지 추가적인 작업을 해주겠습니다. github와 젠킨스를 연동하기 위해 서버에 git과 docker를 설치합니다. sudo yum install git -y sudo yum install docker -y 1번 라인을 통해 도커를 실행하고 2번 라인 명령어를 입력해 docker 프로세스가 실행 중인지 확인할 수 있습니다. 1. sudo systemctl start docker 2. ps -ef | grep docker 여기까지 완료되었다면 새로운 ec2 인스턴스를 생성하고 위의 명령어와 같이 도커를 설치해줍니다. 이..
AWS EC2에 CI/CD 파이프라인을 위한 젠킨스 구축하기(1) - 젠킨스 설치 이번 글에서는 AWS EC2 인스턴스에서 젠킨스를 구축해 CI/CD를 위한 파이프라인을 만들어보겠습니다. 우선 젠킨스는 Java Runitme으로 되어 있는 서버이므로 EC2에 자바 1.8 이상을 설치하는 것이 우선입니다. 저는 aws의 메인 이미지인 Amazon Linux 2로 ec2를 구축하였는데 이 버전의 경우 자바가 기본적으로 설치되어 있지 않으므로 먼저 설치해주겠습니다. 1. 자바 설치 sudo yum install -y java-1.8.0-openjdk-devel.x86_64 java -version 자바의 설치가 완료되었으니 이제 젠킨스를 ec2에 설치해보겠습니다. 2. 젠킨스 설치 아래와 같은 순서대로 하나씩 실행해주세요. sudo yum -update sudo wget -O /etc/yu..
[삼성 sw 기출] - 마법사 상어와 파이어볼 www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 문제를 풀면서 많이 헤매었는데, 주의해야 할 것을 위주로 작성해봐야겠다. 문제 풀이 방식 문제 풀이 방식은 사실 특별할 것은 없는데, 아래의 문제 설명처럼 파이어볼을 이동하고 나누는 과정을 그대로 구현하면 된다. 주의할 점 이 문제를 쉽게 접근하기 위해서는 ArrayList를 2차원 배열로 선언하는 것이 중요하다는 것을 인지했으면 더 빨리 풀 수 있었을 것 같다. 2차원의..
[Leetcode 32/100] Next permutation - Medium leetcode.com/problems/next-permutation/ Next Permutation - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 요즘 백준을 위주로 문제를 풀이하고 있는게 조금 지겨워서 리트코드 한번 풀어보았습니다~ 100문제를 언제 다 채울 수 있을까요 ㅎㅎ 문제 풀이 방식 문제 푸는 방식을 이해한다면 단순 구현으로 처리 가능 1. 뒤에서부터 조사하여 오름차순이 끝나는 arr[idx]를 찾는다. 2. 그 다음에 다시 뒤에서부터 조사하면서..
Apache Maven 이해하고 사용하자 저는 아직까지 SpringBoot의 빌드 도구로 gradle보다 maven을 많이 사용하고 있습니다. 인텔리제이 또는 STS와 같은 ide 덕분에 빌드 도구를 이해하지 않고 손쉽게 사용해 왔지만 간단한 이해만 하고 사용하다 보니 금일 발생한 이슈가 메이븐과 관련된 것인지 바로 파악하지 못했습니다. 원인을 찾고 해결하는데 많은 시간을 소모해서 정확하게 이해하고자 글을 포스팅하게 되었습니다. 먼저 maven은 무엇일까요?? 아파치 메이븐(Apache Maven)은 자바용 프로젝트 관리 도구이다. 아파치 앤트의 대안으로 만들어졌다. 아파치 라이선스로 배포되는 오픈 소스 소프트웨어이다. 위키백과에는 메이븐을 자바용 프로젝트 관리 도구로 설명하고 있습니다. maven이전에는 앤트라는 것을 사용했나보네요. 지금은 ..
[boj 3273] 두 수의 합 - 투 포인터 문제 풀이 방식 정렬 후 투 포인터 활용, 다른 사람들의 풀이를 보니 right를 n-1 부터 시작하던데 참고해봐야겠다... 주의할 점 코드 상에 아래와 같은 조건을 넣어주지 않으면 탐색을 전체적으로 하지 않아 예외 케이스가 발생했다. if(right == n && left < n-1){ left++; right = left + 1; } 소스코드