하... 노션에서 글쓰는게 제일 이쁜거같다.. 내가 티스토리를 잘 못쓰는건지 여기서 정리하는건 시간도 오래걸리고 안이쁘기도 하고..... 어쨋든! 오늘은 어제의 휴식을 발판으로 자바의 메모리공간에 대해서 알아보았다. https://phantom-cantaloupe-293.notion.site/Deep-Dive-187d69fad2e6801a8689f8f432140275 Deep Dive - 메모리 영역과 컴파일 과정 | Notion이번 글에서는 JVM의 메모리영역과 컴파일 과정에 대해서 Deep Dive 해보겠습니다!phantom-cantaloupe-293.notion.site
자바

오늘부터 TIL 할거다!!!!!!!!!!오늘은 카카오테크 부트캠프 첫 수업날이었다. 풀스택 과정에서의 목표에 대해서 배웠고, 강사님과 풀스택 교육생들 간의 라포를 형성하는 과정을 가졌다. 오후수업에선 자바 기초 수업을 들었는데 키워드만 봤을때는 매우 간단하다.변수메서드접근제어자클래스 다이어그램원시 자료형참조 자료형해당 키워드에 대해 한줄로 요약을 해보는 시간을 가졌고, 헷갈리는 내용이 있어 정리를 해보았다.원시자료형, 참조 자료형, Wrapper Class원시자료형이란 자바의 int, char, float, double, boolean, long 등과 같은 기본 자료형을 말한다. 그리고 그 외의 자료형들 (String, Array, Pos(Pos클래스 만든 것)..)등은 모두 참조 자료형이라고 볼 수 있..

테스트 가능성이라는 단어를 들어봤나요? 영어 단어로 Testability라고 합니다.테스트하기 쉬울수록 Testability가 높습니다. 더 나아가 테스트하기 쉬운 코드일수록 좋은 설계일 확률이 높습니다. 하지만 저를 포함한 많은 사람들이 테스트를 어려워하고 있습니다. 테스트를 어렵게 만드는 요소는 무엇일까요? 테스트를 어렵게 만드는 요소테스트를 어렵게 만드는 요소의 결론부터 말하자면 테스트하려는 대상의 입력과 출력에 있습니다. 테스트는 테스트하려는 대상의 입력을 쉽게 변경할 수 있고, 출력을 쉽게 검증할 수 있어야 작성하기 쉽습니다.하지만 숨겨진 입력이 존재하거나 숨겨진 출력이 존재한다면 테스트를 검증하기 어려워집니다. 그렇다면 숨겨진 입력과 숨겨진 출력이 대체 무엇일까요? 한번 알아봅시다.숨겨진 입력..

테스트 대역이란 무엇일까요? 네트워크에서 사용하는 대역(bandwith)과 비슷합니다만. 전혀 관련이 없답니다!테스트에서의 대역은 오롯이 테스트를 위해 만들어진 가짜 객체 또는 컴포넌트를 의미합니다. 아래의 상황에서 테스트코드를 짜본 적이 없는 개발자라면 공감하실 수도 있겠습니다. 회원가입을 완료하면 회원 테이블에 저장하고 환영 이메일을 보냅니다. 이런 상황에서 테스트코드를 짜야한다면 머리가 지끈지끈하지 않으신가요? 그리고 이런 고민도 할 수 있겠습니다."테스트를 할때마다 디비에 계속 저장되겠는데..?" , "더미 이메일을 계속 보내야 하나..?" 이 고민을 해봤다면 계속 글을 읽어도 좋을 거 같습니다. 저와 함께 가보시죠.아까의 상황을 다시 가져와 보겠습니다.회원가입을 완료하면 회원 테이블에 저장하고 ..

똑같은 데이터를 매번 데이터베이스에서부터 가져오면 사용자와 서버입장에서 모두 비효율적이다. 그렇기에 한번 가져온 데이터의 경우엔 캐싱처리를 해서 두 번째 요청부턴 효율적으로 가져오고자 한다. 현재 프로젝트의 경우에 RefreshToken과 로그아웃 관리를 위해 Redis를 사용하고 있다. 그렇기에 캐싱 저장소로 Redis를 사용해 보기로 했다. ❗️❗️ 주의 ❗️❗️과정상의 코드는 별로 없다.바로 캐싱을 적용하기 전에 간단하게 공부를 해보니 캐싱에도 여러가지 전략이 있다고 한다. 캐싱 전략을 세울 때 유의해야 할 것은 무엇일까?캐싱 데이터는 주로 메모리에 저장되기 때문에 용량 제한이 있다. (주로 16 ~ 32 기가)따라서 캐싱 데이터의 유효기간 설정이 중요하다.따라서 어떤 데이터를 캐싱해 둘지 선택하는..

오랜만에 읽으면서 계속 감탄을 하게 되는 책을 접하게 되었습니다. 자바 / 스프링을 공부하고있는 여러 사람들이 있을 것입니다. 아래는 제가 이 책을 접하기 전에 처했던 상황인데요 이에 공감하는 사람들이 꽤 있지 않을까 싶습니다.객체지향이 중요한건 알겠는데... 스프링에는 어떻게 적용해야 하지?SOLID, 테스트, VO, DTO... 등 여러 단어는 접해봤는데 누군가 질문했을 때 떳떳하게 답 할 수 있나?계층형 구조와 헥사고날 구조? 어떤게 더 좋은거지?테스트가 중요한 건 알겠어 알겠는데 개발하면서 와닿지는 않네.. 이렇게 보니 제가 과연 자바 / 스프링 개발자라고 불려도 되는가 싶네요. 그냥 스프링부트를 쓸 줄 아는 사람 그 이상 그 이하도 아닌 거 같습니다. 하지만 이 책을 읽고나니 위의 질문에대해 자..

어느덧 벌써 3주차를 회고하는 날이 되었다. (이미 프리코스는 끝났다. ㅋㅋ) 로또 미션을 진행하면서 고민했던 내용들에 대한, 얻었던 지식에 대한 이야기를 풀어나가고자 한다. 필요한 객체 객체지향은 말그대로 '객체'들의 소통으로 프로그램을 돌아가게 하는것이다. 그러니 객체지향스러운 프로그램을 만들기 위해선 제일 먼저 어떤 객체가 필요한지 파악하는건 자연스럽고 중요한 행동이다. 나는 코딩을 하기전 이렇게 낙서형식으로 필요한게 무엇인지 적어보는 과정을 필수적으로 진행한다. 내가 머리가 나쁜건지 머릿속에 있는 내용들이 도무지 정리가 안되기 때문에... 이렇게라도 정리를 해야 마음이 한결 편해진다. 자, 일단 객체들의 역할은 저기 적혀있는게 다다. 최대한 객체들에게 최소한(필수)의 역할만 하게 객체 설계를 해보..