분류 전체보기

Dev/Spring

[Spring] 스프링 컨테이너 생성 및 조회

인프런 김영한 선생님 스프링 핵심 원리 강의를 보고 정리한 내용입니다. 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext를 스프링 컨테이너라 한다. ApplicationContext는 인터페이스이다. (다형성 적용) 스프링 컨테이너는 어노테이션 기반의 자바 설정 클래스로 만들 수 있다. 스프링 컨테이너의 생성 과정 1. 스프링 컨테이너 생성 new AnnotationConfigApplicationContext(AppConfig.class); 스프링 컨테이너를 생성할 때는 구성 정보를 지정해 주어야 하며, AppConfig.cla..

Dev/Java

[Java] Checked Exception vs. UnChecked Exception

Checked Exception (확인 예외) 잘못된 코드가 아닌 잘못된 상황에서 발생하는 예외 파일 열기와 같이 정확한 코드를 구현했음에도, 외부 환경(파일이 없는 상황 등)에 따라 발생 가능 예외처리를 구현하지 않으면 컴파일 에러 발생 RuntimeException 이외의 예외들 Unchecked Exception (미확인 예외) 런타임 시 잘못 구현된 코드로 인해 발생하는 예외 컴파일 에러가 나지 않지만 적절한 예외처리가 없을 경우 프로그램이 강제 종료 컴파일 시 확인하지 않기 때문에 미확인 얘외 RuntimeException 에 포함되는 예외들

Book/클린코드

[클린코드] 5장 형식 맞추기

형식을 맞추는 목적 지금 구현한 기능이 다음 버전에서 바뀔 확률은 아주 높다. 지금 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. 적절한 행 길이를 유지하라 500줄을 넘지 않고 대부분 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다. 일반적으로 큰 파일보다 작은 파일이 이해하기 쉽다. 여러 프로젝트를 조사해 보면 평균 파일 크기는 약 65줄이다. 신문 기사처럼 작성하라 첫 문단은 전체 기사 내용을 요약한다. 쭉 읽으며 내려가면 세세한 사실이 조금씩 드러난다. 소스 파일 이름은 간단하면서도 설명이 가능하게 짓는다. 소스 파일 첫 부분은 고차원 개념과 알고리즘을 설명한다. 마지막에..

CS/블록체인

[블록체인] 블록체인 소개

허훈식 교수님의 블록체인 강의를 듣고 정리한 내용입니다. 블록체인이란? 분산 네트워크 참여 노드들 간에 (P2P 분산 네트워크) 거래 블록들을 효율적으로 검증하고 (합의 알고리즘) 위변조가 불가능하며 (보안 및 암호화) 영구적으로 기록할 수 있는 분산 원장 기술 즉, 참여하는 모든 시스템(노드)이 각자 원장을 보유하고 항상 동기화하는 것이 분산 원장이며, 이를 실현하기 위한 상태 공유 및 합의 방식을 블록체인 기술이라고 한다. 블록체인과 기존 거래 방식의 차이점 기존 거래 방식 중개 기관이 모든 거래 내역을 검증하고 저장 중앙화 시스템 블록체인 거래 방식 참여자들이 거래 내역을 검증하고 거래 내역을 블록으로 공유 검증하고 저장 탈중앙화 시스템 블록체인과 원장 블록은 거래 장부를 의미 (거래 정보들로 구성..

Book/클린코드

[클린코드] 4장 주석

나쁜 코드에는 주석을 달지 마라. 새로 짜라 - 브라이언 W. 커니핸, P.J. 플라우거 주석이 안 좋은 이유 주석은 오래될수록 코드에서 멀어진다. 주석을 유지하고 보수하기란 현실적으로 불가능하다. 처음부터 주석이 없는 방향으로 코드를 구현하는 것이 좋다. 부정확한 주석은 아예 없는 주석보다 훨씬 더 나쁘다. 그러므로 우리는 주석을 가능한 줄이도록 노력해야 한다. 주석은 나쁜 코드를 보완하지 못한다 코드에 주석을 추가하는 이유는 코드의 품질이 나쁘기 때문이다. 난장판으로 어질러 놓은 코드를 주석으로 설명할 시간에 난장판을 깨끗이 치우자 코드로 의도를 표현하자 // 직원에게 복지 혜택을 받을 자격이 있는지 검사한다. if ((employee.flags & HOURLY_FLAG) && (employee.ag..

Book/클린코드

[클린코드] 3장 함수

어떤 프로그램이든 가장 기본적인 단위는 함수이다. 때문에 함수를 잘 만드는 것은 매우 중요하다! 작게 만들어라 일반적으로 5줄보다 짧아야 한다. 하지만 5줄로 함수를 구현하는 것은 쉽지 않기 때문에 연습해야 한다. 중첩 구조가 생길 만큼 함수가 커져서는 안 된다. 한 가지만 해라 함수는 한 가지를 해야 하며, 그 한 가지를 잘해야 한다. 지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행해야 한다. 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하고 있는 것이다. 추상화 수준은 하나로 함수가 한 가지 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일해야 한다. 근본 개념과 세부사항이 한 번 뒤섞이면 함수에 세부사항이 끝없이 추가된다. 하나의 함수를 구현하고 난 뒤..

Dev/Spring

[Spring] 정적인 클래스 의존관계 vs. 동적인 객체 인스턴스 의존 관계

인프런 김영한 선생님 스프링 핵심 원리 강의를 보고 정리한 내용입니다. 의존관계는 정적인 클래스 의존관계와, 실행 시점에 결정되는 동적인 객체(인스턴스) 의존관계로 분리해서 생각해야 한다. 정적인 클래스 의존관계 클래스가 사용하는 import 코드만 보고 의존관계를 쉽게 판단할 수 있다. 정적인 의존관계는 애플리케이션을 실행하지 않아도 분석할 수 있다. by 클래스 다이어그램 하지만 클래스 의존관계만으로는 실제 어떤 객체가 클라이언트 코드에 주입될지 알 수 없다. 동적인 객체 인스턴스 의존관계 애플리케이션 실행 시점에 실제 생성된 객체 인스턴스의 참조가 연결된 의존 관계다. 애플리케이션 실행 시점(런타임)에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결..

Dev/Spring

[Spring] AppConfig와 제어의 역전(IoC)

인프런 김영한 선생님의 스프링 핵심 원리 강의를 보고 정리한 내용입니다. public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } private static MemoryMemberRepository memberRepository() { return new MemoryMemberRepository(); } public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy()); } private DiscountPolicy discountPolicy..

yo0oni
'분류 전체보기' 카테고리의 글 목록 (15 Page)