반응형
  • 단방향 통신
    • 한쪽 방향으로 전송이 가능한 방식(라디오,TV)
  • 반이중 통신
    • 양방향 전송이 가능하지만 동시에 양쪽 방향에서 전송할 수 없는 방식(무전기)
  • 전이중 통신
    • 동시에 양방향 전송이 가능한 방식(전화, 전용선 데이터통신)
  • 비동기식 전송(간헐적)
    • 문자 코드 앞뒤에 Start bit와 Stop bit를 붙여서 바이트와 바이트를 구별하여 전송하는 방식
    • 2000bps 이하의 저속, 단거리 전송
    • 문자마다 시작 정지를 알리기 위해 비트가 추가되므로 효율이 떨어짐
  • 동기식 전송(연속성)
    • 문자영르 한 프레임을 만들어 일시에 전송하는 방식
    • 프레임 단위 전송이므로 전송이 빠름
    • 휴지 시간이 없으므로 전송효율이 큼
    • 원거리 전송에 사용
    • 단말기는 반드시 버퍼 기억장치에 내장
  • 오류 검출 방식
    • 패리티 검사
      • 전송 비트에 1비트인 패리티를 추가하여 오류검출
      • 가장 간단하지만 2개의 비트에 오류가 동시에 발생하면 검출 불가
      • 오류 검출만 가능 수정은 불가
    • 순환 중복 검사 (CRC)
      • 다항식 코드를 사용하여 오류를 검출하는 방식
      • 동기식 전송에 주로 사용
      • HDLC 프레임의 FCS를 만드는데 사용
      • 집단 오류 검출할 수 있고 검출률이 높아 가장 많이 사용됨
    • 해밍코드
      • 수신측에서 오류가 발생한 비트를 직접 수정하는 방식
      • 1비트의 오류만 수정이 가능하며 정보 비트이외에 비트가 많이 필요함
      • 전송 비트중 2^n 번째 오류 검출을 위한 패리티 비트로 사용
    • 상승 코드
      • 순차적 디코딩과 한계값 디코딩을 사용하여 오류 수정
      • 여러 비트오류 수정 가능
    • 자동 반복 여청 제어 방식(ARQ)
      • 통신 경로에서 오류 발생 시 수신측은 오류의 발생을 송신측에 통보, 송신측은 오류가 발생한 프레임을 재전송하는 오류 제어 방식
      • 정지-대기 ARQ(Stop and wait ARQ)
        • 수신측에서 오류의 발생을 점검 후 에러 발생 유무 신호 (ACK/ NAK) 신호를 보내올 때까지 기다리는 방식
      • 연속 ARQ(Coninuos ARQ)
        • Go-Back-N_ARQ
          • 수신측으로부터  NAK수신시 오류 발생 이후의 모든 블록을 재전송
        • 선택적 재전송 ARQ (Selecive-Repeat ARQ)
          • NAK 수신 시 오류가 발생한 블록만 재전송 하는 방식
        • 적응적 ARQ(Adaptive ARQ)
  • LAN(근거리_통신망)
    • LAN의 특징
      • 제한된 지역 내의 통신
      • 망에 포함 된 자원 공유
      • 오류발생률이 낮다
      • 성형, 버스형, 링형 망 형태
    • IEEE 802의 표준 규격
      • 802.8 고속 이더넷
      • 802.11 무선 LAN wifi
      • 802.15 블루투스
  • VAN(부가가치 통신망)
    • 단순한 정보의 수집 전달 이외에 부가가치를 부여하는 통신망
  • UDP
    • 비연결형 프로토콜
    • 복구기능 X
    • TCP/IP의 계층화 모델중 Transport 계층에 사용
    • 비연결형 프로토ㅗㅋㄹ
  • TCP/IP
    • TCP프로토콜과 IP프로토콜의 결합
    • TCP가 IP보다 상위층
    • 인터넷 기본 프로토콜
      • TCP
        • 전송계층
        • 오류제어, 흐름제어, 순서제어, 패킷다중화
        • 연결형 프로토콜 
      • IP
        • 네트워크 계층
        • 패킷 분해/조립, 호스트 주소 지정, 경로 선택
