Java로 자료구조 이해하기 3편(Stack과 Queue)
2021. 10. 2. 16:28
Java
Stack과 Queue란? Stack(Class) LIFO(Last In First Out) 구조 마지막에 저장한 것을 제일 먼저 꺼낸다. Array 기반 Queue(Interface) FIFO(First In First Out) 구조 제일 먼저 저장한 것을 제일 먼저 꺼낸다. LinkedList 기반 -> Interface이기 때문에 LinkedList가 Queue를 구현 이게 끝 입니다. 왜 그런지 알아 보도록 하겠습니다. Stack은 밑이 막혀있고 위만 뚫려 있는 구조 입니다. 우리가 일반적으로 알고 있는 상자와 같습니다. 책을 넣으면 마지막에 넣은 책 부터 뺄 수가 있죠? 정확히 그와 같은 구조 입니다. 그렇기 때문에 마지막에 저장한 것을 제일 먼저 꺼낸다 는 특징이 있습니다. 반대로 Queue ..
Java로 자료구조 이해하기 2편(Arraylist와 LinkedList)
2021. 10. 2. 15:33
Java
1편에서는 Array와 ArrayList에 대해서 알아 보았습니다. 2편에서는 LinkedList와 ArrayList를 비교하며 알아보도록 하겠습니다. LinkedList와 ArrayList는 뭐가 다르지? 대부분 같다고 보면 되고, 핵심적으로 다른 부분은 주소가 순차적이냐 순차적이지 않느냐의 차이입니다. ArrayList는 순차적인 주소를 가집니다 그렇기 때문에 접근성은 정말 빠릅니다. 하지만 중간에 추가 및 삭제 시 느린 자료구조입니다. 이를 개선한 것이 LinkedList 입니다. LinkedList는 배열과는 다르게 Link 즉, 선으로 각 메모리를 연결한 것 입니다. 그래서 접근성은 느리지만, 중간에 추가 삭제는 ArrayList 보다 훨씬 빠릅니다. 그럼 그림으로 알아 보도록 하겠습니다. 그림..
ec2에서 톰캣 서버 포트 포워딩 하기
2021. 10. 2. 14:51
기타 IT
✔️ ec2에서 8080 포트 접속 시 80포트로 리다이렉트를 왜 해야할까? 가비아에서 도메인을 구입하고 aws route53을 이용해 도메인을 등록했는데.. 8080포트를 붙이지 않으니 찾을 수 없는 페이지!! 라고 나왔습니다. 결국 도메인:8080 으로 접속을 해야하는 불편함... 과연 어떤 사용자가 이렇게 접속을 할까.. ㅜ.ㅜ 🔍 찾을 수 없는 페이지가 왜 나왔을까? 스프링부트로 개발을 진행했는데 내장 서버인 톰캣은 기본적으로 8080포트로 요청을 받게 됩니다. 하지만 브라우저는 기본이 80포트로 요청을 하기 때문에 위와 같은 현상이 발생하게 되는 것입니다. 🔍 iptables 명령어로 80포트로 포워딩 하기 간단하게 아래와 같은 명령어로 포트 포워딩을 할 수 있습니다. $ iptables -A ..
Spring Data Jpa로 DB에 생성일, 수정일 자동화 하기
2021. 10. 2. 14:51
Spring
✔️ DB에 생성일, 수정일을 매번 넣는 행위는 어떤가? 실무에서 이를 경험해보신 분은 굉장히 불편하고, 은근 빼먹는 경우가 많다는 것을 아실텐데요. 저도 처음에는 별 생각없이 당연하게 수동으로 매번 작성을 했습니다. 근데 점점 와.. 이건 무슨 update, insert 할 때 마다 매번 똑같이 작성해야 하네? 라는 생각이 들었습니다. 솔직히 개인 공부용이라면 전혀 불편함을 못느끼실거에요. 저도 그랬으니까요. 하지만 생각보다 빼먹는 일도 많고 잘못된 값을 넣는 경우도 있습니다. 특히, 완전 신입 분들의 경우 이에 대한 중요성을 모르시기 때문에 처음에 개발할 때 많이 빼먹는 경우도 있구요. 그러던 와중 이동욱님의 스프링 부트와 AWS로 혼자 구현하는 웹서비스 라는 책을 공부하다가 Spring Data J..
Java Serializable
2021. 10. 2. 14:49
Java
✔️ 직렬화를 공부하게 된 계기 현재 스프링부트를 이용하여 토이 프로젝트를 진행 중입니다. 그런데 진행 중 이런 에러가 발생 했습니다. java.io.InvalidClassException: com.devlogmoa.config.auth.dto.SessionMember; local class incompatible: stream classdesc serialVersionUID = -8498973270536986012, local class serialVersionUID = -1124684850244601429 풀이하자면, 스트림에 직렬화된 클래스의 UID와 나의 로컬에 있는 클래스 UID가 달라서 역직렬화를 할 수가 없다는 내용입니다. 지금까지 직렬화 역직렬화는 많이 들어봤었는데, 딱히 알아야할 필요성을..
java로 쿠키와 세션 이해하기
2021. 10. 2. 14:48
Java
✔️ 쿠키와 세션이란? 🔍 쿠키 쿠키란? 쿠키는 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일입니다. 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지됩니다. 클라이언트의 상태 정보를 로컬에 저장했다가 참조합니다. Response Header의 Set-Cookie 속성을 사용하면 클라이언트에 쿠키를 생성할 수 있습니다. 사용자가 따로 요청하지 않아도 브라우저가 Request 시에 Request Header의 Cookie 속성에 자동으로 전송합니다. 쿠키의 구성 요소 이름 : 각각의 쿠키를 구벼하는데 사용되는 이름 값 : 쿠키의 이름에 매칭되는 값 유효시간 : 쿠키 유지시간 도메인 : 쿠키를 전송할 도메인 경로 : 쿠키를 전..
Java로 자료구조 이해하기 1편(Array와 ArryaList의 차이점)
2021. 9. 30. 23:25
Java
Java로 자료구조 이해하기 1편(Array와 ArryaList의 차이점) 모든 내용은 자바를 기반으로 설명 합니다. Collection 클래스를 기반으로 자료구조를 알아보는 시리즈 입니다. 하지만 그 전에 Array와 ArrayList는 어떻게 다른지에 대해 간단하게 정리하고 가겠습니다. Array는 뭐고 ArrayList는 뭐야? Array Array는 배열을 의미 합니다. 기본적인 배열에 대한 설명은 배제 했습니다. 구조에 대해서만 설명 하겠습니다. 아래 그림을 보면, 배열은 메모리에 순차적으로 생성 됩니다. 즉, 연속된 주소를 가집니다. 따라서, 접근성이 매우 좋습니다. 순차적으로 나열되어 있기 때문에 간단한 연산으로 접근할 수 있기 때문입니다. 시작주소 + index * byte 의 수식을 사용..
구글 oauth2 리다이렉션 400오류
2021. 9. 30. 21:25
기타 IT
구글 oauth2 로그인을 사용하는데 분명 리다이렉션 도 잘등록되어 있었는데 갑자기 400오류를 뱉으며, 리다이렉션 주소가 틀렸다고 메시지가 떴습니다. 하지만.. 리디렉션은 설정이상 무.. 그리고 기존에 원래 잘 되었습니다. 또 신기한건 로컬에서는 정상작동.. 그래서 결국 유스방에서 같이 상의를 해보니.. url 문제가 맞았습니다. 이전에는 http://www.devlogmoa.shop/blogs로 접속을 하고, 현재는 http://devlogmoa.shop/blogs로 접속을 했기 때문에 등록된 리디렉션 url이 없어서 당연히 400오류를 받은 것이었습니다. 그래서 등록을 해주니 해결 되었습니다. 두 url 모두 접속이 가능했던 이유는 까먹고 있었는데.. aws route53에 등록을 해놨었네요.. (..