3주차 16_08_31 ( 수 )
front 부분에
HTML
-아주 기본적인 꾸미기
CSS
-좀더 나은 꾸미기
javascript
-동적인 언어
쉬운듯 보이나 확장성이 좋아서 어려움 ( 오류를 찾기 어려움 )
jQuery
-
BOOTSTRap
-웹프로그래머가 되기 위한 과정
** ) 생활코딩 (https://www.opentutorials.org/)
2016년 8월 31일 수요일
학습과 방향성
내가 무엇을 위해 이것을 배우나 생각하는게 중요하다
방향성에 대한 내용인데 만일 이것을 생각 안한다면 내가 배우는게 쓸모가 없어 질수도 있
기 때문에 반드시 생각해야 한다.
2016년 8월 30일 화요일
3주차 데이터베이스 View 16_08_31 ( 수 )
3주차 데이터베이스 View 16_08_31 ( 수 )
뷰
조회용으로 만들어짐
부서별 급여의 총액과 평균을 구하는 뷰를 VIEW_SAL 로 만들기
COMPLEX VIEW(복합 뷰)
-두개 이상의 기본 테이블에 의해 정의된 뷰.
about project
POS 기기 = 공부도 많이되고 신선함
좋아하는 분야의 것을 만들면 도움이 됨
sequence?
-유일한 값을 생성해주는 오라클 객체
-보통 primary key 값을 생성하기 위해 사용한다.
-시퀀스는 테이블과는 독립적으로 저장되고 생성된다.
INDEX
-빠른 검색을 위해 인덱스를 사용
-B-TREE 형식의 내부 구조를 갖고 있습니다.
장점
-검색 속도가 빨라집니다.
-시스템에 부하르 줄여서 시스템의 전체 성능을 향상시킵니다.
단점
-인덱스를 위한 추가 공간이 필요합니다.
-인덱스를 생성하는데 시간이 걸립니다.
-데이터 변경 작업이 자주 일어날 때는 오히려 성능이 저하됩니다.
인덱스 사용 추천
-데이터가 많을때
-WHERE 문에 해당 칼럼이 많이 사용될때
-검색 결과가 전체 데이터의 2~4%정도일 때
-JOIN에 자주 사용되는 컬럼이나 NULL을 포함하는 컬럼이 많은 경우
데이터베이스 끝
* privilege 권한 , 특권
부서별 급여의 총액과 평균을 구하는 뷰를 VIEW_SAL 로 만들기
COMPLEX VIEW(복합 뷰)
-두개 이상의 기본 테이블에 의해 정의된 뷰.
about project
POS 기기 = 공부도 많이되고 신선함
좋아하는 분야의 것을 만들면 도움이 됨
sequence?
-유일한 값을 생성해주는 오라클 객체
-보통 primary key 값을 생성하기 위해 사용한다.
-시퀀스는 테이블과는 독립적으로 저장되고 생성된다.
INDEX
-빠른 검색을 위해 인덱스를 사용
-B-TREE 형식의 내부 구조를 갖고 있습니다.
장점
-검색 속도가 빨라집니다.
-시스템에 부하르 줄여서 시스템의 전체 성능을 향상시킵니다.
단점
-인덱스를 위한 추가 공간이 필요합니다.
-인덱스를 생성하는데 시간이 걸립니다.
-데이터 변경 작업이 자주 일어날 때는 오히려 성능이 저하됩니다.
인덱스 사용 추천
-데이터가 많을때
-WHERE 문에 해당 칼럼이 많이 사용될때
-검색 결과가 전체 데이터의 2~4%정도일 때
-JOIN에 자주 사용되는 컬럼이나 NULL을 포함하는 컬럼이 많은 경우
데이터베이스 끝
* privilege 권한 , 특권
3주차 데이터베이스 SQL 16_08_30 ( 화 )
3주차 데이터베이스 SQL 16_08_30 ( 화 )
DECODE
SELECT EMPNO, DEPTNO
DECODE(DEPTNO,10,'ACCOUNTING') AS DNAME
FROM EMP;

CASE 함수는 if else if else 와 유사한 구조
CASE 함수는 다양한 비교 연산자를 이용하여 조건을 제시할 수 있음
CASE WHEN DEPTNO = 10 THEN'ACCOUNTING'
END AS DNAME
가장 최근입사한 사원과 가장 오래된 사원 출력
-10번부서 소속 중 커미션을 받는 사원의 수 출력
DISTINCT
-중복을 제거
Group by
-기준
HAVING
-group by에 대한 조건
JOIN
-한개 이상의 테이블에서 데이터를 조회하기 위해 테이블 간관계를 기반으로 사용되어지는 개념
-cross join
ex)select * from emp,dept;
equi , non-equi , outer , self 조인
동일 칼럼을 기준 , 동일 칼럼이 없어 다른 조건을 사용하여 조인 , 조인 조건에 만족하지 않는행도 나타냄, 한 테이블 내에서 조인
equi 조인
SELECT *
from emp,dept
where emp.deptno=dept.deptno;
1.뉴욕에서 근무하는 사원의 이름과 급여

