moonscode 236

학습 // Spring // JDBC // DAO(Data Access Object)

업데이트 :: 2018.08.08 개요JdbcTemplate사용법메서드JdbcTemplate 사용법NamedParameterJdbcTemplate 사용법SqlParameterSource 사용법CRUD 예시개요커넥션의 연결과 종료SQL문의 실행SQL문의 실행결과 행에 대한 반복처리예외처리개발자가해야할부분SQL문 정의파라미터 설정ResultSet에서 결과를 가져온 후에, 각 레코드별로 필요한 처리JdbcTemplate사용법JdbcTemplate? 문자를 플레이스홀더로 사용NamedParameterJdbcTemplate파라미터 이름을 사용할 수 있음JdbcTemplate 활용한 데이터 조회@Autowired JdbcTemplate jdbcTemplate; public String findUserName(Str..

Spring/JDBC 2018.08.15

학습 // Spring // JDBC // DataSource

업데이트 :: 2018.08.08 DataSourceDataSourcce 설정애플리케이션모듈이 제공하는 데이터소스애플리케이션서버가 제공하는 데이터소스내장형 데이터베이스를 사용하는 데이터 소스DataSource데이터소스는 애플리케이션이 데이터베이스에 접근하기 위한 추상화된 연결방식커넥션을 제공하는 역할스프링이 제공하는 데이터소스애플리케이션 모듈이 제공하는 데이터소스애플리케이션 서버가 제공하는 데이터소스내장형 데이터베이스르 사용하는 데이터소스DataSourcce 설정pom.xml 설정 org.springframework spring-jdbc 애플리케이션모듈이 제공하는 데이터소스@Configuration @PropertySource("classpath:jdbc.properties") public class P..

Spring/JDBC 2018.08.15

문제 // Codility // Time Complexity // TapeEquilibrium

업데이트 :: 2018.08.15 문제코드결과학습문제TapeEquilibrium Minimize the value |(A[0] + ... + A[P-1]) - (A[P] + ... + A[N-1])|. 코드첫 번째 풀이import java.util.*; class Solution { public int solution(int[] A) { // [주의] // 각각 배열은 -1000 ~ 1000 int sum = 0; int[] arrSum = new int[A.length]; int[] arrDiff = new int[A.length]; for(int element : A) sum += element; // == init == arrSum[0] = A[0]; arrDiff[0] = sum - arrSum[..

CS/코딜리티 2018.08.15

학습 // Spring // AOP // 표현식(SpEL)

업데이트 :: 2018.08.08 표현언어표현언어 설정API 개요빈정의시 SpEL 활용표현식 유형표현언어스프링 프레임워크가 제공하는 표현언어어디에쓰나 ? 왜쓰나 ?모든 제품에 걸쳐서 사용할 수 있는 하나의 표현언어를 스프링 커뮤니티에 제공하기 위해서 만들어짐표현언어 설정spring-expression 의존성모듈 추가pom.xml org.springframework spring-expression API 개요ExpressionParser문자열 형태인 표현식을 분석Expression 객체를 생성하기 위한 메서드 제공Expression분석된 표현식의 내용을 실행하기 위한 메서드 제공SpEL이용 간단 수식풀기ExpressionParser parser = new SpelExpressionParser(); // S..

Spring/DI & AOP 2018.08.14

학습 // Spring // AOP // Message

업데이트 :: 2018.08.09 메세지관리MessageSourceMessageSourceResolvableMessageSource 사용MessageSource APIMessageSourceResolvable 활용프로퍼티파일을 UTF-8로 인코딩다국어 지원메세지관리문자열형태의 메시지프로퍼티파일과 같은 곳에 따로 관리해서 소스코드에서 분리다국어 지원하는 국제화기능MessageSourceMessageSource는 메시지 정보의 출처를 추상화하기 위한 것어딘가에 있을 메시지 정보를 가져오기 위해 getMessage() 제공public interface MessageSource { String getMessage( String code, Object[] args, Locale locale) throws NoSu..

Spring/DI & AOP 2018.08.14

학습 // Spring // AOP // Resource

업데이트 :: 2018.08.08 Resource 인터페이스 & 구현클래스ResourceLoaderResource 접근XML에서 리소스 지정Resource 인터페이스 & 구현클래스구체적인 위치정보를 직접다루지 않아도 리소스에 접근할 수 있음Resource 인터페이스WritableResource 인터페이스InputStreamSourcepublic interface InputStreamSource { InputStream getInputStream() throws IOException; } Resource extends InputStreamSourcepublic interface Resource extends InputStreamSource { boolean exists(); boolean isReadabl..

Spring/DI & AOP 2018.08.14

문제 // 자료구조 // 트리(Tree) // 하위트리확인 // toJava

/** * [하위트리확인] * 두개의 커다란 이진트리 T1, T2가 있을때 * T1이 T2보다 훨씬 크다고 했을때, T2가 T1의 하위 트리 (sub tree)인지 판변하는 알고리즘 제자 * * [풀이] * => 플래그를 이용하는 방법 * => 이동하는 모든 플래그에 대해서 기호값으로 배열에 추가 * => 중위순회 & 전휘순회 & 후위순회 상관없이 풀이가능 * => 플래그가 배열을 형태까지 복사하기 때문에 배열이 겹친다면 하위트리로 확인이 가능함 * * */ public class Q10 { public static void main(String[] args) { // @Test Node root = new Node(4); root.left = new Node(2); root.right = new Nod..

문제 // 자료구조 // 트리(Tree) // 공통조상 // toJava

/** * [첫번째 공통 조상] * 이진트리에서 노드 두개가 주어졌을때, * 이 두 노드의 첫번째 공통 조상을 찾는 알고리즘을 설계하고 그 코드를 작성 * 자료구조내에 추가로 노드를 저장해선 안된다. * * [풀이] * => 주어진 두 노드가 같은 레벨인가요 ? * => 같은 레벨이 아니라면 높이의 차이를 구해서 처리 * => 노드가 부모의 참조를 가질 수 있나요 ? * => 부모에 대한 참조가 없을때 해결할 수 있을까 ? * => * 있음 - NodeA와 NodeB가 더이상 같은쪽에 있지 않으면 그것이 공통조상 * */ public class Q08 { /* main */ public static void main(String[] args) { // @Test - 부모참조 있을때 Node rootB =..

문제 // 자료구조 // 트리(Tree) // 후속자 // toJava

package question.treegraph; /** * [후속자] * 이진탐색트리에서 주어진 노드의 다음노드(중위 후속자, in-order-successor)를 찾는 알고리즘 * 각 노드에 부모 노드를 가리키는 링크가 존재 * * [풀이] * => 중위후속자가 무엇인가 ? * => 중위순회를 진행할때 다음에 나올 노드 * => while(true) { 부모의 오른쪽 노드의 왼쪽 자식 노드, 없다면 부모로 올라감 } * => 부모노드의 참조값을 가지고 있어야함 * */ public class Q06 { /* main */ public static void main(String[] args) { // @Test Node rootB = new Node(4); rootB.left = new Node(2);..

문제 // 자료구조 // 트리(Tree) // BST검증 // toJava

/** * * [BST 검증] * 주어진 이진 트리가 이진탐색트리인지 확인하는 함수 * * [풀이] * => 트리에 중복이 있나요 ? * => 주어진 노드를 받았을때 재귀로 계속 검증 * => 재귀로 검증할때 최상위에서부터 검사해야함 * => * 위에서 부터 타고 내려왔다면 노드마다 범위가 있음 * * [해법] * => 01. 중위순회 * => 02. left 전체크기를 알고 있는가 ? * => 알고있다면 배열 * => 모른다면 리스트 * */ public class Q05 { /* Main */ public static void main(String[] args) { // @Test Node rootA = new Node(1); rootA.left = new Node(2); rootA.right = n..