현재까지 진행한 내용멘토링도 어느새 13주차까지 진행하였다. 멘토링을 시작한게 엊그제 같은데 벌써 한달여밖에 남지 않았다..🫨 1개월차에는 자바에 대한 이론 공부를 깊게한 이후 2개월차부터 스프링에 대한 학습과 프로젝트 기획을 병행하였다.원래라면 지금은 프로젝트의 기능을 대부분 구현하고 리팩토링을 하면서 멘토님의 코드리뷰를 받아야하는 단계이지만지난달 초에 지원했던 회사들이 운좋게 모두 서류합격이 되면서 면접준비와 프로젝트를 병행하게 되었다.사실 병행이라기보다 면접 준비에 더 집중하게 되었는데, 이 부분은 멘토님께서 먼저 프로젝트보다 면접 준비에 무게를 두자고 하셨다. 그렇게 멘토님께서 이력서와 경력기술서를 토대로 예상 면접 질문을 뽑아주셨고 모의 면접식으로 멘토링을 진행하였다.사실 이전에도 멘토링 자체..
현재까지 진행한 내용현재 8주차까지 멘토링을 진행했다.어느새 전체 멘토링 기간에 반환점을 돌게 되었다.. 1개월 간 이론 위주 학습이 끝나고 프로젝트를 진행하고 있다.물론 프로젝트 진행 중에도 이론 학습은 병행해야 한다...ㅎㅎ 이론 학습은 Java, Spring까지 진행된 상태다.이론 학습은 하면서 느끼지만 끝이 없는 기분... 서류 합격이 2곳이 되어 과제 진행과 면접 준비를 병행하다보니프로젝트 진행은 더딘 상황이다.. 멘토님께서 과제 코드 리뷰와 면접 준비를 같이 해주셔서 이 부분은 참 좋았다. 멘토링을 하면서 깨달은 점 멘토님께 채용 과제 코드리뷰를 받으면서 제일 많이 느꼈던 것은 "아 이거 알고있던건데" 였다.이력서를 쓸데도 마찬가지였다. 분명 다 알고 있던건데 지켜지지 않은 것들이 많았다.혼자..
왜 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의..