전체 글
-
인덱스데이터베이스 2021. 7. 11. 13:18
인덱스가 무엇인지, B-Tree Index, Hash Index 등에 대해 알고있다는 가정하에 작성 인덱스는 왜 쓰는가? 인덱스는 '인덱스가 검색 범위를 제한시켜주기 때문에' 빠르게 데이터를 검색할 수 있게 해준다. 인덱스가 왜 어떻게 검색 범위를 제한해주나? 인덱스는 항상 정렬이 되있기 때문에 라고 생각할 수 있지만, 그건 특정 인덱스에 한정된 이야기다. 검색범위를 제한해주는 방법은 어떤 인덱스를 사용하느냐에 따라 달라진다. B-Tree 인덱스 B-Tree 인덱스는 항상 정렬된 상태를 유지한다. (장점) 항상 정렬된 상태를 유지하기 위해서는 삽입과 삭제시에 정렬이 발생한다. (단점) 이 경우는 정렬된 상태로 검색 범위를 제한시킬 수 있는게 맞다. Hash Index 해시 인덱스는 정렬되어 있다고 볼 수..
-
Select 쿼리는 S락이 아니다. (X락과 S락의 차이)데이터베이스 2021. 7. 11. 13:10
이 글에서 사용한 dbms는 MySQL 8.x 버전이고 innoDB engine 기준입니다. 아~주 기본적인 레벨, 거의 시작점 수준의 이야기이니 감안해주세요. 이 글을 쓰게된 이유 저는 Real MySQL을 통해 DB를 공부하던 중 S-Lock 과 X-Lock에 대해 알게 되었습니다. 그리고 SELECT - FOR UPDATE 쿼리는 해당 레코드의 X-lock을 획득한다는 사실도 알게되었고, 이 사실을 이용해 직접 실습을 해보던 중 저의 뇌가 꼬이기 시작했습니다. '1번 트랜잭션에서 A레코드의 X-Lock을 획득했으니 B트랜잭션에서는 A레코드를 읽을 수 없어야 하지. 1번 트랜잭션의 작업이 끝날때 까지 2번 트랜잭션의 SELECT는 대기상태가 되겠군...?' '아니... 조회가 왜 돼?😯' S-Lock..
-
헥사고날(포트와 어댑터) 아키텍처개발/OOP, Design Pattern 2021. 7. 11. 12:45
저는 저희 팀 프로젝트를 확장 가능한 구조로 만들고자 포트어댑터 아키텍처를 알아보았습니다. 포트와 어댑터를 간단하게 설명하자면 애플리케이션이 외부 요소(인프라)등에 관련없이 지속가능하게 만드는 것이 목표이며, 포트는 인터페이스고 어댑터는 구현하는 클래스를 말합니다. 외부에 의해 동작하는 포트를 주포트 (구현은 주어댑터) ex) MVC의 Controller와 같은 외부에서 애플리케이션과 통신하고자 할때 필요한 포트 내부적으로 외부의 프로토콜과 통신하는 것을 부포트 (구현은 부어댑터)ex) MVC의 DAO와 같은 애플리케이션이 외부와 통신할 때 필요한 필요한 포트 현재는 MVC구조로 HTTP API → 서비스 → Repository(MySQL) 로 구성되어있는데 이중 HTTP API가 grpc로 변경되거나,..
-
JVM Run-Time Data Area개발/Java 2021. 4. 6. 16:50
이전에 JVM에 대해 정리한 내용이 있는데, 좀 더 추가할 내용이 있어서 작성하였다. (Constant Pool, Static은 어디에, Heap, Garbage Collection 등..) Live-Study 1주차 정리내용 - JVM soongjamm.tistory.com/95 [live-study] 1: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. 백기선님이 진행하시는 live-study 1주차 과제 1주차 과제 목표 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기. 학습할 것 JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 soongjamm.tistory.com JVM JVM과 추상화 Run-Time Data Areas static 변수는 어디에 저장될까..
-
[okky 질문글 답변] map에 대하여개발/Java 2021. 4. 5. 18:23
okky.kr/article/903802?note=2290174 OKKY | Map과 Hashmap의 차이는 어떤 알고리즘을 쓰느냐의 차이인가요? Map은 이진탐색트리, Hashmap은 해쉬테이블을 쓴다고 하는데, 어떤경우에 Map을쓰고 또 어떤경우에 Hashmap을 쓰는지 모르겠습니다.. 그리고 이런식으로 정의하는건 어떤의미인지 잘 파악이 안됩니다 okky.kr 질문 제목 Map과 Hashmap의 차이는 어떤 알고리즘을 쓰느냐의 차이인가요? 본문 Map은 이진탐색트리, Hashmap은 해쉬테이블을 쓴다고 하는데, 어떤경우에 Map을쓰고 또 어떤경우에 Hashmap을 쓰는지 모르겠습니다.. 그리고 이런식으로 정의하는건 어떤의미인지 잘 파악이 안됩니다..ㅠ private static Map store = ..
-
enum을 비교할 때 .equals() 말고 '==' 을 써도 된다.개발/Java 2021. 4. 5. 18:19
stackoverflow.com/questions/1750435/comparing-java-enum-members-or-equals Comparing Java enum members: == or equals()? I know that Java enums are compiled to classes with private constructors and a bunch of public static members. When comparing two members of a given enum, I've always used .equals(), e.g. public stackoverflow.com enum은 싱글톤이라 '==' 비교시 제대로 된 결과를 얻을 수 있고, equals() 보다 명확하다는 의견이 있는 것..
-
스프링부트 profile 설정 (궁금증 해결. .properties / jvm 옵션 -Dspring/ web.xml의 init-param / System.setProperty() 등등)개발/Spring 2021. 3. 26. 14:23
공부를 하면서 불편함과 해결되지 않은 궁금증이 있었다. (불편.귀찮) mysql로 개발을 하려면 매번 mysql를 켜줘야한다. 그게 귀찮아서 h2로 인메모리 db를 쓰려면 설정을 또 바꿔줘야 하는데 url, id, pw를 자꾸 까먹는다. 즉, mysql h2 왔다갔다하는게 번거롭다. (모르겠는거) 스프링(이나 스프링부트)에 각종 설정이 많고 방법도 많아서 뭐가 뭔지 잘 모르겠고 헷갈린다. 1번 문제를 해결하려고 책을 보다보니 2번 문제가 어느정도 해결이 되었다. 설정 하는 방법들, 우선순위 스프링부트에는 각 목적에 따라 설정을 달리할 수 있는 Profile 이라는 기능을 제공한다. Profile은 이름을 지정해서 설정 자바 코드나 프로퍼티를 작성하고 지정한 Profile 이름을 통해 설정을 읽어들일 수 ..
-
JWT (Json Web Token)보안/웹보안 2021. 3. 10. 20:57
JWT는 Json 을 이용해 안전하게 정보를 전달할 수 있는 웹 표준이다. 클라이언트가 서버에 인증을 요청할 때 사용된다. 인증을 위해 쿠키를 사용할 수도 있고 세션을 사용할 수도 있다. 그러나.. 쿠키를 사용하면 클라이언트가 브라우저에 정보를 raw 하게 저장하기 때문에 보안에 취약하고 세션을 사용하면 서버가 여러대인 경우 모두 세션ID 를 가지고 있어야 인증이 가능하기 때문에 부담스럽다. 결론부터 얘기하면 JWT를 사용하면 클라이언트가 정보를 가지고 있으면서 위변조 또한 불가능하기 때문에 서버 입장에서 편리해진다. 왜 일까? JWT의 구조 JWT의 구조를 보기전에 알아야 할 배경 지식은 JWT는 base64 인코딩과 해싱이 사용된다는 사실이다. {Header} . {Payload} . {Signatu..