작성자 : 무노
작성자 : 무노
' IOT 기반 응용 SW과정 > Group Studying' 카테고리의 다른 글
7. 입출력 및 네트워크 (0) | 2016.06.17 |
---|---|
6. 컬렉션 프레임워크 (0) | 2016.06.17 |
은행 관리 프로그램 (0) | 2016.06.14 |
4. 기본 API (0) | 2016.06.09 |
3. 상속, 인터페이스 (0) | 2016.06.09 |
작성자 : 무노
작성자 : 무노
7. 입출력 및 네트워크 (0) | 2016.06.17 |
---|---|
6. 컬렉션 프레임워크 (0) | 2016.06.17 |
은행 관리 프로그램 (0) | 2016.06.14 |
4. 기본 API (0) | 2016.06.09 |
3. 상속, 인터페이스 (0) | 2016.06.09 |
작성자 : 욱쓰
작성자 : 욱쓰
5. 쓰레드 (0) | 2016.06.17 |
---|---|
은행 관리 프로그램 (0) | 2016.06.14 |
4. 기본 API (0) | 2016.06.09 |
3. 상속, 인터페이스 (0) | 2016.06.09 |
2. 클래스 (0) | 2016.06.09 |
일반적인 웹 어플리케이션 구조
View | 사용자에게 보여지는 페이지 |
|
Spring MVC | Controller | 어떤 req가 왔을 때 어떤 작업을 하고, 어떤 resp를 돌려줄지... |
AOP | Service | 우리 응용에서 필요한 로직을 구현 |
Spring JDBC & ORM | Dao | DB에 있는 데이터를 조회, 수정, 삽입, 삭제... |
Database |
<!-- http://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
1. Java 기본 JDBC를 사용하면서 불편했던 점
- PreparedStatement 구문이 편하긴한데,,, 바인딩에 대해서 타입과 위치를 개발자가 직접 다 지정해줘야됨.
- ResultSet에서 값을 주워올 때도 타입과 위치를 개발자가 직접 지정해야됨.
->> Connection객체를 직접 제어해야되기 때문에 발생하는 문제
->>> 저건 약과고... ConnectionPool을 사용해서 여러개의 Connection을 제어하고 관리하려면 더....
DAO가 Connection을 직접 제어하지 말고 Connection을 관리해주는 한 레벨 높은 응용계층의 객체를 사용합시다.
Spring-jdbc에서 제공하는 Connection을 관리하는 작업을 대신해주는 Session역할을 해주는 객체 -> jdcbTemplate
--> 이 역할을 하는 친구들이 Connection을 어떻게 연결할지에 대한 정보는 java.sql.DataSource 인터페이스를 구현하는 객체를 활용
DataSource구현체 : 디비에 연결하기 위한 정보 집합
DataSource구현체에 접속정보
jdbcTemplate은 DataSource를 사용해 우리가 던져주는 sql문 셔틀
우리가 만들 Dao는 JdbcTemplate에 적절하게 sql문 날리고 결과값 핸들링
스프링 컨테이너에 DataSource구현체를 빈으로 등록 (디비 접속정보를 넣어서)
-> jdbcTemplate을 넣어서 빈으로 등록 (DataSource를 넣어서) -> jdbcTemplate을 사용하는 Dao작성
-> 작성한 Dao를 빈으로 등록 (jdbcTemplate 넣어서)
DataSource구현체 빈 등록 ->> 어떻게 디비에 접속할지에 대한 정보 + 커넥션을 어떻게 관리할건지..
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource"></bean>
DriverManagerDataSource : 스프링에서 연습용으로 제공하는 아주 단순한 DtaaSource구현체
Spring JDBC에서 제공하는 Connection을 응용해서 사용하는 Session 객체
- JDBCTemplate 요전에 한거
- NamedParameterjdbcTemplate 지금 해볼거
- SimplejdbcTemplate <- deprecated
//NamedParameteJdbcTemplate은 select해서 매퍼이용해 결과값 매핑하는건 JdbcTemplate이랑 같음
//sql문에 파라미터를 매핑할때 이름을 기반으로 해서 매핑시킬 수 있음
//Map같은 방식으로~
//sql문을 만들때 ? 대신에 이름을 적고, 이름을 키로, 그 자리에 넣을 값을 벨류로 맵으로 만들어서 투척!
//사용되는 뱁 객체 만드는 방법이 4가지..
//한개 넣을 때, 여러개 넣을 때
|
자바 유틸 컬렉션 이용 |
Spring라이브러리 |
한개 넣을때 |
SingleMap |
|
여러개 넣을때 |
HashMap |
|
Day53 MyBatis (0) | 2016.06.01 |
---|---|
Day52 jdbcTemplate // MyBatis (0) | 2016.05.31 |
Day49 Spring Framework (0) | 2016.05.26 |
Day48 DB / Spring Framwork (0) | 2016.05.25 |
Day47 MVC, 커맨드 패턴 (0) | 2016.05.24 |
1. 자바 프로그램을 개발하는데 개발 도구를 JDK 라고 한다.
2. JDK와 JDE의 차이점은 무엇인가? JDK > JRE(자바실행기능) + 개발도구
3. 사용자로부터 값을 입력 받으려면 Scanner 클래스를 사용하는 것이 편리하다.
4. Scanner 클래스에서 사용자로부터 정수를 입력 받는 메소드의 이름은 nextInt() 이다.
5. 주석은 프로그램에 대한 설명이다.
6. 입력을 받아서 작업을 수행하고 결과를 내보내는 작은 기계로 생각할 수 있는 것은 메소드(함수)이다.
7. 모든 자바 소스 파일의 확장자는 .java 이다.
8. 프로그램에서 데이터를 저장하는 공간은 변수이다.
9. 변수에 값을 저장하는 연산을 대입연산이라고한다.
10. 실행 도중에 값이 변하지 않는 수를 상수라고 한다.
11. 컴파일 시에 오류가 없는데도 원하는 결과가 나오지 않는다면 논리오류가 있는 것이다.
12. 변수에 새로운 값이 대입되면 기존의 값은 어떻게 되는가? 기존의 값은 없어진다.
13. days 와 Days는 동일한 변수인가 아닌가? 아니다.
14. 자바의 변수 타입은 기초 변수와 참조 변수로 나뉜다.
15. 다음 중에서 올바르지 않은 변수 이름은?
x, 8items, march09, sales_report, theProfit2009, theProfit2009, #ofPlayer
16. case 절에서 break 문을 생략하면 어떻게 되는가? 다음 case로 넘어간다.
17. 다음 코드의 출력을 쓰시오
for(int i =1; i < 6; i++)
forI(int j = 5; j >= 1, j--)
System.out println(i + "곱하기" + j + "은" + i*j);
18. 다음 코드의 출력을 쓰시오
int n = 12;
while (n >0) {
n = n - 2;
if( n == 6 )
break;
System.out.println(n); 10,8
19. 위의 문제에서 break를 continue로 변경하면 어떻게 되는가? 10,8,4,2,0
1. 사용자로부터 3개의 정수를 읽어서 평균값을 계산하여 출력하는 프로그램을 작성하라.
2. 초 단위의 시간을 입력 받아서 시/분/초로 변환하는 프로그램을 작상하여 보자. ex) 3661초는 1시간 1분 1초이다.
3. 10000보다 작은 정수를 입력 받아서 이것을 천의 자리, 백의 자리, 십의 자리, 일의 자리로 분리하여 출력하는 프로그램을 작성하시오.
4. 사용자한테 이름과 나이를 물어보고 화면에 이름과 나이를 다시 출력하는 프로그램을 작성하시오.
5. 1부터 500까지의 정수의 합을 구하시오.
6. 상점에서 하나에 100원인 물건을 판매하고 있다, 물건을 10개 이상 구입하는 고객에게는 10%를 할인 해준다.
사용자가 구입한 물건의 개수를 입력하면 전체 가격이 얼마인지를 계산해주는 프로그램을 작성하라.
(즉 물건의 개수가 10%이상이면 10%할인한 가격으로 계산을 하여야한다.)
7. 특정한 정수를 읽어 들여서 0과 해당 정수 사이에 있는 모든 3의 배수를 출력하는 프로그램을 작성하라.
만약 입력 정수 값이 0보다 작으면 오류 메시지를 출력하라.
8. 구구단표를 화면에 출력하는 프로그램을 작성하시오. (2단~9단까지 중첩 for문을 이용하시오.)
9. 피보나치 수열은 다음과 같이 0과 1로 시작하여 앞의 두 수를 더해 다음의 수를 계산해내는 수열이다.
피보나치 수열을 생성하여 출력하는 프로그램을 작성해보시오.
0,1,1,2,3,5,8,13,21,34,55
조건문 (if) // 반복문
조건문 ex) 만약 비가 오지 않으면 테니스를 친다.
만약 결석이 1/3이상이면 F학점을 받는다.
만약 시간이 없는 경우에는 택시를 탄다.
if 문이 오면 다음 한문장만 인식 / 두문장 이상은 {} 필수
else // if 문법은 혼자서도 실행가능하나 , else 문법은 무조건 if 필요함.
초기화 되지 않은 변수는 사용할 수 없다.
if 문법 -> if(조건식) 조건이 참일 경우 if문에 포함된 문장을 실행 두문장 이상을 if문에 포함시키려면 중괄호로 문장들을 감싸면 됨,
<Math>
Math라는 꾸러미는 각종 수학적인 기능들을 담고있음
ex> random, pi, abs, pow
Math.random() <- 0.0000000~0.9999999까지의 임의의 숫자를 갖다줌.
Math.random()*6 <- 0.0000000 ~ 5.9999999
(int)(Math.random() * 6) <- 0~5
(int)(Math.random() * 6) +1 <- 1~6
<switch 문법>
switch(변수)
{
case 값:
문장
case 값:
문장
break ->중괄호 밖으로 내보내기
default : 매칭되는 케이스가 없을시 이동
<반복문>
while // for // do..while
while 문법 : if문이랑 문법이 같음, if는 조건식을 확인하고 참이면 문장수행, while은 조건식 확인하고 참이면 문장수행 후, 다시 조건식 확인, 틀리면 끝.
=반복계수=
Day 07 배열 (0) | 2016.03.22 |
---|---|
Day 06 复习 (0) | 2016.03.21 |
Day 04 변수 (0) | 2016.03.17 |
Day 03 영역 (0) | 2016.03.16 |
Day 02 메소드 (0) | 2016.03.15 |
百見不如一打 : 수백 번 본들 한번 쳐보고 실행해볼만 하다.
변수는 타입과 이름(바구니 구분용)을 가지고 있다.
:변수는 값을 담는 바구니인데 값의 유형에 따라 바구니의 유형도 여러가지가 있음
ex) ch, i, fvalue
변수의 초기화 : 변수에 처음으로 값을 넣어주는 것
ex) int x;
int 타입의 변수 x를 생성, 정수를 담을 수 있는 바구니 x를 생성, 정수변수 x를 선언
x = 100
x라는 변수에 100이라는 값을 담음, x라는 변수의 값을 100으로 초기화
상수(constant)는 프로그램이 실행하는 동한 변하지 않는 수.
10.0 : 실수상수 // 10 : 정수상수 // 'a' : 문자상수(한글자만) // "a" : 문자열상수
수식(expression)은 피연산자와 연산자로 이루어진다, 결과값을 가진다.
x = 100 / y = 200 / sum = x + y
대입 연산자는 오른쪽에 있는 값을 왼쪽의 변수에 담음
대입 연산자 == 할당 연산자 == 배정 연산자 /* == : 같다 */
산술 연산자
프로그래밍에서는 두개의 피연산자가 같은 타입이면 결과도 그 타입이 나와야함
문자열끼리의 산술은 이어붙임
ex) 4/3 = 1 <- 정수와 정수를 연산했기에 결과도 정수(소수버림)
5.0/2 = 2.5 <- 서로 다른놈들 연산하면 더 큰타입의 결과로 나옴(문자열>실수>정수)
6.0/3 = 2.0 // 6/3 = 2
System : 필수기능, 그냥 언제든 사용가능
out : 표준출력 -> 모니토로 데이터를 출력할 수 있는 기능을 가진 꾸러미
in : 표준입력 -> 키보드로부터 데이터를 읽어들일 수 있는 기능을 가진 꾸러미
Scanner : 입력데이터를 편리하게 가공해주는 도우미 꾸러미, 외부에 있어서 임포트 선언 해야 사용가능 < import java.util.Scanner; >
/* Ctrl + space : 자동완성 단축키
sysout <- Ctrl+spase = System.out.print(); */
nextInt : 키보드로부터 들어오는 다음 데이터를 정수로 읽어서 갖다줌, 대기하다가 데이터가 들어오면 정수로 가공해서 가공한 결과를 return.
서식문자 : %시리즈 // %d : 십진수를 나타냄
지역변수 : {}블록안에서 만들어진 변수
-> 변수선언문을 만날때 생성(공간할당), 자신이 포함된 함수가 종료될때 없어짐
스택(stack)은 제한적으로 접근할 수 있는 나열 구조이다. 그 접근 방법은 언제나 목록의 끝에서만 일어난다. 끝먼저내기 목록(Pushdown list)이라고도 한다
// LIFO : Last-In, First-out
늦게만들어진놈이 꼭 먼저 없어짐
/* 큐(queue)는 컴퓨터의 기본적인 자료 구조의 한가지로, 먼저 집어 넣은 데이터가 먼저 나오는 FIFO (First In First Out)구조로 저장하는 형식을 말한다. */
스택영역(stack) : 지역변수들의 저장
힙영역(heap) : 동적으로 할당한 데이터들이 저장 (기초자료형이 아닌 데이터)
/** 프로그래밍에서,, 정적 : 컴파일시에 미리 예측가능하며 결정된 사항
동적 : 실행시에 결정되는 사항
<오류>
* 컴파일 오류(compile-error) : 컴파일이 실패한거 (ex. 문법이 틀림) <--대놓고 발견
* 실행 오류(rum-time error) : 실행중에 프로그램이 뻗는거 (ex. 정수입력 받을라고 스캐너 대기중인데 문자입력..) <-- 테스팅 통해 발견
* 논리 오류(logical error) : 컴파일/런타임 에러 없이 잘 동작했는데, 프로그램 결과가 원한값이 아님.
자바란?
* 이식성이 높은 언어이다. <- 서로 다른 실행환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수있는것, 자바 실행 환경 (JRE : Java Runtime Environment)
* 객체 지향 언어이다. <- 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는기법 : 객체 지향 프로그램(OOP : Object Oriented Programming)
* 메모리를 자동으로 관리한다. <- 쓰레기 수집기(Garbage Collector)
**막강한 오픈소스 라이브러리가 풍부하다.
자바 가상 기계(JVM)
"Write once, run anywhere."
Day 06 复习 (0) | 2016.03.21 |
---|---|
Day 05 if/while (0) | 2016.03.18 |
Day 04 변수 (0) | 2016.03.17 |
Day 02 메소드 (0) | 2016.03.15 |
Day 01 开始 (0) | 2016.03.14 |