장소

롯데리조트 속초 (강원도 속초시 대포항길 186)


일정

 날짜

 시간 

 장소

 일정

 12월 23일

 10:00

 집

 출발

 

 13:00

 

 점심

 

 15:00

 리조트 - 체크인

 

  15:00 ~ 19:00

 리조트 - 워터 파크

 

 

 19:30

 외옹치항

 저녁

  20:00 리조트 - 루프탑 야경, 맥주
 12월 24일

 07:30

 설악해맞이공원 또는 영금정

 일출 구경 (7시 40분 일출)

 

 09:00

 속초 두두 아침
  10:00 ~  

 오전 일정 (저녁 장 봐야 함)

  13:00  점심
  15:00 ~ 19:00

 리조트 - 워터파크

 

  19:00

 리조트 - 객실

 저녁 - 홈파티

    
 12월 25일

 08:00 ~ 10:00

 애슐리 설악비치점

 아침, 9시 전에 가야 함

    
   집 끝



식당 후보

 이름 

 메뉴

 시간 및 거리

 운영시간

 속초 두두 

 짬뽕순두부, 순두부, 교동짬뽕순두부

 5분 (2.14km)

 

 북한횟집 

 대게, 회

 3분 (1.70km)

 

 속초 항아리 물회 

 홍게 라면, 항아리 물회 , 오징어 순대

 4분 (1.23km)

 

 낙천회관 

 홍게 냉면

 12분 (6.06km)

 
 중앙 시장 만석닭가정, 꼬마김밥

 1시간 4분 (62.94km)

 
 애슐리 설악비치점

 조식(평일/주말) 9,900원

 17분 (12.8km) 08:00 ~ 10:00 / 입장 9시 마감
 바다정원카페 물회 파스타 : 18,000원
 홍게로제 파스타 : 15,000원
 18분 (8km) 09:00 - 23:00 : 카페 & 베이커리
 09:00 - 21:00 : 레스토랑





코스 후보

 이름

 설명

 시간 및 거리

 이용 시간

 설악해맞이공원

 

 6분 (2.5km)

 

 중앙시장

 시장

 1시간 4분 (62.94km)

 

 속초등대전망대

 속초 8경중 하나

 13분 (6km)

 하절기 (4~10월) 06:00 ~ 20:00 
 동절기 (11~3월) 07:00 ~ 18:00 
 전시실 및 전망대 09:00 ~ 18:00
 속초 영금정

 속초 8경중 하나

 13분 (6km)

 
 테디베어뮤지엄 설악

 속초 IC 근처

 21분 (13.6km)

 성인 7,000원

 청소년 6,000원

 어린이 5,000원


 평상시 9시 ~ 19시





리조트 부대시설

 이름 

 주요시설

 위치

 기타

 워터파크

 워터 슬라이드

 워터 플렉스

 워터 마사지

 찜질방

 

 종일권 10:00 ~ 19:00, 성인 40,000원, 소인 25,000원

 오후권 15:00 ~ 19:00, 성인 20,000원, 소인 15,000원

 인피니티 풀

 

 

 10:00 ~ 22:00

 워터파크 입장 후 인피니티 풀 전용 동선 이용

 ※ 20:00 이후 인피니티 풀 무료입장


 속초의 푸른 바다를 파노라마로 즐길 수 있는 최고의 전망

 카페 플레이트

 

 1층

 모든 테이블은 바닷가가 보이는 창가로 위치

 조식 : 오전 7시~10시

 석식 : 저녁 6시~10시
 조식 가격 : 대인 29,000원 , 소인 19,000원
 석식 가격 : 대인 55,000원, 소인 25,000원

 

 

 

 

 

 

 

 





저작자 표시 비영리 변경 금지
신고

Leave a Comment

.class에 대해 mock 처리를 해야 할 때가 있다.

이럴 때는 역시 파워목!

