언어

언어/Java

Java(자바) - 멀티쓰레드(Multi Thread) 동기화 간단 쉬운 예제

Java(자바) - 멀티 쓰레드(Multi Thread) 동기화 예제 (1). 개요 ① Java 에서 보통 싱글 쓰레드(Single Thread) 인 경우는 프로세스 내에서 단 한 개의 쓰레드가 실행된다. ② 멀티 쓰레드(Multi Thread) 환경은 각 프로세스 내에서 자원을 공유한다. ③ 즉, 멀티 쓰레드(Multi Thread) 환경에서는 원래 의도와는 다른 예측 범위 밖의 실행 결과가 도출 될 수 있다. ④ 이처럼 멀티 쓰레드(Multi Thread) 환경에서 동기화는 중요한 문제이다. 아래 간단한 예제를 통해서 결과를 예측해보자. (2). Multithreading Example without Synchronization (동기화 없는 멀티 쓰레드 예제) 1 2 3 4 5 6 7 8 9 10 ..

언어/Java

Java(자바) - 멀티쓰레드(Multi Thread) 상황에서의 싱글톤(Singleton)

Java(자바) - Multi Thread 환경 안에서 Singleton (1). 개요 ① Java 에서 일반적으로 하나의 인스턴스를 사용하여 JVM 성능향상을 위해 싱글톤(Single) 패턴을 사용한다. ② 싱글 쓰레드(Single Thread) 환경에서 사용 하는 기존 Singleton은 Multi Thread 환경에서 인스턴스 접근 시 문제가 있다. ③ 메소드에 synchronized 키워드 사용 할 경우 멀티쓰레드 환경에서 운영비용 및 오버헤드가 큰 것으로 증명되어 있다. ④ 유명 개발자들 사이에서 이 문제를 해결하기 위한 여러 방안이 제시되었고 아래와 같이 소개해 보려고 한다. (2). Double Checked Locking 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16..

언어/Python

파이썬 알고리즘 - 계단을 오르는 방법 횟수(재귀함수)

개발자 면접 트레이딩 - 파이썬 알고리즘 문제(15) (1). 개발자 면접 트레이닝 - 계단을 오르는 방법 횟수 구하기(재귀함수) ① 재귀함수 숙지 후 실습 ② 응용하면 팩토리얼, 순열 계산 등 여러분야에서 활용된다. (2). 소스 코드 PYTHON #countWays.py def countWays(n): if(n < 0): return 0 elif n == 0: return 1 else: return countWays(n-1) + countWays(n-2) + countWays(n-3) #재귀함수 #만약 4칸의 계단이 있다면 print(countWays(4)) (3). 소스 코드 분석 ① 5 라인 : 재귀함수 countWays 메소드 선언 ② 12 라인 : 함수를 리턴(return) ③ 17 라인 : ..

언어/Python

파이썬 알고리즘 - 비트 위치 A,B 로 비트열 M을 N으로 삽입

개발자 면접 트레이딩 - 파이썬 알고리즘 문제(14) (1). 개발자 면접 트레이닝 - 비트 위치 A,B 로 비트열 M을 N으로 삽입 ① 비트(Bit)구조 이해하는 것이 중요 ② 비트 연산자에 대해서 개념 숙지 후 코딩 실습 ③ 비트열 삽입 관련 코딩 문제는 자주 출제 된다. ④ 예를들어 스택 사이즈가 M = 10011, N = 10000000000 일 경우 i = 1 , j = 7 이 주어졌을 때 결과는 10000100110 출력 (2). 소스 코드 PYTHON #updateBits.py """ N = 10000000000 M = 10011 i = 1 j = 7 output : 10000100110 """ def printBinary(num): b_num = bin(num) print(b_num[2:]..

언어/Python

파이썬 알고리즘 - 스택(Stack)으로 큐(Queue)를 구현하기

개발자 면접 트레이딩 - 파이썬 알고리즘 문제(13) (1). 개발자 면접 트레이닝 - 스택(Stack)을 Set(리스트)으로 구현하기 ① 큐(Queue : 선입선출) 구조 이해하는 것이 중요 ② Enqueue, Dequeue 개념 파악 후 아래 코드 실습 ③ 스택 공간에 데이터가 가득 찰 경우 스택 자체를 리스트로 구성 ④ 예를들어 스택 사이즈가 3, 2, 1 순서로 Enqueue 후 Dequeue 결과는 1, 2, 3 순서로 출력 (2). 소스 코드 PYTHON #two_stack_make_queue.py import unittest class Stack: def __init__(self): self.items = [] self.max = 3 def push(self, item): self.items..

