본문 바로가기

공부/TIL

클래스, 버블소트 , 네트워크

목차

1oop는 키워드랑 클래스 사용법만 하겠다.

2하노이타워

3버블소트 O(n)

4네트워크

5자료구조

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

OOP

1-캡슐화(encapsulation):정보 은닉

2-정보은닉(information hiding):

3☆-다형성-polymorphism: 상속(inheritance)을 쓸때 사용

-> 메서드 오버라이딩(method overrding) vs 함수 오버로딩 fuction overoding (두개 햇갈리면 안됨)

4-디자인 패턴(SOLID) 필요성을 느끼고 구현한다면 GOF(gang of four)라는 책에서 나옴

S:single resposibility principle (단일책임이라고 번역하는데 원문이 더이해간다)

O: open-closed principle(확장_폐쇄)

L: Liskov substitution principle(리스코프 치환)

I:interface segregation principle(인터페이스 분리)

D: Dependency inversion principle(의존 역전 원리)

ㅡㅡㅡ나중에 공부

def hanoi(n, _from, _by, _to):
	#base case
	if n==1:
        print(f'{n}번째 쟁반을 {_from}에서 {_to}로 이동 ')
        return
    
    hanoi(n-1, _from, _to, _by)
    print(f'{n}번째 쟁반을 {_from}에서 {_to}로 이동 ')
    hanoi(n-1, _by, _from ,_to)

버블소트 O(n)

데이터가 4개, 3+2+1

데이터가 5개 4+3+2+1

데이터가 6개 5+4+3+2+1

n : 1+2+3+ . . . n-1

첫째항 a 항의 개수 n 마지막 항 l

n(a+l)/2 = (n-1)(1+n-1)/2

T(n) = n^2+2/2 O(n2)

포문이 두개다 = O(n^2)

포문이 세개다 = O(n^3)

for문이나 while문 (반복문 x) 1부터 100만 까지의 합을 구하는 함수를 구하라

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

2교시

클래스 문법

절차지향(함수proceduer) 지향 vs 객체지향

-함수 시그니처

-어떤 "기능"을 구현

operation, behavior라고도 부름

함수를 통해 추상화

객체지향(object) - > 추상화

객체는 "관련있는 "변수, 함수를 묶은것

변수- 상태정보 (data가 되고) 특성값

함수x(메서드)- 기능 (input+상태정보(멤버값)에 의해서 output이 달라짐)

객체는 데이터와 기능을 한대 합쳤다.

class와 instance의 차이

class= 붕어빵 틀 , instance 붕어빵

내요약

절차지향(항상같게 입력에따른 출력)

객체지향(인풋값,상태정보에따라 출력달라짐)

내통장 5천원, 천원뺴기 니통장 100원 천원빼기의 차이

class Account:
    # 생성자(constructor)
    # 객체를 생성할때, "반드시" 한번 호출한다
​    def __init__(self, cust_name, init_balance):
​        #인스턴스 멤버(객체가 가지는 속성,데이터,변수)를 설정한다
​        self.name=cust_name
​        self.balance=init_balance

 

#소멸자 (destructor)
#객체가 소멸될 때 '반드시' 한번 호출
def __del__(self):
    pass

#인스턴스 메서드(기능, 행동)
def deposit(self, money):
    if money <0:
        return False
    
    # 관련 있는 변수를 :인스턴스멤버
    self.balance+=money
    return True

def withdraw(self, money):
    if money > self.balance:
        return 0
    
    self.balance -= money
    return money

def transfer(self, other, money):
    self.balance -= money
    #다른 객체의 멤버에 바로 접근하지 않는다
    #다른 객체의 데이터를 변경할 떄는
    # "반드시" 상대 객체가 가진 메서드에 맡겨야 한다!!
    # 메시지 패싱
    # other.money+=money 돈에 직접가면안댐
    other.deposit(money)

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

접근 제어자 access modfier

네트워크

계층에서 중요한 프로토콜(약속)

우리는 application layer

구글 -> mac address 짤 보고 이해하기

ac:12:82(제조사):bb :a1 :32 일련번호 (겹치기 x) -물리주소, 전세계에 나하나밖에없는 물리주소

nic에 발급된 mac address(media, access control) 하드웨어주소

Lan vs Wan

이더넷 프로토콜: LAN에서 물리주소(mac주소를 기반으로) 로컬에서만 데이터를 주고받는

Destination Mac Address: 6bytes, 패킷수신

Source Mac Address : 6bytes, 패킷송신 NIC

MTU(maximum transmission unit): 1500bytes

__ipconfig /all window 명령어__

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

tcp/ip 4계층 (노트)

arp 스푸핑

상대방의 mac주소를 안다면, 커피숍에서 은행업무

host 1 <-ㅁiptime-> 은행서버

해커 서로주고받는 해커

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

ip -> 4바이트

_ _ _ _ 한자리당 1바이트, 0~255 맨끝자리 255는 broadcast로 예약이 잡혀있음

ip - class 기반 주소 (ipv4)

-나의 ip주소, subnet mask - 게이트웨이

→_ _ _ _맨첫번째 자리를 보고 클래스를 판단 0~127

0|000 0000 ~ 0|111 1111 클래스A 네트워크 2^8 , 2^24개 호스트 받기 가능 (미국만 쓸때)

_ _ ← 앞에 두개_ _ 자리를 보고 클래스를 판단 128~191

10|00 0000 ~ 10 11 1111 클래스 B

_ _ _ ← _ 끝에만 호스트/ 클래스 C 호스트 192~223

110|0 0000 ~ 110|1 1111

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

서브넷 : 어디까지가 네트워크 주소냐?

class A ㅁ ㅡ ㅡ ㅡ

class b ㅁㅁ ㅡ. ㅡ

class c ㅁ ㅁ ㅁ . ㅡ

cmd) traceroute google.com

who is (ip주소)

1.공인IP (public) - 전세계적으로 unique nic처럼 공인 ip영역 지정

2.사설ip (private) -

nat

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

sorting

단순 알고리즘 -버블, 삽입,선택

분할정복 - 퀵,머지,힙, 소트

분할정복 개념 :"어려운 문제를" 잘게 "쪼개서" divide 작게 쪼개진 문제 "문제" 하나씩

"해결"함으로써 "작은 solution"이 모여서 전체 문제에 대한 "solution"을 구하는기법

퀵소트 동영상

<https://www.youtube.com/watch?v=WaNLJf8xzC4>

반응형

'공부 > TIL' 카테고리의 다른 글

머지소트,스택,큐,연결리스트  (0) 2019.04.26
네트워크, 퀵소트, isertion, selection  (0) 2019.04.25
프로세스VS스레드  (0) 2019.04.23
함수  (0) 2019.04.22
SASS  (0) 2019.04.21