본문 바로가기

분류 전체보기

(47)
JEP 122: 자바 Perm Gen이 사라지고 MetaSpace로 옮겨 집니다. 1. 서론 자바 공식문서 링크: https://openjdk.org/jeps/122 Perm Gen이 자바 8부터 Metaspace영역으로 변경 되어 Native 영역으로 옮겨 졌다는 부분을 공부하는데 static 영역에 관련되서는 GC로 관리된다 또는 Native 영역이라 아니다등 명확한 정답을 얻기 어려웠습니다. 이에 개인적으로 좀 더 조사를 하게 되었고 잊지 않기 위해 기록을 해 보기로 하였습니다.   2. 자바 런타임 메모리 영역A.  스레드관련 메모리: 스레드 영역은 스레드의 시작과 종료를 같이 함으로 메소드나 스레드 호출과 함께 생성 되며 스레드 종료 시 사라집니다.  - Java Stack (자바 스택 프레임) : 지역변수, 매개변수, 메소드 호출정보 (함수 정보), 반환 주소등.- PC R..
최소한의 AWS 보안: Bastion Host 1. 도입 계기처음 Bastion Host를 알게 된건 패스트 캠퍼스의 강의에서 였다. 그때 강사님께서 사용하시는 걸 보고 조금 공부를 한 후 이것이 보안 조치였다는 걸 알게 되었다. 마침 처음 도메인 주소가 있는 프로젝트를 만들어 보려고 한 나는 보안에 관해 전무 하다는 사실이 막연히 조금 두려웠었다.  이에 최소한의 보안 설정을 해보자고 선택했던 Bastion Host. 이게 최선의 보안설정은 아니더라도 이때나 지금이나 Bastion Host를 사용한다면 가장 큰 이유는 SSH 접속시 어플리케이션 서버의 IP를 외부에 노출하지 않아도 된다는 점이 큰 것같다. On-Premise에서 Bastion Host를 만든다면 그 라우팅, 인증, 로그등 다양한 기능들을 하도록 할 수도 있겠지만 다양한 서비스가 제..
Vim 사용기 (ColorScheme & Terraform) 0. 개요테라폼을 사용하기위해 vim에 .tf파일을 제작려고 하는데 가독성이 떨어져 color scheme을 적용하고 vim을 배워본다. vi, vim은 유닉스 기본 편집기라 맥OS에서는 설치가 되어 있지만 윈도우의 경우 따로 설치해 주어야 한다.vim 명령어: https://stricky.tistory.com/135 1. Vundle 설치:PluginInstall을 하기위한 플러그인 매니저 입니다.git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim  2. ./vimrc 파일 만들기-1. Home 디렉토리에 .vimrc 파일을 만들어 준다.vim ~/.vimrc -2. .vimrc에 플러그인 설치와 설정 코드를 작성..
Protocol Buffer 1. 프로토콜 버퍼란? 구글에서 개발한 데이터 직렬화 구조. 데이터를 주고 받을 때 JSON보다 더 효율적으로 정의하고 압축한다. 언어와 플랫폼에 중림적이다. 포맷을 정하기만 하면 컴파일시 C++, Java, Python등에서 이용 가능. 2. TypeJava TypeProto Typeintint32/sint32longint64/sint64floatfloatdoubledoublebooleanboolStringstringbyte[]bytes*sint means signed int (음수, 양수 모두 허용) 3. JSON 과 속도차이- JSON을 ObjectMapper로 직렬화/역직렬화 하는것과 굉장한 차이가 난다. (거의 8배)*자바는 cold start problem 때문에 첫번째 테스트 결과는 신뢰하기..
람다식 - 기본 - 1. 람다식은 기본적으로 익명객체이다. Object obj = new Object(){ int max(int a, int b){ return a > b ? a : b; }}obj.max((x,y) -> a > b ? a : b); 그렇지만  Object에는 max라는 함수가 없다. 2. 그래서 인터페이스가 필요하다.-> Stream 과 IntStream인터페이스 등에 함수가 정의되어 있고 구현도 따로 되어 있다. Optional min(Comparator var1); Optional max(Comparator var1); 그러나 커스텀하게 구현하려면 public static void main(String[] args){ MyFunction2 f = (a,b) -> a > b..
AssertJ 1. 지원 AssertJ Core 3.x 에는 Java 8 이상이 필요 AssertJ Core 2.x 에는 Java 7 이상이 필요 2. 대표 메소드 기본: assertThat() isNotEqualTo, isEqualTo contains, isNotEmpty, isNotNull, isEmpty, isNull startsWith, endsWith 3. 예외 처리 @Test @DisplayName("IllegalArgument 예외 처리") void illegalArgs() { assertThatIllegalArgumentException().isThrownBy(() -> { throw new IllegalArgumentException("Illegal args!"); }).withMessage("%s!"..
Mockito & MockMvc @ExtendWith(MockitoExtension.class) class ItemRegisterControllerTest { @InjectMocks private ItemRegisterController itemRegisterController; @Mock private ItemRegisterService itemRegisterService; private MockMvc mockMvc; private ItemSaveForm saveForm; private ItemDTO itemDTO; ObjectMapper mapper = new ObjectMapper(); @Before public void initAll(){ mapper = new ObjectMapper(); mapper.setVisibility(..
HTTP 응답코드 1. 400대 에러 - 400(Bad Request) 서버가 클라이언트의 요청을 이해하지 못할 때 발생. (잘못된 문법, Method, header, 내용누락등) - 401(Unauthorized): 권한 없음(Authentication관련) - 403(Forbidden): 엑세스 금지 (Authorization 관련) - 404(Not Found): 클라이언트가 요청한 문서를 찾지 못함. - 405(Method not allowed): 메소드 매칭이 되지 않을때 -406(Not Acceptable): 클라이언트가 Accept-*헤더에 지정한 항목 관해 처리할 수 없음. - 415( : 지원되지 않는 형식의 요청이라 서버가 승인 거부. 2. 500대 에러 - 500(Internal Server Error..
스프링 테스트중 에러 1. 첫번째 에러 java.lang.AssertionError: Status expected: but was: - @Getter가 없어서 자주 발생하는 에러라고 한다. 이 경우에는 DTO에 @Getter의 부재로 Jackson라이브러리의 직열화/역질렬화에서 오류가 생겼다. (Jackson라이브러리가 response를 보낼때 DTO를 직렬화 시키는데 Getter의 부재로 그러지 못하여 406 Not Acceptable에러가 나왔다.) 2. 두번째 에러 Strict stubbing argument mismatch. Entity를 테스트용으로 만들어서 스터빙 했지만 리포지토리에서 돌아오는 엔티티는 실제상황에서 내가 서비스 코드에 주입하여 JPA 로 보낸 엔티티와 다르다. 그래서 미스매치. 이 경우 내가 제작한..
Fetch API & 스프링 시큐리티 CSRF 1. FetchAPI로 AJAX로 보낼때. -> 이 예제에서 타임리프를 적용하여 가져왔음 -> head에 meta정보를 넣어주고 fetch API 보낼때 header에 넣어서 전송. dashboard 2. 만약 폼태그로 보낸다면 스프링 시큐리티가 으로 csrf 토큰을 넣어준다. 출처 Fetch API DaleSeo: https://www.daleseo.com/js-window-fetch/ 생활코딩: https://www.youtube.com/watch?v=ufjCFdG_4fo sisiblog: https://sisiblog.tistory.com/261 CSRF kimujin99.log: https://velog.io/@kimujin99/Side-project-Spring-Security-CSRF-Toke..