2.ACCOUNTING 부서 소속 사원의 이름과 입사일

3.직급이 MANAGER 인 사원의 이름 , 부서명을 출력
non equi join
ex) select e.ename , e.sal, s.grade
from emp e, salgrade s
where e.sal >= s.losal and e.sal <=s.hisal
1.매니저가 king 인 사원들의 이름과 직급

2.scott과 동일한 근무지에서 근무하는 사원의 이름

OUTER JOIN
-
사부서 테이블 40번 부서 조인할 사원 테이블의 부서번호가 없지만 40번 부서 이름도 출력되도록

ANSI JOIN
ex) select * from emp cross join dept;
from 다음에 inner join 일나 단어를 사용하여 조인할 테이블 이름을 명시하고 on 절을 사용하여 조인 조건을 명시하여 다음과 같이 작성합니다.
USING
ex)select * from t1 inner join t2
using (공통컬럼)
NATURAL join
SUB QUERY
-query 문 안에 query 문
1.scott과 같은 부터에서 근문하는 사원

2.scott와 동일한 직급을 가진 사원

3.SCOTT의 급여와 동일하거나 더 많은 받는 사원 명과 급여출력

4. DALLAS에서 근무하는 사원의 이름,부서 번호

5.SALES부서 에서 근무한느 모든 사원의 이름과 급여를 출력

6.직속상관이 KING인 사원의 이름과 급여를 출력
IN , ANY, SOME, ALL, EXIST
1.부서별로 가장 급여를 많이 받는 사원의 정보를 출력
select max(sal) from emp group by deptno; 이문장을 생각을 못해냄..