반응형
반응형
  • 소프트웨어 위기
    • SW개발 속도가 HW개발속도를 따라가지 못해 사용자의 요구사항을 처리할 수없는 문제가 발생
  • 소프트웨어 공학
    • 소프투에어 위기를 극복하기 위한 방안으로 SW의 품질과 생산성 향상을 목적
  • 소프트웨어 생명주기
    • 정의 단계
      • 무엇을 처리하는 SW를 개발할 것인지 정의하는 단계
    • 개발 단계
      • 실제 개발단계
    • 유지보수 단계
      • 가장 많은 시간과 비용이 투입되는 단계, 
  • 소프트웨어 생명주기
    • 프로토타입 모형
    • 나선형 모형
    • 폭포수 모형
  • 프로젝트 관리
    • 주어진 기간 내 최소의 비용으로 사용자를 만족시키는 시스템을 개발하는 활동
      • 효과적인 프로젝트 관리를 위한 3대요소(3P)
        • 사람(people)
        • 문제(problum)
        • 프로세스(proccess)
  • 프로젝트 비용 결정 요소
    • 프로젝트 요소
      • 제품의 복잡도 시스템의 크기 요구되는 신뢰도
    • 자원 요소
      • 인적 자원, HW지원, SW지원
    • 생산성 요소
      • 개발자의 능력, 경험, 주어진 개발 기간
  • 비용 산정 기법(LOC 기법)
    • SW각 기능의 우너시 코드 라인 수의 비관치, 낙관, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용 산정
  • 비용 산정 기법(COCOMO)
    • Boehm이 제안한 것으로 원시 프로그램의 규모에 의해 비용 산정
    • 조직형
      • 중 소규모의 SW로 일괄 자료 처리나 과학 기술 계산용등 5만 라인 이하
    • 반분리형
      • 조직형 내장형의 중간형으로 트랜잭션 처리 시스템이나 운영체제등 30만 라인이하
    • 내장형
      • 초대형 규모 트랜잭션 처리 시스템이나 운영체제 등 30만 라인이상의 소프트웨어 개발
    • COCOMO 모형의 종류
      • 기본형
        • SW크기와 개발 유형만을 이용하여 비용을 산정
      • 중간형
        • 기본 공식을 토대로 사용하나 제품 특성, 컴퓨터 특성 프로젝트 특성 비용 산정
      • 발전형
        • 중간형을 보완하여 만들어짐 개발공정별로 보다 자세하고 정확하게 노력산출
  • 브록스의 법칙
    • 프로젝트 진행중에 새로운 인력을 투입할 경우 더욱 지연시키고 프로젝트에 혼란을 가져오게 된다는 법칙
  • 프로젝트 팀 구성
    • 분산형 팀
      • 팀원 모두가 의사 결정에 참여하는 비이기적인 구성방식
    • 중앙 집중형 팀
      • 한 관리자가 의사결정하고 구성원들은 그 결정을 따르는 구성 방식으로 프로그래머 팀이라고도 함
    • 계층 적팀
      • 분산형 팀 구성과 중앙 집중형 팀 구성을 혼합한 형태
      • 5~7명의 초보 프로그래머를 작은 그룹으로 만들어 각 그룹을 고급 프로그래머가 관리하게 함
    • 품질 표준
      • 명확하게 정의된 SW의 특성을 의미하며 품질을 평가하는 기준 항목
      • 종류
      • 정확성, 신뢰성, 효율성, 무결성, 사용 용이성, 유지보수성, 유연성
  • 위험 관리
    •  프로젝트 개발 과정에서 각종 돌발 상황을 미리 예상하고 대책 수립
  • 형상 괸리(SCM)
    • 개발과정에서 SW의 생산물을 확인하고 SW 통제, 변경 산태를 기록하고 보관하는 일련의 관리 작업
    • SW 변경의 원인을 알아내고ㅓ 제어하며 적절히 변경되었는지 확인하여 담장자에게 통보하는 작업
    • 개발의 전 단계에 적용되는 활동으로 유지보수 단계에서 수행된다.
    • 개발의 전체 비용을 줄이고 개발 과정의 문제점을 해결하여 방해 요인을 최소하하는 것을 목적으로 한다.
  • 자료 사전 표기 기호
    • = 자료의 정의
    • + 자료의 연결
    • () 자료의 생략
    • | 자료의 선택
    • {} 자료의 반복
    • ** 자료의 설명
  • HIPO의 종류
    • 거시적 도표
      • 시스템의 전체적인 기능과 흐름을 보여주는 계층 구조도
    • 총제적 도표
      • 프로그램을 구성하는 기능을 기술한 것으로 입력, 처리, 출력, 전반적인 정보를 제공하는 도표
    • 세부적 도표
      • 총제적 도표에 표시된 기능을 구성하는 기본 요소들을 상세하게 기술한 도표
  • 결합도(낮을수록good)
    • 모듈 간에 상호 의존도를 나타낸다
  • 응집도(높을수록good)
    • 정보은닉 개념을 확장한 것으로 모듈이 독립적인 기능으로 정의되어 있는 정도를 나타냄
    • 내부요소에는 명령어, 명령어의 모임, 호출문 등이 있음.
    • 독립적인 모듈이 되기 위해서는 각 모듈의 응집도가 강해야함.
  • 화이트 박스 테스트(원시)
    • 기초경로 검사
    • 조건검사
    • 루프검사
    • 데이터 흐름 검사
  • 블랙박스 테스트
    • SW각기능이 완전히 작동되는 것을 입증하는 검사 기능검사
  • 객체지향 기법
    • 객체
      • 데이터와 함수 기능
    • 클래스
      • 객체의 집합으로 객체의 일반적인 타입의미
    • 메세지
      • 객체들 간의 상호작용을 하는데 사용되는 수단
  • 객체지향
    • 캡슐화
      • 데이터와 데이터를 처리하는 함수를 하나로 묶는 것
      • 객체들의 재사용성이 용이함
      • 인터페이스가 단순해지고 객체간의 결합도가 낮아짐
    • 정보은닉
      • 캡슐화에서 가장 중요한 개념으로 다른 객체에 자신의 정보를 숨기고 연산만을 통하여 접근을 허용
    • 상속성
      • 상위 클래스의 모든 속성과 연산을 하위로 물려받는 것
    • 다형성
      •  

 

반응형
반응형
  • 컴파일러의 의미
    • 고급프로그래밍언에 쓰여진 프로그램으로 소스코드에서의 오브젝트로 변환 되는 것
      • 소스코드 : 말그대로 프로그래밍을 위한 일련의 텍스트들
      • 오브젝트코드 : 컴파일러에 의해 생성된 코드를 의미한다. 프로그래머는 소스코드를 작성함. 즉, 소스코드는 개발자가 사용하는 언어에 따른 명령어들의 조합이다. 그러나 명령어 실행을 위해서는 기계어로, 저레벨 언어로 쓰여져만 하드웨어 제어가 가능하다.
        • 저레벨 언어 : 기계어 또는 어셉블리어를 의미한다. 하드웨어와 더 밀접한 언어이다.
        • 고레벨 언어 : 기계어보다는 좀 더 인간의 언어에 가깝다. 읽기, 유지보수가 용이하다, 즉 기계어로 변환하기 위해 인터프리터나 컴파일러가 필수적으로 요구된다.
        • 컴파일러는 고레벨 언어를 저레벨언어로 변경하기 위해 필요한 장치 또는 도구라고 볼수있다.
  • 컴파일러와 인터프리터
    • 컴파일러, 인터프리터 둘 다 C나 자바같은 고레벨언어로 작성된 프로그래밍 언어를 기계어로 변환하지만 그 과정에서 차이가 있다.
    • 컴파일러는 전체소스코드를 보고 명령어를 수집하고 재구성함.
    • 인터프리터는 소스코드의 각 행을 연속적으로 분석하며 실행
      • 고레벨 언어 -> 중간 코드(intermediate code)로 변환하고 이를 각 행 마다 실행한다. 
    • 컴파일러가 실행시간이 빠르다.
    • 컴파일러는 전체 소스코드를 변환 한 뒤 에러를 보고하지만 인터프리터는 각 행 마다 실행하여 도중에 에러가 나면 바로 알려준다.
    • 예를 들어 파이썬은 인터프리트 언어이고, c, c++은 컴파일 언어이다. 자바는 인터프리터 컴파일러 모두 사용
  • Java compiler
    • "helloworld" 작성->javac 명령어를 통해 (helloworld자바 파일 -> 클래스파일로 변환)
    • temp.java ->javac(java compiler)가 바이트코드로 쓰여진 .class 파일로 변환 
      • .class 파일은 기계어인가?
        • 아니다. JVM을 위한 기계어로 변환하는 것이다.
  • Java 인터프리터
    • temp.java->javac(java compiler)->.class ->Java interpreter -> 기계어
  • 왜 java는 기본적으로 컴파일과 인터프리터를 병행하는 것 일까?
    • 플랫폼에 종속되지 않는다.
      • 속도가 느리지만 플랫폼에 종속되지않는다.
    • 자바 바이트코드는 컴퓨터와 프로그램 사이에 버퍼 역할을 한다.
      • 보안적으로 장점이 된다. 클래스 파일을 다운로드 받은 후 자바 인터프리터를 통해 바이러스나 기타 악성 프로그램에 대응 하는 가드 같은 보안 계층애 의해 보호 될 수 있다는 의미.
    • 반드시 자바언어에만 해당되는 것은 아니다.
      • 예를들어 파이썬 코드를 자바 바이트코드로 컴파일한 Jython을 java로 인터프리트 할 때, 또 ML, Lisp, 포트란 컴파일러가 자바 바이트코드로 컴파일 하는것도 비슷한 맥락

