본문 바로가기

Java

(30)
자바 스레드 기초 멀티태스킹이란? 멀티태스킹(multitasking)이란 다수의 작업을 동시에 처리하는 것을 말한다. 일상 생활에서의 예시를 들어 설명하자면, 노래를 들으면서 운동을 하는 행위, 기타를 치면서 노래를 부르는 행위, 울면서 웃는 행위 등으로 생각하면 쉽겠다. 윈도우 운영체제의 미디어 플레이어는 오디오를 출력하는 태스크와 스크린에 동영상을 출력하는 태스크(재생하는 화면), 그리고 사용자의 키와 마우스 입력을 처리하는 태스크 등 최소한 3개의 태스크가 동시에 실행되고 있다. 만일 이 3개의 태스크를 순차적으로 실행하면 오디오나 비디오가 간헐적으로 끊어지는 일이 발생할 수 있다. 하나의 프로그램에 여러 작업(태스크)를 구현하는 멀티 태스킹을 이용하면, 실행 중에 여러 작업(태스크)를 동시에 실행시켜 프로그램이 효..
제네릭 Java 5부터 제네릭(Generic) 타입이 새로 추가되었는데, 제네릭 타입을 이용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있게 되었다. 제네릭은 컬렉션, 람다식, 스트림, NIO에서 널리 사용되므로 확실히 이해해 두어야 한다. 또 API 도큐먼트를 보면 제네릭 표현이 많기 때문에 제네릭을 이해하지 못하면 API 도큐먼트를 정확히 이해할 수 없다. 제네릭은 클래스와 인터페이스, 그리고 메소드를 정의할 때 타입(type)을 파라미터로 사용할 수 있도록 한다. 타입 파라미터는 코드 작성시 구체적인 타입으로 대체되어 다양한 코드를 생성하도록 해준다. 제네릭을 사용하는 코드는 비제네릭 코드에 비해 다음과 같은 이점을 가지고 있다. 1. 컴파일시 강한 타입 체크를 할 수 있다 자..
overriding, overloading 차이점 다형성: 사용편의성 객체 지향에서 다형성이라고 하면 오버라이딩, 오버로딩 이라고 할 수 있다. 물론 상위 클래스와 하위 클래스 사이에서도 다형성을 이야기할 수 있고, 인터페이스와 그것의 구현 클래스 사이에서도 다형성을 이야기할 수 있지만 가장 기본은 오버라이딩과 오버로딩이라고 할 수 있다. 오버라이딩? 오버로딩? 오버라이딩 : 같은 메서드 이름, 같은 인자 목록으로 상위 클래스의 메서드를 재정의 오버로딩 : 같은 메서드 이름, 다른 인자 목록으로 다수의 메서드를 중복 정의 ride : 올라타다 -> 상위 클래스의 메서드를 올라타다? load : 적재하다 -> 다수의 메서드를 나란히 옆으로 적재한다? public class Animal{ public String name; public void showNa..
StringBuffer, StringBuilder 비교 문자열을 저장하는 String은 내부의 문자열을 수정할 수 없다. 예를 들어 String의 replace() 메소드는 내부의 문자를 대치하는 것이 아니라, 대치된 새로운 문자열을 리턴한다. String 객체를 + 연산할 경우에도 마찬가지다. String data = "ABC"; data += "DEF"; "ABC"에 "DEF"가 추가되었기 때문에 한 개의 String 객체가 사용되었다고 생각할 수 있지만, String 객체는 내부 데이터를 수정할 수 없으므로, "ABC"에 "DEF"가 추가된 "ABCDEF"라는 새로운 String 객체가 생성된다. 그리고 data 변수는 새로운 String객체를 참조하게 된다. 문자열을 결합하는 + 연산자를 많이 사용하면 할수록 그만큼 String객체의 수가 늘어나기 때..
스프링 입문을 위한 자바 객체 지향의 원리와 이해 -1장 어셈블리어 C 자바 개발자의 코딩 일상 단어 사용 수학적 기호 사용 수학적 기호 사용 소스 파일 기종마다 하나씩 기종이 몇 개든 단 하나 기종이 몇 개든 단 하나 목적 파일 어셈블리어로 기계어 생성 컴파일러로 해당 운영체제용 기계어 생성 기종이 몇 개든 단 하나의 JVM용 기계어 생성 기계어 비교 기계어랑 1:1 대응하는 니모닉 기계어와 m:n 대응하는 수학적 기호 기계어와 m:n 대응하는 수학적 기호 비고 기종별 어셈블러 필요 기종별 컴파일러 필요 단 하나의 컴파일러만 필요 기종별 JRE 세팅 필요(한번만 설치해주면 됨) [표 어셈블리어, C, 자바 비교] 당신은 CBD, SOA가 어려운가? 객체 지향의 4대 틍성을 누군가에게 설명할 수 있는가? 스프링 프레임워크는 사상이면서 또 단일 제품이다. 느낀 ..
TechStudty -03 HTTP 프로토콜이란? 1. HTTP 프로토콜이란?- www(world wide web)상에서 데이터를 주고 받기 위한 프로토콜이다. - 서버/클라이언트 모델을 따른다.- 애플리케이션 레벨의 프로토콜로 TCP/IP위에서 작동한다.- 어떤 종류의 데이터든지 전송할 수 있도록 설계되어있다. (html 문서, 이미지, 동영상 , 오디오, 텍스트 문서 등등)2. 작동방식?- 클라이언트에서 요청(request)를 보내면 서버는 요청을 처리해서 응답(response)한다. - 클라이언트 : 서버에 요청하는 클라이언트 소프트웨어가 설치된 컴퓨터- 서버 : 클라이언트의 요청을 받아서 요청을 해석하고 응답을 하는 소프트웨어가 설치된 컴퓨터 (Apache, nginx, IIS, lighttpd 등)- 보통 표준 포트인 80번 포트로 서비스한다...
TechStudy - 01.OOP란 ? OOP(Object Oriented Programming)이란? * 실제 세계를 모델링 하여 소프트웨어를 개발하는 방법* 프로그램을 수많은 '객체'라는 기본 단위로 나누고 이 객체들의 상호작용으로 서술하는 방식이다. * 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여래 개의 독립된 단위 즉 '객체'들의 모임으로 파악하고자 한다.* 객체를 데이터 묶음으로만 착각하기 쉬운데, 그보다는 하나의 '역할'을 수행하는 메소드와 데이터의 묶음으로 봐야한다. * 컴퓨터 프로그래밍의 패러다임 중 하나이다.* 마치 컴퓨터 부품을 하나씩 사다가 컴퓨터를 조립하는 것과 같은 방법이다. OOP(Object Oriented Programming)장점?* 코드의 중복을 어느정도 줄일 수 있다. * 코드를 재사용하기 쉽..
제네릭 제네릭이란?타입을 파라미터화해서 컴파일시 구체적인 타입이 결정되도록 하는 것 제네릭의 장점?컴파일시 강한 타입 체크를 할 수 있다. 실행시 타입 에러가 나는 것보다 컴파일시에서 미리 타입을 강하게 체크해서 에러를 사전에 방지한다. 제네릭 타입(class, interface)타입을 파라미터로 가지는 클래스와 인터페이스를 말한다. 선언시 클래스 또는 인터페이스 이름 뒤에 가 붙는다. 안에 타입 파라미터가 위치한다. 타입 파라미터는 변수명과 동일한 규칙에 따라 작성할 수 있지만, 일반적으로 알파벳 한 문자로 표현한다. 제네릭 타입을 실제 코드에서 사용하려면 개발 코드에서 구체적인 타입을 지정해야한다.