리스트객체.forEach(요소->System.out.println(요소));
리스트객체.forEach(요소->
System.out.println(요소)
);
***Stream map() 메소드는 return문이 있다.
Stream<String> stream3=list1.stream();
Stream<String> st0=stream3.map(el->m1()구현);
Stream<String> st1=stream3.map(A::m1);
System.out.println();
GUI
- Graphical User Interface
- 사용자(클라이언트)가 원하는 정보를 얻기 위한 인터페이스
- 사용자가 편리하게 입출력할 수 있도록 그래픽으로 화면을 구성
- 마우스나 키보드로 입력받을 수 있도록 지원하는 사용자 인터페이스
- 자바 언어에서 GUI 프로그램을 작성할 수 있다.
- 컴포넌트들로 구성 → “이미 만들어진… 제공되어진…”
- AWT 패키지와 Swing 패키지
AWT(Abstract Window Toolkit
- 운영체제가 제공하는 자원을 이용하여서 컴포넌트를 생성
- 자바로 컴포넌트 작성되어 있기→ 어떤 플랫폼에서도 일관된 화면 작성 가능
Swing의 특징
- 텍스트 입력이나 Password 동작과 같은 복잡한 기능들이 제공
- 자바 API
- 데이터 전송
컨테이나와 컴포넌트
- 컨테이너
- 다른 컴포넌트를 포함할 수 있는 GUI 컴포넌트
- 다른 컨테이너에 포함될 수 있음
- AWT 컨테이너 : Panel, Frame, Applet, Dialog, Window
- Swing 컨테이너 : JPanel, JFrame, JApplet, JDialog, JWindow
- 컴포넌트 → 이미 만들어진
- 반드시 컨테이너에 포함되어야 화면에 출력될 수 있는 GUI 객체
- 모든 GUI 컴포넌트가 상속받는 클래스 : java.awt.Component
- 스윙 컴포넌트가 상속받는 클래스 : javax.swing.JComponent
- 컨테이너 생성 → 2.컴포넌트 추가 (순서 주의) → 3.컨테이너 화면 setView(컨테이너) 추가
Swing 클래스 계층구조
- Component : 화면에 표시되어서 사용자와 상호작용하는 시각적인 객체를 나타냄
- Container : 내부에 다른 컴포넌트를 추가할 수 있는 기능을 제공 → add()를 사용하면 컨테이너 안에 컴포넌트를 추
- Window : border, title등 가지고 있는 윈도우를 정의
- Frame : 자바 GUI (AWT)
- JFrame : Frame → 스윙의 맞추어 변경 **화면 단위
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
기초 컴포넌트
- 레이블(label): 편집이 불가능한 텍스트를 표시
- 버튼(button): 편집이 불가능한 텍스트를 표시
- 텍스트 필드(TextField): 입력이 가능한 한 줄의 텍스트 필드
컨테이너와 배치 개념(layout)
- 컴포넌트는 컨테이너에 부착 → 화면 표시
- 컨테이너마다 하나의 배치 관리자가 존재 → 기본
- 컨테이너의 크기가 변하면 내부 컴포넌트들의 위치와 크기를 모드 재 조절하고 재배치해야함
- 기본이 FlowLayout
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
- FlowLayout 배치 관리자
- 기본배치 → FlowLayout으로 지정한다
- 컴포넌트를 수평 방향으로 배치하는 관리자
- 왼쪽에서 오른쪽, 위에서 아래로 순차적으로 배열
- BorderLayout 배치 관리자
- 컴포넌트를 추가할 때 방향을 지정하여 추가할 수 있는 기능을 제공
- 배치방향 : 동,서,남,북,중앙
- GridLayout 배치 관리자
- 격자모양, 미리 격자의 갯수를 정한다
- 컴포넌트를 행과 열을 가진 배열 형태로 배치
- 사각형 격자(그리드)로 분할하고 각 셀에 컴포넌트 하나씩 배치
- 생성자에 행수와 열수 지정
- 셀에 왼쪽에서 오른쪽으로, 다시 위에서 아래로 순서대로 배치
- 절대 위치(absolute)로 배치하기
- 배치 관리자가 없는 컨테이너에 컴포넌트를 삽입할 때
- 프로그램에서 컴포넌트의 절대 크기와 위치 설정
- 컴포넌트들이 서로 겹치게 할 수 있음
***Servlet, Spring Security, javascript, jQuery
***이벤트(Event) → 어떠한 동작(행위): 마우스, 키보드, window
***이벤트 핸들러 → 이벤트가 발생이 되면 처리되는 콜백함수(메소드)
***이벤트 리스너 → 미리 지정한 이벤트가 발생이 되면(듣고있다가?) 처리하는 주체 → 이벤트 핸들러 연결
- 입력: 키보드로 텍스트를 입력 → System.in
- 출력: 모니터로 입력한 텍스트를 출력 → System.out
- 두 포인트 간의 데이트럴 주고 받는 것
- 데이터 스트림, 직렬화 및 파일 시스템을 통한 시스템 입력 및 출력
- java I/O 패키지 안에는 파일 입출력과 관련된 클래스
- 입출력은 반드시 예외처리 설정 → IOException
- 반드시 .close();
스트림(Stream)이란?
- 데이터 운반(입출력)하는데 사용되는 연결통로
- 물의 흐름(Stream)
- 단방향(동시x) → 입력, 출력 2개가 필요
입력 | 출력 |
---|
입력스트림(stream) → | ← 출력스트림(stream) |
write() | read() |
- 바이트 단위 스트림 → 숫자(정수)
- InputStream, OutputStream → 바이트 기반 입출력 스트림의 최상위 클래스로 추상 클래스
- FileInputStream,,, FileOutputStream
- 문자(Text) 단위 스트림
- Reader, Writer → 문자(Text) 데이터 기반 입출력의 최상위 클래스
- FileReader, FileWriter
-
콘솔 입출력
-
실제 프로젝트 파일 처리시 권한을 설정
BufferedOutputStream (Buffer → 임시 저장소)
- 내부 버퍼를 만들어 내부 버퍼의 크기만큼 데이터를 한 번에 저장한 다음 내부 버퍼로부터 1byte의 데이터를 읽어온다
- BufferedOutputStream은 내부 버퍼에 있는 데이터를 파일로 모두 송출한다(얼마가 남았든)
- 이 버퍼가 쌓인 데이터를 모두 보내고 또 보내는데 이 버퍼에 데이터 가득 많이 안 찬 상태에서는 안보내고, 그대로 버퍼안에 쌓이게 됨. 이럴 때 이 남은 버퍼를 모두 비워주는 역할
BufferedOutputStream은 기존에 있는 자료를 읽어올 때 쓰기 때문에 flush(비운다)가 필요없다.
인코딩(encoding)
- 인코딩은 사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호로 만드는 것을 말한다 (컴퓨터 이해)
디코딩(decoding)
1-1 네트워크 프로토콜
- 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 즉 통신 규약 및 약속이다.
1-2 HTTP
- HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버 프로토콜이란(보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미한다.
1-3 PORT(통로)
- 포트(port)는 “논리적인 접속장소”이며, 특히 인터넷 프로토콜인 TCP/IP를 사용할 때에는 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용된다. 네트워크 상에서 통신을 할 때 IP를 토대로 해당 서버가 있는 컴퓨터에 접근한다
- 예) FTP(21), 인터넷(80), SSH(22)
1-4 WAS(Web Application Server)
- 웹 브라우저와 같은 클라이언트로부터 웹 서버가 요청을 받으면 어플리케이션에 대한 로직을 실행하여 웹 서버로 다시 반환해주는 소프트웨어입니다. 웹서버와 DBMS 사이에서 동작하는 미들웨어로써, 컨테이너 기반으로 동작합니다.
- 실제 말하는 서버(클라이언트의 요청 정보를 처리)
1-5 tomcat
- 톰캣은 아파치 소프트웨어 재단의 웹 어플리케이션 서버(WAS)로서, 자바 서블릿을 실행하고 JSP코드가 포함되어 있는 웹페이지를 만들어준다. 자바 서블릿과 JSP규격의 ‘참조용 구현’으로 평가되고 있는 톰캣은 웹서버에서 넘어온 동적인 페이지를 읽어들여 프로그램을 실행하고 그 결과를 다시 html로 재구성하여 아파치에게 되돌려 준다.
- JSP(MVC Model2 View 역할), Servlet(MVC Model2 Controller역할)
URL 이란? → 자원(resource → 이미지, 동영상, 파일, 오디오…)의 경로
-
URL(Uniform Resource Locator): 인터넷 상의 자원(리소스)에 대한 주소를 의미한다.
-
웹 브라우저에 직접 URL을 입력
-
링크(하이퍼링크)를 클릭하면 웹 브라우저가 해당 URL을 브라우저에 로드
-
하이퍼링크 → 순서와 상관없이 사용자 원하는 자원으로 이동
-
하이퍼텍스트 : Hyper Text
-
하이퍼텍스트를 만드는 언어 → HTML
-
HTTP(HyperText Transfer Protocol) → web 기본 프로토콜
URL
프로토콜://IP:포트/자원
http://주소/springMVC1206/join
https://www.naver.com/
JDBC (Java Database Connectivity)
프로그램언어 → 드라이버 ← 데이터베이스 관리 시스템 (DBMS) → DB
Java JDBC Driver Oracle, Mysql, MsSql, Access
- 데이터베이스
- 공용 데이터들의 집합
- 데이터의 저장, 검색, 갱신 → 데이터를 고도로 조직화하여 저장
- 데이터 베이스 관리 시스템 (DBMS)
- 관계형 데이터베이스(RDBMS) Relation Databases Managements System
- Oracle, Mysql, MsSql, Access
- 테이블간의 관계, 규칙(제약조건), C(생성)R(조회)U(수정)D(삭제)
- SQL(Struct Query Language) → RDBMS 데이터베이스 프로그래밍 언어
- DDL → 테이블 생성
- DML → CRUD
- DCL → 제어, 권한
- TCL → 트랜잭션
- 데이터베이스 → DB(DBMS)
- 데이터베이스는 컴퓨터에 저장되는 구조화된 정보 또는 데이터의 조직화 된 모음.
- 데이터베이스는 일반적으로 데이터베이스 관리 시스템(DBMS)에 의해 제어된다.
- 데이터와 DBMS를 하나로 묶어 데이터베이스 시스템이라고 하며 단축하여 데이터 베이스라고도 합니다.
- 데이터베이스는 데이터 작성 및 쿼리에 SQL(Structured Query Language)을 사용합니다 → RDBMS
- 관계형 데이터베이스(RDBMS)와 종류
- 데이터베이스(Database)의 종류는 크게 관계형 데이터베이스(RDB)와 NoSQL(Not Only SQL)로 나뉜다.
- RDB 종류 → Oracle, MySQL(Oracle) / MS-SQL(Microsoft) / H2(테스트용) / Maria DB / SQLite(Opensource, 안드로이드 내장)
noSQL(Not Only SQL)
- 장점 : 대용량 데이터를 다루거나 데이터 분산 처리에 용이, 유연한 데이터 모델링이 가능. Cloud computing에 적합.(AWS)
- MongoDB → json, XML과 같은 Collection 데이터 모델 구조 사용
-
Oracle과 MySQL → RDBMS
- Oracle
- Oracle Corporation이라는 미국의 기업에서 만든 데이터베이스 관리 시스템(DBMS, Database Management System)
- 현재 가장 많이 사용하는 Database
- MVC Model2
- MySQL
- MySQL은 전세계적으로 가장 널리 사용되고 있는 오픈 소스 데이터베이스
- 표준 데이터베이스 질의 언어 SQL을 사용하는 개방 소스의 관계형 데이터베이스 관리시스템(RDBMS)
- 매우 빠르고, 유연하며, 사용하기 쉬운 특징이 있다.
- 자바, 펄, php, python 스크립트 등을 위한 응용프로그램 인터페이스(API)를 제공한다.
- 무료 프로그램이어서 홈페이지나 쇼핑몰 등등 일반적인 웹 개발에 널리 사용되고 있다.
- MVC Model2, Mybatis, JPA, AWS(EC2 → RDS)
- Oracle SQL과 유사하다.
- Maria DB ← MySQL의 파생 RDMS
-
SQL
- SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.
- SQL을 표준으로 채택하고 있다.
-
DDL, DML, DCL, TCL
-
DDL : 데이터 정의 언어
- 테이블과 컬럼을 정의하는 명령어로 생성, 수정, 삭제 등의 데이터 전체 골격을 결정하는 역할을 담당한다.
- DDL은 명령어를 입력하는 순간 작업이 즉시 반영(Auto Commit)
CREATE ****(JDBC) | 테이블을 생성하는 역할 |
---|
ALTER | 테이블의 구조를 수정하는 역할 |
DROP ****(JDBC) | 테이블을 삭제하는 역할 |
RENAME | 테이블의 이름을 변경하는 역할 |
TRUNCATE | 테이블을 초기화하는 역할 |
ALTER | 컬럼 변경 문법 → 수정(변경) |
---|
ADD COLUMN | 컬럼을 추가하는 역할 |
DROP COLUMN | 컬럼을 삭제하는 역할 |
MODIFY COLUMN | 컬럼을 수정하는 역할 |
RENAME COLUMN | 컬럼의 이름을 변경하는 역할 |
DROP CONSTRAIN | 컬럼을 제약조건에 기반해서 삭제하는 역할 |
- SQL 데이터를 추가할때는 레코드 단위로 추가한다.
- 레코드 : 행(row). 테이블의 행(row).
- 컬럼.
b. DML : 데이터 조작 언어
- 데이터 베이스의 내부 데이터를 관리하기 위한 언어
- 데이터를 조회, 추가, 변경, 삭제등의 작업을 수행하기 위해 사용 → CRUD
- DDL과 달리 DML은 적는 즉시 반영(Auto Commit)이 되지 않는다.
- 실시간으로 테이블에 반영되지 않는다. ***Oracle
- Commit 명령어를 통해 Transaction을 종료해야 해당 변경 사항이 테이블에 반영 ***Oracle
INSERT | 테이블에 데이터를 추가하는 역할 | Create → 회원, 게시글, 상품 추가 |
---|
SELECT | 데이터베이스에서 데이터를 검색하는 역할 | Read → 회원, 게시글, 상품 조회 |
UPDATE | 테이블 내에 존재하는 데이터를 수정하는 역할 | Update → 회원, 게시글, 상품 수정 |
DELETE | 테이블에서 데이터를 삭제하는역할 | Delete → 회원, 게시글, 상품 삭제 |
c. DCL : 데이터 제어 언어
- 데이터를 관리 목적으로 보안, 무결성, 회복, 병행 제어등을 정의하는데 사용
- DCL을 사용하던 데이터베이스에 접근하여 읽거나 쓰는 것을 제한할 수 있는 권한을 부여하거나 삭제
- 데이터의 정확성을 위한 무결성을 유지
- 시스템 장애에 대비한 회복과 병행수행을 제어
GRANT | 권한을 정의할 때 사용하는 명령어 |
---|
REVOKE | 권한을 삭제할 때 사용하는 명령어 |
d. TCL
- DCL과 비슷, 트랜잭션을 제어할 때 사용
- 논리적인 작업 단위를 묶어 DML에 의해 조작된 결과를 트랜잭션 별로 제어
- 트랜잭션(Transaction)
- 추가, 수정, 삭제 시에 사용됨.
- 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위
- commit
- rollback
Oracle CRUD 정리
--추가, 등록 Create → insert into ~ values
insert into 테이블명(칼럼명1, 칼럼명2,,,) values(값1, 값2,,,);
insert into member0615(userId, userPw, email) values('m1','1111','1@email.com');
--조회 Read → select ~ from ~ where;
select 조회할 컬럼명 from 테이블명;
select * from member0615;
select userId from member0615;
select userId, userPw from member0615;
select userId, userPw, email from member0615;
--수정, 변경 Update → update ~ set ~ where
update 테이블명 set 칼럼명1=변경값,,, where 칼럼명=조건;
update member0615 set userPw='2222' where userId='m1';
삭제, 탈퇴 Delete → delete from ~ where
delete from 테이블명 where 컬럼명=조건;