opensourceforgeeks.blogspot.com/2013/03/difference-between-compiler-interpreter.html

 

Difference between Compiler, Interpreter and Assembler

Difference between Compiler, Interpreter , Assembler and JIT or Just in time compiler.

opensourceforgeeks.blogspot.com

 

반응형

'개인공부 > ICT상식' 카테고리의 다른 글

[ICT 상식] 데이터 통신  (0) 2020.11.05
[ICT 상식]소프트웨어 공학  (0) 2020.11.05
[ICT 상식]  (0) 2020.11.04
[ICT 상식]  (0) 2020.11.03
ICT 상식  (0) 2020.11.02
반응형
  • 기초, 자료형
    • >>> a = 4.24E10 >>> a = 4.24e-10
    • 4.24 x 10^10

 

  • x의 y제곱을 나타내는 ** 연산자 
    • >>> a = 3
    • >>> b = 4
    • >>> a ** b 81
  • 나눗셈 후 몫을 반환하는 // 연산자
    • >>> 7 / 4 = 1.75
    • >>> 7 // 4 = 1
  • 문자열 슬라이딩
    • >>> a = "Life is too short, You need Python" >>> a[0:4] 'Life'
    • a[시작번호:몇개]
    • a[ : 몇개] : 처음부터 몇개
    • a[시작번호 : ] : 시작번호부터 끝까지
>>> a = [1, 2, 3, 4, 5]
>>> b = a[:2]
>>> c = a[2:]
>>> b
[1, 2]
>>> c
[3, 4, 5]

//리스트 길이 구하기
a=[1,2,3]
len(a)
3

//리스트 수정
a=[1,2,3]
a[2]=4
a=[1,2,4]

//del 함수 리스트삭제
a=[1,2,3]
del a[1]
a=[1,3]

a=[1,2,3,4,5]
del[2:0] //2부터끝까지삭제한다.
a=[1,2]

//리스트 요소 추가
a=[1,2,3]
a.append(4)
a=[1,2,3,4]

a=[1,2,3]
a.append([5,6])
a=[1,2,3,[5,6]]

//리스트 정렬
a=[1,4,3,2]
a.sort()
a
a=[1,2,3,4]

a=[1,2,3]
a.reverse()
a=[3,2,1]

//리스트 find=index
a=[1,2,3]
a.index(3)
2

//리스트 요소삽입(insert)
a=[1,2,3]
a.insert(0,4)
a=a=[4,1,2,3]

a=[1,2,3]
a.insert(3,5) //배열a[3]=5이다.
a=[1,2,3,5]

//리스트 요소 삭제(remove)
a.remove(x) : 처음나오는 x를 삭제한다. 
a=[1,2,3,1,2,3]
a.remove()
a=[1,2,1,2,3]

//리스트 요소 끄집어내기(pop)
pop_back()
a=[1,2,3]
a.pop()
a=[1,2]

//리스트의 포함된 x의 개수 새기 count(x)
a=[1,2,3,1]
a.count(1)
2

//리스트 확장
//extend(x)에서 x는 리스트만 올 수 이쓰며 원래의 a리스트이 x리스트를 더하게 된다.
a=[1,2,3]
a.extend([4,5])
a
a=[1,2,3,4,5]

  • 문자열 포맷팅
    • 숫자 바로 대입
      • >>> "I eat %d apples." % 3
      • 'I eat 3 apples.'
      • number = 3
      • >>> "I eat %d apples." % number
      • 결과 : 'I eat 3 apples.'
  • 문자열 바로 대입
    • >>> "I eat %s apples." % "five" '
    • 결과 : I eat five apples.
    • >>> number = 10 >>> day = "three"
    • >>> "I ate %d apples. so I was sick for %s days." % (number, day)
    • 결과 : 'I ate 10 apples. so I was sick for three days.'
  • format 함수를 사용한 포매팅
    • >>> "I eat {0} apples".format(3)
    • 결과 : 'I eat 3 apples'
    • >>> number = 3
    • >>> "I eat {0} apples".format(number)
    • 결과 : 'I eat 3 apples'
    • >>> number = 10 >>> day = "three"
    • >>> "I ate {0} apples. so I was sick for {1} days.".format(number, day)
    • 결과 : 'I ate 10 apples. so I was sick for three days.'

=================================================================================================================리스트 ==================================

============================================================================

  • 리스트 자료형
    • 형식 -> odd = [1, 3, 5, 7, 9] 
      • 예제) 
      • >>> a = [1, 2, 3, ['a', 'b', 'c']]
      • >>> a[0] 1
      • >>> a[-1] ['a', 'b', 'c'] //뒤로 가기 가능 
      • >>> a[3] ['a', 'b', 'c']
  • 리스트에 요소 추가(append)
    • >>> a = [1, 2, 3]
    • >>> a.append(4)
    • 결과 : >>> a [1, 2, 3, 4]
  • 리스트 정렬(sort) 
    • >>> a = [1, 4, 3, 2]
    • >>> a.sort()
    • 결과 : >>> a [1, 2, 3, 4]
  • 위치 반환(index)
    • >>> a = [1,2,3]
    • >>> a.index(3) 2
    • 결과 : >>> a.index(1) 0
  • 리스트에 요소 삽입(insert)
    • >>> a = [1, 2, 3]
    • >>> a.insert(0, 4)
    • 결과 : >>> a [4, 1, 2, 3]
  • 리스트 요소 제거(remove)
    • >>> a = [1, 2, 3, 1, 2, 3]
    • >>> a.remove(3)
    • 결괴 : >>> a [1, 2, 1, 2, 3] //첫번째 3만 없어진 것을 알 수있다
  • 리스트 요소 끄집어내기(pop)
    • >>> a = [1,2,3]
    • >>> a.pop() //맨 뒤 3을 꺼낸다. ==pop_back() = vector랑 같은 후입선출...
    • >>> a [1, 2]

 

