본문 바로가기

개발

(32)
[2] [개인공부] 스레드 세이프티(Thread safety) 활용. - synchronized vs cas Blocking 방식인 "synchronized"Non-Blocking 방식인 "CAS"무엇이 더 좋다기보다 서로 사용해야할 상황이 다르다는 것을 알게됐다.그렇다면 synchronized와 cas를 어떤 상황에 사용하는게 좋을지 알아보자. 동기공부중에 이런 궁금증이 생겨났다.블락 방식은 단순히 안전하고 느릴까? 논블락은 블락보다 항상 빠를까? 요청 실패 횟수가 많으면 성능에 영향을 미치진 않을까? 그래서 이런 고민들을 해결하기 위해 스스로 위 생각들에 대해 이론을 정리하고 실험해보기로 했다.아래 이론은 내가 공부하고 정리한 내용이기 때문에 정답은 아닐 수 있다 참고용으로만 봐주시길 바란다. 이론 이전의 카운트업 예시처럼, 멀티스레드로 공유변수에 대해 어떤 연산을 N회 수행하는 코드가 있다고 가정하자. 연..
[1] [개인공부] 스레드 세이프티(Thread safety) 이해. 오늘도 난 출근 준비를 한다. 아침에는 어찌나 일어나기가 싫은지 최대한 잠을 자게 된다. 그래서 난 늘 지각을 걱정하며 바삐 아침을 보낸다. 일어나서 식빵을 토스터기에 넣고 빵이 구워지는 동안 샤워를 한다. 샤워를 하며 뉴스를 듣고 오늘 무슨 옷을 입을 지 미리 생각한다. 이렇게하면 30분이면 출근 준비 완료다. 만약 이런 아침 준비 과정을 하나씩 진행한다면 족히 1시간은 걸리지 않을까..?  작업의 효율성동시에 여러 일을 할 수 있다면 시간을 절약할 수 있다. 시간을 절약한다는 것은 곧 일의 효율이 올라간다는 것이다.이 논리로 컴퓨터에서도 동시에 여러 작업을 처리하는 것이 빠를 것이라는 생각이 든다.  병렬 처리 vs 동시 처리여러 작업을 처리 할때 고려해야 할 사항이 있다.CPU는 멀티 코어를 지원하..
[0] [개인 공부] 스레드 세이프티(Thread safety) 앞으로 회사에 멀티스레드를 적용할 일이 있을 것 같아 관련 지식을 미리 공부를 해두려고 한다.3주라는 시간 동안 최대한 많이 배워서 회사에 기여하는것이 목표다.  주제스레드 세이프티(Thread safety)  일정3월26일 : 주제 선정4월9일 : 스레드 세이프티 문제 해결 방법 공유4월16일 : 더 나은 방법에 대한 고민 내용 공유
[2] 인X타그램에서 게시물 작성 시 어떤일이 일어날까? - multipart/form-data편 HTTP의 ‘multipart/form-data’는 이미지, 텍스트, 비디오 등을 단일 HTTP 요청으로 전송할 수 있다는 이점이 있다.   파일 업로드와 파일 업로드 정보를 한번에 처리하여 성능을 높이자.인X타그램은 한 번의 API 요청으로 사진, 게시글 텍스트, 태그, 위치 정보 등을 전부 처리하고 싶을 것이다. 이렇게 하지 않으면 각 요청마다 추가적인 트래픽이 발생하고 서버 부하가 늘어날 수 있기 때문이다. 어플리케이션 서버에서는 클라이언트에서 전송한 multipart/form-data 형식의 요청을 해석해야 한다.이를 위해 Spring의 MultipartResolver는 HTTP 요청의 multipart/form-data를 해석하여 파일과 메타데이터를 추출하고 처리한다.   MultipartRes..
[1] 인X타그램에서 게시물 작성 시 어떤일이 일어날까? - multipart/form-data편 인X타그램에서 게시물 업로드 버튼을 누르면 무슨일이 일어날까? (아 물론 실제 인X타는 안그럴 수도 있음..) 인X타그램 데이터 프로세스 나는 인스타그램 업로드 과정을 5가지 단계로 정의했다.사진 선택업로드 요청서버에서 요청 처리파일 및 메타데이터(사진 관련 정보) 처리업로드 완료 및 후속 처리위 과정을 그림으로 정리하면 이런 느낌이다.  ‘통신’은 어떻게 되는걸까? 그렇다면 어떻게 내가 올린 게시물이 데이터 저장소까지 도달할 수 있는걸까? 그건 바로...우린 원하든 원하지 않든 웹(Web)세상에 살고 있다. 배민을 이용할 때도 로켓배송을 이용할 때도… 웹은 인터넷이라는 네트워크 상에서 동작하는 서비스다. 그리고 이 인터넷을 통해 서로 다른 서버끼리 통신을 할 수 있다.그래서 내가 업로드한 게시물은 인터..
[MySQL] 레코드 기반의 잠금이란? 락(Lock)이란?Database의 트랜잭션 처리의 순차성을 보장하기 위한 방법.레코드(Record)란?Database의 행 부분. Tuple이 레코드다.레코드 기반의 잠금 = 데이터의 튜플(인덱스)을 기준으로 Lock을 설정하는 행위.→ 따라서 레코드 기반의 잠금을 수행한다면, 높은 동시성 처리가 가능하며 안정적이며 성능이 뛰어나다. *만약 TABLE의 Index가 정의되지 않았다면?MySQL :: MySQL 8.0 Reference Manual :: 15.7.1 InnoDB Locking MySQL :: MySQL 8.0 Reference Manual :: 15.7.1 InnoDB LockingMySQL 8.0 Reference Manual  /  ...  /  The InnoDB Storage En..
프로그래머스 H-Index(Java) 풀이 문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/42747?language=java 문제 설명 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. 제한사항 과..
Intellij JSP file upload 문제 해결 에러 내용: 아티팩트 JDBC-WorkSpace:war exploded: 아티팩트 배포 중 오류가 발생했습니다. 자세한 내용은 서버 로그를 참조하세요. 로그 보기 더보기 에러로그 [2022-09-01 09:32:44,858] 아티팩트 JDBC-WorkSpace:war exploded: 아티팩트 배포 중입니다. 잠시 기다려 주세요... 01-Sep-2022 09:32:45.066 SEVERE [RMI TCP Connection(5)-127.0.0.1] org.apache.tomcat.util.modeler.BaseModelMBean.invoke 메소드 [manageApp]을(를) 호출하는 중 예외 발생 java.lang.IllegalStateException: 자식 컨테이너를 시작하는 중 오류 발생 at ..