[Java8] 동작/행위 파라미터 (+람다식)
2021. 5. 25. 12:16
Java
안녕하세요 오늘은 동작 파라미터 방식의 디자인 패턴과 Java8에서 추가 된 문법인 람다에 대해서 알아보겠습니다. 동작 파라미터화 Behavior Parameterization List inventory = Arrays.asList( new Apple(80,"green"), new Apple(155, "green"), new Apple(120, "red")); 농부의 재고목록 조사를 위한 프로그램이 있습니다. 우선 사과의 색과 무게의 정보가 담긴 List를 생성합니다. 인벤토리에 사과 3개를 담았습니다. 프로그램을 사용하다보면 한 농부 사용자가 "녹색 사과만 찾고싶어요" 라는 요구사항을 낼 수 있습니다. 또 다음날은 "100g 이상인 녹색 사과를 찾고 싶어요" 라는 요구사항이 올 수 있습니다. 이처럼 변..
스프링 어노테이션 :: Spring Annotation
2021. 5. 18. 13:11
Spring Boot
Annotation 이란? Meta-Data 데이터를 위한 데이터 구조화 된 정보를 분석, 분류하고 부가적 정보를 추가하기 위해 데이터 뒤에 따라가는 정보 메타 데이터는 설정 정보 저장의 역할을 하고 이전에는 이를 xml에 기재하였는데 설정 정보가 점점 방대해지면서 어노테이션이 등장하게 되었다. ==> 기존의 코드와 설정이 분리 된 방식에서 코드에 설정을 명시하는 방식으로 변화하며 일종의 주석이 의미를 가지게 되어 컴파일과 런타임에 영향을 주는 것 Annotation의 용도 컴파일러에게 프로그래밍 문법 에러를 체크하도록 정보 제공 IDE가 빌드 및 배치 시 코드를 자동 생성하도록 정보 제공 런타임 시 특정 기능을 실행하도록 정보 제공 -> 스프링에서 주로 사용 Annotation의 용법 어노테이션 파일을..
[Java] 예외 처리 및 구분 Exception, throw, throws
2021. 5. 17. 00:40
Java
예외(Exception)란? 프로그래밍 언어의 문법에 맞지 않게 프로그램을 작성하면 컴파일 오류가 발생한다. 그렇기 때문에 실행 이전에 문법에 맞지 않게 작성 된 오류는 미리 걸러내어야 하는데, 프로그램 실행 중에 동적으로 변하는 배열의 인덱스같은 경우 컴파일 시점에서 걸러낼 수가 없다. 이와 같은 프로그램 실행 중에 발생하는 런타임 오류(Run Time Error)는 미리 걸러낼 수가 없어 자바에서는 예외(Exception)을 사용하여 처리한다. JVM이 프로그램을 실행하다가 예외가 발생하는 경우, 그 예외에 맞는 오브젝트를 throw라는 문법을 통해 예외를 발생시킨다. 자바에서 제공하는 예외 아래의 Exception Hierachy in Java 이미지를 보면, 자바 다형성에 의해 Exception으..
스프링 싱글톤 :: Spring Singleton
2021. 5. 11. 01:03
Spring Boot
안녕하세요 이번 포스팅에서는 Spring Singleton에 대해 알아보겠습니다. 웹 어플리케이션과 싱글톤 현재 대부분의 스프링은 웹 어플리케이션입니다. 웹 어플리케이션은 보통 많은 고객이 동시에 요청을 하기 때문에 request마다 객체를 새로 생성하면 많은 메모리를 낭비하게 됩니다. 이에 해당 객체를 딱 1개만 생성하고 공유하도록 설계한 것이 스프링 싱글톤입니다. Spring Singleton vs Singleton Pattern 싱글톤 패턴은 클래스 로더에 의해, 스프링 싱글톤은 스프링 컨테이너(ApplicationContext)에 의해 one instance가 보장됩니다. 컨테이너 내에 특정 클래스에 대한 Bean이 정의되면, 스프링 컨테이너가 그 클래스에 대한 one instance를 생성하는 ..
자바 싱글톤 패턴 :: Java Singleton Pattern
2021. 5. 2. 22:06
Java
안녕하세요~ 스프링 싱글톤 패턴을 공부하기 위해 선행하는 'Singleton Pattern in Java' 포스팅입니다. 객체 지향 프로그래밍에서, 싱글톤 클래스란 한 번에 하나의 객체만 가질 수 있는 클래스를 말합니다. 싱글톤 클래스를 인스턴스화하면 새 변수도 생성 된 첫 번째 인스턴스를 가리키게 됩니다. 따라서, 인스턴스를 통해 클래스 내부의 변수를 수정하면 생성 된 단일 인스턴스의 변수에 영향을 미치며 정의 된 해당 클래스 유형의 변수를 통해 해당 변수에 엑세스할 수 있습니다. [ To design a singleton class ] 1. private로 생성자 만들기 생성자가 public이면 외부 클래스에서 인스턴스를 여러 개 생성할 수 있다. 생성자를 반드시 명시적으로 만들고 private으로 ..
[JAVA] 백준 1914번 하노이 탑
2021. 2. 26. 16:05
Algorithm
분류 : 재귀 (Recursion) URI : www.acmicpc.net/problem/1914 [ 이동 횟수 구하기 ] $ a_n = a_{n-1} + 1 + a_{n-1} $ n개의 탑을 1번에서 3번으로 이동하려면 n-1개를 1 -> 2 이동 남은 1개를 1 -> 3 이동 n-1개를 2 -> 3 이동 $ a_n = 2a_{n-1} + 1 $ $ a_{n+1} = 2a_n + 1 $ 양 변에 1을 더하면 $ a_{n+1} + 1 = 2a_n + 1 + 1 $ $ a_{n+1} + 1 = 2(a_n + 1) $ $ a_n + 1 $ 을 $ b_{n} $ 이라고 하면 $ b_{n} = a_n + 1 $ $ b_{n+1} = 2b_n $ $ a_1 = 1 $ 이므로 $ b_1 = 2 $ $ b_{n} $..
MyBatis Framework 개념, Spring Boot 연동
2020. 11. 16. 15:47
Spring Boot
MyBatis 개발자가 지정한 SQL, 저장 프로시저 및 고급 매핑을 지원하는 Persistence Framework Persistence Framework 데이터 지속성을 위한 데이터 CRUD를 다루는 클래스 및 설정 파일들의 집합 JDBC의 반복되는 코드를 제거해주며 프로그램 코드와 SQL을 분리할 수 있다. Persistence Framework 종류 SQL Mapper : mybatis SQL문으로 직접 DB 접근 Object Relational Mapper : hibernate 자바 객체를 통해 간접적으로 DB 접근 MyBatisConfig.java import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.con..
[Oracle] Index의 종류
2020. 9. 21. 00:17
SQL
[ FBI Index ] 함수 기반 인덱스 CREATE INDEX idx_sal_fbi ON emp(sal); -- sal 인덱스를 사용하지 않은 조건 => index suppressing error SELECT ename FROM emp WHERE sal+200 = 1000; -- 속도 빠르다 ~~~ CREATE INDEX idx_sal_fbi1 ON emp(sal+200); SELECT 문을 통해 sal + 200 을 조건으로 검색하고자 할 때, idx_sal_fbi 인덱스와 같이 sal 을 기준으로 생성하면 해당 인덱스를 사용하지 않게 된다. => Index Suppressing Error => sal+200 을 기준으로 인덱스를 재생성 [ Descending Index ] 내림차순 인덱스 CREA..