개요김영한 강사님의 자바 고급 멀티스레드와 동시성 강의를 듣고 내 생각과 간단하게 작성한다. 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 강의 | 김영한 - 인프런김영한 | 멀티스레드와 동시성을 기초부터 실무 레벨까지 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 안다?www.inflearn.com 자세한 내용은 강의를 들어주세요.본론프로세스와 스레드란?프로세스프로그램을 실행하면 프로세스가 만들어지고 프로그램이 실행된다.프로세스는 간단히 말하면 운영체제 안에서 실행중인 프로그램을 뜻하고 자바를 예로들면 프로그램은 마치 자바 클래스, 프로세스는 해당 클래스를 객체화한 인스턴스라는 느낌을 가져가면 된다.각 프로세스..
전체 글
창의의 개발블로그입니다.개요김영한 강사님의 자바 고급 멀티스레드와 동시성 강의를 듣고 내 생각과 간단하게 작성한다.자세한 내용은 강의를 들어주세요.본론멀티태스킹과 멀티 프로세싱이란?멀티태스킹 다중작업 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 컴퓨팅 분야에서 멀티태스킹(영어: multitasking) 또는 다중작업(이하 멀티태스킹)은 다수의 작업(혹은 프로세스, 이하 태스크[1])이 중앙 처리 장치(이하 CPU)와 같ko.wikipedia.org위키피디아에 따르면 멀티태스킹이란 다수의 작업이 중앙 처리 장치(CPU)와 같은 공용자원을 나누어 사용하는 것을 말한다. 즉, 우리가 여러 프로그램들을 실행할 때, CPU라는 자원을 나누어서 사용하여 처리한다는 것을 의미한다.하지만, CPU(코어 1개)는 한 순..
개요프로젝트를 진행하던 중 nginx를 이용하여 웹 서버를 만들면서 SSL/TLS를 적용한 방식을 설명한다.프로젝트의 서버 구조는 다음과 같다.netlify에 프론트를 배포하고 백엔드와의 통신을 위해 HTTPS를 적용하기로 했다!본론SSL/TLS(HTTPS 적용) 절차letsencrypt로부터 인증서를 발급받는다.발급받은 키(인증서)를 nginx에 적용한다.nginx에 스프링 부트로 리버스프록시를 설정한다.인증서를 발급받기 전에 해당 인증서를 발급받기 위한 준비를 먼저 하자!0. 인증서 발급 전 준비 (nginx 실행)sudo docker run -d --name nginx --network {네트워크명} -p 80:80 -p 443:443 \ -v /home/ubuntu/conf:/etc/ngin..
개요프로젝트를 진행하던 중 게시글의 요청이 연속으로 두 번 오면 게시글이 2개 작성되서 이전에 만들어둔 로직과 충돌하는 일이 발생했다.기존의 로직은 현재 진행중인 게시글이 있다면 더이상 게시글이 작성되지 않도록 했지만 연속으로 들어오는 요청을 방지할 방안이 없었다.즉, 2개의 요청이 들어왔을 때, 진행중인 게시글의 존재 여부를 체크를 2개의 요청이 모두 넘어가면 2개의 게시글 모두 작성된다는 문제가 발생한다.문제의 코드@Override public WantedResponseDTO createWanted(WantedDTO wantedDTO, MultipartFile mainImage, MultipartFile signature) throws IOException { UserEntity u..
https://www.acmicpc.net/problem/15889문제대한건아 욱제는 수류탄 투척 훈련을 받고 있다. 욱제를 필두로, 훈련장에는 욱제를 포함한 N명의 전우들이 일렬(1열 횡대 ㅎ)로 서있다. 군대에 끌려온 사실에 심술이 난 욱제는 수류탄의 안전핀을 뽑아 전우에게 던졌다. 마찬가지로 심술이 난 전우들도 욱제가 던진 수류탄을 받아 전우들에게 던지기 시작했다.이 게임을 중대장님이 모르게 끝마치려면 마지막 전우(왼쪽에서부터 N번째 전우)가 수류탄을 받아 조용히 행사용 폭죽 더미에 섞어놓아야 한다. 욱제와 전우들은 항상 최선을 다해 최적의 방법으로 게임을 조용히 끝마칠 수 있도록 노력한다. 과연 영창을 건 이 게임의 끝은 어디일까?풀이어떻게 풀까 고민을 하다 왼쪽에서부터 오른쪽 사람으로 스캔해가면..
https://www.acmicpc.net/problem/2170문제매우 큰 도화지에 자를 대고 선을 그으려고 한다. 선을 그을 때에는 자의 한 점에서 다른 한 점까지 긋게 된다. 선을 그을 때에는 이미 선이 있는 위치에 겹쳐서 그릴 수도 있는데, 여러 번 그은 곳과 한 번 그은 곳의 차이를 구별할 수 없다고 하자.이와 같은 식으로 선을 그었을 때, 그려진 선(들)의 총 길이를 구하는 프로그램을 작성하시오. 선이 여러 번 그려진 곳은 한 번씩만 계산한다.풀이문제를 해결하기 위해 라인 스위핑이라는 알고리즘이 무엇인지 찾아보았고 한 쪽 방향에서부터 시작해서 다른쪽 방향으로 스캔해가면서 푸는 방식 을 라인 스위핑이라고 합니다.이게 무슨뜻인지 많이 고민했고 선을 종이에 그려보면서 어떤 경우의 수가 나올까 고민해..
개요자바 리플렉션이 무엇인가에 대해서 공부하고 공부한 내용을 토대로 작성했다!프레임워크와 라이브러리들을 사용하면서 어노테이션과 여러 기능을 사실 자바 코드로 어떻게 하는지 이해할 수 없었는데 이해가 된 것 같다.java 애플리케이션 의문점들..스프링은 어떻게 런타임 시점에 빈을 주입할 수 있을까?많은 프레임워크나 라이브러리들은 왜 기본 생성자를 필요로 할까?JUnit은 @Test 언노테이션이 붙은 메서드들을 어떻게 실행시킬까?정답은 바로 리플렉션!reflection이란?리플렉션의 뜻은 거울에 비친 상, 모습 이라는 뜻이다.자바에서는 거울, 물에 비친 상은 실제 클래스의 정보가 비쳐진 런타임 시점의 클래스 데이터를 뜻한다!자바 코드 동작 과정자바 코드인 .java 파일은 자바 컴파일러에 의하여 JVM이 이..
개요프로젝트를 진행하던 도중 실수로 유저가 동시에 버튼을 두 번 연속으로 누를 경우에 회원가입이 두번 발생하는 현상이 있다는 것을 알게되었다.이런 문제를 해결하는 방법을 찾아보던 중 동시성 제어를 해서 두 개의 스레드가 동시에 임계 구역으로 진행하지 못하도록 세마포 역할을 하는 무언가가 있어야한다는 것을 알게되었고 해당 내용을 테스트 해보았습니다.자바의 동시성 제어여러 스레드가 하나의 자원을 공유해서 레이스 컨디션이 발생하는 것을 방지해야 합니다. 자바에서는 synchronized 키워드를 통해서 메서드에 대한 동시성을 제어할 수 있었습니다.📌 synchronized 키워드 Essential Java Classes > Concurrency)" data-og-descri..