전체 글69 [Java] JVM의 구조와 자바 컴파일 과정 0. 자바의 특징 자바의 특징이라고 하면 플랫폼 독립성이 먼저 떠오르곤 합니다. 자바가 OS에 독립적일 수 있는 이유는 바로 JVM(Java Virtual Machine) 덕분인데요! 오늘은 자바가 플랫폼 독립성을 가질 수 있는 이유인 JVM의 기능과 컴파일 과정에 대해 알아보도록 하겠습니다! 1. JVM 구조 자바 가상 머신 JVM은 자바 프로그램 실행환경을 만들어 주는 소프트웨어입니다. JVM에는 자바 실행 환경 JRE(Java Runtime Environment)가 포함되어 있기 때문에, 개발자가 작성한 자바 파일을 컴파일한 .class 파일은 JVM에서 실행됩니다! (1) 클래스 로더 (Class Loader) 자바는 동적으로 클래스를 읽어옵니다. 그렇기 때문에 런타임 환경이 되어서야 모든 코드가.. Java 2024. 4. 16. [Java] Call by Value vs Call by Reference 1. 메소드의 파라미터 전달 방법 메소드를 호출할 때 파라미터 값을 전달하는 방법은 두 가지가 있습니다. 하나는 Call by Value 이고 다른 하나는 Call by Reference 입니다. (1) Call by Value Call by Vaule는 메소드를 호출할 때 데이터 값을 넘겨주는 방식을 뜻합니다. (Pass by Value 라고도 부릅니다.) 호출자의 변수와 수신자의 변수는 서로 다른 변수이며, 서로 다른 변수이기 떄문에 메소드 내에서 해당 변수를 조작하더라도 호출자에서 사용한 변수의 값은 변하지 않습니다. (2) Call by Reference Call by Reference는 메소드를 호출할 때 참조(주소)를 직접 전달하는 방식을 뜻합니다. (Pass by Value 라고도 부릅니다... Java 2024. 4. 16. Flyway checksum 에러 본 포스트는 아래와 같은 환경에서 작성하였습니다. java 17 / springboot 3.1.0 / mariadb 11 0. flyway 적용 방법 저희 팀은 flyway를 사용해서 데이터베이스 형상관리를 하고 있습니다. springboot에서는 아래와 같이 dependency를 추가하고 sql문을 작성해주면 쉽게 적용할 수 있습니다. implementation 'org.flywaydb:flyway-core' implementation 'org.flywaydb:flyway-mysql' 라이브러리 추가 후에는 resources/db/migration 위치에 sql 파일을 추가해주시면 됩니다. 파일 이름은 V${version} __ ${name}.sql로 지정하면 되고 version 순서대로 관리가 됩니다.. Etc 2024. 4. 15. [AWS로 시작하는 인프라 구축의 정석] Ch05. 점프 서버 준비하기 본 포스트는 AWS로 시작하는 인프라 구축의 정석 책을 활용한 스터디 기록입니다. 1. 점프 서버 (1) 점프 서버가 필요한 이유 우리는 우리만의 가상 네트워크를 만들고 그 안에 여러 리소스들을 생성하여 사용하게 되는데요. 그런데 모든 리소스들을 public subnet에 두고 IP를 연결해 접근할 수 있게 만들면 안되겠죠! 그런데 그렇게 하면 private subnet에 생성한 리소스에는 어떻게 접근해야 할까요? 이럴 때 우리는 점프 서버를 사용할 수 있습니다. (2) 점프 서버란? 점프 서버란 우리가 생성한 모든 리소스에 접근할 수 있는 입구를 의미합니다. 점프 서버는 EC2를 이용해 구축할 수 있습니다. 점프 서버는 리소스로의 통로 이외의 용도는 없기 때문에 성능이 낮아도 괜찮습니다! 2. Sess.. AWS/AWS로 시작하는 인프라 구축의 정석 2024. 4. 15. [AWS로 시작하는 인프라 구축의 정석] Ch04. 가상 네트워크 만들기 본 포스트는 AWS로 시작하는 인프라 구축의 정석 책을 활용한 스터디 기록입니다. 1. 네트워크란 네트워크는 일상 생활 속에서도 많이 사용하고 전문 용어로도 많이 사용되는 단어인데요. 네트워크의 정의는 무엇일까요? 국제 전기 전자 공학회 IEEE에서는 몇 개의 독립적인 장치가 적절한 영역 내에서 적당히 빠른 속도로 물리적 통신 채널을 통하여 서로가 직접 통신할 수 있도록 지원해주는 데이터 통신 체계 가 네트워크이다! 라고 정의하고 있습니다. 저는 개인적으로 독립적인 장치들끼리 직접 통신할 수 있도록 해주는 것이 네트워크의 핵심이 아닌가 싶습니다. 2. 클라우드 환경에서 네트워크를 구축해보기 우리는 AWS에 대해서 공부를 하고 있습니다. AWS 내에는 다양한 리소스가 있고 그 리소스들끼리도 통신을 해야합니.. AWS/AWS로 시작하는 인프라 구축의 정석 2024. 4. 15. [AWS로 시작하는 인프라 구축의 정석] Ch03. 안전한 조작 준비하기 본 포스트는 AWS로 시작하는 인프라 구축의 정석 책을 활용한 스터디 기록입니다. 1. AWS 계정을 처음 만들면? AWS 계정을 처음 만들게 되면 그 계정은 루트 사용자 계정이 됩니다. 여기서 루트 사용자란? 모든 AWS 서비스 및 기능에 대한 접근 권한을 가진 사용자를 뜻하는데요! 모든 접근 권한을 가진 사용자? 너무 좋아! 라고 생각하실 수 있지만 루트 계정을 그대로 AWS 서비스 이용에 사용하시면 안됩니다 🚫 이것은 내가 아닌 다른 누구라도 루트 계정에 대한 아이디와 비밀번호만 알고 있으면 AWS의 모든 서비스를 마음대로 사용할 수 있다는 것을 의미하기 때문에 AWS를 안전하게 사용하기 위해서는 IAM이라는 것을 활용해 목적에 맞는 사용자 계정을 따로 생성해 사용해야 합니다!! 2. IAM이란? .. AWS/AWS로 시작하는 인프라 구축의 정석 2024. 4. 15. Springboot 프로젝트에 Spring REST Docs 도입하기 본 포스트는 아래의 환경을 기준으로 작성되었습니다. Springboot 3.0.1 Java 17 Gradle 7.6 1. API 문서화 도구의 필요성 다른 개발 팀원분들과 원활히 협업하기 위해서 API 문서화는 필수죠?! API 문서화를 위해서는 도구를 사용하거나 개발자가 API에 대한 내용을 직접 작성할 수도 있습니다. 그러나 개발자가 직접 문서화하는 방법은 아무래도 사람이 수작업으로 하는 일이다 보니 수정 사항을 잊어버리고 반영하지 않는다거나 하는 상황이 발생할 수도 있습니다. 그렇기 때문에 API 문서화 도구 사용을 많이들 추천합니다. 2. Swagger VS Spring REST Docs 많이 사용하는 API 문서화 도구에는 Spring REST Docs와 Swagger가 있습니다. (1) Swa.. Spring 2024. 4. 15. [Github] Github action github action이란? 공식 문서에 따르면 소프트웨어 개발 workflow를 레포지토리에서 바로 자동화하고 개별화하여 실행할 수 있도록 도와주는 도구이다. CI/CD를 포함하여 원하는 작업을 만들고 공유하며 작업을 합칠 수 있다. https://docs.github.com/en/actions GitHub Actions Documentation - GitHub Docs Automate, customize, and execute your software development workflows right in your repository with GitHub Actions. You can discover, create, and share actions to perform any job you'd lik.. Etc/Git , Github 2022. 7. 25. [NestJS] mysql 데이터베이스 연동하기 오늘은 Nest.js와 mysql DB 연동을 진행해 보겠습니다. 0. Mysql 설치 우선 너무나도 당연한거지만 컴퓨터에 mysql이 설치되어 있어야 합니다. 혹은 docker를 사용해 주셔도 됩니다~ https://dev.mysql.com/downloads/mysql/ MySQL :: Download MySQL Community Server Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris mac.. Etc 2022. 7. 6. [운영체제] 가상메모리 - 스레싱 스레싱 threshing : 하드디스크의 입출력이 너무 많아져서 잦은 페이지 부재로 작업이 멈춘 것 같은 상태 스레싱 발생시점 : CPU가 작업하는 시간보다 스왑 영역으로 페이지를 보내고 새로운 페이지를 메모리에 가져오는 작업이 빈번해져서 CPU가 작업할 수 없는 상태에 이르게 되는 시점 -> 물리 메모리의 크기를 늘리면 스레싱 발생 지점이 늦춰져서 프로세스를 원만하게 실행할 수 있다. 스레싱과 프레임 할당 : 프로세스에 너무 적은 프레임을 할당하면 페이지 부재가 빈번히 일어난다. : 프로세스에 너무 많은 프레임을 할당하면 페이지 부재는 줄지만 메모리가 낭비된다. -> 프로세스에 프레임을 할당하는 방식은 크게 정적 할당과 동적할당으로 구분된다. 정적 할당 (1) 균등 할당 equal allocation .. 운영체제 2022. 6. 28. [NestJS] controller 알아보기 이번 글에서는 src 디렉토리 아래에 있는 controller에 대해 알아볼 예정이다. controller란? 일반적으로 웹 어플리케이션에서 controller는 외부의 요청을 처리하는 모듈을 뜻한다. 즉, 클라이언트의 요청을 받아 요청에 따른 동작을 수행하고 응답을 반환하는 역할을 하는 것이다. Node.js의 express를 사용해 본 사람은 컨트롤러가 라우터 역할을 한다고 생각하면 된다. 컨트롤러 생성 새로운 컨트롤러를 생성해보자. nest g co 위의 명령을 통해 새로운 컨트롤러를 생성할 수 있다. 명령을 실행한 뒤 controller의 이름을 입력하면 새로운 컨트롤러가 생성된다. 종종 UnhandledPromiseRejectionWarning: Error: Unknown argument ski.. 웹/Node 2022. 6. 24. [NestJS] NestJS 프로젝트 시작하기 1. @nestjs/cli 설치 CLI를 통해 NestJS 프로젝트를 생성할 수 있도록 제공하기 때문에 cli를 설치해준다. (npm을 사용하는 것 추천) npm i -g @nestjs/cli 설치 후 nest 커맨드를 실행하면 다른 커맨드들의 리스트를 확인할 수 있다. (설치가 완료되었다는 뜻) 2. 프로젝트 생성하기 nest new 'project-name' package manager는 npm으로 선택하였다. 프로젝트를 생성하면 다음과 같은 구조로 프로젝트가 생성된다. package.json을 보면 다양한 script가 이미 정의되어 있다. (eslint랑 prettier 설정 안 해줘도 되는 거 너무 편하다..) 이렇게 하면 프로젝트 생성은 끝이다. 이제 원하는 단위 별로 나눠서 모듈을 생성하고 .. 웹/Node 2022. 6. 22. 이전 1 2 3 4 5 6 다음