목록기타 (12)
코드와이
데이터베이스 풀 Connection Pool 클라이어트의 요청에 따라 각 애플리케이션의 스레드에서 DB에 접근하기 위해서는 Connection이 필요하다 이런 Connection을 여러 개 생성해 두어 저장하는 공간(캐시)을 말한다. 또는 필요한 Connection을 꺼내어 쓰는 기법을 말한다. DB 접근 웹 컨테이너가 실행되면서 DB와 연결된 Connection 객체들을 미리 생성하여 pool에 저장 DB에 요청 시 pool에서 Connections객체를 가져와 DB에 접근 처리가 끝나면 다시 pool에 반환 Connection이 부족하면 해당 클라이언트는 대기 상태로 전환시키고 Pool에 Connection이 반환되면 대기 상태에 있는 클라이언트들에게 순차적으로 제공된다 사용 이유 매 연결마다 Con..
Thread 개념 하나의 프로세스 내부에서 독립적으로 실행되는 하나의 작업 단위를 말하며, 세부적으로는 운영체제에 의해 관리되는 하나의 작업 혹은 태스크를 의미한다. JVM에 의해 하나의 프로세스가 발생하고 main() 안의 실행문들이 하나의 스레드이다. main() 이외의 또 다른 스레드를 만들기 위해선 Thread 클래스를 상속하거나 Runnable 인터페이스를 구현한다. 다중 스레드 작업 시에는 각 스레드끼리 정보를 주고 받을 수 있어 처리 과정의 오류를 줄일 수 있다. 프로세스끼리는 정보를 주고 받을 수 없다. 멀티스레딩 개념 여러 스레드를 동시에 실행시키는 응용프로그램을 작성하는 기법 장점 메모리 공유로 인한 시스템 자원 소모 감소 동시에 두 가지 이상의 활동을 하는 것이 가능 단점 서로 자원을..
디자인 패턴 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 문제들이 또 발생했을 때 재사용할 수 있는 솔루션 이미 만들어져서 잘 되는 것을 다시 만들 필요가 없다는 뜻 GoF 디자인 패턴 More Actions 생성패턴구조패턴행위패턴 구분 생성패턴 구조패턴 행위패턴 종류 추상 팩토리 빌더 팩토리메서드 프로토타입 싱글턴 어댑터 브리지 컴퍼지트 데커레이터 퍼사드 플라이웨이트 프록시 책임 연쇄 커맨드 인터프리터 이터레이터 미디에이터 메멘토 옵서저 스테이트 스트래티지 탬플릿 메서드 비지터 개념 객체 생성에 관련된 패턴 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴 싱글턴 패턴 개념 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성..
빌드 관리 도구 java 코드와 프로젝트 내에 필요한 각종 xml, properties, jar 파일들을 JVM인 WAS가 인식할 수 있도록 패키징 해주는 빌드 과정( = 빌드 자동화 도구) 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램 외부 라이브러리들을 다운로드하고 해당 라이브러리를 사용하여 개발해야하는 많은 경우에 이를 간편히 관리해주는 도구 Maven Java용 프로젝트 관리도구로 Apache의 Ant 대안으로 만들어졌다. 빌드 중인 프로젝트, 빌드 순서, 다양한 외부 라이브러리 종속성 관계를 pom.xml 파일에 명시한다. maven은 외부 저장소에서 필요한 라이브러리와 플러그인들을 다운로드 한 다음, 로컬시스템의 캐시에 모두 저장한다. Gradle 꽤 큰 규모로 예상되는 ..
Web Server 개념 소프트웨어와 하드웨어로 구분된다. 기능 HTTP프로토콜을 기반으로 하여 웹 브라우저의 요청을 서비스하는 기능 기능 1 정적인 컨텐츠 제공 WAS를 거치지 않고 바로 자원을 제공 기능 2 동적인 컨텐츠 제공을 위한 요청 전달 클라이언트의 요청(Request)을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달(Response) Apache Server, Nginx 등 WAS 개념 DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버 HTTP를 통해 컨퓨터나 장치에 애플리케이션을 수행해주는 미들웨어 웹 컨테이너 혹은 서클릿 컨테이너라고도 불린다. 기능 Web Server + Web Container Web Server 기능들을 ..
CVS, SVN, Git 형상관리 툴 소스의 변화를 끊임없이 관리하는 툴 소스를 버전별로 관리할 수 있고, 실수할 경우 원복 가능하게 하는 툴 CVS 개념 GNU 라이센스 중앙에 위치한 Repository에 파일을 저장하고 모든 사용자가 접근 가능하도록 설계 checkout으로 파일 복사, commit으로 변경사항 저장 최종 버전의 소스만 관리 장점 오랫동안 사용이 되었으며 안정적 파일 전체를 저장하지 않고 변경사항만 저장하여 적은 용량 사용 단점 파일 이동이나 이름 변경은 버전 변경 미발생 버전 분기가 힘들고, 장기간 분기된 버전 운영에 대해 미설계 commit 실패 시 롤백 불가능 느린 속도 혼자 갭라할 경우 최종버전만 관리하는 CVS 툴 사용이 편리 SVN 개념 CVS와 높은 호환성을 유지하며 약간..
프레임워크 vs 라이브러리 프레임워크 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것 자동차의 프레임(뼈대) 라이브러리 자주 사용되는 로직을 재사용하기 편리하도록 잘 정리한 일련의 코드들의 집합 자동차의 기능을 하는 부품(바퀴, 헤드라이트, 와이퍼 등) 한 번 정해진 자동차의 프레임은 바꾸질 못한다. 그러나 바퀴나 선루프, 헤드라이트 등은 비교적 다른 종류로 쉽게 바꿀 수가 있다. Reference https://moolgogiheart.tistory.com/87
TDD 테스트 주도 개발 : 테스트가 개발을 이끌어 나간다 구체적인 행동 레벨에서의 TDD 테스트를 먼저 만들고 그 테스트를 통과하기 위한 코드를 짜는 것 추상적인 레벨에서의 TDD 결정과 피드백 사이의 갭을 조절하기 위한 테크닉 결정 이 방법으로 해야지, 이 부분은 이걸 이용해서 짜야지 등을 결정 피드백 프로그램을 하다보면 성공/실패라는 피드백을 받는다. 이 둘 사이의 갭이 생긴다 갭이 커질수록 문제 갭을 모르면 더 큰 문제 따라서 결정했을 때의 코드를 테스트 프로그램을 실행한 결과로 성공/실패라는 프로그램 상의 피드백을 받아야 하고 그 둘 사이의 갭을 내가 인식한다면 TDD를 하고 있는 것이다. TDD를 왜 해야 할까? 불확실성이 높을 때 피드백과 협력이 중요하기 때문에 TDD가 도움이 된다. 어떤 ..