프로그래밍 290

컴퓨터 네트워크

인터넷은 무엇인가? 인터넷은 무엇으로 구성되어 있는가? Network edgeNetwork coreprotocol layer Host는 무엇인가? 호스트는 네트워크 App들이 동작하는 end system이라고 불리는 것을 말한다. Communication Link는 Media라고도 하는데 guided media / unguided media가 있다. 해석하자면 딱딱한 것과 그렇지 않은 미디어라고 할 수 있다. guided media에는 copper, fiber, coax가 있으며, unguided media에는 radio , statellite, lan등이 있다. 패킷 전송 방식은 보통 2가지 방식이 사용 된다. packet switching 방식과 circuit switching 방식이 있다. 패킷 스..

Yoda Condition 이란 방어코딩의 종류에 대해 알아보자!!

우리가 보통 C언어에서 if( 변수 == 상수 ) 이런 방식으로 많이 써왔는데 C 언어를 만든 개발자는 굉장히 똑똑한 사람이기에 자질구레한 실수를 하지 않는 사람이었나보다. if( val = literal) 이런 식으로 = 하나를 빼도 컴파일에러가 나지 않는다. 이것은 향후 런타임 에러를 초래한다. 이 방식을 if ( literal == val ) 이러한 방식으로 자리를 바꾸어 쓰는것이다. 이렇게 사용하면, if ( literal = val ) 이렇게 = 하나가 빠지면 에러를 나타낸다. C언어는 이제 무조건 요다 컨디션을 통한 방어코딩을 하자!!

절차 지향? 객체 지향?

명령어(동사) 중심의 프로그래밍 방식 전체 과정을 나누어 처리하는 각 단위를 함수(function)라고 한다면, 절차지향언어는 개발하려는 프로그램에 필요한 기능(함수)들을 여러 개의 작은 함수로 나누고, 그 기능들이 처음부터 흘러가는 순서대로 해결하는 방식으로 프로그래밍하는 방법을 의미한다. 함수와 데이터를 각각 분리함으로써 유지보수와 수정이 어려움. 객체(명사) 중심의 프로그래밍 방식 개발하고자 하는 프로그램이 어떤 객체들로 이루어져 있는지 분석한 후, 개발 대상을 구성하고 있는 객체들을 만들고, 객체들 간의 메시지와 데이터를 교환하는 방식으로 문제를 해결하는 프로그래밍 방법을 의미한다. 객체에는 함수와 관련 데이터들이 함께 들어 있어서, 관리 & 수정이 편리함. ▶ 추상화 개발하려는 대상과 목적에 맞..

Java 문자열에 관한 타입

문자열에 관하여.. 프로그래밍 언어에서 문자열이 기본형인 것은 SNOBOL 언어? 아마 그 이후 언어에서는 기본형 타입이 아닌 문자배열 기준으로 문자열을 생성 할 것이다. C/C++ 같은 경우로 char 형 배열을 이용한다. 그러나 Java는 객체지향언어. 즉, Scalar 타입(기본자료형)이외의 String Class를 지원해준다. 그리하여 String class를 이용하여 문자열을 생성하면 된다. 보통 3가지로 분류 되는데 현재 7버젼의 경우 이 정도라고 생각하면 되고, 자바 8에서는 아마 람다식이 추가 된 걸로 알고 있다. 1. String - 메모리 불변- 문자열 변경시 객체가 새로 생성- equals() 오버라이딩 2. StringBuffer- 메모리 가변- 문자열 변경시 기존 객체가 변경- 메..

와이어 샤크?

와이어 샤크란? 오픈소스 프로그램이며, 패킷 분석을 돕는 툴입니다. (www.wireshark.org) 이 URL로 이동하여 OS 에 맞게 다운로드 인스톨하여 사용하시면 되고, 사용법은 옵션, 실행 이 두가지인데, 사실 옵션은 크게 세부적으로 건드리는 건 저도 잘 모릅니다... 실행하시면 컴퓨터 내 TCP,UDP등등 여러 프로토콜을 통해 컴퓨터가 통신하는 모습을 볼 수 있습니다. 물론 잘 분석하시면, 바이러스에 걸렸거나, 혹은 그리드 프로그램으로 인해 내 컴퓨터의 리소스가 어딘가로 빠져나가는지도 알 수 있겠죠???

