JVM 메모리 구조
2022. 1. 19. 22:00
CS
Java는 .java 파일을 javac 컴파일러를 통해 .class 바이트코드로 컴파일한 후, 클래스 로더에 의해 .class 파일을 JVM 위의 Runtime Data Area에 올려서 실행시키기에 OS 독립적으로 개발할 수 있다. 📌 JVM의 동작 방식 및 순서 1. 프로그램 실행 시 JVM은 OS로부터 메모리를 할당 받는다. 2. 자바 컴파일러(javac)가 자바 소스코드(.java)를 자바 바이트코드(.class)로 컴파일한다. 3. Class Loader를 통해 JVM Runtime Data Area로 로딩된다. 4. 로더에 의하여 로딩 된 .class들은 Execution Engine을 통해 Interpret(해석)된다. 5. 해석된 바이트 코드는 Runtime Data Area의 각 영역에 ..
선형 리스트와 연결 리스트의 정의 (Kotlin 으로 연결 리스트 구현)
2022. 1. 11. 15:02
CS
📌 선형 리스트(ArrayList) 선형 리스트란 배열과 같이 연속되는 기억 장소에 저장되는 리스트를 말한다. 선형 리스트는 논리적인 순서와 기억 장소에 저장되는 물리적 순서가 일치한다. 선형 리스트의 장점 간단한 자료구조이다. 접근 속도가 빠르다. 연속된 메모리 공간에 존재하기 때문에 관리하기가 편하다. 선형 리스트의 단점 중간에 자료를 삽입하기 위해서는 연속된 빈 공간이 있어야 한다. 즉 삽입과 삭제를 위해서는 자료의 이동이 필요하기 때문에 번거롭다. 또한 배열의 크기보다 데이터의 수가 클 경우 데이터를 저장할 수 없는 경우가 생긴다. 📌 연결 리스트(LinkedList) 연결 리스트는 자료들을 연속적으로 배열시키지는 않고 임의의 기억공간에 기억시키면서, 자료 항목의 순서에 따라 노드의 포인터 부분을..
가상머신에 리눅스 설치 & 로컬 컴퓨터로 리모트 컴퓨터 접속
2022. 1. 6. 15:50
CS
코드스쿼드 CS 시간에 컴퓨터 환경에서 사용할 수 있는 가상 환경(Virtual Machine)에서 리눅스 운영체제를 설치 로컬 컴퓨터에서 가상 환경 리모트 컴퓨터에 ssh로 접속해서 본인 계정으로 로그인하여 디렉터리를 생성해보는 미션을 받았다. 💻 로컬 컴퓨터와 리모트 컴퓨터 웹 서버에 배포를 해야하는 환경에서는 로컬에서 작업한 것을 리모트 컴퓨터에 복사해야 하는 상황이 생긴다. 모바일 개발자도 내 컴퓨터에서 작업하고 모바일 디바이스로 옮겨야 하는 상황과 비슷하다. 쉘(Shell) Shell(쉘, 셸)이란? OS와 대화하는 프로그램 여러 가지 종류가 있는데 지금은 bash 사용 맥 사용자는 zsh를 사용하는 것도 좋은 방법이라고 한다.(필자가 zsh를 사용하고 있다.) 💻 가상 환경 설치하기 필자는 M..
OAuth 개념 및 동작 방식
2021. 10. 27. 21:03
CS
우리는 자주 어느 사이트에 로그인을 하려고 하면 외부 소셜 계정을 기반으로 간편히 로그인할 수 있는 웹 애플리케이션을 쉽게 찾아볼 수 있다. 예를 들어, 외부 웹 애플리케이션에 카카오로 로그인하면 API를 통해 연동된 카카오 로그인 이메일 정보를 가져와 웹 애플리케이션의 아이디로써 활용할 수 있다. 이때 사용되는 프로토콜이 OAuth이다. 📌 OAuth란? OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로써 사용되는, 접근 위임을 위한 개방형 표준이다. 🤷♂️ OAuth는 왜 사용할까? OAuth를 사용하는 이유는 다른 서비스의 회원 정보를 안전하게 사용하기 위해서이다. 여기에서 안전하..
CI & CD란 (Jenkins, Gitlab CI/CD, Travis)
2021. 10. 19. 19:20
CS
CI / CD에 대해 알아보기 전에 우선 DevOps라는 것을 알아야 한다. 📌 DevOps란? DevOps는 소프트웨어 개발 및 IT 운영을 포함하는 소프트웨어 개발 방법론으로, 지속적인 개발, 지속적인 빌드, 지속적인 테스트, 지속적인 통합, 지속적인 제공 및 엔드-투-엔드 소프트웨어 개발 전반에 걸친 지속적인 모니터링을 포함하는 용어이다. 이 중에서 지속적인 통합, 지속적인 배포가 있는데 이를 CI/CD라 칭한다. CI(Continuous Integration) : 지속적인 통합 CD(Continuous Delivery) : 지속적인 배포 CI/CI를 쉽게 설명하면, 자동으로 여러 시스템이 통합이 되고 배포가 된다라는 뜻이다. 그럼 무엇이 통합이 되고 배포가 어떤 식으로 된다는 것일까? CI/CD의..