목록Computer Science (54)
용's
1. 트랜잭션(Transaction)에 대해 설명하라 ▶ 데이터베이스의 상태를 변화시키는 논리적 연산의 집합. 즉, 여러 개의 작업이 발생할 때 하나의 단위로 묶어 '일괄 실행(Commit)', '일괄 취소(Rollback)'를 할 수 있게 해주는 것. 2. 트랜잭션(Transaction)의 ACID에 대해 설명하라 ▶ ACID는 각각 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 지속성(Durability)을 의미한다.원자성: 모두 반영되거나 아니면 전혀 반영되지 않아야 함 (부분 실행 안됨)일관성: 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있게 DB상태로 변환. 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 수행 완료 후에 같아야 함.독립..
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8 이하, Accept된 내 코드 #include using namespace std; struct ListNode{ int val; ListNode *next; ListNode(int x) : val(x), next(NULL){} }; c..
초기에 생각했던 졸업과제와 내용이 많이 바뀌고, 또 잘못 생각했던 부분들이 많아 잠시 정리해야 할 것 같다. 먼저, 잘못 생각 했던 부분 (1) 결국 dlib를 사용해야한다. weka는 단순히 내가 원하는 네트워크를 쉽게 edit할 수있게 해주고 또 구성한 데이터들를 토대로 CPT를 만들어줄 뿐, 그 다른 learning에 관한 것은 dlib를 이용해야 함 따라서, 베이지안 네트워크에 대한 XML 파일(네트워크 구조, CPT)을 C++로 파싱해와서 Dlib 나머지 부분을 처리 할 것 (2) 데이터를 내가 임의로 생성하면 안된다. 맞다. 내가 임의로 가정하고 데이터를 만들면 이 데이터를 누가 믿고 신뢰하겠는가. 또한 내가 임의로 생성한다면 만들 수 있는 데이터 수가 너무 한정적이다. 적어도 몇 만개의 데이..
지난 포스트에서 간단한 졸업과제 개요와 Bayes Net에 대해서 알아 보았다. 간단한 프로세스를 정리하면 다음과 같을 것이다. ① 스마트홈 내부의 IoT들과 사용자의 여러 상황들간의 인과관계를 파악한다 ② 파악된 인과관계를 통하여 Bayesian Network를 설계한다 ③ 2번에서 얻은 Bayes Net을 이용하면, 주어진 Query에 대한 특정 상황의 확률을 구할 수 있을 것이다. 예를 들면 다음과 같은 상황을 스마트홈이 인지했다고 하자. Dining Room Light Gas Range Toilet Standing On On Off Off 이럴 때 사용자가 Cooking일 확률을 Bayes Net을 통해 다음과 같이 구할 수 있다. P(Cooking | DiningRoomLight = On, Ga..
드디어 졸업과제를 차차 시작하고 있다. 왜 졸업과제를 여름방학때부터 시작해서 9월까지 마치도록 프로세스를 짜 놓았는지는 아직도 우리 과에 대해 의문이지만... 일단 열심히 하면서 하나씩 이 블로그에 정리해보고자 글을 쓰기 시작해 본다. 1. 상황인지 모델- IOT(Internet of Things)의 발달로 스마트홈 기반의 많은 네트워크 기기들이 발명되어지고 있다. 이러한 스마트한 IOT 기기들을 기반으로서 일명 똑똑한 집, 스마트 홈이라는 단어들을 요즘 많이 들어볼 수 있다. 이러한 스마트홈은 자동화를 지원하는 개인 주택의 의미로서 미국에서는 Domotics라 불리기도 한다. 똑똑한 집이 필수적으로 알아야하는 것이 있다면, 바로 사용자의 행동(상황) 인식이다. 영어로는 Context Awareness...
▶ 라우팅란 무엇인가 → Source에서 Destination으로 최적의 경로(즉, Shortest Path)를 찾는 것을 목적으로 Routing/Forwarding Table 만드는 것을 목적으로 함. → Shortest Path를 구하기 위해서는, Router들 사이에 정보(Routing Info)를 교환해야 함. → 교환하는 방식에 따라, 대표적으로 Link-State와 Distance-Vector의 두가지 방식이 존재 → Link-State(다익스트라 알고리즘): 모든 라우터들의 정보를 토대로 Shortest Path를 구하게 되며, 결과적으로 네트워크의 topology를 얻을 수 있다. → Distance-Vector(Distributed Bellman-Ford 알고리즘): 인접한 라우터들끼리 ..
(1) Blocking - 조건 만족이 되지 않는다면 함수는 리턴하지 않고 해당스레드는 Wait State를 만족하게 되면서, 애플리케이션은 더이상 진행되지 않는다. - 예를 들어, 블로킹 소켓을 사용한 서버라고 가정하는 경우, 서버의 역할상 동시다발적으로 복수의 클라이언트가 접속하여 서비스를 이용하는데, 블록킹 소켓을 사용하면 순차적으로 클라이언트의 접속을 받아들여 작업하고 해당 작업이 완료돼야 다음 접속에 대한 작업을 할 수 있다. - 이를 해결하기 위해 멀티쓰레드 방식을 이용한다. 각 클라이언트마다 각 쓰레드를 하나씩 생성하는 것이다. - 하지만, 운영체제마다 스레드의 갯수가 제한되어 있으며, 제한된 스레드보다 많은 클라이언트가 접속할시 문제가 발생(가용성 부재). 또한, 스레드가 작동되기 위해서는..
간단하게 컴퓨터 네트워크 수업을 되새기며 정리를 해보자. TCP와 UDP의 차이를 구분할 줄 알고 내가 원하는 상황에 맞추어 선택할 수 있는게 중요하다. 전송계층(4계층) 프로토콜이란, 컴퓨터 네트워킹을 하는데 있어서 서로 약속하는 부분, 즉 통신 규약이라 할 수 있겠다. 특히, TCP와 UDP는 전송 계층(Transport Layer)의 프로토콜로 IP계층에서 알려준 경로정보를 바탕으로 데이터의 실제 송수신을 담당한다.(실제로, 전송계층에서는 Host와 Host 사이에 라우터와 같은 것들이 없다. 이를 Logical한 End-to-End Protocol 이라고 하기도 한다.) 전송계층에서 제공해야할 기본적인(common) 서비스들은 다음과 같다.-Multiplexing / Demultiplexing-C..
오랜만에 C++ 다시 할려니 정말 기초적인 부분에서 까먹은 부분이 너무 많음. 1. char* 타입으로 바로 cin 을 통해 문자열을 입력받을려고 하니 오류가 발생. => char*으로는 바로 입력을 받을 수 없고, char* str = "asdasd" 로 바로 초기화는 가능 => char str[] 형태로 선언하고 cin으로 입력 받을 수 있음 => cin으로 입력하면, 배열의 크기와 상관없이 내가 입력이 끝난 다음 '\0'가 마지막 문자 다음에 추가 되는듯... (무조건 배열의 가장 끝에 생성되는 줄....) 2. 포인터의 size는 타입에 상관없이 4바이트 임(주소값) //reverse string 하는 메소드 작성하기(어떠한 자료구조를 사용하지 않고) //만약에 자료구조 사용가능하면 스택으로 완전..
EA를 이어 또다시 면접의 기회가 왔다! 이번에는 실수를 안하기 위해 완전 기초적인 것들 다 포함하여 '손코딩 오답노트'를 작성할 예정이다. 코딩 인터뷰 준비#1 //문자열 내에 중복문자 체크하는 메소드를 작성하라 class DuplicationStr{ public: bool Solution(string str){ bool check_arr[256] = { false }; //배열 모든 인덱스 한번에 초기화할 때 이렇게 { 초기화할 값 }으로... if (str.length() > 256) return false; for (int i = 0; i < str.length(); i++){ int val = str[i]; if (check_arr[val]) return false; else check_arr[..