。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

[네이버클라우드] 클라우드 기반의 개발자 과정 7기/웹프로그래밍 104

[NC7기-56일차(7월13일)] - 웹프로그래밍 37일차

멀티태스킹 멀티태스킹(multi-tasking) => 동시에(concurrent 병행) 여러개의 app을 실행 프로세스안에는 ,, 들어있다. 실행중인 App 명령문 *CPU는 한 번에 한 명령 처리 => 여러 프로세스를 동시에 실행하기 위해서 돌아가면서 돌아가면서 명령문을 실행. => 실행 속도가 빠르기 때문에 가능. => 실제는 동시 실행이 아니라 병행, 순차적으로 빠르게 실행하는 것이다. => 동시에 실행되는 것처럼 보이는 것. => 어떤 방법으롤 돌아가면서 실행하는것이 더 효과적일까!? => 그 방법: 프로세스 스케줄링, 또는 CPU 스케줄링임.(돌아가면서 실행하는 것) 1클럭: CPU에 전기 땅~ 한 번 보내는거 . 코어 수가 많을 수록 더 빠르게 작업 가능 서버에서 4기가 짜리르르 한 개 꼽는것..

[NC7기-55일차(7월12일)] - 웹프로그래밍 36일차

41. statfull 방식 한번 접속하면 종료할때까지 계속 반복 -클라이언트 작업 누적 가능 접속된 상태 계속 유지 - 서버 자원 점유 - 많은 클라이언트 접속을 유지할 수 없음 42. stateless 방식 접속 - 응답 - 접속 끊기 매번 접속시간 길어짐. 클라이언트 작업 유지 어려움 응답 후 끊기 때문에 서버 자원 덜 사용. 더 많은 동시 접속 가능 1. stateful calcclient1 calcserver 1 1. 연결 -> 2. 요청-> (반복) 5. quit 3. 계산 4. 응답

[NC7기-54일차(7월11일)] - 웹프로그래밍 35일차

40. 프로젝트에 예외처리 적용 try~catch~finally server app - DAO 메서드 호출할 때 try 적용 client app - execute 적용 41. 여러 클라이언트의 요청을 순차적으로 처리하기 : Stateful 방식 - 클라이언트 요청을 순차적으로 처리하는 방법 먼저 접속한 클라이언트가 접속을 끊을때까지 대기. 특징 1. 접속 후 연결 상태로 유지한다. -> 서버 자원을 점유 -> 동시 많은 클라이언트 접속을 유지할 수 없다.(stateless에 비해) 2. 클라이언트 정보를 유지하기 때문에 -> 클라이언트가 요청한 작업 결과 유지 -> 연결작업을 처리하기 수월하다. while로 무한 루프 server앱 소켓부분 try ~ catch문 안에 또 try~catch 들어가도 됨 ..

[NC7기-53일차(7월10일)] - 웹프로그래밍 34일차

클라이언트 앱에서 서버측에 잇는 dao를 사용할수있도록 proxy를 만듬 39. reflection API를 사용하여 DAO 객체의 메서드 호출을 자동화하기. 1) 클라이어트가 보낸 명령을 데이터이름과 메서드 이름으로 분리한다. serverapp 01 -1) 데이터 이름과 메서드 이름 알아내기 command "데이터명/ 메서드명" data 메서드의 파리미터 ServerApp class 1. 요청 -> 2. server앱을 분석하여 4. RequestEntity 파라미터의 deseiralize 5. Method call 3. Method에서 찾기 Reflectiono API를 활용하여 DAO의 메서드 호출 자동화 // 2) 클라이언트가 요청한 DAO 객체와 메서드를 찾는다. 클라이언트 요청을 처리할 DAO..

[NC7기-52일차(7월7일)] - 웹프로그래밍 33일차

DAO와 Proxy 패턴 (GoF) Client Server 사용자(Actor)가 ClientApp을 통해 BoardxxxListener에 call return 받음. BoardxxxListener은 BoardNetworkDao에 call하고 return 받음 BoardNetworkDao는 ServerApp에 요청하고 응답 받음 [프록시] : 프록시와 실제일을 하는 객체는 같은 인터페이스에 따라 설계되어야한다. BoardNetworkDao: 클라이언트 측에서 BoardListDao의 역할을 대행한다. 진짜 일을 하는 것은 아니고 작업을 서버에 전달하고 서버에서 보낸 작업 결과를 호출자에게 리턴하는 역할 ServerApp 이 BoardListDao를 call하고 return 받음 BoardListDao는 ..

