전체 글17 node.js 메모리 누수 분석기 보호되어 있는 글 입니다. 2024. 3. 8. [MySQL] Metadata Lock 회사에서 겪었던 이슈를 해결하면서 공부도 할 겸 포스팅해보았다. 포스팅 흐름을 간단하게 요약하면 다음과 같다. metadata lock이란? metadata lock이 왜 발생하는지 어떻게 해결했는지 휴먼 에러 interacvtive_timeout wait_timeout Metadata lock이란? 회사에서 작업을 하다가 의도치 않은 Lock이 발생하였다. 현재 진행 중인 프로세스들의 상태를 확인해보자. SHOW FULL PROCESSLIST; 현재 프로세스 상태를 보면 다음과 같은 문장을 볼 수 있다. Waiting for table metadata lock 자세한 정보를 확인해보니 개발환경에서 DDL을 날리면서 발생한 문제였다. Lock이 걸린 프로세스를 kill 하면 그만이지만 원인을 알아야 의도.. 2022. 9. 13. 우아한테크캠프 pro 4기 리뷰어 회고 NEXT STEP에서 리뷰어로 활동하면서 우연히 우아한테크캠프 pro 4기 리뷰어로써 활동할 수 있는 기회를 얻었다. 9주 동안 아래 커리큘럼을 리뷰한다. "과연 내가 해당 과정을 잘 리뷰할 수 있을까?"라는 고민을 엄청 많이 하였다. 우선 수강생도 쉽지 않은 과정이고, 리뷰어한테도 쉽지 않은 과정이라고 어디선가 악명이 높다는 소문을 풍문으로 들었고.. java를 하다가 현재 회사에서 golang을 하고 있고 미션을 진행하는 환경과 실무 환경이 차이가 있기에 실무 경험을 공유하면서 리뷰하기가 힘들 것이라고 생각했으며 수강생분들은 다 경력자분들이라 당연히 나보다 잘하는 분들이라 생각하여 리뷰를 잘 드릴 수 있을지 고민을 많이 하였지만 쉽게 오지 않는 기회라고 생각했으며, 나도 성장할 기회라고 생각하여 도전.. 2022. 7. 18. [go] Context 내부 속으로 - (1) 최근 회사에서 이미지 업로드 / 다운로드 서버를 개발하면서 고루틴을 많이 다루게 되었다. 이 기회에 고루틴 및 context에 개념을 정리하고 가고자 한다. 잘 모르면 주석부터 해석해보는 것이 진리 아니겠는가? 1부는 패키지에 소개된 주석들을 살펴보는 것이다. https://pkg.go.dev/context context package - context - pkg.go.dev This example demonstrates the use of a cancelable context to prevent a goroutine leak. By the end of the example function, the goroutine started by gen will return without leaking. packa.. 2022. 4. 25. [자바 병렬 프로그래밍] Lock에 대한 궁금점 자바 병렬 프로그래밍이란 책을 읽으면서 다음과 같은 내용이 있다. public class Parent { public synchronized void do() { System.out.println("parent"); } } public class Child extends Parent { @Override public synchronized void do() { System.out.println("child"); supder.do(); } } > 해당 코드는 암묵적인 락이 재진입 가능하지 않았다면 데드락에 빠졌을 코드 해당 코드와 설명을 보니 다음 내용처럼 궁금해졌다. synchronzied method 상속 여부 재진입을 지원하지 않는 경우 어떤 상황에서 데드락이 걸리는 것일까? 재진입이 가능하여 데드락.. 2021. 12. 21. [GORM] Implements Customized Data Type (feat.Scanner & Valuer) GO, GORM을 이용하면서 내가 새로 정의한 커스텀 타입을 데이터베이스에 CRUD 하는 과정에서 이슈가 있었다. 데이터베이스에 내가 새로 정의한 커스텀 타입을 CRUD 하고 싶은 경우, Database는 지원하지 않는 타입이라고 에러를 뱉어버린다. 간단한 예제 코드로 설명을 해보면 다음과 같이 Customer라는 테이블에 값을 넣으려고 한다. create table customer ( id int null, signUpDate date null -- 가입한 날짜 ); 모델링은 다음과 같다. type CustomDate time.Time type Customer struct { Id int64 `json:"id" gorm:"column:id"` SignUpDate CustomDate `json:"sign.. 2021. 12. 3. WebSecurity.ignoring()을 알아보자 백선장님 인강에서 보면 ignoring 하는 방법과 ignoring 된 요청은 시큐리티 필터 목록 (Filters) 갯수가 "0"임을 확인할 수 있었다. ignoring() 내부와 어떻게 필터 목록이 0개가 되는지 살펴보고 싶어졌다. # ignoring() 정적인 요청은 시큐리티 설정에서 WebSecurity.ignoring()을 이용하여 필터 적용을 제외할 수 있다. ignoring()외에 다른 방법들도 존재하는데, 어떤 것들이 있는지 살펴보자. # 요청 제외 방법 사진에 나와있는 WebSecurity.ignoring()이 제공해주는 제외 방법이 requestMatchers 외에도 다른 방법들이 존재하는데, ignoring 내부를 들어가보면 다음과 같다. IgnoredRequestConfigurer 를.. 2021. 5. 30. AutenticationManger, ProviderManger, AuthenticationProvider를 알아보자. 이번엔 인증처리를 하는 주요 객체를 간단하게 살펴보자. # AuthenticationManager AuthenticationManager is the API that defines how Spring Security’s Filters perform authentication. The Authentication that is returned is then set on the SecurityContextHolder by the controller (i.e. Spring Security’s Filterss) that invoked the AuthenticationManager. If you are not integrating with Spring Security’s Filterss you can set the.. 2021. 5. 24. SecurityContext 와 Authentication 내부 속으로 이전 포스팅에서는 SecurityContext를 가지고 있는 SecurityContextHolder 내부를 살펴보았다. 이번에는 SecurityContext와 Authentication의 내부를 살펴보자. # SecurityContext javadoc에 설명된 내용을 해석해보자. 현재 실행 중인 쓰레드와 연관된 최소한의 보안 정보를 정의하는 인터페이스이다. SecurityContext는 SecurityContextHolder에 저장된다. SecurityContext를 구현한 구현체는 SecurityContextImpl 하나밖에 없다. (SecurityContextImpl 내부를 보면 Authentication을 가지고 있는 것 외에는 크게 중요한 게 없다.) 다음으로 Authentication 내부를 살.. 2021. 5. 17. SecurityContextHolder의 내부를 파헤쳐보자 인프런 백선장님의 강의를 보면서 내부가 좀 더 궁금해졌다. # SecurityContextHolder란 ? 우선 강의에서 설명해주시는 정의는 다음과 같다. 1. 인증된 사용자 정보인 `Principal`을 `Authentication`에서 관리하고 `Authentication`을 `SecurityContext`가 관리하고 `SecurityContext`는 `SecurityContextHolder`가 관리한다. 2. 기본적으로 ThreadLocal을 사용한다. ThreadLocal : 한 쓰레드 내에서 사용하는 공용 저장소 즉 ThreadLocal을 사용해서 `Authentication`을 한 쓰레드 내에서 공유가 가능하다. 쓰레드가 달라지면 제대로 된 인증 정보를 가져올 수 없다. 즉 SecurityCo.. 2021. 5. 14. HashMap 내부는 충돌시 언제 트리 구조로 변경될까? 해시 맵 내부는 충돌 시 언제 트리 구조로 변경될까? 내가 알고 있는 지식이나 네이버 D2 블로그나 여러 블로그에서 확인한 내용은 내부에 버킷이 갖고 있는 노드의 개수가 8개 이상일 때 트리로 변경된다는 내용이었다. 여기서 내가 궁금한 건 정말 한 버킷에 노드의 개수가 8개 이상일 때 바로 연결 리스트에서 트리로 바로 바뀌는 것일까? 한번 내부를 확인해보자!!!!! 내부 탐색을 위한 예제 코드는 다음과 같다. (jdk 1.8 기준) HashMap에 더미 객체를 계속 생성해서 put 하는 간단한 예제 코드이다. 눈여겨볼 것은 해시 코드 재정의 시 1로 한 것이다. 해시 코드를 1로 재정의 한 이유는 같은 버킷 인덱스에 여러 노드를 쌓아 8개 일 때 트리로 변경되는지 확인하기 위함이다. 이제 본격적으로 내부.. 2021. 2. 2. 이전 1 2 다음