**) 나온 값은 MAX(SAL)만
select empno,ename , sal ,deptno
from emp
where sal in (select max(sal) from emp group by deptno);
2.직급이 MANAGER인 사람의 속한 부서의 부서 번호와 부서명과 지역 출력
1.영업 사원들 보다 급여가 많이 받는 사원들의 이름과 급여와 직급 출력
ALL
*이전에 배운 것
1. 인터페이스 내에 선언된 변수는 무조건 public static final 로 선언된다.
2. 인터페이스 내에 선언된 메소드는 무조건 public abstract로 선언된다.
3. 인터페이스도 참조변소 선언 가능하고, 메소드 오버라이딩 원칙 그대로 적용된다.
-살쪄서 운동이 필요함 !
-집에서 간단한 먹을것 가져와서 저녁먹을것
-http://newbloggerthemes.com/ 에서 템플릿을 다운받을수있음
http://hiin124.wixsite.com/mysite
DECODE
SELECT EMPNO, DEPTNO
DECODE(DEPTNO,10,'ACCOUNTING') AS DNAME
FROM EMP;
CASE 함수는 if else if else 와 유사한 구조
CASE 함수는 다양한 비교 연산자를 이용하여 조건을 제시할 수 있음
CASE WHEN DEPTNO = 10 THEN'ACCOUNTING'
END AS DNAME
가장 최근입사한 사원과 가장 오래된 사원 출력
-10번부서 소속 중 커미션을 받는 사원의 수 출력
DISTINCT
-중복을 제거
Group by
-기준
HAVING
-group by에 대한 조건
JOIN
-한개 이상의 테이블에서 데이터를 조회하기 위해 테이블 간관계를 기반으로 사용되어지는 개념
-cross join
ex)select * from emp,dept;
equi , non-equi , outer , self 조인
동일 칼럼을 기준 , 동일 칼럼이 없어 다른 조건을 사용하여 조인 , 조인 조건에 만족하지 않는행도 나타냄, 한 테이블 내에서 조인
equi 조인
SELECT *
from emp,dept
where emp.deptno=dept.deptno;
1.뉴욕에서 근무하는 사원의 이름과 급여
2.ACCOUNTING 부서 소속 사원의 이름과 입사일
3.직급이 MANAGER 인 사원의 이름 , 부서명을 출력
non equi join
ex) select e.ename , e.sal, s.grade
from emp e, salgrade s
where e.sal >= s.losal and e.sal <=s.hisal
1.매니저가 king 인 사원들의 이름과 직급
2.scott과 동일한 근무지에서 근무하는 사원의 이름
OUTER JOIN
-
사부서 테이블 40번 부서 조인할 사원 테이블의 부서번호가 없지만 40번 부서 이름도 출력되도록
ANSI JOIN
ex) select * from emp cross join dept;
from 다음에 inner join 일나 단어를 사용하여 조인할 테이블 이름을 명시하고 on 절을 사용하여 조인 조건을 명시하여 다음과 같이 작성합니다.
USING
ex)select * from t1 inner join t2
using (공통컬럼)
NATURAL join
SUB QUERY
-query 문 안에 query 문
1.scott과 같은 부터에서 근문하는 사원
2.scott와 동일한 직급을 가진 사원
3.SCOTT의 급여와 동일하거나 더 많은 받는 사원 명과 급여출력
4. DALLAS에서 근무하는 사원의 이름,부서 번호
5.SALES부서 에서 근무한느 모든 사원의 이름과 급여를 출력
6.직속상관이 KING인 사원의 이름과 급여를 출력
IN , ANY, SOME, ALL, EXIST
1.부서별로 가장 급여를 많이 받는 사원의 정보를 출력
select max(sal) from emp group by deptno; 이문장을 생각을 못해냄..
**) 나온 값은 MAX(SAL)만
select empno,ename , sal ,deptno
from emp
where sal in (select max(sal) from emp group by deptno);
2.직급이 MANAGER인 사람의 속한 부서의 부서 번호와 부서명과 지역 출력
1.영업 사원들 보다 급여가 많이 받는 사원들의 이름과 급여와 직급 출력
ALL
*이전에 배운 것
1. 인터페이스 내에 선언된 변수는 무조건 public static final 로 선언된다.
2. 인터페이스 내에 선언된 메소드는 무조건 public abstract로 선언된다.
3. 인터페이스도 참조변소 선언 가능하고, 메소드 오버라이딩 원칙 그대로 적용된다.
-살쪄서 운동이 필요함 !
-집에서 간단한 먹을것 가져와서 저녁먹을것
-http://newbloggerthemes.com/ 에서 템플릿을 다운받을수있음
http://hiin124.wixsite.com/mysite
2016년 8월 29일 월요일
3주차 16_08_29 ( 월 )
3주차 16_08_29 ( 월 )
테이블?
데이블은 실제로 데이터들이 저장되는 곳
UNIQUE ?
-제약조건 생성
ex) ALTER TABLE emp2
ADD CONSTRAINT emp2_uk_deptno UNIQUE (deptno);
CHECK ?
컬럼의 값을 범위 제한
PRIMARY KEY
-참조 무결성
COMMIT / ROLLBACK
-변경사항 저장 / 변경사항 취소
1. 급여가 1500 이하인 사원의 사원번호 , 사원 이름 , 급여를 출력

