목록컴퓨터공학 (20)
이모저모
git & github working dir => index => head git init : git 저장소 시작 content를 제외한 git 저장소의 모든것을 기록 git status : 현재 상태를 보여준다. git add : working dir 에 있는 것을 index에 올린다. git commit : index에 올린것을 head에 올린다. git log --graph 로그를 출력한다. git diff : 변경된 차이를 보여준다. git checkout : head에 포인터만 바꿔준다. git reset : 이전에 commit한 내용으로 간다.HEAD~ , 헤드를 하나만 움직인다. HEAD~2 하면 두개를 움직인다.--hard : working dir까지 이전으로 되돌려진다.--default ..
Springlight framework EJB(Enterprise java beans)기업용 자바 프레임워크많은 사람들이 공통으로 작업변경이 심함(생산성이 떨어지는 방식) - cc, cv네트웍(다양한 연결, 연결시 각종 장애)보안, 저장/복구성능=> heavy framework SpringMVC많은 디자인 패턴중에서 MVC 패턴을 초점 맞춰 web 분야에 제공하는 것 Maven메이븐을 통해서 설정을 맞춘다. 없으면 받아준다. resources 폴더에 xml파일을 집어 넣어주면 된다. getBean(ID) : 객체를 생성한것을 받는게 아니라 Spring이 생성한 것에 대한 정보를 넘겨주는 것이다. xml에서 안에 있는 객체는 default는 싱글톤 패턴을 사용한다. pom.xml에서 라이브러리를 설치한다...
java thread의 경우에는 마찬가지로 user level로 동작하는 데 이때 우선순위를 주어지면, 리눅스의 경우에는nice value와 맵핑되어서 스케쥴링이 된다.!!! http://www.javamex.com/tutorials/threads/priority_what.shtml 유저레벨 쓰레드와 커널레벨 쓰레드와의 관계에 대해서 고민을 해보았습니다. 그런데 이 모델은 리눅스 커널버젼에 따라 달라지게 됩니다. 일단 리눅스 커널 2.4버젼에대해서 살펴보았습니다. 리눅스에서 쓰레드를 사용할때 보통 pthread를 사용합니다. kldp에서나 어디에서든 pthread를 가지고 유저레벨스레드다 라고 말을 하는 분이 계시고 아니다 커널레벨스레드다 라고 말씀하시는분들도 계시는데 자세히 조사해본 결과 pthread..
word2vec단어의 의미를 n-차원 벡터로 벡터화시키는 것이다.예를 들어 me = [1,2,0.4,....] 와 같이 표현하는 것이다.2가지 모델이 있다. 1) CBOW아래 그럼과 같은 모델로 표현할 수 있다.작동 방식은1. 입력에 대해서 one hot vector로 word들을 생성한다. (X(c-m)....X(c-1), X(c+1).....X(c+m))2. 다음 식을 통해서 벡터를 얻는다. V(c-m) = W(V*N) X(c-m)3. 얻은 벡터를 평균을 취한다. V' = (V(c-m)....+ V(c-1) + V(c+1).....+ V(c+m)) / 2m4. score vector를 얻는다. z = W'(N*V) V'5. softmax를 이용하여 확률을 구한다. y' = softmax(z)6. y'..
Interrupt하드웨어 인터럽트(비동기적)CPU외 다른 장치에서 인터럽트를 발생시키는 경우 소프트웨어 인터럽트(동기적)프로그램에서 필요하여 인터럽트를 발생시키는 경우대표적으로 System call에 의해서 발생하는 인터럽트가 있다. ExceptionCPU안에서 인터럽트를 발생시키는 경우Exception의 종류로는 trap, falut, abort가 있다. Trap현재 실행되고 있는 명령어가 다시 실행될 필요가 없을 때, trap 복귀 후 다음 명령어를 수행한다. Faultfault 명령이 끝나면 fault를 발생시킨 명령을 다시 재실행한다. abort복귀하지 않고 프로세스를 종료시킨다.
Swift 아주 기본적인 문법스위프트는 띄어쓰기도 매우 중요하다 신경 많이 쓰자.!!!!!! 1) 콘솔로그ㄱ) print : 단순 문자열 출력 ㄴ) dump : 인스턴스의 자세한 설명까지 출력 2) 문자열 보간법let age: Int=10"안녕하세요! 저는 \(age)살입니다." 3) 상수와 변수나중에 할당하려고 선언만 한경우 반드시 타입을 꼭 명시해주어야 한다.(c++의 경우 상수는 선언과 동시에 초기화해줘야하는데 상관없다.) ㄱ) 상수의 선언let 이름: 타입 = 값 ㄴ) 변수의 선언var 이름: 타입 = 값var 이름 = 값 (값의 타입이 명확한 경우 타입은 생략 가능) 4) 기본 데이터 타입Bool, Int, UInt, Float, Double, Character, Stringc++ 처럼 묵시적 ..
#####################################algorithm library##################################### 1. sort() int data[10000] std::sort(data, data+10, myfunction) arg1 = start position arg2 = finish position(using loop break) arg3 = default 오름차순, 함수 지정가능시간 복잡도 O(NlogN) 2. binary_search() Bool bol = std::binary_search(v.begin(), v.end(), 3);시간 복잡도 O(logN) 3. lower_bound() // binary_search 이용 처음 3이 나오는 곳의..
Input/Output주소 할당 방법1) Separate I/O, Memory space말 그대로 분리되어 있다.할당되는 주소가 따로따로 있다.특별한 명령어를 사용 2) Memory-mapped I/O메모리에 한 부분에 차지한다.일반적인 명령어를 이용하여 Access 할 수 있다. 장점- 특별한 명령어가 필요 없다.- 메모리 Protection을 그대로 사용 가능- 다른 일반 명령어도 사용 가능- 하이레벨 언어에서도 access 명령어를 코딩할 수 있다. 단점- Cache에 캐싱되지 않도록 해줘야한다.(왜냐하면 실제 저장된 값이 필요하므로 직접 접근해야 한다.)(일반적으로 MMU에 포함된 기능이다.)- 메모리 모듈이 위 방법을 알고 있어야 한다. 3) Hybrid1), 2) 둘다 가지는 방법 DMA(Di..
Hazard1) Structural Hazard하드웨어가 여러 명령어의 수행을 지원하지 않기 때문에 발생, 자원 충돌이 발생 원인자원 충돌메모리 충돌과 레지스터 충돌 등 자원 충돌 해결책모든 구조적 해저드를 제거하기 어렵고 비용이 비쌈명렁어 메모리와 데이터 메모리로 분리 2) Data Hazard명령어가 현재 파이프라인에서 수행 중인 이전 명령어의 결과에 종속되는 경우 발생 원인데이터 의존성명령어 간 충돌로 이전 명령어의 결과에 의존 해결책- Forwarding or Bypassing : 명령어1의 결과가 명령어2의 입력에 피드백하게 하는 메커니즘- 컴파일러에 의한 명령어 스케줄링 3) Control Hazard분기 명령어에 의해 발생 원인조건, 무조건 분기는 명령어 PC(Program Counter)를..
Deadlock교착 상태란 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다.멀티 프로그래밍 환경에서 한정된 자원을 사용하려고 서로 경쟁하는 상황이 발생어떤 프로세스가 자원을 요청 했을 때 그 시각에 그 자원을 사용할 수 없는 상황이 발생할 수 있고, 그 때는 프로세스가 대기 상태로 들어간다.대기 상태로 들어간 프로세스들이 실행 상태로 변경 될 수 없을 때 이러한 상황을 교착 상태라 한다. 교착상태 조건교착 상태는 한 시스템 내에서 다음의 4가지 조건이 동시에 성립 할 때 발생따라서, 아래의 네 가지 조건 중 하나라도 성립하지 않도록 만든다면 교착 상태를 해결 가능 1) 상호배제(Mutual exclusion)2) 점유대기(H..