JVM 시리즈 - 자바 메모리 영역
자바 메모리 영역 런타임 데이터 영역 자바 런타임 데이터 영역은 총 5개로 메서드 영역, 가상 머신 스택, 네이티브 메서드 스택, 힙, PC 레지스터로 구성되어 있다. 프로그램 카운터 현재 실행 중인 스레드의 ‘바이트 코드 줄 번호 표시기’이다. 바이트코드 인터프리터는 카운터의 값을 바꿔 다음에 실행할 바이트코드 명령어를 선택한다. 자바 가상 ...
자바 메모리 영역 런타임 데이터 영역 자바 런타임 데이터 영역은 총 5개로 메서드 영역, 가상 머신 스택, 네이티브 메서드 스택, 힙, PC 레지스터로 구성되어 있다. 프로그램 카운터 현재 실행 중인 스레드의 ‘바이트 코드 줄 번호 표시기’이다. 바이트코드 인터프리터는 카운터의 값을 바꿔 다음에 실행할 바이트코드 명령어를 선택한다. 자바 가상 ...
@Dirties Context 란 Spring 에서 통합 테스트 수행 중, 테스트 간 격리성 확보를 위해 사용할 수 있는 방법 중 하나인 @DirtiesContext에 대해서 정리해봤습니다. 공식문서 요약 https://docs.spring.io/spring-framework/reference/testing/annotations/integr...
실용주의 프로그래머 후기입니다. 이 책을 읽게 된 계기는 내가 어떤 개발자인지 말할 수 있는 실마리를 찾고 싶어서입니다. 개발을 처음 시작할 때는 당장 주어지는 것을 만들어 내는 것에 급급했습니다. 개발을 한지 1년이 지났을 땐, 더 생산적이고 견고한 코드를 만들 수 있을지가 궁금했습니다. 이제 개발을 한지 2년차에 접어들면서는, 어떤 개발자...
실용주의 프로젝트 프로젝트의 주제를 개인의 철학과 코딩에서 논점을 옮겨, 프로젝트 전체 차원에서 바라보자. 실용주의 팀 실용주의 팀은 어떤 특징을 가질까? 실용주의 팀은 작다. 구성원이 대략 10~12명 이하여야 하고, 구성원이 추가되거나 빠지는 일은 드물어야 한다. 모두가 서로 잘 알고, 신뢰하며, 의존해야 한다. 실용주의 팀은, 팀 전체가 ...
프로젝트 전에 프로젝트를 시작할 때 요구 사항을 파악해야 한다. 프로젝트가 닻을 올리기 전에 여러 중요한 문제들을 잘 정리해보자. 요구 사항의 구렁텅이 완성이라는 것은 더 이상 더할 것이 없을 때가 아니라, 더 이상 뺼 것이 없을 때 달성되는 것이다. 요구 사항 수집이라는 것은 길에 있는 것을 주워 담는 행위가 아니다. 대부분의 경우엔 ...
코딩하는 동안 코딩은 기계적인 작업이 아니며, 모든 결정이 의식적으로 내려지는 것도 아니다. 따라서 우리가 작성하는 모든 코드를 비판적은 시각으로 바라보고, 개선할 여지를 찾아야 한다. 파충류의 뇌에 기 기울이기 개발을 하면서 코드를 작성하는 것은 자신과 싸움이다. 어느날은 뇌에서 에디터로 코드가 술술 옮겨지지만, 어느 날은 진창에서 오르막길을 ...
동시성 동시성은 둘 이상의 코드 조각이 실행될 때 동시에 실행중인 것처럼 행동하는 것이다. 그리고 병렬성이란 실제로 동시에 실행되는 것이다. 시간적 결합 깨트리기 시간적 결합이 무엇인지부터 알아야 한다. 시간적 결합은 순차적으로 실행되는 플로우가 코드와 결합되어 있는 것을 의미한다. 이런 접근 방식으로 개발을 하면 유연하지 않고, 현실과도 동떨어...
구부러지거나 부러지거나 현대의 빠른 변화 속도를 따라가기 위해서는 느슨하고 유연한 코드를 작성해야 한다. 결합도 줄이기 좋은 설계 원칙을 따르면 바꾸기 쉬운 코드(ETC)를 만들 수 있다. 높은 결합도는 당연하게도 변경을 어렵게 만든다. 소프트웨어를 설계할 때는 형태를 유연하게 바꿀 수 있도록 설계해야 한다. 결합도가 낮은 코드가 바꾸기 ...
실용주의 편집증 여러분은 완벽한 소프트웨어를 만들 수 없다. 세상에 완벽한 소프트웨어는 존재하지 않는다. 그래서 우리는 방어적으로 개발을 해야 한다. 문제가 생기기 전에 주의하고, 일어나지 않을 법한 일에 대비해야 한다. 조금이라도 의심이 들면 주어진 모든 정보를 확인한다. 잘못된 데이터를 찾아내기 위해 단정문을 사용하고, 공격자나 불량 사...
기본 도구 모든 제작자는 좋은 품질의 도구 세트로 자신의 재능을 발휘한다. 좋은 도구는 재능을 증폭시키고, 생산성을 향상시킨다. 그러나 항상 필요에 따라서 새로운 도구를 취하는 것에 익숙해져야 한다. 일반 텍스트의 힘 실용주의 프로그래머로서 가장 중요한 재료는 지식이다. 우리는 지식을 저장하는 최고의 포맷인 일반 텍스트에 대해서 알아야한다. 일반...