전체 글

논 블로킹 알고리즘 (Non-blocking Algorithms)
개념동시성에서의 논 블로킹 알고리즘이란 쓰레드간의 공유된 상태(자원)로의 접근을 서로 중단없이 수행하는 것이다. (어떤 알고리즘에서 한 쓰레드의 정지가 여기에 관련된 다른 쓰레드의 정지를 유발하지 않는다)블로킹 동시성 알고리즘A: 쓰레드에 의해 요청된 동작을 수행 - 또는B: 쓰레드가 동작을 수행할 수 있을 때까지 대기 많은 종류의 블로킹 알고리즘과 동시성 블로킹 자료구조가 있다. 예를 들어, java.util.concurrent.BlockingQueue 인터페이스의 구현체들은 모두 블로킹 자료구조이다. 쓰레드가 BlockingQueue에 요소를 삽입하려 하는데 큐에 공간이 없다면 쓰레드는 공간이 생길 때까지 대기한다. 다음 다이어그램은 공유된 자료구조를 보호하는 블로킹 알고리즘의 동작을 보여준다.논 블..
블로킹과 논블로킹 큐 (Blocking/Non-Blocking Queue)
1. BlockingQueue- Queue가 꽉 찼을 때의 삽입 시도 / 비어 있을 때의 추출 시도를 막는다- 구현체 모두 Thread-safe 하다 1) ArrayBlockingQueue- 고정 배열에 일반적인 Queue를 구현한 클래스- 생성 후 크기 변경 불가 2) LinkedBlockingQueue- 선택적으로 Bound가 가능한 LinkedList로 구현한 Queue 3) PriorityBlockingQueue- PriorityQueue와 같은 정렬 방식을 지니는 용량 제한이 없는 Queue 4) SynchrousQueue- Queue 내부로의 insert 작업이 다른 쓰레드의 remove 작업과 반드시 동시에 일어나야 한다. 2. Non Blocking Queue1) ConcurrentLin..
AWS EC2 개념 정리
EC2 (Elastic Compute Cloud)란?아마존 웹 서비스(AWS)에서 제공하는 클라우드 컴퓨팅 서비스클라우드 컴퓨팅은 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공 → AWS에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한 대 빌리는 것후불제 PC방과 같이 사용한 만큼 비용을 지불하기 때문에 탄력적인 이라는 의미의 Elastic이라는 단어가 붙어있다. Elastic은 비용적인 부분 뿐만이 아니라 필요에 따라 성능, 용량을 자유롭게 조절할 수 있다는 의미도 가지고 있다사용해야 하는 이유 효율성 : 클릭 몇 번으로 서버를 생성할 수 있기 때문에 실제 서버를 구축하는 것보다 훨씬 간편하고 효율적비용 절감 : 사용한 만큼만 요금을 지불하면 되므로 비용 절감인스턴스..

[Java] Collection Framework (자료구조 종류)
Java Collection Framework (JCF) 컬렉션은 기본 데이터형이 아닌 참조 데이터형만 저장이 가능하다 따라서 Collection에서의 데이터는 Object 타입의 객체로서 저장이 된다.기본 데이터 형은 Wrapper 클래스를 이용하여 Boxing 시켜주거나 Integer num = new Integer(5) 기본 데이터형인 5를 Wrapper 클래스의 Integer 타입 객체로 변환 autoboxing으로 저장할 수 있다 즉 오토박싱을 통해 기본 데이터형 컬렉션에 직접 대입하여 저장해도 컴파일러가 자동으로 Wrapper 클래스로 변환해준다 collection.add(11) 저장된 값을 얻어올 때에도 객체화된 데이터를 기본 데이터형으로 바로 얻어올 수 있는데 이 경우는 unboxing이다..
[C#] 7.0 튜플 (Tuple)
개념C# 7 이전 버전에서는 메서드에서 하나의 값만을 리턴할 수 있었지만, C# 7부터는 튜플(Tuple)을 사용하여 메서드로부터 복수 개의 값들을 리턴할 수 있게 되었다. 메서드 원형을 정의할 때 리턴타입이 복수 개이므로 튜플 리턴 타입(tuple return type) 표현식을 사용하게 되는데, 이는 괄호 ( ) 안에 여러 리턴타입을 순서대로 나열하면 된다. 예를 들어, int 2개와 double 하나를 리턴할 경우 (int, int, double)과 같이 표현할 수 있으며, 더 나아가 편의를 위해 각 리턴타입마다 이름을 지정할 수도 있다. 예를 들어 (int count, int sum, double average)와 같이 작성이 가능하다.(double, int) t1 = (4.5, 3);Consol..
[C#] switch문에 추가된 기능 (버전 7~9)
기본형)int flag = 3; switch (flag) {case 1: DoFunc1(); break;case 2: DoFunc2(); break;default: DoFunc3(); break; }C# 7.0, switch문의 패턴 매칭switch case 문이 패턴 매칭 식을 흡수한다, 원래 switch 문의 조건식에는 값 형식의 식들만 들어갈 수 있었지만 클래스 인스턴스도 들어갈 수 있고 case 문에는 패턴 매칭식을 넣을 수가 있다.using System; public class Program { public static void Main() { object data = 5; // object data = "STRING"; // object..
[Java] switch문
변경 전과 후 특징 비교변경 전)C, C++에서 사용하는 형태의 Switch 형식을 따른다.불필요한 반복코드 존재한다.다수의 case와 break가 존재한다.개발자의 실수로 break를 빼먹을 경우 다음 분기로 넘어가게 됨.변경 후)Switch 내에서 라벨이 일치하는 경우, case -> A와 같은 형식으로 표현이 가능하다.단일 수행 또는 블록 수행이 가능하다.Switch 블록 내에서 계산된 값을 반환하는 yeild라는 키워드가 생겼다.여러 조건을 쉼표로 구분하여 한 라인으로 처리할 수 있음.테스트 클래스 정의enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; }코드로 변경사항 살펴보기간단한 코드 비교를 통해 새로워진 Sw..
정보처리기사 실기 복원 2024 3회 해설
1. 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오. 답) OOAAApublic class Main{ static String[] s = new String[3]; static void func(String[]s, int size) { // 1~2 2. 다음은 파이썬에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오. 답) 3def func(lst): for i in range(len(lst) // 2): # 3까지 lst[i], lst[-i - 1] = lst[-i - 1], lst[i] # lst[0] = lst[-1] > 1 = 6 / lst[-1] = lst[0] > 6 = 1 / -1은 [5]..
[실4] 9372 - 상근이의 여행
#include using namespace std;int main(){ ios::sync_with_stdio(0), cin.tie(0); int t; cin >> t; while (t--) { int n, m, a, b; cin >> n >> m; for (int i = 0; i > a >> b; cout
[실4] 11399 - ATM
#include #include #include using namespace std;int main(){ ios::sync_with_stdio(0), cin.tie(0); int n; cin >> n; vector v(n); for (int i = 0; i > v[i]; int ans = 0; sort(v.begin(), v.end()); for (int i = 0; i