Programing 101

URI

URIUniform Resource Identifier scheme:[//authority][/path][?query][#fragment]Sampleftp://ftp.is.co.za/rfc/rfc1808.txthttps://tools.ietf.org/html/rfc3986mailto:john@doe.com tel:+1-816-555-1212urn:oasis:names:docbook:dtd:xml:4.1urn:isbn:1234567890 UriComponentBuilder를 이용하여 URI를 생성하기Spring Framework에서 UriComponenBulder를 이용해서 UriComponents를 생성을 할수 있다.이를 통해 URI를 좀더 쉽게 생성을 할수 있다. UriComponents uriComp..

Programing/Java 2018.11.22

Cache

Cache데이터나 값을 미리 복사해 놓는 임시 장소캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우 종류CPU 캐시메인 메모리의 접근을 빨리하기 위한 CPU 내부에 있는 캐시 메모리디스크 캐시디스크 입출력시 사용되는 캐시 메모리기타 캐시신뢰성이 적은 네트워크(이더넷 등)에서, 네트워크 사이에 주고 받는 데이터를 캐시웹 브라우저는 최근 방문한 사이트를 캐시에 저장 지역성시간적 지역성특정 데이터가 한번 접근되었을 경우, 가까운 미래에 또 한번 데이터에 접근할 가능성이 높은 것을 시간적 지역성이라고 한다.공간적 지역성특정 데이터와 가까운 주소가 순서대로 접근되었을 경우를 공간적 지역성이라고 한다.

Programing 2018.11.20

React Native #2 - Hello World

React Native #2 - Hello WorldReact의 기본 개념 JSX, Props, State에 대한 예제이다. 기본 View와 Text를 이용한 예제import React, { Component } from 'react';import { Text, View } from 'react-native'; export default class HelloWorldApp extends Component { render() { return ( Hello world! ); }} PropsCompoent의 Input 해당하는 Props를 이용한 예제import React, { Component } from 'react';import { AppRegistry, Text, View } from 'react-na..

React Native #1 - 개발 환경 셋팅

React Native #1. 개발 환경 셋팅 Install (Windows)1. Install NVMhttps://github.com/coreybutler/nvm-windows nvm listnvm install 11nvm use 11 2. install react native pacakgenpm install -g react-native-cli 3. install android studiohttps://developer.android.com/studio/ 4. Install android sdk (api 27) (2018. 11. 17 기준) android api 27 버전을 React Native는 지원을 한다. 5. Setting virtual deviceAndroid Studio에 포함된 And..

SOLID 개발 원칙

SOLID 개발 원칙 SRP (단일 책임의 원칙)클래스가 제공하는 기능은 하나의 책임을 수행하는 집중되어야 된다.코드의 가독성 항샹, 유지보수 용이책임 영역이 확실해지 때문에 한 책임의 변경에서 다른 책임의 변경으로 연쇄 작용을 용이해진다. OCP (개방 폐쇄의 원칙 : Open Close Principle)소프트웨어 구성요소 (컴포넌트, 클래스, 모듈, 함수)는 확장에는 열려 있고, 변경에는 닫혀 있어야 된다는 원리요구사항 변경이나 추가사항이 발생하더라도, 기존 구성요소는 수정이 일어나지 않아야 되고, 쉽게 확장하여 재사용할수 있어야 된다.변경(확장)될 것과 변하지 않을 것을 엄격하게 구별을 하고 이 모듈이 만나는 지점을 인터페이스를 정의한다.구현에 의존하기 보다는 정의한 인터페이스에 의존하도록 코드를..

Programing 2018.11.16

Spring Retry

Spring RetryUse case내부서비스가 아닌 외부서비스와 연동메시지를 동시에 처리를 하면서 update시 생기는 낙관적인 락을 인한 로직의 실패메시지를 동시에 처리를 하면서 Insert시에 생기는 Duplicate 에러로 인한 로직의 실패Gradlecompile "org.springframework.retry:spring-retry:1.1.5.RELEASE" Enable Config@Configuration@EnableRetrypublic class AppConfig { ... } Retryable@Servicepublic interface MyService { @Retryable( value = { SQLException.class }, maxAttempts = 2, backoff = @Bac..

RESTful API

RESTful APIREST(Representational State Transfer) Http MethodCRUD(Create, Read, Update, Delete)에 해당되는 MethodGET : ReadPOST : CreatePUT : Update DELETE : Delete REST의 특징Uniform InterfaceHTTP 표준만 만족시기면 어떠한 기술을 사용하던 가능한 인터페이스 스타일Stateless상태를 유지 않는 특성들어오는 요청만 메시지를 처리하면 되기 때문에 구현이 단순해 진다.Cacheable웹 표준을 그대로 사용하기 때문에 캐시를 사용할수 있다.Self-descriptivenessAPI 메시지 자체만 보고 API가 이해가 쉽다.Client-Server 구조 리소스의 표현 방법G..

Programing 2018.10.28

Java Jdbc를 이용한 데이터베이스 접근하기

Java Jdbc를 이용한 데이터베이스 접근하기Hive를 사용할때 결과값이 몇천건만인 경우에는 메모리가 부족해서 GC 에러가 발생이 될수가 있다.여러번을 쪼개서 가지기 오기에는 Hive 특성상 일정한 시간 (Map, Reduce로 전체 데이터를 로딩을 처리하는 과정)이 걸리기 때문에 속도가 느리다쿼리를 1번만에 처리를 하고 메모리가 부족하지 않게 하는 방법은 JDBC의 ResultSet를 활용을 하면 된다.Low Level 접근 방식중 하나인 ResultSet 디비로 부터 fetchSize만큼 데이터를 가지고 온다.데이터의 결과가 큰 경우에는 ResultSet을 이용하여 Chunk 단위로 파일을 생성하는 방법으로 할수가 있다.1. Connection 생성하기# DriverManager를 통해 Connec..

Programing/Java 2018.10.23