분류 전체보기 65

레이스 컨디션이란?

레이스 컨디션이란 Multi Thread 환경을 사용하다 보면 직면하는 문제이며 둘 이상의 프로세스 혹은 스레드가 공유 데이터에 엑세스 할 수 있고 동시에 변경을 시도 할 때 발생하는 문제이다. Multi Thread란 하나의 프로세스 안에서 2개 이상의 Thread가 작업하는 것을 말하며 메모리의 Heap과 Data 영역을 서로 공유하게 된다. 그렇기 때문에 같은 Data를 동시에 작업을 할 수 있기 때문에 레이스 컨디션이 발생할 수도 있다. 정상적으로 Thread가 동작시에는 아래와 같이 Thread-1이 재고를 1 감소 시키고 Thread-2가 재고의 수량을 확인후 다시 1을 감소시키는 작업을 할 수 있다. 하지만 아래와 같이 Thread-1이 재고를 감소시키고 DB에 반영되기전의 Stock의 상태..

Spring 2024.04.18

Docker Port가 겹친다면? (docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: address already in use.)

Docker를 활용해 image를 생성하던 와중 아래와 같이 Port가 충돌하는 상황이 발생했다. igwangmin@igwangmin-ui-MacBookPro ~ % docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mysql mysql Unable to find image 'mysql:latest' locally latest: Pulling from library/mysql ea4e27ae0b4c: Pull complete 519fbc71d3a7: Pull complete 3543c786ec0e: Pull complete 5cbcd7fa1c4c: Pull complete a9b531b9c23d: Pull complete 606e5727259a..

카테고리 없음 2024.03.30

Mac에서 도커 적용하기

mac에서 도커를 사용하기 위해서는 여러 가지 방법이 있지만 이 방법은 homebrew를 이용한 방법임을 알아주시길 바랍니다. homebrew 설치 법은 아래의 사이트에 들어가서 다운로드 방법이 잘 나와 있으니 설치 해주시면 됩니다. https://whalec.io/mac/homebrew-설치-및-사용-방법/ Homebrew 설치 및 사용 방법 - 꿈꾸는 하늘고래 Homebrew는 명령어 한 줄로 프로그램을 설치/제거할 수 있는 프로그램으로 맥북 사용자라면 반드시 설치해야 하는 필수 애플리케이션입니다. Homebrew 설치 및 사용 방법에 대해서 알아보도록 하겠 whalec.io homebrew가 설치가 되셨다면 먼저 명령어로 아래의 문구를 입력하시면 desk 상에서 사용할 수 있는 docker 앱이 L..

카테고리 없음 2024.03.30

벨만 포드 알고리즘

출발 노드를 설정한다. 최단 거리 테이블을 초기화한다. 다음의 과정을 (V(=정점) - 1)번 반복한다. 모든 간선 E개를 하나씩 확인한다. 각 간선을 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리 테이블을 갱신한다. 시간 복잡도: 벨만-포드 알고리즘의 시간 복잡도는 O(V * E) 입니다. 여기서 V는 정점의 수, E는 간선의 수입니다 문제 : https://www.acmicpc.net/problem/11657 import java.util.*; class Edge { int from; int to; int weight; public Edge(int from, int to, int weight) { this.from = from; this.to = to; this.weight = weight; } ..

카테고리 없음 2023.09.09

이진 탐색

이진 탐색 알고리즘 순차 탐색: 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법 이진 탐색: 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 이진 탐색은 시작점, 끝점, 중간점을 이용하여 탐색 범위를 설정한다 이진 탐색 동작 예시 이미 정렬된 10개의 데이터 중에서 값이 4인 원소를 찾는 예시를 살펴보자 [Step 1] 시작점: 0, 끝점: 9, 중간점: 4 (소수점 이하 제거) [Step 2] 시작점:0, 끝점: 3, 중간점: 1 (소수점 이하 제거) [Step 3] 시작점: 2, 끝점: 3, 중간점: 2 (소수점 이하 제거) 이진 탐색의 시간 복잡도 단계마다 탐색 범위를 2로 나누는 것과 동일하므로 연산 횟수는 log₂𝑁에 비례한다 예..

Algorithm 2023.08.12

배열

배열 index(식별자)와 값으로 구성 배열은 크기를 정의하고 변경할 수 없음 초기 정의된 크기대로 연속된 메모리 공간을 가짐 논리적 저장 순서와 물리적 저장 순서가 일치 장점 메모리 공간이 연속적이여서 관리가 편리함 인덱스를 사용해 검색이 빠름 단점 초기 크기 지정(컴파일) 이후, 변경이 되지 않음 만약 데이터가 삭제된다면 빈 공간으로 남아있게 되어 낭비가 생김 리스트 동적으로 크기 할당이 가능 장점 포인터가 다음 데이터의 순서를 가리키기 때문에 삽입, 삭제가 빠름 (Linked List) 크기 할당이 동적임 데이터 삭제시, 포인터가 해당 메모리 공간을 가리키지 않으면 되기 때문에 효율적임 (Linked List) 단점 기본 타입은 담을 수 없음 (객체만 가능) 리스트의 5번째 데이터를 검색하기 위해선..

카테고리 없음 2023.06.24

배포

AWS EC2 인스턴스 git 설치 -> git clone gradle 권한 설정 : chmod + x gradlew -> 쉘 스크립트 -> /xxx.sh /gradlew clean build. gradle.bat -> 쉘 스크립트 : 윈도우 용 확장자형이니까 .은 현재 위치를 의미 java -jar xxx.jar docker build -t (만들 도커 이미지)/docker-test . docker run시 8080:8080으로 포트 번호 명시 (외부)(내부) ec2 2020 ubuntu 인스턴스 m2.small설치 인바운드 8080열기 탄력적 ip 연결 jenkins docker ps : jenkins id 알아 내는 키워드 CONTAINER ID IMAGE COMMAND CREATED STATUS ..

카테고리 없음 2023.04.08