왜 F-Lab인가내가 잘하는 줄 알았다.펌웨어 개발자로 커리어를 시작했다.전자과를 졸업한 나는 전공 지식이란건 아무것도 없었다.사수도 없었다. 그저 열심히 하는 것 밖에 몰랐다.이런 저런 일도 많았지만 잘한다는 소리를 주변 동료, 상사에게 들었다.그러던 중 직무와 다른 업무들이 쏟아졌고 챗바퀴 같은 업무에 지친 나는 백엔드에 흥미가 생기기 시작했다.혼자서 독학을 하면서 업무를 병행했다. 체력적인 한계가 왔다. 업무하는 시간이 아까웠다.공부 시간을 확보하기 위해 백엔드 전향을 결심하며 퇴사를 했다. 그러던 중 영업팀 차장님을 통해서 협력사에서 제의가 들어왔다.굳이 공백을 가져가며 공부하지 말고 일을 하면서 배우는게 어떻겠냐는 차장님의 권유였다.백엔드 경력이 없는 나를 왜 뽑으려고 할까라는 의심과 함께 폐를..
Hash임의의 크기를 가지는 데이터(문자, 파일 등)를 해시 함수에 입력하게 되면 고정된 크기의 데이터를 출력하게 되는데 이를 Hash(또는 해시값, 해시코드)라고 한다.해시 함수는 알고리즘을 이용해서 입력받은 키 값으로 키 값의 크기와 상관없이 해시를 만들어 준다.해시 함수는 같은 입력값에 대해서 같은 출력값을 보장한다.(입력값에 대한 무결성을 보장한다고 한다.) 해시 값을 이용해서 키 값을 찾는 것은 불가능하여 일방향성을 갖는다고 얘기한다. Hash Table 해시 테이블은 이러한 해시 함수를 이용해 키에 대한 해시 코드를 반환받아 해시 코드를 통해 배열(bucket)의 인덱스로 환산해서 데이터의 접근하는 방식의 자료구조이다.(Java에서는 HashTable, HashMap등을 통해 해당 자료구조를 ..
Runtime Data AreaRuntime Data Area는 JVM의 메모리 구조를 의미하며 총 5가지 영역으로 구분됩니다.Thread가 모두 공유하는 영역Method AreaHeapThread가 독립적으로 사용하는 영역StackPC RegisterNative Method StackMethod Areajava 파일은 Java 컴파일러에 의해 JVM에서 읽을 수 있도록 Java Bytecode로 변환하여 class 파일을 생성합니다.이렇게 생성된 class 파일은 JVM의 Class Loader에 의해서 JVM 메모리 영역에 클래스 정보를 올리게 되는데이때 클래스 정보가 올려지는 곳이 Method Area입니다. Method Area는 크게 아래와 같은 정보를 담고 있습니다.클래스 구조 정보클래스명, ..
리뷰지금이라도 읽게 돼서 다행이라고 느껴질 정도로 매우 깊은 내용이 담겨있다.평소에 Thread, ExecutorService를 사용할 줄만 알았지 현재 내가 짠 코드가 스레드 세잎한 상태인지 아닌지도몰랐던 지난날이 부끄럽다.. 책이 출판한지 오래 되어 Java 5, 6을 기준으로 다루긴 하지만 버전과 상관없이 읽기 무방하다.500p가 넘고 깊이 있는 내용을 다루기 때문에 책이 다소 어렵다.책에서도 예제 코드와 그림이 상세하게 나와있으나 그럼에도 이해가 되지 않는 부분이 나올 때마다ChatGPT의 도움을 받아서 예제 코드를 보며 이해를 하곤 했다.요약1부 기본원리상태 없는 객체는 항상 스레드 안전하다.암묵적인 락은 재진입이 가능하기 때문에 특정 스레드 본인이 이미 획득한 락을 다시 확보할 수 있다.여러 ..
이 글은 Java/Spring Boot 기반 서비스를 운영하며 Thread 누수 문제를 분석하고 해결한 과정을 기록한 글입니다.1. 문제 발생Caused by: java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached at java.base/java.lang.Thread.start0(Native Method) at java.base/java.lang.Thread.start(Thread.java:1526) at java.base/java.util.Timer.(Timer.java:188)java.lang.OutOfMemoryError: unable to c..
KOCW 최규상 교수님 컴퓨터구조 강의 정리 이 글은 공부한 것을 복습 및 기록하기 위한 게시물입니다. 잘못된 정보가 기입되어 있을 수 있으니 주의해주시기 바랍니다. 참고 : 컴퓨터 구조 및 설계 - David A. Patterson,John L. Hennessy 강의 링크 : http://www.kocw.net/home/cview.do?lid=f64448266743ced9 1. 32-bit Constants MIPS에서는 immediate는 16bit이다. 32 bit을 처리하기 위해선 2개의 instructuion이 필요하게 된다. lui rt, constant 상수값이 target register의 상위 16bit로 복사된다. ori $s0, $s0, 2304 상수값이 target register의..
KOCW 최규상 교수님 컴퓨터구조 강의 정리 이 글은 공부한 것을 복습 및 기록하기 위한 게시물입니다. 잘못된 정보가 기입되어 있을 수 있으니 주의해주시기 바랍니다. 참고 : 컴퓨터 구조 및 설계 - David A. Patterson,John L. Hennessy 강의 링크 : http://www.kocw.net/home/cview.do?lid=f64448266743ced9 1. Six steps in Execution of a procedure(Procedure Calling) procedure 실행의 6단계를 뜻한다. caller는 어떠한 함수를 부르는 것이고 callee는 불리여지는 함수를 뜻한다. claller는 callee가 엑세스 할 수 있는 곳에 argument를 가져다 놓게 된다. MIPS..
KOCW 최규상 교수님 컴퓨터구조 강의 정리 이 글은 공부한 것을 복습 및 기록하기 위한 게시물입니다. 잘못된 정보가 기입되어 있을 수 있으니 주의해주시기 바랍니다. 참고 : 컴퓨터 구조 및 설계 - David A. Patterson,John L. Hennessy 강의 링크 : http://www.kocw.net/home/cview.do?lid=4e4c594ab2a7a659 1. Unsigned Binary Integers 컴퓨터에서는 2진수를 사용한다. n비트로 되어있는 숫자는 위와 같이 표현한다. 범위는 0 to +2ⁿ – 1 이다. 공식의 예로는 위와 같다. 0부터 4,294,967,295까지 표현이 가능하다. 2. 2s-Complement Signed Integers n비트로 되어있는 숫자는 위와..