=================================================================================================================튜플 ===================================

============================================================================

  • 튜플(tuple)은 몇 가지 점을 제외하곤 리스트와 거의 비슷하며 리스트와 다른 점은 다음과 같다.
    • 리스트는 [ ]으로 둘러싸지만 튜플은 ( )으로 둘러싼다.
    • 리스트는 그 값의 생성, 삭제, 수정이 가능하지만 튜플은 그 값을 바꿀 수 없다.
  • 형식
    • >>> t1 = ()
    • >>> t2 = (1,)
    • >>> t3 = (1, 2, 3)
    • >>> t4 = 1, 2, 3
    • >>> t5 = ('a', 'b', ('ab', 'cd'))

===============================================================================================================딕셔너리 ===================================

============================================================================

a={key1:value1,key2:velue2,...}
b={1:'a','b':[1,2,3]}


//딕셔너리 요소 삭제하기
del a[1]
del a[key] 처럼 입력하면 지정한 key에 해당하는 {key, value} 쌍이 삭제된다.

//key 리스트 만들기
a={'name':'pey','phone':'0123123'}
a.keys()
dict_keys(['name',phone'}
a.keys()는 딕셔너리 a의 key만 모아서 dict_keys객체를 돌려준다.

//value 리스트 만들기 (values)
a.values()
dict_values(['pey','0123123'}

//key,value 쌍 얻기(items
a.tiems()
dict_items(...)

//key:value 쌍으로 지우기
a.clear()
a
{}

//key로 value 얻기
a.get('name')
'pey'
a.get('phone')
'001010203'

//key가 딕셔너리안에 존재하는지 조사하기(in)
a={'name':'pey','phone':'0123123'}
'name' in a //a안에name이있나
True
'email' in a
False


  • 딕셔너리
    • key,value형식 이며 {}로 둘러싸여 있다. 
    • key값은 중복을 허용하지 않는다. =map
    • 형식
    • {Key1:Value1, Key2:Value2, Key3:Value3, ...}
    • >>> dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
  • 딕셔너리 쌍 추가하기
    • >>> a = {1: 'a'}
    • >>> a[2] = 'b'
    • 결과 : >>> a {1: 'a', 2: 'b'}
  • 딕셔너리 요소 삭제
    • >>> del a[1]
    • 결과 : >>> a {2: 'b', 'name': 'pey', 3: [1, 2, 3]}
    • del 함수를 사용해서 del a[key] 처럼 입력하면 지정한 Key에 해당하는 {key:value}쌍이 삭제된다.
  • key값이용하여 value값 얻기.
    • >>> grade = {'pey': 10, 'julliet': 99}
    • >>> grade['pey'] 결과 : 10
    • >>> grade['julliet'] 결과 : 99
    • (get)이용
    • >>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
    • >>> a.get('name') 결과 : 'pey'
    • >>> a.get('phone') 결과 : '0119993323'
  • key가 딕셔너리에 존재 하는지 조사 하기(in)
    • >>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
    • >>> 'name' in a True
    • >>> 'email' in a False

===============================================================================================================IF조건문===================================

============================================================================

money = True
if money :
	print("택시")
else:
	print("걸어가라")
    
    
pocket =['paper','cellphone','money']
if 'money' in pocket:
	print("택시")
else
	print("걸어가라")
    
>>> pocket = ['paper', 'cellphone']
>>> card = True
>>> if 'money' in pocket:
...      print("택시를 타고가라")
... elif card: 
...      print("택시를 타고가라")
... else:
...      print("걸어가라")
...

===================================================================================================================while==================================

============================================================================

treeHit=0
while treeHit<10:
	treeHit = treeHit +1
    print("나무를%d번 찍었습니다" %treeHit)
    iftreeHit==10:
    	print("나무넘어갑니다")
coffee = 10
while True:
    money = int(input("돈을 넣어 주세요: "))
    if money == 300:
        print("커피를 줍니다.")
        coffee = coffee -1
    elif money > 300:
        print("거스름돈 %d를 주고 커피를 줍니다." % (money -300))
        coffee = coffee -1
    else:
        print("돈을 다시 돌려주고 커피를 주지 않습니다.")
        print("남은 커피의 양은 %d개 입니다." % coffee)
    if coffee == 0:
        print("커피가 다 떨어졌습니다. 판매를 중지 합니다.")
        break

===================================================================================================================for문==================================

============================================================================

//기본구조
for 변수 in 리스트(또는 튜플, 문자열):
    수행할 문장1
    수행할 문장2
    ...

//1) 예제
test_list = ['one', 'two', 'three']
for i in test_list;
	print(i)
결과 : 
one 
two 
three

//2) 예제
>>> a = [(1,2), (3,4), (5,6)]
>>> for (first, last) in a:
...     print(first + last)
...
3
7
11

//3) 예제
marks = [90,25,67,45,80]
number=0
for mark in marks:
	number =number +1
    if mark >=60:
    	print("%d번 학생은 합격입니다" %number)
    else:
    	print("%d번 학생은 불합격입니다"%number)
        
        
//4) 예제 range 함수
a= range(10)
-->결과 : range(0,10) // 0부터 10미만의 숫자를 포함하는 range 객체를 만들어 줍니다.

add=0
for i in range(1,11)
	add = add+i
print(add)

//5) 예제 range함수 활요
marks =[90,24,23,1,32]
for number in range(len(marks)):
	if marks[number] < 60:
    	continue
        
     print("%d 학생 축하합니다. 합격입니다" %(number+1))
     
     
     
     
 >>> for i in range(2,10):        # ①번 for문
...     for j in range(1, 10):   # ②번 for문
...         print(i*j, end=" ") 
...     print('') 
... 
2 4 6 8 10 12 14 16 18 
3 6 9 12 15 18 21 24 27 
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54 
7 14 21 28 35 42 49 56 63 
8 16 24 32 40 48 56 64 72 
9 18 27 36 45 54 63 72 81

==================================================================================================================함수==================================

============================================================================

def 함수이름(매개변수):
    <수행할 문장>
    ...
    return 결과값
 
 def add(a, b): 
    result = a + b 
    return result
//일반적인 함수
def add(a,b)
result = a+b
return result;

//입력값이 없는 함수
def say()
	return 'HI' 
// 입력값이 몇 개가 될지 모를 때는 어떻게 해야 할까?

def add_many(*args)
	result = 0
    for i in args:
    	result = result + i
    return result

result = add_many(1,2,3)
print(result)
결과 : 6

result = add_many(1,2,3,4,5,6,7,8,9,10)
print(result)
결과 : 10

//다른 예시
>>> def add_mul(choice, *args): 
...     if choice == "add": 
...         result = 0 
...         for i in args: 
...             result = result + i 
...     elif choice == "mul": 
...         result = 1 
...         for i in args: 
...             result = result * i 
...     return result 
... 
>>>


>>> result = add_mul('add', 1,2,3,4,5)
>>> print(result)
15
>>> result = add_mul('mul', 1,2,3,4,5)
>>> print(result)
120

//함수의 결괏값은 언제나 하나이다

>>> def add_and_mul(a,b): 
...     return a+b, a*b

>>> result = add_and_mul(3,4)

결과 : result = (7, 12)
>>> result1, result2 = add_and_mul(3, 4)
결과 : result=7, result2=12

==================================================================================================================내장함수================================

===================================================

abs

abs(x)는 어떤 숫자를 입력받았을 때, 그 숫자의 절댓값을 돌려주는 함수이다.

>>> abs(3) 3 >>> abs(-3) 3 >>> abs(-1.2) 1.2=========================

chr

chr(i)는 아스키(ASCII) 코드 값을 입력받아 그 코드에 해당하는 문자를 출력하는 함수이다.

※ 아스키 코드란 0에서 127 사이의 숫자를 각각 하나의 문자 또는 기호에 대응시켜 놓은 것이다.

>>> chr(97) 'a' >>> chr(48) '0'

divmod

divmod(a, b)는 2개의 숫자를 입력으로 받는다. 그리고 a를 b로 나눈 몫과 나머지를 튜플 형태로 돌려주는 함수이다.

>>> divmod(7, 3) (2, 1)

몫을 구하는 연산자 //와 나머지를 구하는 연산자 %를 각각 사용한 결과와 비교해 보자.

>>> 7 // 3 2 >>> 7 % 3 1

enumerate

enumerate는 "열거하다"라는 뜻이다. 이 함수는 순서가 있는 자료형(리스트, 튜플, 문자열)을 입력으로 받아 인덱스 값을 포함하는 enumerate 객체를 돌려준다.

※ 보통 enumerate 함수는 다음 예제처럼 for문과 함께 자주 사용한다.

잘 이해되지 않으면 다음 예를 보자.

>>> for i, name in enumerate(['body', 'foo', 'bar']): ... print(i, name) ... 0 body 1 foo 2 bar

순서 값과 함께 body, foo, bar가 순서대로 출력되었다. 즉 위 예제와 같이 enumerate를 for문과 함께 사용하면 자료형의 현재 순서(index)와 그 값을 쉽게 알 수 있다.

for문처럼 반복되는 구간에서 객체가 현재 어느 위치에 있는지 알려 주는 인덱스 값이 필요할때 enumerate 함수를 사용하면 매우 유용하다.

filter

filter란 무엇인가를 걸러낸다는 뜻으로 filter 함수도 동일한 의미를 가진다.

filter 함수는 첫 번째 인수로 함수 이름을, 두 번째 인수로 그 함수에 차례로 들어갈 반복 가능한 자료형을 받는다. 그리고 두 번째 인수인 반복 가능한 자료형 요소가 첫 번째 인수인 함수에 입력되었을 때 반환 값이 참인 것만 묶어서(걸러 내서) 돌려준다.

다음 예를 보자.

#positive.py def positive(l): result = [] for i in l: if i > 0: result.append(i) return result print(positive([1,-3,2,0,-5,6]))

결과값: [1, 2, 6]

즉 위에서 만든 positive 함수는 리스트를 입력값으로 받아 각각의 요소를 판별해서 양수 값만 돌려주는 함수이다.

filter 함수를 사용하면 위 내용을 다음과 같이 간단하게 작성할 수 있다.

#filter1.py def positive(x): return x > 0 print(list(filter(positive, [1, -3, 2, 0, -5, 6])))

결과값: [1, 2, 6]

여기에서는 두 번째 인수인 리스트의 요소들이 첫 번째 인수인 positive 함수에 입력되었을때 반환 값이 참인 것만 묶어서 돌려준다. 앞의 예에서는 1, 2, 6만 양수여서 x > 0 문장이 참이되므로 [1, 2, 6]이라는 결괏값을 돌려주게 된 것이다.

앞의 함수는 lambda를 사용하면 더욱 간편하게 코드를 작성할 수 있다.

>>> list(filter(lambda x: x > 0, [1, -3, 2, 0, -5, 6])) [1, 2, 6]

람다(lambda)

lambda 인자 : 표현식

다음은 두 수를 더하는 함수입니다.

>>> def hap(x, y): ... return x + y ... >>> hap(10, 20) 30

이것을 람다 형식으로는 어떻게 표현할까요?

>>> (lambda x,y: x + y)(10, 20)

30

너무나 간단하죠? 함수가 이름조차도 없습니다. '그냥 10 + 20이라고 하면 되지'라고 말씀하시면 미워잉~.

몇 가지 함수를 더 배워보면서 람다가 어떻게 이용되는지 알아보도록 하죠.

hex

hex(x)는 정수 값을 입력받아 16진수(hexadecimal)로 변환하여 돌려주는 함수이다.

>>> hex(234) '0xea' >>> hex(3) '0x3'

id

id(object)는 객체를 입력받아 객체의 고유 주소 값(레퍼런스)을 돌려주는 함수이다.

>>> a = 3 >>> id(3) 135072304 >>> id(a) 135072304 >>> b = a >>> id(b) 135072304

input

input([prompt])은 사용자 입력을 받는 함수이다. 매개변수로 문자열을 주면 다음 세 번째 예에서 볼 수 있듯이 그 문자열은 프롬프트가 된다.

※ [ ] 기호는 괄호 안의 내용을 생략할 수 있다는 관례 표기법임을 기억하자.

>>> a = input() hi >>> a

'hi'

>>> b = input("Enter: ")

Enter: hi

 

int

int(x)는 문자열 형태의 숫자나 소수점이 있는 숫자 등을 정수 형태로 돌려주는 함수로, 정수를 입력으로 받으면 그대로 돌려준다.

>>> int('3') 3

>>> int(3.4) 3

int(x, radix)는 radix 진수로 표현된 문자열 x를 10진수로 변환하여 돌려준다.

2진수로 표현된 11의 10진수 값은 다음과 같이 구한다.

>>> int('11', 2) 3

16진수로 표현된 1A의 10진수 값은 다음과 같이 구한다.

>>> int('1A', 16) 26

 

isinstance

isinstance(object, class )는 첫 번째 인수로 인스턴스, 두 번째 인수로 클래스 이름을 받는다. 입력으로 받은 인스턴스가 그 클래스의 인스턴스인지를 판단하여 참이면 True, 거짓이면 False를 돌려준다.

>>> class Person: pass ... >>> a = Person() >>> isinstance(a, Person) True

위 예는 a가 Person 클래스가 만든 인스턴스임을 확인시켜 준다.

>>> b = 3 >>> isinstance(b, Person) False

b는 Person 클래스가 만든 인스턴스가 아니므로 False를 돌려준다.

len

len(s)은 입력값 s의 길이(요소의 전체 개수)를 돌려주는 함수이다.

>>> len("python") 6 >>> len([1,2,3]) 3 >>> len((1, 'a')) 2

 

list

list(s)는 반복 가능한 자료형 s를 입력받아 리스트로 만들어 돌려주는 함수이다.

>>> list("python") ['p', 'y', 't', 'h', 'o', 'n']

>>> list((1,2,3)) [1, 2, 3]

list 함수에 리스트를 입력으로 주면 똑같은 리스트를 복사하여 돌려준다.

>>> a = [1, 2, 3]

>>> b = list(a)

>>> b [1, 2, 3]

 

map

map(f, iterable)은 함수(f)와 반복 가능한(iterable) 자료형을 입력으로 받는다. map은 입력받은 자료형의 각 요소를 함수 f가 수행한 결과를 묶어서 돌려주는 함수이다.

다음 예를 보자.

# two_times.py

def two_times(numberList):

result = [ ]

for number in numberList:

result.append(number*2)

return result

result = two_times([1, 2, 3, 4])

print(result)

two_times 함수는 리스트 요소를 입력받아 각 요소에 2를 곱한 결괏값을 돌려준다. 실행 결과는 다음과 같다.

결과값: [2, 4, 6, 8]

위 예제는 map 함수를 사용하면 다음처럼 바꿀 수 있다.

>>> def two_times(x): ... return x*2 ...

>>> list(map(two_times, [1, 2, 3, 4]))

[2, 4, 6, 8]

이제 앞 예제를 해석해 보자. 먼저 리스트의 첫 번째 요소인 1이 two_times 함수의 입력값으로 들어가고 1 * 2의 과정을 거쳐서 2가 된다. 다음으로 리스트의 두 번째 요소인 2가 2 * 2 의 과정을 거쳐 4가 된다. 따라서 결괏값 리스트는 이제 [2, 4]가 된다. 총 4개의 요솟값이 모두 수행되면 마지막으로 [2, 4, 6, 8]을 돌려준다. 이것이 map 함수가 하는 일이다.

※ 위 예에서 map의 결과를 리스트로 보여 주기위해 list 함수를 사용하여 출력하였다.

앞의 예는 lambda를 사용하면 다음처럼 간략하게 만들 수 있다.

>>> list(map(lambda a: a*2, [1, 2, 3, 4]))

[2, 4, 6, 8]

 

max

max(iterable)는 인수로 반복 가능한 자료형을 입력받아 그 최댓값을 돌려주는 함수이다.

>>> max([1, 2, 3]) 3 >>> max("python") 'y'

min

min(iterable)은 max 함수와 반대로, 인수로 반복 가능한 자료형을 입력받아 그 최솟값을 돌려주는 함수이다.

>>> min([1, 2, 3]) 1 >>> min("python") 'h'

oct

oct(x)는 정수 형태의 숫자를 8진수 문자열로 바꾸어 돌려주는 함수이다.

>>> oct(34) '0o42' >>> oct(12345) '0o30071'

 

ord

ord(c)는 문자의 아스키 코드 값을 돌려주는 함수이다.

※ ord 함수는 chr 함수와 반대이다.

>>> ord('a') 97

>>> ord('0') 48

 

pow

pow(x, y)는 x의 y 제곱한 결괏값을 돌려주는 함수이다.

>>> pow(2, 4) 16

>>> pow(3, 3) 27

 

range

range([start,] stop [,step] )는 for문과 함께 자주 사용하는 함수이다. 이 함수는 입력받은 숫자에 해당하는 범위 값을 반복 가능한 객체로 만들어 돌려준다.

인수가 하나일 경우

시작 숫자를 지정해 주지 않으면 range 함수는 0부터 시작한다.

>>> list(range(5)) [0, 1, 2, 3, 4]

인수가 2개일 경우

입력으로 주어지는 2개의 인수는 시작 숫자와 끝 숫자를 나타낸다. 단 끝 숫자는 해당 범위에 포함되지 않는다는 것에 주의하자.

>>> list(range(5, 10)) [5, 6, 7, 8, 9]

 

인수가 3개일 경우

세 번째 인수는 숫자 사이의 거리를 말한다.

>>> list(range(1, 10, 2))  // 1~9까지 +2씩 for(int i = 0 ; i < 10 ; i=i+2)

[1, 3, 5, 7, 9]

>>> list(range(0, -10, -1))

[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

 

round

round(number[, ndigits]) 함수는 숫자를 입력받아 반올림해 주는 함수이다.

※ [, ndigits]는 ndigits가 있을 수도 있고 없을 수도 있다는 의미이다.

>>> round(4.6) 5 >>> round(4.2) 4

다음과 같이 실수 5.678을 소수점 2자리까지만 반올림하여 표시할 수 있다.

>>> round(5.678, 2) 5.68

round 함수의 두 번째 매개변수는 반올림하여 표시하고 싶은 소수점의 자릿수

 

str

str(object)은 문자열 형태로 객체를 변환하여 돌려주는 함수이다.

>>> str(3) '3'

>>> str('hi') 'hi'

>>> str('hi'.upper()) 'HI'

 

sum

sum(iterable) 은 입력받은 리스트나 튜플의 모든 요소의 합을 돌려주는 함수이다.

>>> sum([1,2,3]) 6

>>> sum((4,5,6)) 15

 

type

type(object)은 입력값의 자료형이 무엇인지 알려 주는 함수이다.

>>> type("abc") <class 'str'>

>>> type([ ]) <class 'list'>

>>> type(open("test", 'w')) <class '_io.TextIOWrapper'>

 

zip

zip(*iterable)은 동일한 개수로 이루어진 자료형을 묶어 주는 역할을 하는 함수이다.

※ 여기서 사용한 *iterable은 반복 가능(iterable)한 자료형 여러 개를 입력할 수 있다는 의미이다.

잘 이해되지 않는다면 다음 예제를 살펴보자.

>>> list(zip([1, 2, 3], [4, 5, 6]))

[(1, 4), (2, 5), (3, 6)]

>>> list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9]))

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

>>> list(zip("abc", "def"))

[('a', 'd'), ('b', 'e'), ('c', 'f')]

반응형
반응형
  • Cloud
    • IaaS (Infra_structure as a Sevice)
      • 서버를 운영하기 위해서는 서버자원, IP, NW, Storage, 전력 등의 인프라가 필요함.
      • Iaas는 이러한 것들을 가상의 환경에서 쉽고 편하게 이용할 수 있게 서비스 형태로 제공
      • Iaas를 서비스로 제공하는 위해 기존 서버 호스팅보다 H/W 확장성이 좋고 탄력적이며 빠른 제공을 핤 ㅜ 있는 가상화 기술을 이용 Paas 및 Saas의 기반이 되는 기술
    • PaaS(Platform as a Service)
      • 서비스를 개발 할 수있는 안정적인 환경(Patform)과 그 환경을 이용하는 응용 프로그램을 개발 할 수 있는 API 까지 제공하는 형태
    • SaaS(Software as a Service)
      • Cloud환경에서 동작하는 응용프로그램을 서비스 형태로 제공하는 것
      • ex) 메일 서비스
        • 이 시스템이 무엇으로 이루어져 있고 어떻게 동작하는 알 필요가 없음.
        • 그저 서비스 형태로 원하는 단말기(PC, Tablet, SmartPhone)에서 메일을 주고 받으며, 필요하면 언제든지 공간도 늘려서 서비스를 받을 수 있기 때문임.

 

