본문 바로가기

전체 글

(92)
[스프링 입문을 위한 자바 객체지향의 원리와 이해] 2장 : 자바와 절차적/구조적 프로그래밍 자바 프로그래밍 개발과 구동 자바는 자바 개발도구인 JDK를 이용해 개발되고 개발된 프로그램은 JRE에 의해 컴퓨터의 JVM 상에서 구동된다. - JDK는 컴파일러 포함 - JRE는 자바 실행기 포함 - JVM은 자바 가상 기계 자바 개발자는 본인이 사용 중인 플랫폼에 설치된 JVM용으로 프로그램을 작성하고 배포하면 각 플랫폼에 맞는 JVM이 알아서 프로그램을 아무 문제없이 구동시켜준다. -> 이러한 자바의 특성을 "Write Once Run Anywhere" 라고 한다. 객체 지향 프로그램의 메모리 사용 방식 프로그램 실행에 따른 T 메모리 구조 변화 T메모리 구조는 스태틱 영역, 스택 영역, 힙 영역으로 나눌 수 있다. 실행 코드 public class Start { public static void..
[스프링 입문을 위한 자바 객체지향의 원리와 이해] 1장 : 사람을 사랑한 기술 스프링은 객체지향의 기반 위에서 만들어졌다. 따라서, 객체지향에 대한 이해는 스프링 프레임워크를 이해하기 위한 필수 조건이다. 스프링은 객체지향의 기반 위에 서있다. OOP - 자바, C++, C# [개념, 제품] ???? - 스프링 ⇒ ????에는 무엇이 들어갈까? 스프링 프레임워크 개념 방대한 제품 글쓴이가 생각하는 스프링 프레임워크의 개념은 → OOP 프레임워크 따라서, 스프링을 알려면 객체지향을 이해해야만 한다. 또, 프레임워크가 무엇인지 이해해야 한다. 스프링이 어려운 이유? OOP를 잘 모르거나 오해하고 있는 경우 스프링 삼각형 : IoC/DI, AOP, PSA (스프링을 지배하는 3요소) 스프링 삼각형은 POJO에 3가지 유형의 진동을 줌으로써 거대한 프레임워크를 완성함! → 7장 학습 스프..
[1주에 1번 자문자답] VLDB 기술, 힙, 인터럽트, 추상클래스 인터페이스, 서블릿 ✋🏻 데이터베이스 복제에 대해 설명 데이터베이스를 마스터와 슬레이브로 나눠 마스터의 내용을 슬레이브에 복제합니다. 동일한 데이터베이스의 내용을 가지므로 조회에 대한 부하를 분산시킬 수 있습니다. 하지만, 생성, 수정, 삭제 요청 시에는 마스터가 이를 받아 바이너리로그를 생성하여 슬레이브로 넘깁니다. ✋🏻 데이터베이스 파티셔닝이 무엇이고 장/단점이 무엇인가요? 테이블을 파티션이라는 더 작은 단위로 나누어 관리하는 기법입니다. DB에 저장하는 데이터가 커지면 성능저하 문제가 발생합니다. 이때 인덱스를 달아도 B-Tree depth가 깊어져 비교회수가 증가하기 때문에 성능 향상에 한계가 있습니다. 그렇기 때문에 테이블을 더 작은 단위로 분할하면 필요한 파티션만 접근하기 때문에 성능 향상의 효과를 볼수 있습니다..
[자바 코딩의 기술] 8장 : 데이터 흐름 8장에서는 자바 함수형 프로그램의 핵심 개념을 설명하겠다. - 함수형 방식이 명령형 방식을 월등히 능가하는 경우. - 익명 클래스를 명쾌하게 대체하는 방법 - 자료 구조를 더 효율적으로 순회하는 방법 - 옵셔널로 프로그램을 덜 취약하게 만드는 방법 8.1 익명 클래스 대신 람다 사용하기 문제 코드 class Calculator { Map values = new HashMap(); Double square(Double x) { Function squareFunction = new Function() { @Override public Double apply(Double value) { return value * value; } }; return values.computeIfAbsent(x, squareFun..
[JAVA] 패키지에 대해.. 패키지 클래스를 구분 짓는 폴더의 개념 소스의 윗 줄에 위치하며, 소스 하나에 하나만 존재한다. 패키지 이름과 위치한 폴더의 이름은 같다. 모든 클래스에는 정의된 클래스 이름과 패키지 이름이 있따. 이 둘을 합치면 완전한 클래스를 표현할 수 있다. FQCN(Fully Qualified Class Name)이라고 한다. ex) String클래스의 패키지 --> java.lang.String 패키지 이름 규칙 java -> 자바 기본 패키지 javax -> 자바 확장 패키지 org -> 일반적으로 비영리단체 패키지 com -> 일반적으로 영리단체 패키지 빌트인 패키지는 자바가 기본적으로 제공하는 패키지 및 클래스이다. 따로 임포트하지 않아도 자바가 알아서 가져온다. (import 하지 않아도 됨) impor..
[1주에 1번 자문자답] 정규화, JVM, PCB, WAS 관련 질문 ✋🏻 데이터베이스를 정규화 하는 이유는 무엇인가요? 데이터베이스의 잘못된 설계로 발생할 수 있는 "데이터 중복"과 "이상 현상"을 해결하기 위해 정규화를 수행합니다. 이상현상에 종류에는 삽입 이상, 갱신 이상, 삭제 이상이 있습니다. ✋🏻 데이터베이스 이상 현상에 대해 설명해주세요. 삽입 이상은 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 현상입니다. 갱신 이상은 중복되는 데이터 중 일부만 수정했을 때 발생하는 데이터 불일치 현상입니다. 삭제 이상은 어떤 데이터를 삭제하려면 원하지 않는 데이터도 삭제되는 현상입니다. ✋🏻 정규화의 장점과 단점 장점 데이터베이스 변경 시 이상현상 제거 데이터 중복 최소화 사용자에게 데이터 모델을 의미있게 제공 단점 테이블 분해로 인해 테이블 간 조인 연..
[자바 코딩의 기술] 7장 : 객체 디자인 자바의 클래스와 객체를 올바르게 기능만 동작하게 하는 것은 부족하다! 보기 좋아야 하고 사용하기도 편해야만 한다!! 7장에서는 더 객체 지향적이고 강력한 코드를 만드는데 유용하게 쓰일 자바의 보편적인 디자인 원리를 강조하겠다. 7.1 불 매개변수로 메서드 분할 문제 코드 void log(String message, boolean classified) throws IOException { if (classified) { writeMessage(message, CAPTAIN_LOG); } else { writeMessage(message, CREW_LOG); } } 위 코드는 boolean의 상태에 따라 서로 다른 작업을 수행한다. 이는 동작에 문제가 없지만 읽기 불편하고 메서드를 사용하는 사람이 True와..
[자바 코딩의 기술] 6장 : 올바르게 드러내기 6.1 Given-When-Then으로 테스트 구조화 JUnit은 자바 클래스 라이브러리에는 속하지 않지만 자바에서 단위 테스트 작성하는 사실상의 표준이다. 메서드에 @Test만 추가하면 JUnit이 알아서 테스트로 실행한다. 문제 코드 @Test void setPlanetarySpeedIs7667() { CruiseControl cruiseControl = new CruiseControl(); cruiseControl.setPreset(SpeedPreset.PLANETARY_SPEED); Assertions.assertTrue(7667 == cruiseControl.getTargetSpeedKmh()); } 위 테스트는 올바르게 작동한다. 하지만 우리는 좀 더 코드를 구조화하여 읽기 쉽게 바꿀 수도 있..

반응형