JVM 구조와 동작 과정
·
💻 Dev/Java & OOP
자바를 공부하다 보면 Write once, run anywhere (한 번 작성하면, 어디서나 실행된다.) 라는 말을 볼 수 있다. 컴퓨터가 어떤 프로그램을 실행하려면, 컴퓨터가 읽을 수 있는 언어(기계어)로 작성되어야 한다.자바 프로그램에서는 JVM(Java Virtual Machine)이라는 가상머신이 우리가 작성한 java코드를 기계어로 변환해 주고, 어떤 운영체제에서도 이 코드가 실행될 수 있도록 도와주는 역할을 한다.즉, JVM 덕분에 OS에 독립적인 특징을 가지고 있는 것이다. JVM 작동 원리우리가 작성한 코드가 JVM에 전달되어 실행되기까지 과정은 아래와 같다. 개발자가 자바 소스코드(.java)를 작성한다.자바 컴파일러(javac)가 자바 소스코드를 자바 바이트코드(.class)로 컴파일..
예외(Checked Exception, Unchecked Exception)
·
💻 Dev/Java & OOP
예외란?자바에서 예외란 "우리가 예상한, 혹은 예상치 못한 일이 발생하는 것을 미리 예견하고 안전장치를 하는 것"을 말한다. 예외의 종류는 3가지다.checked exceptionerrorruntime exception 또는 unchecked exception2, 3번째를 제외한 모든 예외는 1번 checked exception이다. 우선 오류와 예외를 구분할 필요가 있다.오류(error)는 자바 프로그램 밖에서 발생한 예외를 말하고 시스템이 종료되어야 할 수준의 심각한 문제를 의미한다.개발자가 미리 예측하여 방지할 수 없다. ex)- StackOverflowError : 호출의 깊이가 깊어지거나 재귀가 지속되어 stack overflow 발생 시 던져지는 오류- OutOfMemoryError : JVM..
interface와 abstract(추상) 클래스
·
💻 Dev/Java & OOP
인터페이스와 abstract를 사용하는 이유인터페이스와 abstract 클래스에 대해서 제대로 이해하려면 시스템을 만드는 절차를 알아야 한다.어떤 시스템을 개발하든 간에 “방법론”이라는 것을 사용하여 개발한다. 방법론: 시스템을 어떻게 만들 것인지에 대한 절차를 설명하고 어떤 산출물을 작성해야 하는지를 정리해 놓은 공동 절차 방법론의 일반적인 절차는 아래와 같다.분석 - 요구사항 분석설계 - 어떤 메서드를 만들 것인지, 데이터는 어떻게 저장할지개발 및 테스트시스템 릴리즈 이게 인터페이스와 abstract랑 뭔 상관인데?설계 단계의 산출물을 문서에만 정리하면 나중에 메서드 관련 내용들이 변경되면 문서도 수정해야 하므로 2중 3중의 일이 된다. 이 설계 단계에서 인터페이스라는 것을 만들어 두면 개발할 때 메..
Ansible - Failed to connect to the host via ssh(인프런 CI/CD 강의 에러)
·
🛠 DevOps & Tool/Linux
전말 Jenkins를 이용한 CI/CD Pipeline 구축 강의 중 섹션 4 - Ansible에서 Kubernetes 제어하기 과정 중에 오류가 생겼고 이틀 내내 찾아서 고쳤다. 강의 커뮤니티에도 윈도우를 사용하는 대부분의 수강생들이 겪는 에러인 것 같은데, 해결 방법이 없고 구글링해도 정보가 너무 없어서 포스팅하고자 한다. 이하 내 호스트 IP는 가상으로 192.168.1.11로 표기하겠다. (or 스티커로 가리기) 먼저 진행한 과정은 hosts 파일에 아래와 같이 입력하고 [ansible-server] localhost [kubernetes] 192.168.1.11 ansible로 ping 모듈을 테스트하는 것이었다. # ansible -i /k8s/hosts kubernetes -m ping 첫 ..
변경감지와 병합
·
💻 Dev/JPA
JPA에서 데이터를 변경할때의 기본 메커니즘은 변경 감지(Dirty Checking)이다.개인적으로 신기하다고 생각해서 정리하게 되었다.아직은 내용이 많이 부족해서 더 채워야 할 것 같다... 더티 체킹(Dirty Checking) a.k.a 변경 감지란?@Transactionalpublic void updateItem(Long itemId, String name, int price, int stockQuantity) { Item findItem = itemRepository.findOne(itemId); findItem.setName(name); findItem.setPrice(price); findItem.setStockQuantity(stockQuantity);}위는 pk인 i..
2023년 회고
·
📝 끄적끄적/후기 및 회고
첫 회고'지나간 일을 돌이켜 생각함'이라는 뜻을 가진 회고,3년 차 개발자인 2023년에 처음으로 써보고자 한다. 찾아보니 회고에도 다양한 방법이 있던데.. 회고에서조차 뭘 분석하고 쓰긴 싫어서 손이 가는 대로 쓸 거다! 사실 저 회고의 뜻을 위해 월간 일기를 네이버 블로그에 쓰고 있었다. 나이가 드니 남는 건 사진과 기록뿐이라는 생각이 더 많이 들기 때문..(기억력이 안 좋아져서도 있음) 저 일기는 개발자인 '나'가 아니라 자본주의의 노예, 도비인 '나'의 일기기 때문에이제 개발자인 '나'의 1년을 회고해보고자 한다. 첫 모각코어떤 이유에선지 모르겠는데 문득 인프런 커뮤니티를 보다가, 대구도 개발자 단톡이 있고, 거기서 모각코를 한다는 글을 보게 됐다.혼자 공부하다가 심심했는데 잘됐다 싶어서 바로 오픈..