전체 글 (183) 썸네일형 리스트형 자바가 엔진단에서 어떻게 동작할까 큰 흐름은 다음과 같다. JIT 컴파일러 (Just-In Time Compiler) 인터프리터에서 읽은 코드를 또 읽으면서 생기는 부하 문제가 있다. 해결 수단으로 메서드를 다시 읽지 않고 JIT 호출을 통해 기계어를 바로 읽는다. 관련 기술인 JRockit 기준 스레드를 모니터링해 자주 사용되는 메서드의 기계어를 저장해놓는다. 자주 사용되는 메서드라 판별될 때 까진 인터프리터가 바이트코드를 한 줄씩 해석하는 문제가 있다. 즉, 재시작 등에서 발생하는 콜드 미스의 비용이 매우 크다. 네이티브 컴파일러와 차이? C의 경우 .exe, .elf 같은 형태로 디스크에 저장되지만 Java의 JIT는 JVM의 메서드 영역에 저장된다. 즉, 휘발성이다. 메서드 영역에 어떤 형태로 저장됐는지는 관련 문서가 없어 알 수.. redis 2.0 분석 들어가기 전에 Redis 2.0 버전을 기준으로 작성한 글입니다. 해당 버전의 코드는 다음 링크에서 확인하실 수 있습니다. http://redisgate.kr/redis/introduction/redis_release2.php Redis Release Notes 2 redisgate.kr 해시 테이블 resize 해시 테이블을 resize 하는 과정에서 데이터를 옮겨야 하기 때문에 다른 요청을 수행할 수가 없다. 이를 해결하기 위해 2버전에선 db 당 해시 테이블을 2개로 만들어 관리한다. 0번 해시 테이블이 메인이지만, resize가 된 시점부터 1번 해시 테이블이 메인이 된다. 데이터를 모두 옮기면 1번 해시 테이블이 0번으로 변환된다. 이 작업은 cron을 통해 주기적으로 옮기거나 조회, 삽입, 수.. [java] Spring 애플 로그인 구현 과정 애플 로그인은 구글이나 국내 소셜 로그인과는 다른 방식으로 구현해야 한다. 관련 포스트를 참고해 구현했지만, 일부 포스트는 필요 이상으로 의존성을 사용했고 무엇보다도 내 방식으로 정리를 해놔야 나중에 애플 로그인이 기억나지 않을 때 빠르게 이해하려고 작성했다. swift와 Java Spring Boot를 사용했고, 내 역할은 백엔드였기 때문에 swift 코드는 올리지 않는다. 애플 소셜 로그인 구조 다른 로그인이 인증 서버에서 받은 토큰을 가지고 리소스 서버에 요청하면 사용자가 제공하기로 한 정보를 얻는다. 애플 로그인의 경우 id_token 이란 jwt 토큰을 주고 백엔드에서 이 토큰이 애플에서 만든 토큰인지 검증하고, Claim을 추출해 사용자 정보를 가져온다. 1, 2 번은 IOS에서 담당할 부분이.. redis 1.0 분석 - 공유 메모리 풀 업데이트 내역 2023.12.16 현재도 공유 메모리 기술을 쓰는지에 대한 글 추가 들어가기 전에 Redis beta 1 버전을 기준으로 작성한 글입니다. 해당 버전의 코드는 다음 링크에서 확인하실 수 있습니다. http://redisgate.kr/redis/introduction/redis_release1.php Redis Release Notes 1 redisgate.kr 해당 기술고 관련된 포스트입니다. https://groups.google.com/g/redis-db/c/cHTu12jRr78/m/h-L0-EOn9WgJ Object sharing is fun! Hello, some hour ago I implemented a new feature in Redis, object sharing, in .. 초기 Redis 분석 - 이벤트 루프 들어가기 전에 Redis beta 1 버전을 기준으로 작성한 글입니다. 해당 버전의 코드는 다음 링크에서 확인하실 수 있습니다. http://redisgate.kr/redis/introduction/redis_release1.php Redis Release Notes 1 redisgate.kr 이벤트 종류 파일 이벤트: 클라이언트 생성, 커맨드 수행과 DB 백업 과정에서 발생하는 응답에 대한 이벤트 타임 이벤트: redis 내부에서 주기적으로 돌아가는 cron 작업. 초기에는 최소 사이즈를 만족하지 못하는 해시 테이블을 축소하는 작업만 한다. 작동방식 이벤트 루프를 통해 지속적으로 파일, 타임 이벤트를 확인하고 처리한다. 하나의 while 문으로 돌아가기 때문에 redis는 싱글 스레드로 처리된다. 다만.. 초기 Redis 분석 - 자료구조 업데이트 내역 2023.12.10 해시 생성 알고리즘, 해시 마스킹 설명 추가 2023.12.12 해시 테이블 resize 과정 추가 들어가기 전에 Redis beta 1 버전을 기준으로 작성한 글입니다. 해당 버전의 코드는 다음 링크에서 확인하실 수 있습니다. http://redisgate.kr/redis/introduction/redis_release1.php Redis Release Notes 1 redisgate.kr 데이터 관리 redis는 데이터를 문자열 형태로 관리한다. 하지만, 문자열 그대로 관리하지 않고, SDS(Simple Dynamic String) 란 객체에 문자열과 메타 데이터를 같이 관리한다. 여기서 len은 문자열의 길이, free는 현재 할당된 메모리에서 남은 공간을 의미한다.. 이펙티브 소프트웨어 테스팅 테스팅 책을 읽은 이유 프로젝트를 진행하는 과정에서 테스트 코드의 필요성을 절실히 느꼈다. 코드를 봐줄 상급자가 없거나, 같이 리뷰할 팀원들이 부족하다면 에러가 안 나도록 기도 메타로 가야 했다. 그러다 보니 프런트 개발자와 API를 맞추는 과정에서 에러가 자주 발생했고, 그때마다 새로 배포를 하는 불편함이 있었다. 이를 해결하기 위해 단위 테스트 등을 통해 개발한 기능에 대한 테스트를 작성해 발생할 수 있는 위험성을 줄이고자 했다. 하지만, 통합 테스트같이 복잡한 테스팅이 필요한 경우를 만나니 테스트 코드 작성도 막막해져 책의 도움을 받고자 했다. 이 책을 선정한 이유 난이도가 적당했다. 아직 현업 경험이 없는 학생이다 보니, 전문 테스팅 책을 보는데 이해하기가 무척 어려웠다. 시간을 두고 읽으면 이해.. SSAFY 2학기 특화 프로젝트 회고 공통 프로젝트에 이어 특화 프로젝트가 끝났다. 추천이란 스택을 가지고 주제를 선정해야 했기에, 어떤 것에 대한 추천을 할지 많이 고민을 했다. 그러다 팀원들 모두 맥주를 좋아하고 같은 문제를 겪는다는 것을 알고 맥주 추천 서비스 개발을 시작했다. 추석 연휴 및 전후로 하반기 공채가 겹치다 보니 프로젝트에 집중하기 힘들었던 점이 있었지만, 목표로 정한 기능들은 모두 구현했다. 팀원 모두가 좋아하는 소재를 가지고 공통된 문제점을 해결한다는 것은 무척 의미 있는 경험이었다. 모두가 맥주를 좋아했고, 새로운 맥주에 도전해 보고 싶은데 뭘 마실지 막막한 문제가 있었다. 아이디어 기획도 잘 풀렸고, 토론 과정에서 맥주 고르는 기준에 대한 새로운 관점도 알게 됐다. 왜 주제를 이걸로? 생각보다 단순했다. 나: 오늘 .. 이전 1 2 3 4 5 6 7 ··· 23 다음