MockGateway.MOCK_GET_CLASS_METHOD를 true로 설정하면 된다.


TestCode.java



저작자 표시 비영리 변경 금지
신고

Leave a Comment

단위 테스트시에 객체 생성이 될 때, 예외가 발생을 하게 해야 하는 경우가 있다.

이런 경우에 PowerMock을 이용하여 테스트한다.


- 객체 생성시 예외 발생시키기 -





저작자 표시 비영리 변경 금지
신고

Leave a Comment

생성자가 private일 경우 테스트 필요시 처리.


생성자 호출



파라미터가 있는 생성자의 경우



Method 호출



필드값 주입



저작자 표시 비영리 변경 금지
신고

Leave a Comment

단위 테스트시에 파라미터에 따라서 다양하게 테스트를 해야 하는 경우가 있다.

이런 경우에 변경되는 파라미터에 대해 일일히 개발하거나 파라미터를 공통화해서 진행을 하기도 하는데

이럴 필요 없이 이미 다양한 파라미터에 대해 테스트할 수 있는 Parameterized가 있다.


- 사용법 - 

1. @RunWith(Parameterized.class) 선언 필요

2. 변경되면서 테스트가 필요한 파라미터 조건 선언

2.1. @Parameter를 붙여준다.

2.2. 파라미터는 반드시 public으로 선언해줘야 한다.


3. 파라미터 값들에 대한 테스트 목록 설정이 필요

3.1. @Parameters public static Collection<Object[]> data()로 선언해서 구현


ParamTest.java






Reference