5장 반복문 - for

while문은 지난번에 배웠죠? 이번엔 for문을 배워보죠!! for 변수 in 리스트(또는 터플, 문자열): 이런 형태거든요!! 쉽게 하자면, range() 라는 함수와 자주 쓰이는데, range는 범위지정을 해줍니다. range(1,11) 1 ~ 11이라는 범위를 지정해줍니다. >>> for i in range(1,10): print("%d" %i) 1 2 3 4 5 6 7 8 9 >>> 이렇게 되는 겁니다 !! ^^ 그리고 리스트로도 가능하니 >>> list = ["1","2","3"] >>> for i in list: print(i) 1 2 3 >>> 이렇게 된다는 것만 알고 계시면 될 것 같습니다!! -파이썬에서 튜플이란 자료형이 있죠? 이게 나중에 변수 두 개 만으로도 서로 값을 바꿀 수 있도..

5장. 반복문 - while

반복문? - 반복적인 일을 한 번에 실행한다라는 의미로 받아주시면 될 것 같습니다!! 예를 들어 , 구구단을 만들고 싶은데? 2 x 1 = 2 2 x 2 = 4 . .. ... 2 x 9 = 18 이렇게 하나하나 쳐줄시엔 고생도 고생이지만, 만약 같은 반복이 천번? 만번이다 이렇다면? 어떻게 해야 할까요? 그 때 , 바로 반복문을 사용합니다!! while문을 알아볼텐데요. while : 수행문장 이런 형식으로 써주시면 됩니다!! Python이 쉬우면서 어려운 이유는 indentation 기반으로 여러줄이 같이 실행해야 하는가?를 판별합니다. 보통 블럭이라고 말하는데 C언어계열들은 { }를 써서 블럭지정을 해줍니다. 블록안에 있는 문장은 같이 실행해야 하는 거야라고 말해주는건데 , Python은 들여쓰기로..

4장 변수

변수 ? 프로그래밍 언어의 관점에서 변수란 ? - 메모리 주소를 대응하는 하나의 저장공간입니다. 즉, 컴퓨터는 0x00223f번지의 메모리 주소를 프로그래머의 의하여 a = 345 를 해주면 , 0x00223f번지에 있는 곳에 345라는 값을 저장하게 됩니다. 메모리주소를 하나 하나 다 외울 수 없으므로 변수라는 사람에게 친화적인 문자열형태로 대응시키는 것입니다! 좀 쉬워졌나요?? 결국 변수는 메모리의 주소를 말하는 겁니다. 조금 쉽게 말이죠! ^^ >>> a = 345 >>> print(a) 345 파이썬의 경우 Scalar 자료형선언부가 없습니다. 이를 테면 , int , double , char, float 등등 다른 언어에 존재하는 기본형 타입을 말하는데 파이썬의 경우 변수이름만 써주면 바로 사용..

Collection Framework. ArrayList , HashSet, HashMap

컬렉션 프레임 워크란? 데이터 집합을 저장하는 표준화된 클래스를 말합니다. ^^ 컬렉션 프레임워크에 핵심 인터페이스는 세 가지로 분류 됩니다. List - 순서가 있는 데이터/중복을 허용한다. Set - 순서를 유지하지 않는 집합/ 중복을 허용하지 않는다. Map - 키와 값으로 저장/값만 중복 가능, 순서 유지하지 않는다. Vector , ArrayList를 가장 많이 사용하는데 차이점이 존재 합니다. 모두 비슷하지만, 차이점으로는 Vector는 멀티쓰레드에 대해 동기화 처리가 되고, ArrayList는 동기화 처리를 하지 않는다. -이 부분은 지금 중요한 논의가 아니다. 퍼포먼스와 관련있다. 공통점은 배열기반이란 점! 그리고 List 인터페이스를 상속받아 구현한 점! ArrayList 12345678..

반응형