[NC7기-51일차(7월6일)] - 웹프로그래밍 32일차

네트워킹 전 프로그램 간의 Data/file 공유 안 됨. 파일을 별도 컴퓨터에 저장하고 거기에 접속해서 데이터 처리 하지만 여러 사람이 동시에 편집하려고 하면 ,,, 어카쥐 ? 중간에 프로그램을 하나둔다. A가 머 할 일있으면 app에 요청. 그럼 app이 처리. B가 머 할 일있으면 app에 요청. 그럼 app이 처리. => 동시에 접근하더라도 app 이 순서대로 관리할거니까 데이터가 깨질 일이 없다. => 클라이언트앱이 서버앱에 요청 ! client / server 통신 규칙 (protocol) 1. 데이터 등록 Board 객체를 Json 스트링 문자열로 변환. client App 6. MAP으로 변환 1. board/add --> 2. Json 문자열 --> 5. 응답(JSON 문자열) Serve..

[NC7기-50일차(7월5일)] - 웹프로그래밍 31일차

DAO(Data Access Object) 도입 현황 APP: 메뉴 관리, 데이터 파일 입출력, MemberListListener: 회원목록 조회, ui, 데이터 조작 List: Data 저장소 만약,, Excel or Database or MongoDB or Redis 등등으로 저장소 변경을 하게 되면 MemberListListener의 데이터 조작 방식이 바뀌기 때문에 모든 Listener 클래스를 변경해야한다. 그리고 APP의 데이터파일 입출력 방식도 바뀌어야한다. => 유지보수 비용이 많이 든다. List: 인덱스 기반 메모리 저장 Database : table 기반 RDBMS MongoDB : document 지향 데이터베이스 Redis : key-value 구조의 비정형 데이터저장, 메모리 D..

[NC7기-49일차(7월4일)] - 웹프로그래밍 30일차

oop ex07 추상클래스 클래스 앞에 abstract 붙이기. 목적: 서브 클래스에게 공통 필드나 메서드 등을 상속해주는 역할, 여러 클래스를 같은 타입으로 묶을 때. 추상클래스는 인스턴스를 생성할 수 없다. 레퍼런스는 생성할 수 있다. A를 상속받아 레퍼런스 생성가능. 추상클래스의 추상메서드 메서드 선언부에 abstract 붙이기. 메서드 바디가 없다 { } 추상클래스나 인터페이스에서만 선언 가능. 서브 클래스마다 구현이 다를 수 있는 경우에 사용. package com.eomcs.oop.ex07.a; abstract class A3 { public abstract void m1(); } class A3Sub extends A3 { @Override // 이 애노테이션은 빼도 된다. public vo..

[NC7기-48일차(7월3일)] - 웹프로그래밍 29일차

*Json 형식으로 입출력하기 JavaScript Object Notation : 자바스크립트 객체 리터럴 문법을 모방하여 만든 텍스트 파일 포맷 JSON (JavaScript Object Notation)은 데이터를 표현하기 위한 경량의 데이터 교환 형식으로, 텍스트로 구성되며, 일반적으로 데이터를 전송하거나 저장하기 위해 사용됩니다 1. 자바스크리비트 객체 리터럴 문자열 - "문자열" , '문자열' 숫자 - 314 3.14 (넘버타입 동일. 부동소수점 어쩌고 없음) 논리 - true/false 객체 - { name : "홍길동", age: 20, working: true } name : property name - 그냥 적어도 되고, "name ", 'name ' 더블,싱글로 적어도 상관없다. "홍길..

[NC7기-47일차(6월30일)] - 웹프로그래밍 28일차

32. 객체 출력하기 / ObjectOutputStream, ObjectInputStream 인스턴스를 통째로 입출력하기(객체 직렬화) // ObjectOutputStream write object 단점: 출력 형식을 따라야함. Board 객체를 writeObject()로 입력하면 ObjectOutputStream이 byte[] 로 만들어서 파일에 저장함 *Board : 인스턴스 = 객체 *인스턴스(byte[]) 를 일련의 바이트 정보로 바꾸는 것: serialize (직렬화) (=marshaling) *byte[] : 인스턴스 필드값 + 클래스 정보(어느 클래스의 인스턴스인지) 형식별로 write 하던걸 그냥 Object로 퉁 ~ out.writeObject(board); ObjectOutputStre..