[1] Mkyong (https://www.mkyong.com/unittest/junit-4-tutorial-6-parameterized-test/)

[2] junit team (https://github.com/junit-team/junit4/wiki/parameterized-tests)

저작자 표시 비영리 변경 금지
신고

Leave a Comment

pom.xml 테스트 설정

powermock 설정시 일부 라이브러리간 실행 안되는 문제가 안되서 기록해준다.


Test.java






pom.xml










저작자 표시 비영리 변경 금지
신고

Leave a Comment


MySQL 명령어

테이블 통계정보

mysql> show table status like 'atin_story'\G


인덱스 통계정보

mysql> show index from atin_story\G


쿼리 플랜
mysql> explain select sql


인덱스 추가/제거

alter table table_name drop index index_name;

alter table table_name add index index_name(colunm1, column2);


MySQL 인덱스

  • B-Tree 인덱스 구조 사용
  • NULL을 값으로 인식하여 인덱스에 포함됨
  • 인덱싱 컬럼에 대한 IN절은 Expansion으로 처리됨( UNION ALL )
  • DESC 인덱스는 지원하지 않음


MySQL 플랜

  • select_type :  SELECT 유형
  • type :  Access type
    • Good : Const, system, eq_ref
    • Bad : ALL(테이블풀스캔),  index(인덱스풀스캔)
    • 처리범위에 따라 다름 : range, ref
  • extra : 실행계획을 생성할 때 적용하는 최적화 기법을 표현하거나 부가정보
    • Good : using index(커버링인덱스), using where(메모리에서 필터링)
    • Bad : using filesort, using join buffer
  • 특정인덱스를 사용하거나 사용하지 않도록 하는 인덱스 힌트는 아래와 같다
    • USE INDEX/FORCE INDEX 
    • IGNORE INDEX
    • STRAIGHT JOIN : 드라이빙 순서를 고정할 때 사용하는 힌트


저작자 표시 비영리 변경 금지
신고

'Infra > RDBMS' 카테고리의 다른 글

MySQL 명령어 정리  (0) 2017.11.03
Oracle 테이블 스페이스 변경  (0) 2014.01.17
오라클 DBF 용량 줄이기  (0) 2013.06.17
오라클 백업  (0) 2013.06.06
테이블 제약 조건 확인  (0) 2013.05.20
ORA-00600: internal error code, arguments: [kokle_lob2lob13:input mismatch] 해결  (2) 2013.04.23
Postgresql 랜덤값 출력  (0) 2011.10.14
DB Password 부호화 복호화  (0) 2011.04.19
DB2 TimeStamp  (0) 2009.08.24
DB2 SEQUENCE 생성  (0) 2009.07.16
DB2에서 Temp테이블 사용법  (0) 2009.07.07

Leave a Comment


기본 JDK 지원 버전 업데이트

  • Spring Framework 5.0 최소 요구 사항 : Java 8
  • 전체 Spring 프레임 워크 5.0 코드베이스는 Java 8에서 실행


Core Framework Revision

  • Java 8 reflection 기반으로 Spring Framework 5.0의 메소드 매개 변수에 효율적으로 액세스 가능
  • 코어 스프링 인터페이스는 이제 Java 8 기본 메소드를 기반으로 선택적 선언을 제공
  • @ Nullable 및 @ NotNull 주석은 nullable 인수 및 반환 값을 명시적으로 표시
    • 런타임에 NullPointerExceptions 대신 컴파일 타임에 Null 값을 처리  가능


Core Container Updates

  • 선택적 주입 포인트에 대한 지표로 @Nullable 어노테이션 지원
  • GenericApplicationContext/AnnotationConfigApplicationContext 함수형 스타일 형태
  • 인터페이스 메소드에서 트랜잭션, 캐싱, 비동기 어노테이션 감지
  • 버전 정보 없는 XML 설정 네임스페이스
  • classpath 스캐닝 대신에 후보 구성 요소 색인 지원


Reactive Programming Model

  • Reactive Stack Web Framework이 핵심
  • 완전히 반응적이고 논 블로킹
  • 소수의 스레드로 확장 할 수있는 이벤트 루프 스타일 처리에 적합
  • Reactive Streams : 
    • Netflix, Pivotal, Typesafe, Red Hat, Oracle, Twitter 및 Spray.io의 엔지니어가 개발 한 API 사양
    • 리액티브 프로그래밍 구현을 위한 공통 API 제공
    • Hibernate,  JPA와 유사. (JPA가 API이고, Hibernate가 구현)
  • Reactive Streams API는 공식적으로 Java 9의 일부
  • Java 8에서는 Reactive Streams API 사양에 대한 종속성을 포함
  • Spring Framework 5.0은 Reactive Streams API 사양을 구현 한 Project Reactor 기반


Spring-webflux - 서버 측 두 가지 프로그래밍 모델을 가짐

  • @Controller와 Spring MVC의 다른 Annotation으로 된 Annotation 기반
  • Java 8 lambda를 사용한 함수형 스타일 라우팅 및 처리


Spring Webflux를 사용하면 RestTemplate의 대안으로 반응적이고 non-blocking적인 WebClient를 만들 수 있음



Kotlin을 사용한 함수형 프로그래밍

  • JetBrains Kotlin 언어 지원
  • Kotlin은 JVM 상단에서 실행되지만 이에 국한되지 않음


테스팅 개선

  • Junit 5 Jupiter 완벽 지원
  • Jupiter 서브 프로젝트는 프로그래밍 및 확장 모델을 제공 할뿐만 아니라 Spring에서 Jupiter 기반 테스트를 실행하는 테스트 엔진을 제공
  • Spring Framework 5는 Spring TestContext Framework에서 병렬 테스트 실행을 지원
  • 리액티브 프로그래밍 모델의 경우 스프링 테스트에는 이제 Spring WebFlux에 대한 테스트 지원을 통합하기위한 WebTestClient가 포함


지원 중단 패키지

  • beans.factory.access
  • jdbc.support.nativejdbc
  • mock.staticmock
  • web.view. tiles2M
  • orm.hibernate3
  • orm.hibernate4


라이브러리 지원 중단

  • Portlet
  • Velocity
  • JasperReports
  • XMLBeans
  • JDO
  • Guava


라이브러리 지원

  • Jackson 2.6+
  • EhCache 2.10+ / 3.0 GA
  • Hibernate 5.0+
  • JDBC 4.0+
  • XmlUnit 2.x+
  • OkHttp 3.x+
  • Netty 4.1+


Summarry

  • 중요한 패러다임 전환 - 리액티브 프로그래밍
  • 스프링 데이터 팀은 이미 MongoDB 및 Redis에 대한 리액티브 프로그래밍을 대응함
  • JDBC 지원 불가(JDBC 스펙 자체가 차단중, 전통적인 JDBC 데이터베이스로 리액티브 프로그램을 보는 것은 현재로서는 불가)
  • Spring Framework 5는 Reactive Streams 표준 API의 구현체인 Reactor를 사용중


Reference

[1] What's new in Spring framework 5(https://springframework.guru/what-is-new-with-spring-framework-5/)

[2] Web on Reactive Stack (https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html#spring-webflux)

[3] What's New in the Spring Framework (https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-the-Spring-Framework)

저작자 표시 비영리 변경 금지
신고

Leave a Comment

JVM 메모리 구조 (JVM Memory structure)



  • JAVA Source : 사용자가 작성한 JAVA 코드
  • JAVA Compiler : JAVA 코드를 Byte Code로 변환시켜주는 기능
  • Class Loader : Class파일을 메모리(Runtime Data Area)에 적재하는 기능
  • Execution Engine : Byte Code를 실행 가능하게 해석해주는 기능
  • Runtime Data Area : 프로그램을 수행하기 위해 OS에서 할당 받은 메모리 공간


Runtime Data Area

Method Area

  • Method Area, Class Area, Code Area, Static Area 로 불리어짐
  • JVM이 읽어들인 클래스와 인터페이스 대한 런타임 상수 풀, 멤버 변수(필드), 클래스 변수(Static 변수), 생성자와 메소드를 저장하는 공간
  • 클래스 파일의 바이트 코드가 로드되는 곳
  • 힙이 아닌 영역 (HotSpot JVM 구현에서)
  • 2개의 주요 공간으로 분리됨
    • Permanent Generation
      • 클래스 정의, 구조, 메소드, 필드, 메소드 (데이터 및 코드) 및 상수로부터 클래스 관련 데이터를 저장
      • -XX : PermSize 및 -XX : MaxPermSize를 사용하여 규제 될 수 있음
      • PermGen 공간이 부족하면 java.lang.OutOfMemoryError가 발생할 수 있음
    • Code Cache
      • 캐시 영역은 컴파일 된 코드를 저장하는 데 사용
      • 컴파일 된 코드는 원시 코드 (하드웨어 고유)일 뿐이며, Oracle HotSpot JVM에 고유 한 JIT (Just In Time) 컴파일러가 처리


Stack

  • Last In First Out (LIFO)
  • 메서드 호출 시마다 각각의 스택프레임(그 메서드만을 위한 공간)이 생성
  • 메서드 안에서 사용되어지는 값들 저장, 호출된 메서드의 매개변수, 지역변수, 리턴 값 및 연산 시 일어나는 값들을 임시로 저장
  • 메서드 수행이 끝나면 프레임별로 삭제


Heap

  • new 연산자로 생성된 객체와 배열을 저장하는 공간
  • 클래스 영역에 로드된 클래스만 생성가능
  • Garbage Collector를 통해 메모리 반환
  • Permanent Generation : 생성된 객체들의 정보의 주소 값이 저장된 공간
  • New Area
    • Eden : 객체들이 최초로 생성되는 공간
    • Survivor : Eden에서 참조되는 객체들이 저장되는 공간
  • Old Area : New Area에서 일정시간이상 참조되고 있는 객체들이 저장되는 공간


Native Method

  • JNI(Java Native Interface)를 통해 호출되는 C/C++ 등의 코드를 수행하기 위한 스택
  • 네이티브 메소드의 매개변수, 지역변수 등을 바이트 코드로 저장
  • 자바 외의 다른 언어에서 제공되는 메서드들이 저장되는 공간

PC Register

  • 현재 수행 중인 JVM 명령 주소를 갖음
  • 프로그램 실행은 CPU에서 인스트럭션(Instruction)을 수행.
  • CPU는 인스트럭션을 수행하는 동안 필요한 정보를 CPU 내 기억장치인 레지스터에 저장
  • 연산 결과값을 메모리에 전달하기 전 저장하는 CPU 내의 기억장치
  • Thread가 생성 될 때마다 생성되는 공간
  • Thread가 어떤 부분을 어떤 명령으로 실행할 지에 대한 기록
  • 현재 실행되는 부분의 명령과 주소를 저장


JAVA8에서 JVM 메모리 모델 변경사항

Perm 영역이 없어지고 Metaspace 공간으로 변경

PermGen 관련 JVM 옵션 (예 : -XX : PermSize 및 -XX : MaxPermSize)는 이제 무시됨

  • Metaspcae
    • 네이티브 힙 메모리의 일부
    • -XX를 사용하여 조정 가능 MetaspaceSize 및 -XX : MaxMetaspaceSize
    • java.lang.OutOfMemoryError : 네이티브 공간이 고갈되면 메타 데이터 공간이 수신



Reference

[1] JVM PergmGen - Where art thou? (https://www.javacodegeeks.com/2014/09/jvm-permgen-where-art-thou.html)

[2] Java Garbage Collection (http://d2.naver.com/helloworld/1329)

[3] RUNTIME DATA AREA - JABVA'S MEMORY MODEL (http://www.pointsoftware.ch/en/under-the-hood-runtime-data-areas-javas-memory-model/)

[4] How Garbage Collection works in Java (http://javarevisited.blogspot.kr/2011/04/garbage-collection-in-java.html)

저작자 표시 비영리 변경 금지
신고

Leave a Comment

Transaction

  • 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위
  • 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미
  • 이론적으로 데이터베이스 시스템은 각각의 트랜잭션에 대해 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 영구성(Durability)을 보장
  • 어떤 시스템들에서는 트랜잭션들은 논리적 작업 단위(LUW, Logical Units of Work)로 부름


ACID

데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질

  • 원자성(Atomicity)

    • 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력

  • 일관성(Consistency)

    • 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미

  • 고립성(Isolation)

    • 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미

  • 지속성(Durability)

    • 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미한다. 시스템 문제, DB 일관성 체크 등을 하더라도 유지되어야 함


BASE

ACID와 대조적으로 가용성과 성능을 중시하는 특성을 가진 분산 시스템의 특성

  • Basically Available
    • 가용성을 중시, Optimistic Locking 및 큐 사용
    • 다수의 실패에도 가용성을 보장, 다수의 스토리지에 복사본 저장
  • Soft-State
    • 노드의 상태는 외부에서 전송된 정보를 통해 결정됨
    • 분산 노드 간 업데이트는 데이터가 노드에 도달한 시점에 갱신
  • Eventually Consistent
    • 일시적으로 비일관적인 상태가 되어도 최적으로는 일관성이 있는 상태가 되는 성질


BASE vs ACID

 속성

 BASE

 ACID

 적용분야

 NOSQL

 RDBMS

 범위

 시스템 전체에 대한 특성

 트랜잭션에 한정

 일관성측면

 약한 일관성

 강한 일관성

 중점사항

 Availability

 ‘Commit’에 집중

 시스템측면

 성능에 초점


 엄격한 데이터관리


 효율성

 쿼리디자인이 중요

 테이블 디자인이 중요


Reference

[1] 위키 (https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4_%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98)

[2] Ji-Dum (http://www.jidum.com/jidums/view.do?jidumId=906)


저작자 표시 비영리 변경 금지
신고

Leave a Comment


to Top