.Node.js http 클래스를 활용한 기본 서버 구성 123456789var http = require("http"); http.createServer(function (req, res) { var body = "hello Server"; res.setHeader('Content-Type', 'text/html; charset=utf-8'); res.end("This is My Server~~~!"+body+"")}).listen(3000); console.log('server is Started'); cs line 1) http 모듈을 require()로 불러온다.line 4) body에 넣을 textline 5) response의 Header를 설정line 7) 3000번 port로 서버 대기
Spring AOP AOP(Aspect Oriented Programming) - 관점 지향 프로그래밍 AOP? Before) 흩어진 Action AAA와 BBB 똑같은 일을 수행하는 흩어진 코드들은 수정 시 모두 찾아서 다 바꿔주어야 하는 번거로움이 생김 // class A의 method a, method b는 메시지만 다를 뿐 똑같은 일을 수행 class A { method a () { AAA // AAA Action 수정시 다른 클레스 & 메서드를 다 찾아서 수정 Today is Saturday. BBB } method b () { AAA Hi, My name is Aaron. BBB } } // 다른 클래스인 class B도 마찬가지로 class A와 같은 일을 수행 class B { method..
Spring IoC 제어권이 역전된 것 !? IoC : Inversion of Control 일반적으로는 자신이 사용할 의존성을 자신이 만들어서 사용 class OwnerController { private OwnerRepository repository = new OwnerRepository(); } Spring IoC란, 자신이 사용할 의존성을 누군가 만들어 주는 것. 이것이 제어권의 역전 class OwnerController { private OwnerRepository repo; // OwnerRepository를 사용하지만 자신이 만들지 않음 // OwnerController 밖에서 누군가가 의존성을 줄 수 있도록 생성자를 통해 의존성을 받아옴 // (=제어권 역전) public OwnerCo..
#. JAVA ㅇ 절차지향 (POP) - 실행되는 순서가 위에서부터 아래로 순차적으로 진행되는 형태를 가진 언어 - 프로그램 재사용 시 기존에 만들어진 코드를 복사하여 붙여넣기 하는 방법 사용 => 함수의 등장. ㄴ자주 사용되는 특정한 코드를 하나의 모듈(묶음)로 묶어 놓은 것 ㄴ프로그래머가 사용하고 싶을 때마다 호출하여 코드가 실행되도록 함 ㄴ데이터와 함수 간에 유기적인 관계성을 갖지 못함 ㅇ 객체지향 (OOP : Object-Oriented Programming) - 데이터를 객체로 취급하여 프로그램에 반영, 객체와 객체의 상호작용을 통해 프로그램이 동작 - 코드의 재사용성이 높음, 코드 관리가 용이, 코드의 중복을 제거 - 각각의 객체는 메시지를 주고받고, 데이터를 처리 -> 유지보수성 Good -..
#. HashSet - Hash Table에 의한 동작 - 집단을 반복(iterator)하려면 HashSet 인스턴스의 크기(원소의 수)와 백업 HashMap 인스턴스의 용량(버킷 수)의 합계에 비례하는 시간이 필요. 따라서, 반복 성능이 중요한 경우 초기 용량을 너무 높게 설정하지 않는 것이 매우 중요 12345678910111213141516171819202122232425262728293031323334353637383940414243444546import java.util.*; // HashSet을 사용하기 위해 import public class test { public static void main(String[] args) { HashSet hs = new HashSet(); // HashS..
#. 객체의 형변환 > 형변환(Casting) ㄴ 묵시적 형변환(Promotion) - 형변환 연산자를 사용하지 않아도 자동으로 이루어지는 경우 = 자동 형변환 - ex) 4btye의 int형 데이터를 8byte double 형으로 변환12int age = 25;double avgAge = age; // 25.0, (double)cs ㄴ 명시적 형변환(Demotion) - 더 작은 범위를 나타내는 데이터 타입으로 변환되는 경우 = 축소 형변환 - ex) 8byte의 double형 데이터를 4byte int 형으로 변환 12double avgAge = 23.86;int age = (int)avgAge; // 24, 문장에서 명시적 형변환cs > 객체 형변환 - 객체 참조변수의 경우에도 형변환이 이루어짐 -..
[ 요약 ] - 내부 클래스는 정의되는 위치에 따라 멤버 클래스와 지역 클래스로 나뉜다. - 멤버 클래스는 멤버 변수와 동일한 위치에 선언된 내부 클래스를 의미한다. - 멤버 클래스는 static 예약어가 붙은 static 멤버와 instance 멤버로 나뉜다. - 지역 클래스는 메서드 내에 클래스가 정의되어 있는 경우를 말하며, 이름이 있는 지역 클래스와 이름을 갖지 않는 무명 클래스로 다시 나뉜다. #. 내부 클래스 > 내부 클래스 - 클래스가 다른 클래스를 포함하는 경우, 내부에 포함된 클래스의 명칭 - 파일 크기의 최소화, 보안, 성능 향상, 이벤트 처리 등을 쉽게 하기 위해 사용 - 자바 클래스 구조를 더 조직화하고, 소스코드를 구현시 효율을 높일 수 있음 - 내부 클래스가 생성되기 위해 외부 ..
#. 추상 클래스 > 추상 메서드 - abstract 예약어 ㄴ 메서드와 클래스를 선언할 때 사용하는 Modifier ㄴ 메서드를 선언에 사용 시 추상 메서드로 정의하겠다는 의미 - 추상 메서드12public int sum(int n1, int n2 ..) { ... } // 일반 메서드public abstract int sum(int n1, int n2 ..); // 상 메서드cs ㄴ 메서드의 시그니처(리턴 타입, 메서드명, 매개변수)만 정의 ㄴ 구체적인 행위, 즉 블록({ }) 부분은 정의되지 않은 특수한 메서드 ㄴ 메서드의 시그니처가 선언되어 있기 때문에 메서드의 기본적인 기능 유추 가능 ㄴ 추상 메서드는 의미가 없지만 자식 클래스에서 Overriding 했을 때, 상속을 통해 의미를 가짐 ㄴ 추상..