언어/Python

파이썬 알고리즘 - 스택(Stack)을 Set(리스트)으로 구현하기

개발자 면접 트레이딩 - 파이썬 알고리즘 문제(12) (1). 개발자 면접 트레이닝 - 스택(Stack)을 Set(리스트)으로 구현하기 ① 스택(Stack) 구조 이해하는 것이 중요 ② Push, Pop, Peek 개념 파악 후 아래 코드 실습 ③ 스택 공간에 데이터가 가득 찰 경우 스택 자체를 리스트로 구성 ④ 예를들어 스택 사이즈가 3 이라면 [2, 3, 7, 9, 12] 의 스택리스트는 [2, 3, 7] , [9, 12] -> 2개로 구성 (2). 소스 코드 PYTHON #list_of_stack.py import unittest class Stack: def __init__(self): self.items = [] self.max = 3 def push(self, item): self.items...

언어/Python

파이썬 알고리즘 - 스택(Stack)에서 최소값 출력하기

개발자 면접 트레이딩 - 파이썬 알고리즘 문제(11) (1). 개발자 면접 트레이닝 - 스택(Stack)에서 최소값 출력하기 ① 스택(Stack) 구조 이해하는 것이 중요 ② Push, Pop, Peek 개념 파악 후 아래 코드 실습 ③ 스택은 개념 상 사용 하는 곳이 많다. (ex : 브라우저 뒤로가기 등) ④ 예를들어 [2, 3, 7, 9, 12] 의 최소값은 2 출력 (2). 소스 코드 PYTHON #stack_min.py import unittest class stack(): def __init__(self): self.items = [] self.mins = [] self.min = None def push(self, item): self.items.append(item) if self.min ..

언어/Python

파이썬 알고리즘 - 링크드리스트(LinkedList) 회문(대칭) 출력

개발자 면접 트레이딩 - 파이썬 알고리즘 문제(10) (1). 개발자 면접 트레이닝 - 링크드리스트(LinkedList) 회문(대칭) 출력하기 ① 링크드리스트(LinkedList)를 역으로 출력하는 것이 포인트 ② 링크드리스트를 정확히 생성하고 역으로 출력하는 것이 중요 ③ 링크드리스트의 회문(역)을 리턴 ④ 예를들어 [2, 3, 5, 3, 2] 의 회문은 [2, 3, 5, 3, 2] 으로써 결과값은 같다. (2). 소스 코드 PYTHON #palindrome_linkedlist.py import unittest class Node: def __init__(self, item): self.val = item self.next = None class LinkedList: def __init__(self, ..

언어/Python

파이썬 알고리즘 - 두 링크드리스트(LinkedList)의 합(SUM) 계산

개발자 면접 트레이딩 - 파이썬 알고리즘 문제(9) (1). 개발자 면접 트레이닝 - 두 개의 링크드리스트(LinkedList)의 합(SUM) 계산 ① 단순해 보이지만, 난이도가 있는 알고리즘 문제 ② 두 링크드리스트의 각 자리수를 계산하는 것이 중요 ③ 합산 된 링크드리스트의 합을 리턴 ④ 예를들어 [7, 1, 6] + [5, 9, 2] 두 링크드리스트의 합 -> 912 출력 (2). 소스 코드 PYTHON #sum_linkedlist.py import unittest class Node: def __init__(self, item): self.val = item self.next = None class LinkedList: def __init__(self, item): self.head = Node(..

언어/Python

파이썬 알고리즘 - 선택 노드를 기준으로 링크드리스트(LinkedList) 분할

개발자 면접 트레이딩 - 파이썬 알고리즘 문제(8) (1). 개발자 면접 트레이닝 - 특정 노드를 입력 받아 링크드리스트 분할 후 병합 ① 링크드리스트는 다음 노드의 위치를 가르키고 있는 포인트 보유 ② 분할(Split) 후 다시 병합(Merge)하는 것이 중요 ③ 첫 번째 노드(Node)의 위치를 지정하는 것이 중요 ④ 예를들어 [6, 3, 8, 1, 5, 9] 에서 5 노드 기준으로 나누면 -> [3, 1, 5, 6, 8, 9] 출력 (2). 소스 코드 PYTHON #split_merge_linkedlist.py import unittest class Node: def __init__(self, item): self.val = item self.next = None class LinkedList: d..

[좋은사람]
'언어' 카테고리의 글 목록 (6 Page)