2.사원이름이 scott 인 사원의 사원번호 , 사원이름, 급여를 출력
3.사원번호가 7521 or 7654 or 7844 검색

4.7521 or 7654 or 7844 in 사용하여 작성
where empno in(....);
5. 7521 , 7654 , 7844 도 아닌 사원 출력
-비교 연산자
-not in
where empno != 7521 and ....
where empno not in( ... );
6. 사원들 이름중 J로 시작하는 사람 찾기
+where ename like '%A%'
1. 상원이 없는 사원을 검색하기위한 sql

2. 입사일을 오름 차순으로 정렬하여 최근 입사한 직원들을 먼저출력하되
사원번호 ,사원명, 직급 입사일 칼럼을 출력
DUAL TABLE
연산의 결과를 한 줄로 얻기 위해서 오라클에서 제공하는 테이블
-사번이 홀수인 사람 검색

to_char ?
select 문을 어떻게 활용 할 것인가 ? (중요한문제)
insert 할떄 주의할점 칼럼의 숫자의 데이터의 자료형
*물통(뜨거운 물) 필요함
테이블?
데이블은 실제로 데이터들이 저장되는 곳
UNIQUE ?
-제약조건 생성
ex) ALTER TABLE emp2
ADD CONSTRAINT emp2_uk_deptno UNIQUE (deptno);
CHECK ?
컬럼의 값을 범위 제한
PRIMARY KEY
-참조 무결성
COMMIT / ROLLBACK
-변경사항 저장 / 변경사항 취소
1. 급여가 1500 이하인 사원의 사원번호 , 사원 이름 , 급여를 출력
2.사원이름이 scott 인 사원의 사원번호 , 사원이름, 급여를 출력
3.사원번호가 7521 or 7654 or 7844 검색
4.7521 or 7654 or 7844 in 사용하여 작성
where empno in(....);
5. 7521 , 7654 , 7844 도 아닌 사원 출력
-비교 연산자
-not in
where empno != 7521 and ....
where empno not in( ... );
6. 사원들 이름중 J로 시작하는 사람 찾기
캡션 추가 |
+where ename like '%A%'
1. 상원이 없는 사원을 검색하기위한 sql
2. 입사일을 오름 차순으로 정렬하여 최근 입사한 직원들을 먼저출력하되
사원번호 ,사원명, 직급 입사일 칼럼을 출력
DUAL TABLE
연산의 결과를 한 줄로 얻기 위해서 오라클에서 제공하는 테이블
-사번이 홀수인 사람 검색
to_char ?
select 문을 어떻게 활용 할 것인가 ? (중요한문제)
insert 할떄 주의할점 칼럼의 숫자의 데이터의 자료형
*물통(뜨거운 물) 필요함
2016년 8월 26일 금요일
2주차 금요일 16_08_26
2주차 금요일 16_08_26
2주차 마무리
오늘은 java 책쓰는 마지막 날
예제
Hotel
Reservation Program
7층 호텔 / 10호
[101호][102][103호] ....
[201호][202호][203호].....
[701호][702호][703호].....
1.빈방정보
2.입실
3.퇴실
4.예약자 정보 수정
5.종료
데이터베이스가 2개여야 한다. ( 방 정보 , 손님들 정보)
데이터베이스
1. DDL : 데이터 베이스 객체의 구조를 정의합니다.
CREATE , DROP , ALTER
2. DML : 데이터의 삽입 , 삭제 , 갱신등을 처리
INSERT DELETE UPDATE
3. DCL : 데이터베이스 사용자의 권한을 제어
GRANT 데이터베이스 객체에 권한을 부여 한다.
REVOKE 이미 부여된 데이터베이스 객체 권한을 취소한다.
+ 객체 = 스키마
주말에 할 일
1. 어떠한 서비스를 만들것인가?
2. with or alone ?
-혼자 할 것
*학원에 30분씩 일찍와서 복습 , 예습하기 (1시 30분에 출발하면 됨)
2주차 마무리
오늘은 java 책쓰는 마지막 날
예제
Hotel
Reservation Program
7층 호텔 / 10호
[101호][102][103호] ....
[201호][202호][203호].....
[701호][702호][703호].....
1.빈방정보
2.입실
3.퇴실
4.예약자 정보 수정
5.종료
데이터베이스가 2개여야 한다. ( 방 정보 , 손님들 정보)
데이터베이스
1. DDL : 데이터 베이스 객체의 구조를 정의합니다.
CREATE , DROP , ALTER
2. DML : 데이터의 삽입 , 삭제 , 갱신등을 처리
INSERT DELETE UPDATE
3. DCL : 데이터베이스 사용자의 권한을 제어
GRANT 데이터베이스 객체에 권한을 부여 한다.
REVOKE 이미 부여된 데이터베이스 객체 권한을 취소한다.
+ 객체 = 스키마
주말에 할 일
1. 어떠한 서비스를 만들것인가?
2. with or alone ?
-혼자 할 것
*학원에 30분씩 일찍와서 복습 , 예습하기 (1시 30분에 출발하면 됨)
2016년 8월 25일 목요일
데베
package dbConn;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class ExecuteSQL {
public static void main(String[] args) {
Connection cn = connecting();
Scanner sc = new Scanner(System.in);
Statement st = null;
try {
st = cn.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
showData(st);
while(true)
{
int sel = 0;
System.out.println("리스트보기(1), 입력(2), 삭제(3), 수정(4), 종료(5)");
sel = sc.nextInt();
if(sel == 0)
{
break;
}
switch (sel) {
case 1:
showData(st);
break;
case 2:
insertData(st);
break;
case 3:
deleteData(st);
break;
case 4:
editData(st);
break;
default:
break;
}
}
System.out.println("종료되었습니다.");
}
private static void editData(Statement st) {
// TODO Auto-generated method stub
}
private static void deleteData(Statement st) {
// TODO Auto-generated method stub
}
private static void insertData(Statement st) {
// TODO Auto-generated method stub
}
private static void showData(Statement st) {
String sql="";
sql ="select * from member";
try {
ResultSet rs=st.executeQuery(sql);
while(rs.next())
{
int num = rs.getInt(1);
String name = rs.getString("name");
String age = rs.getString(3);
String blood = rs.getString(4);
String height = rs.getString(5);
String job = rs.getString(6);
System.out.println(
"번호 : " +num +
" 이름 : " +name +
" 나이 : " +age +
" 혈액형 : " +blood +
" 키 : "+height +
" 직업 : "+job
);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private static Connection connecting() {
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
String id="system";
String pwd="oracle";
Connection cn = null;
boolean check=true;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
check=true;
} catch (ClassNotFoundException e) {
System.out.println("오라클 드라이버 적재를 실패하였습니다.");
e.printStackTrace();
check=false;
}
if(check)
{
System.out.println("오라클 드라이버 적재를 성공하였습니다.");
}
try {
cn = DriverManager.getConnection(url, id, pwd);
check = true;
} catch (SQLException e) {
check = false;
System.out.println("오라클 데이터 베이스 연결을 실패");
e.printStackTrace();
}
if(check)
{
System.out.println("오라클 데이터 베이스 연결를 성공하였습니다.");
}
return cn;
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class ExecuteSQL {
public static void main(String[] args) {
Connection cn = connecting();
Scanner sc = new Scanner(System.in);
Statement st = null;
try {
st = cn.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
showData(st);
while(true)
{
int sel = 0;
System.out.println("리스트보기(1), 입력(2), 삭제(3), 수정(4), 종료(5)");
sel = sc.nextInt();
if(sel == 0)
{
break;
}
switch (sel) {
case 1:
showData(st);
break;
case 2:
insertData(st);
break;
case 3:
deleteData(st);
break;
case 4:
editData(st);
break;
default:
break;
}
}
System.out.println("종료되었습니다.");
}
private static void editData(Statement st) {
// TODO Auto-generated method stub
}
private static void deleteData(Statement st) {
// TODO Auto-generated method stub
}
private static void insertData(Statement st) {
// TODO Auto-generated method stub
}
private static void showData(Statement st) {
String sql="";
sql ="select * from member";
try {
ResultSet rs=st.executeQuery(sql);
while(rs.next())
{
int num = rs.getInt(1);
String name = rs.getString("name");
String age = rs.getString(3);
String blood = rs.getString(4);
String height = rs.getString(5);
String job = rs.getString(6);
System.out.println(
"번호 : " +num +
" 이름 : " +name +
" 나이 : " +age +
" 혈액형 : " +blood +
" 키 : "+height +
" 직업 : "+job
);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private static Connection connecting() {
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
String id="system";
String pwd="oracle";
Connection cn = null;
boolean check=true;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
check=true;
} catch (ClassNotFoundException e) {
System.out.println("오라클 드라이버 적재를 실패하였습니다.");
e.printStackTrace();
check=false;
}
if(check)
{
System.out.println("오라클 드라이버 적재를 성공하였습니다.");
}
try {
cn = DriverManager.getConnection(url, id, pwd);
check = true;
} catch (SQLException e) {
check = false;
System.out.println("오라클 데이터 베이스 연결을 실패");
e.printStackTrace();
}
if(check)
{
System.out.println("오라클 데이터 베이스 연결를 성공하였습니다.");
}
return cn;
}
}
2주차 16_08_24(목)
2주차 16_08_24(목)
데이터베이스
1단계
C R U D 선택을 하세요
조건문 선택 다시 조건문으로
- 즉, 자신이 컬렉션(List, Set 등)이라면 이터레이터 인터페이스를 사용할 수 있습니다.
도서관에 비유
- 우리가 책을 보관하는 책장(컬렉션)이 있고, 그 곳에는 책(컬렉션 안에 들어갈 객체)이 있습니다.
- 이 책장은 도서관 사서(이터레이터)가 관리하게 됩니다.
- 사서는 단순 무지한 녀석이라 책장 처음부터 끝까지 한번에 하나씩 밖에 못 가져옵니다.
이터레이터가 가지고 있는 메서드
- boolean hasNext() : 다음 값이 있는지 없는지 확인, 있으면 true를 리턴하고 없으면 false를 리턴 --> if나 while문에서 쓰면 되겠죠?
- E next() : 다음 값을 리턴합니다. 어떤 형태인지 모르기 때문에 리턴 유형을 E로 하겠습니다.
- void remove() : 삭제 하는 메서드
*crl + shift + o import 자동
*제네릭 , 컬렉션은 앞으로 쓸일 이 많으니 꼭 복습할 것.
Set
-HashSet
-TreeSet
검색과 정렬에 유리
Comparable , Comparator
객체를 정렬하는데 필요한 메서드를 정의한 인터페이스
TreeMap
-이진검색트리처럼 데이터 저장할때 정렬하기 때문에 저장시간이 길다
Properties
데이터베이스
1단계
C R U D 선택을 하세요
조건문 선택 다시 조건문으로
이터레이터(Iterator) 인터페이스
- 모든 컬렉션(Collection)으로 부터 정보를 얻을 수 있는 인터페이스 입니다.- 즉, 자신이 컬렉션(List, Set 등)이라면 이터레이터 인터페이스를 사용할 수 있습니다.
도서관에 비유
- 우리가 책을 보관하는 책장(컬렉션)이 있고, 그 곳에는 책(컬렉션 안에 들어갈 객체)이 있습니다.
- 이 책장은 도서관 사서(이터레이터)가 관리하게 됩니다.
- 사서는 단순 무지한 녀석이라 책장 처음부터 끝까지 한번에 하나씩 밖에 못 가져옵니다.
이터레이터가 가지고 있는 메서드
- boolean hasNext() : 다음 값이 있는지 없는지 확인, 있으면 true를 리턴하고 없으면 false를 리턴 --> if나 while문에서 쓰면 되겠죠?
- E next() : 다음 값을 리턴합니다. 어떤 형태인지 모르기 때문에 리턴 유형을 E로 하겠습니다.
- void remove() : 삭제 하는 메서드
import java.util.*; |
*crl + shift + o import 자동
*제네릭 , 컬렉션은 앞으로 쓸일 이 많으니 꼭 복습할 것.
*집에 가서 java의 신 볼 것
*다른 블로그 보고 배울점 따라하기
*다른 블로그 보고 배울점 따라하기
2016년 8월 24일 수요일
16_08_24
16_08_24(수)
제네릭이 뭘까 (범용적인 방식 ? )
편의성 과 안전성
ex) 인터넷 게시판 한 QnA 가 클래스 이다. 그것은 다른사람이 클래스로 정의 했고 , 우리는 그것을 정확하게 알 수 없다. 그것을 우리의 형태로 재정의 하기 위해 제네릭이 필요하다.
제네릭 메소드와 배열
와일드 카드 ?
(실무에서는 별로 쓸일이 없다)
확장성 ( 메서드 수준까지 )
<? extends Fruit>
ex) class name<A<String> , B<Integer>> extends C<D<Double>>
이란 클레스 선언을 할때
와일드 카드는 class name<?> 이런식으로 선언하면 편하지만
가독성이 매우 떨어진다 (어떤 클레스를 상속 받고 사용할지 모름)
컬렉션 프레임워크
List
Set
Map
-키와 값의 쌍으로 이러우진 데이터의 집합
Vector / ArrayList
-둘이 비슷함
크기 번경 x , 순서가 있음
*https://opentutorials.org/module/516/5400 인스턴스에 대한 설명
*자바에서 인스턴스라는 말이 자주나오는데 그냥 코딩을 하는데 실질적으로
들어가는 내용이라기보다 전반적으로 알고있어야 하는 부수적인 내용이라고
생각하고 그냥 나올때마다 아 ~ 인스턴스를 생성하는구나 하고
넘어만 가다가 오늘 아침에 문득 아니근데 인스턴스가 뭔데? 라는 의문이 들어서
검색해 보았다.
class A {
}
클래스가 있다면 이 클래스를 사용하는 클래스에서는
A a = new A(); 이런식으로 클래스 선언을 할 것이다.
바로 이것이 클래스를 인스턴스화 시킨 것이다.
a라는 객체를 사용하기전에 그것이 무엇인지 정의해 놓는 것이다. 이렇게 해야만
실질적으로 정의되어있는 내용을 메모리에 올려서 사용할 수 있기 때문이다.
정리 해보면 A라는 클래스를 사용하려면 A a = new A(); 라고 선언을 하지만
이는 단순히 A클래스를 a객체로 만들어 사용하기 위해서라는 이유 이 외에
메모리를 확보하고 쓸 수 있게 하는 인스턴스화 작업이 밑바탕 되어있는 것이다.
제네릭이 뭘까 (범용적인 방식 ? )
편의성 과 안전성
ex) 인터넷 게시판 한 QnA 가 클래스 이다. 그것은 다른사람이 클래스로 정의 했고 , 우리는 그것을 정확하게 알 수 없다. 그것을 우리의 형태로 재정의 하기 위해 제네릭이 필요하다.
제네릭 메소드와 배열
와일드 카드 ?
(실무에서는 별로 쓸일이 없다)
확장성 ( 메서드 수준까지 )
<? extends Fruit>
ex) class name<A<String> , B<Integer>> extends C<D<Double>>
이란 클레스 선언을 할때
와일드 카드는 class name<?> 이런식으로 선언하면 편하지만
가독성이 매우 떨어진다 (어떤 클레스를 상속 받고 사용할지 모름)
컬렉션 프레임워크
List
Set
Map
-키와 값의 쌍으로 이러우진 데이터의 집합
Vector / ArrayList
-둘이 비슷함
크기 번경 x , 순서가 있음
*https://opentutorials.org/module/516/5400 인스턴스에 대한 설명
*자바에서 인스턴스라는 말이 자주나오는데 그냥 코딩을 하는데 실질적으로
들어가는 내용이라기보다 전반적으로 알고있어야 하는 부수적인 내용이라고
생각하고 그냥 나올때마다 아 ~ 인스턴스를 생성하는구나 하고
넘어만 가다가 오늘 아침에 문득 아니근데 인스턴스가 뭔데? 라는 의문이 들어서
검색해 보았다.
class A {
}
클래스가 있다면 이 클래스를 사용하는 클래스에서는
A a = new A(); 이런식으로 클래스 선언을 할 것이다.
바로 이것이 클래스를 인스턴스화 시킨 것이다.
a라는 객체를 사용하기전에 그것이 무엇인지 정의해 놓는 것이다. 이렇게 해야만
실질적으로 정의되어있는 내용을 메모리에 올려서 사용할 수 있기 때문이다.
정리 해보면 A라는 클래스를 사용하려면 A a = new A(); 라고 선언을 하지만
이는 단순히 A클래스를 a객체로 만들어 사용하기 위해서라는 이유 이 외에
메모리를 확보하고 쓸 수 있게 하는 인스턴스화 작업이 밑바탕 되어있는 것이다.
*
2016년 8월 23일 화요일
16_08_23
16_08_23
쓰레드
프로세스 : 쓰레드 = 공장 : 일꾼
멀티쓰레드 장단점
장 : 효율적
단 : 교착상태가 발생할수 있다
Swing 컴포넌트 , AWT
잘 사용하지않음 ..
AWT 가 먼저 나옴
+ 인터페이스의 모든 메소드를 빈상태로 구현해 놓은것이 Adapter 클래스이다.
NetWork
Client / Server
server - based model
-안정적 서비스 제공
-공유 데이터의 관리와 보안이 용이
-서버구축비요과 관리비용이 든다.
p2p 모델
-서버구축 및 운용비용 절감
-자원의 활용 극대화
TCP / UDP
웹에서는 TCP를 주로 씀
부트스트랩 ( 반응형 웹 - 모바일 용)
about 프로젝트
내가 무엇을 만들것인가 ?
가장 무난한게 호텔
최고 난이도 쇼핑몰
+포스 기기(통계페이지)
* 프로젝트에 대해서 생각 할 것.
쓰레드
프로세스 : 쓰레드 = 공장 : 일꾼
멀티쓰레드 장단점
장 : 효율적
단 : 교착상태가 발생할수 있다
Swing 컴포넌트 , AWT
잘 사용하지않음 ..
AWT 가 먼저 나옴
+ 인터페이스의 모든 메소드를 빈상태로 구현해 놓은것이 Adapter 클래스이다.
NetWork
Client / Server
server - based model
-안정적 서비스 제공
-공유 데이터의 관리와 보안이 용이
-서버구축비요과 관리비용이 든다.
p2p 모델
-서버구축 및 운용비용 절감
-자원의 활용 극대화
TCP / UDP
웹에서는 TCP를 주로 씀
부트스트랩 ( 반응형 웹 - 모바일 용)
about 프로젝트
내가 무엇을 만들것인가 ?
가장 무난한게 호텔
최고 난이도 쇼핑몰
+포스 기기(통계페이지)
* 프로젝트에 대해서 생각 할 것.
피드 구독하기:
글 (Atom)