일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 국비지원JAVA
- 항해99 #항해플러스 #주니어개발자 #주니어개발자역량강화 #주니어개발자멘토링 #개발자사이드프로젝트 #코딩부트캠프 #코딩부트캠프후기
- Resource #
- Java#java#자바#다오#디티오#브이오#dao#dto#vo
- Java#컴파일러#자바컴파일러#
- tibero#티베로#이중화#failvover
- Java#정처기#비트연산자#정보처리기사
- 자바
- IntelliJ#인텔리제이#인텔리#단축키
- 자바#Java#배열예시#연습#기초다지기
- java
- 개발자도서#개발자책#도메인#DDD#도메인주도개발시작하기#개발스터디#
- 국비지원#국비교육
- #
- Java#JAVA#매개변수
- 국비지원자바#국비교육자바#국비지원java#국비교육java#자바스크립트#프론트엔드
- 쿼리스트링#쿼리문자열#바인딩
- 국비지원JAVA#국비지원자바#프로그랭#JSP#국비지원JSP#국비교육JSP#웹개발자#코딩
- Java#java#메모리영역#클래스로더#가비지컬렉터
- db#데이터베이스#오라클#sql
- 프로그래밍
- #java#JAVA#프로그래밍#웹개발자
- 국비지원#국비교육#국비지원자바#국비교육자바#css#HTML#JAVA
- Spring#spring#스프링#스프링프레임워크#스프링자동주입#스프링생성자#스프링기본#국비지원#국비교육#국비지원스프링
- html#HTML#프론트엔드#개발자#코딩#국비지원#국비교육#국비지원프론트엔드#국비지원HTML#국비지원html#국비프론트엔드
- 개발자#it도서#도메인#DDD#ddd
- spring#Spring#RequestBody#ResponseBody
- 항해플러스#항해#항해플러스3기#회고
- Spring#spring#스프링#스프링프레임워크#스프링의존성주입#스프링생성자#스프링기본#국비지원#국비교육#국비지원스프링
- 국비지원JAVA#국비교육JAVA#국비지원자바#국비교육자바#JSP#SERVLET#서블릿#
- Today
- Total
개린이 개발노트
국비지원 JAVA(자바) 프로그래밍(네트워크,OSI7계층,클라이언트,서버 동작과정, ) 본문
네트워크
클라이언트(사용자,브라우저)와 서버의 관계
OSI 7 계층
네트워크에 관련된 장비, 규약 - 회사마다 다 다름(유지보수가 힘듦)
그래서 OSI 7 계층만들어서 표준을 맞춤.
1계층-물리계층(기계,전기,기능을 케이블로 전송할 때)
단순히 주고받기만함 ex) 장비: 리피터, 허브 등
2계층-데이터 링크 계층
정보의 전달(오류검출)
정부를 주고 받는단위: 프레임
ex) 장비: 브리지, 스위치
3계층-네트워크 계층(ip계층)
안정성이 올라감, 속도가 빠름
ip를 가지고 주소 결정, 경로 설정 등을 함
ip할당(127.0.0.1 컴퓨터의 주소)
4계층- 전송계층
통신이 활성화되는 계층
TCP(TCP란? 상호간 신뢰적인 연결지향 서비스 제공) 프로토콜(프로토콜이란? 통신규약)을 사용
패킷손실가능성이적다, 중복,순서가 변경되는경우가 없음
연결<->비연결:TCP에 반대되는 비연결->UDP 신뢰성이 낮음, 비연결성 일대다의 환경에 적합
5계층 세션계층
통신을 위한 논리적 연결
6계층 표현계층
7계층 응용계층
서비스 제공
ip
port 번호
정확한 ip와 port번호를 알아야 클라이언트와 서버를 연결할 수 있다.
socket (연결해주는 장치)
서버와 클라이언트 부분은 따로따로 작업함.
서버 동작 과정
1.소켓 생성이 첫번쨰
2.ip,port를 지정
3. 클라이언트 요청대기
4. 클라이언트의 요청을 승인하고 데이터 송수신에 대한 소켓 생성
5. 송수신
6. 연결 종료
클라이언트
1. 소켓 생성
2. 서버한테 요청 연결
3. 송수신
4. 연결종료
package 주소;
import java.net.InetAddress;
public class Sample01 {
public static void main(String[] args) {
// ip 주소 뽑아내기
try {
InetAddress local = InetAddress.getLocalHost();
System.out.println("내컴퓨터 ip 주소: " + local.getHostAddress());
InetAddress[] iaArr = InetAddress.getAllByName("www.naver.com");
for (InetAddress r : iaArr) {
System.out.println("네이버 ip 주소" + r.getHostAddress());
}
} catch (Exception e) {
}
}
}
결과값 :
내컴퓨터 ip 주소: x비밀x
네이버 ip 주소223.130.200.104
네이버 ip 주소223.130.195.95
Url
Http:// Ip.port
DNS
도메인네임서비스 IP를 가지고 접속하기 힘들어서 DNS 이용
요청방식
post 방식은 로그인 같은것
get 방식은 보안을 중요시 하지않는 일반 검색 같은 것
ServerSocket
ip,port 1~65550
Socket
package 소켓연결;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket();
serverSocket.bind(new InetSocketAddress("localHost", 50003));
while (true) {
System.out.println("[연결대기]");
Socket socket = serverSocket.accept();
InetSocketAddress isa = (InetSocketAddress) socket.getRemoteSocketAddress();
System.out.println("[연결수락] : " + isa.getHostName());
byte[] bytes = null;
String message= null;
InputStream is= socket.getInputStream();
bytes = new byte[100];
int readByteCount = is.read(bytes);
message = new String(bytes,0,readByteCount,"utf-8");
System.out.println("[데이터 받음]"+message);
OutputStream os= socket.getOutputStream();
message = "hi Client";
bytes = message.getBytes("utf-8");
os.write(bytes);
os.flush();
System.out.println("[데이터 전송함]");
is.close();
os.close();
socket.close();
}
} catch (Exception e) {
System.out.println("[연결실패]");
}
if (!serverSocket.isClosed()) {
try {
serverSocket.close();
} catch (Exception e) {
}
}
}
}
연결대기]
[연결수락] : 127.0.0.1
[데이터 받음]hi Server
[데이터 전송함]
[연결대기]
package 소켓연결;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
Socket socket = null;
try {
socket=new Socket();
System.out.println("[연결 요청]");
socket.connect(new InetSocketAddress("localhost",50003));
System.out.println("[연결 성공]");
byte[] bytes = null;
String message = null;
OutputStream os = socket.getOutputStream();
message = "hi Server";
bytes= message.getBytes("utf-8");
os.write(bytes);
os.flush();
System.out.println("[데이터 전송함]");
InputStream is= socket.getInputStream();
bytes = new byte[100];
int readByteCount = is.read(bytes);
message = new String(bytes,0,readByteCount,"utf-8");
System.out.println("[데이터 받음]"+message);
os.close();
is.close();
}catch (Exception e) {
}
if(!socket.isClosed()) {
try {
socket.close();
}catch (Exception e) {
}
}
}
}
[연결 요청]
[연결 성공]
[데이터 전송함]
[데이터 받음]hi Client
마리아디비 데이터베이스시스템 다운로드
마리아디비와 자바를 연동하는 커넥트 제이 라이브러리
오라클 같은경우는 따로 설치할 필요없음!
마리아디비 본파일 설치방법
설치할때비밀번호 안까먹게 조심하자!!
전부 선택
인스톨 클릭!
설치완료되면 다음과 같이 폴더가 뜹니다.
데이터베이스
데이터베이스 관리 시스템-DBMS, 오라클 등
데이터베이스 언어
테이블- 표
레코드- 행
필드- 열
데이터정의어(DDL) - 테이블 생성create, 삭제drop, 수정 alter
데이터조작어(DML) - 테이블 안에 데이터들을 삽입insert, 삭제delete , 수정update ,검색(조회)select
데이터 제어어 (DCL)- rollback(복구) commit(저장,갱신기능)
학원 -> 학원관련 DB
직원 관련 표
수강생 관련 표
과목 관련 표
과목별 수강료 표
이러한 것들을 통으로 묶어서 관리하는것을 데이터베이스
먼저 간단한 INSERT 문입니다. 보기엔 간단해 보이지만 사용 방법에 따른 종류도 많습니다.
1. INSERT INTO [테이블명] ([컬럼명1],[컬럼명2]....) VALUES ('값1','값2',...)
기본적으로 위의 쿼리문처럼 사용을 하는데요. 컬럼명1은 값1의 위치라는 점. 즉, 첫번째 위치의 값은 첫번째 값으로, 해당하는 위치에 값을 넣어 주어야 저장이 됩니다.
2. INSERT INTO [테이블명] VALUES ('값1','값2',...)
2번의 경우는 앞에 컬럼명을 생략한 경우입니다. 위와같이도 사용이 가능합니다.
보통의 경우 테이블의 변동이 없고 항목이 적을 때 주로 사용을 합니다.
대신 테이블 생성시 혹은 SELECT 문을 사용하였을때 보이는 전체 컬럼의 순서대로 값을 넣어주어야 합니다.
주의사항으로 만약에 첫번째 컬럼의 속성이 IDENTITY(자동증가값)일 경우에는 해당 값은 INSERT로
넣을 수 없으니 해당 컬럼은빼고 나머지 데이터만 입력합니다
예) 첫번째 컬럼의 속성이 IDENTITY인 경우
INSERT INTO [테이블명] VALUES ('값2','값3',...)
3. INSERT INTO [테이블명1] ([컬럼명1],[컬럼명2]..) SELECT '값1','값2'.. FROM [테이블명2]
3번의 경우 INSERT 문과 SELECT 문을 합친 것으로, 단순히 값을 하나씩 직접 넣는 것에서 필요한 값을 특정 테이블에서 가져와서 넣는 것입니다. 마찬가지로 컬럼명1에는 값1이 저장되게 되므로 저장시 값이 이상하다면 위치를 잘 확인해 보셔야 됩니다. 물론 테이블명 뒤에 사용할 수있는 WHERE 절이나 GROUP 등 모든 절을 사용하실 수 있습니다.
사용 용도는 저 같은경우에는 주로 똑같거나 비슷한 구조의 테이블에 데이터를 복사하는 용도로 사용합니다.
4. INSERT INTO [테이블명1] SELECT '값1','값2'.. FROM [테이블명2]
마찬가지로 컬럼명은 생략이 가능합니다.
'국비지원(국비교육) 웹 개발자 과정' 카테고리의 다른 글
국비지원 JAVA(자바) 프로그래밍( Visaul Studio Code( VS CODE) 비쥬일 스튜디오, (0) | 2022.12.14 |
---|---|
국비지원 JAVA(자바) 프로그래밍(자바, MariaDB, 마리아디비 ) (0) | 2022.12.13 |
국비지원 JAVA(자바) 프로그래밍 (메서드호출,오버라이딩,상속, 트라이캐치,집합,Thread,스트림) (0) | 2022.12.09 |
국비지원 JAVA(자바) 프로그래밍 자바 연습문제 모음 주사위, 별찍기) (0) | 2022.12.08 |
국비지원 JAVA(자바) 프로그래밍 (입출력 스트림) (0) | 2022.12.07 |