반응형

'개인공부 > ICT상식' 카테고리의 다른 글

[ICT 상식] 데이터 통신  (0) 2020.11.05
[ICT 상식]소프트웨어 공학  (0) 2020.11.05
컴파일(compile) / 인터프리터 / 오브젝트(obj) / 고레벨, 저레벨 언어  (0) 2020.11.05
[ICT 상식]  (0) 2020.11.03
ICT 상식  (0) 2020.11.02
반응형
  • 소프트웨어 생명주기
    • 폭포수 모형(WaterfallModel)
      • SW 개발 과정의 각 단계가 순차적으로 진행되는 모형
      • 단계적 정의가 분명하고, 전체 공조의 이해가 용이하다.
      • 제품의 일부가 될 메뉴얼 작성
      • 각 단계가 끝난 후 결과물이 명확하게 나와야한다.
      • 성공 사례가 많다.
    • 프로토 타입 모형(Prototype Model)
      • 실제 개발될 시스템의 견본(Prototype)을 미리 만들어 최종 결과물을 예측하는 모형
      • 개발이 완료되고 나서 문제점을 알수 있는 폭포수 모형의 단점을 극복
      • 프로토타입과 실제 SW와의 차이로 인해 사용자의 혼란이 야기됨.
    • 나선형 모형(Spiral Model)
      • 점증적 모형, 집중적 모형
      • SW개발 중 발생할 수있는 위험을 관리
      • 나선을 따라서 돌아가면서 각 개발 순서를 반복 수행(=점진적 방식)
      • 비용이나 시간이 많이 소요되는 대규모 프로젝트나 큰 시스템 구축 시 유리
    • 자료 흐름도 DFD(Data Flow Diagram)
      • 시스템 내의 모든 자료 흐름을 4가지의 기본 기호로 기술 하는 방법
      • 처리공정(Process)
      • 자료흐름(Data Flow)
      • 자료 저장소(Data Store)
      • 단말(Terminator)
    • HIPO 기법
      • 입력, 처리 출력으로 구성되는 시스템 분석 및 설계와 시스템 문서화용 기법
      • 하향식 소프트웨어 개발을 위한 문서화 도구
    • 모듈화와 구현
      • 모듈화
        • 하나의 프로그램을 몇 개의 작은 부분으로 분할
        • 모듈의 독립성은 결합도응집도에 의해 측정 된다.
      • 결합도(낮을수록good)
        • 두 모율 간의 상호 의존도를 말한다.
        • 결합도가 낮으면 시스템을 구현하고 유지보수하는 작업이 쉽다.
      • 응집도(높을수록good)
        • 모듈 안의 서로 관련되어 있는 정도
      • 결론
        • 효과적인 모듈화 설계 방안
          • 응집도는 강하게 하고 결합도는 약하게 하고 복잡도와 중복을 피한다.
    • PasS-Ta
      • 특정 인프라에 종속되지 않는 개방형 클라우드 플랫폼, 한국 정부가 개발한 클라우드
  • 인공지능이 인간지능을 넘어서는 기점
    • 싱귤래리티 
  • 섭테크
    • 금융감독(Supervision)과 기술(Tech)의 합성어로, 최신 기술을 활용하여 금융감독 업무
  • 레그테크
    • 레귤레이션 + 테크 =섭테크
  • 뱅크런
    • 경제상황이 악화로 은행이 지급 불능 상태를 우려한 고객들이 대규모로 예금을 인출하는 사태
  • 검사와 유지보수
    • 화이트 박스 테스트(원시느낌)
      • 프로그램의 제어 구조에 따라 선택, 반복 등의 부분들을 수행함으로써 논리적 경로를 점검
      • 원시 코드의 모든 문장을 한 번 이상 수행함으로써 진행
      • 기초 경로 검사
      • 조건 검사
      • 데이터 흐름 검사
      • 루프 검사
    • 블랙 박스 테스트(완제품느낌)
      • 각 기능이 완전히 작동되는 것을 입증
      • 기능 검사, 성능 오류, 부정확한 기능, 자료 구조 오류. 인터페이스 오류
      • 동치 분할 검사
      • 경계값 분석
      • 원인 효과 그래프
      • 비교 검사
