본문 바로가기

분류 전체보기

(158)
메모리 영역 - 코드 영역, 데이터 영역, 힙 영역, 스택 영역 메모리 프로그램이 실행되기 위해서는 먼저 프로그램의 메모리가 로드되어야 함. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요. 컴퓨터 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하는데, 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 같다.. 1. 코드(code) 영역 실행할 프로그램의 코드가 저장되는 영역으로, 텍스트 영역이라고도 함. CPU는 코드영역에 저장된 명령어를 하나씩 가져가서 처리. 실행 파일을 구성하는 명령어들이 올라가는 메모리 영역으로 함수, 제어문, 상수 등이 지정됨. 2. 데이터(Data) 영역 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역. 프로그램의 시작과 함께 할당되고, 프로그램이 종료와 함께 소멸. 3. 스택(stack) 영..
부동소수점과 그 한계 컴퓨터에서 소수는 밑(base)이 이진 소수로 표현된다. Ex. 0.125 = 1/10 + 2/100 + 5/1000 그렇기에 대부분의 십진 소수를 이진 소수로 정확하게 표현이 불가능.
절차 지향 언어와 객체 지향 언어 절차 지향 언어 절차적 프로그래밍 접근 방식을 따르는 언어. 대표적으로 C가 있다. 절차적 프로그래밍은 순차적으로 실행되어, 복잡도가 지나치지 않고 유지보수하기 쉬운 단순한 프로그래밍에서 유용하고 실행 속도도 빠르나, 실행 순서가 바뀔 경우 동일한 결과가 나오지 않을 수 있고 스케일이 커질 경우 유지 보수에 어려움이 있다. 객체 지향 언어 기능을 중심으로 메서드를 구현. 스케일이 큰 개발에 많이 사용. 1. 객체 지향의 3대 특성 - 캡슐화 : 관련된 데이터와 알고리즘이 하나의 묶음으로 정리된 것. - 상속 : 이미 작성된 클래스를 이어 받아 새로운 클래스를 생성하는 기법으로 기존 코드를 재활용하여 사용. - 다형성 : 하나의 이름(방법)으로 많은 상황에 대처하는 기법. 2. 장점 - 높은 코드 재활용성..
디자인 패턴 & 스트래티지 패턴 디자인 패턴 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책. 객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴. 소스나 기계 코드로 바로 전환될수 있는 완성된 디자인은 아니며, 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿. 프로그래머가 어플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는데에 쓰이는 형식화 된 가장 좋은 관행이나, 이를 맹신하여 굳이 필요가 없을 것 같은 부분까지 디자인 패턴을 쓰는 것은 좋지 않다. 전략 패턴 (Strategy Pattern) 실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴 특정한 계열의 알고리즘들을 정의하고, 각 알고리즘을 캡슐화하며, 이 알고리즘..
015 - GET 요청과 쿼리스트링 GET 요청 무엇을 달라고 하는 요청에는 옵션이 있을 수 있다. 기본적으로 클라이언트가 요청하는 건 문서. ex) http://localhost/hello hello라는 문서를 달라는 요청. http://localhost/hello?cnt=3 (원래 100번 반복하는 문서인데) 3번만 반복해서 달라고 요청. 문서를 요청할 때 추가적인 인자를 전달할 수 있다. 이것을 쿼리 스트링이라 함. 쿼리 스트링 : 문서를 요청하면서 뭔가를 전달할 수 있는 것. 서버랑 미리 약속이 된 것이어야 함! 쿼리 스트링 값을 이용한 반복문 작성 이를 막기 위해서 기본값이란 것을 사용하는데 이는 다음 시간에.
자바 의존성 관련 - 프레임워크와 자바 웹개발 관련 프레임워크 프레임워크 프로그래밍에서 특정 운영 체제를 위한 응용 프로그램 표준 구조를 구현하는 클래스와 라이브러리 모임 소프트웨어 개발에 있어 하나의 뼈대 역할로, 재사용할 수 있는 수많은 코드를 프레임워크로 통합함으로써 개발자가 새로운 애플리케이션을 위한 표준 코드를 다시 작성하지 않아도 같이 사용된다. 프레임워크 기술 도입의 이유 : 개발의 통합성과 일관성 프레임워크와 라이브러리의 차이점 : 제어 흐름에 대한 주도성이 누구에게 있는가. (프레임워크: 사용자X / 라이브러리: 사용자) 자바 웹개발 관련 프레임워크 -스트럿츠 프레임워크 (STRUTS Framework) - JSP -스프링 프레임워크 (Spring Framework) - 경량형. Java EE에서 제공하는 대부분의 기능을 지원. -전자정부표준 프레임..
자바 의존성 관련 - 메이븐과 의존성 관리도구 Maven 자바용 프로젝트 관리 도구 Java 기반 프로젝트의 라이프사이클 관리를 위한 빌드 도구 컴파일과 빌드를 동시에 수행, 테스트를 병행하거나, 서버 측 Deploy 자원을 관리할 수 있는 환경을 제공. 또한 라이브러리 관리 기능도 내포. Java로 개발하다 보면 다양한 라이브러리를 필요로 하게 되는데, settings.xml 또는 pom.xml 파일에 필요한 라이브러리만 적으면 Maven이 알아서 다운받고 설치해주고 경로까지 지정해준다. 장점 1. 컴파일과 빌드 동시 수행 가능. 2. 서버의 Deploy 자원을 관리할 수 있는 환경을 제공. 3. 유지보수 측면에서 오픈소스 라이브러리, 프로젝트 등 관리가 용이 (pom.xml 파일을 통해 관리하기 때문) 4. IDE에 종속된 부분들 제거 가능. 5..
자바 의존성 관련 - 의존성과 라이브러리, 그리고 Jar 의존성 의존 관계임을 알아볼 수 있는 가장 쉬운 방법 : new 더보기 class Weapon{ Sword sword = new Sword(); } class Sword extends Weapon{ } 위의 코드에서 'Weapon은 Sword에 의존한다'고 표현한다. 한 클래스가 다른 클래스의 객체를 사용할 때 두 클래스 간의 관계를 의존이라고 한다. 라이브러리 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임 (ex. 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 사양 등) java에서는 미리 자주 사용되고 유용한 기능을 하는 class들을 만들어 놓고 제공한다. 이때 이 클래스들을 관련된 기능별로 분류하여 패키지 단위로..