반응형

'개인공부 > ICT상식' 카테고리의 다른 글

[ICT 상식] 데이터 통신  (0) 2020.11.05
[ICT 상식]소프트웨어 공학  (0) 2020.11.05
컴파일(compile) / 인터프리터 / 오브젝트(obj) / 고레벨, 저레벨 언어  (0) 2020.11.05
[ICT 상식]  (0) 2020.11.04
ICT 상식  (0) 2020.11.02
반응형
  • 블루레이 디스크(Blue-ray Disc)
    • 비디오 포맷은 DVD와 동일한 MPEG-2기반 코덱
    • 12cm 직경의 25GB 정도의 데이터 저장 가능
    • BD-ROM(읽기 전용), BD-R(기록 가능) ,BD-RE(재기록 가능)
    • 푸른색 레이저(405nm)를 사용해서 Blu-ray Disc이다.
  • 마이크로 연산(Micro Operator)
    • CPU에서 발생시키는 한 개의 클럭 펄스(Clock Pulse) 동안 실행되는 기본 동작.
    • 한 개의 명령어는 여러 개의 마이크로 연산이 동작되어 실행
    • CPU에서 발생시키는 제어 신호에 따라 마이크로 연산이 순서적으로 일어남.
  • LAN방식 (10BASE-T)
    • 10Mbps로 전송하는 BASE 베이스 밴드 전송, T 케이블에 꼬인 상선 사용
  • 시스템 소프트웨어
    • 프로그램을 메모리에 적재
    • 인터럽트 관리
    • 기억 장치 관리
  • 응용 소프트웨어
    • 복잡한 수학 계산을 처리
  • 분산 처리 시스템
    • 여러 대의 컴퓨터에 작업을 나누어 처리하여 그 내용이나 결과가 통신망을 통해 상호 교환하도록 하는 시스템
    • 클라이언트/서버 시스템
    • 점진적 확장의 용이성
    • 신뢰성 가용성 증진
    • 시스템 자원을 여러 사용자가 공유
    • 중앙집중형 시스템에 비해 SW 개발이 어렵고 보안 문제가 발생할 우려가 있다.
  • 자료(Data)와 정보(Information)
    • 자료(Data) : 현실 세계에서 어떤 측정을 통해 얻은 단순한 값 (= 가공되지 않은 데이터)
    • 정보(Information) : 자료(Data)를 가공처리하여 어떤 의사결정에 필요한 지식을 추출.
  • 데이터 베이스 설계 단계
    • 개념적 설계 단계 : 요구사항 분석을 토대로 결과물 개념적 모델을 통해 표현
    • 논리적 설계 단계 : 개발에 사용할 DBMS를 적합한 논리적 데이터 모델을 이용하여 개념적 설계 단계 기반으로 설계하는 과정 
    • 물리적 설계 단계 : 논리적 설계 단계에서 생성된 논리적 구조를 실제로 구축할 컴퓨토 시스템의 저장 장치와 운영체제의 특성을 고려하여 처리 능력을 향상 시킬 수 있도록 설계하는 과정
      • 응답시간, 저장공간의 효율화, 트랜잭선 처리도
  • 개체(Entity)
    • DB에서 표현하려는 것으로 사람이 생각하는 개념이가 정보 단위 같은 현실세계 대상체
    • 하나의 개체는 여러개의 속성을 갖는다.
    • 단독으로 존재 불가능.
  • 속성(Atrribute)
    • 개체를 구성하는 항목으로 Db를 구성하는 최초의 논리적 단위
  • SQL
    • 데이터 정의어 DDL : CREATE, DROP, ALTER, RENAME, TRUNCATE
    • 데이터 조작어 DML : UDDATE, DELETE, SELECT, INSERT
    • 데이터 제어어 DCL : GRANT, REVOKE, CASCADE, RESTRICTED
  • RSA
    • 암호 키해독 키가 서로 다른 방법으로 암호 키는 공개하고 해독 키는 비공개하여 데이터 송수신 시 보안을 유지한다. 

 

  • 로킹의 단위가 작을 수록 구현이 복잡한 반면 강력한 동시성(병행성 ,공유도 증가) 

 

  • 데이터 통신의 3요소
    • 정보원(Data Source)
    • 전송 매체 (Medium)
    • 정보 처리원(Destination, 수신자)
  • 비동기식 전송
    • 문자(구성 : Start bit, 전송문자, 패리티 비트, Stop Bit)
    • 휴지 시간 불규칙 (기다렸다가 한꺼번에 보내는 개념)
    • 전송속도 1200bps 이하, 저속, 단거리 전송
    • 동기화가 단순, 저비용
    • 문자마다 시작과 정지를 알리기 위해 비트가 2-3씩 추가되므로 전송 효율이 떨어짐
  • 동기식 전송
    • 프레임(미리 정해진 수만큼의 문자여을 한 블록(프레임)으로 만들어 일시에 전송)
    • 휴지 시간 없음. (지속적으로 계속보내는 개념)
    • 2400bps 이하, 고속, 원거리에 사용
    • 휴지시간이 없으므로 전송효율이 좋음
    • 비트 동기 방식, 블록 동기 방식(문자 동기 방식, 비트 동기 방식)

========================================================================================================================================================

  • 교착상태의 발생 필수조건
    • 상호 배제
    • 점유와 대기
    • 비선점(선점아님)
    • 환형 대기
  • 데이터베이싀의 특성
    • 실시간 접근성
    • 내용에 의한 참조
    • 동시 공유
    • 계속적 변화
  • 후보 키
    • 릴레이션 튜플(Tuple)들을 구별할 수 있는 최소환의 속성 집합으로 모든 릴레이션은 최소한 하나의 후보 키를 갖는다.
    • 후보키의 조건
      • 유일성
        • (=속성에는 중복 값이 없어야 한다 ex) 주민등록번호)
      • 최소성
        • 유일한 식별을 하기 위해 꼭 필요한 속성으로만 구성한다.
  • 스마트 계약
    • 블록체인 기반으로 프로그래밍된 조건이 모두 충족되면 자동으로 계약을 이행하는 자동화 계약 시스템
      • 금융거래, 부동산 계약 등 다양한 형태의 계약이 가능

 

반응형

+ Recent posts