System.out(객체)API함수는 대상이 있다.
대상을 개체와 객체로 나눌수있다.

출력버퍼(개체)를 사용하기 위해 실체화(=객체화=인스턴스화)해서 객체를 만들어야한다.

객체 = 실존물 = 실체

객체를 호명 할 수있어야한다. (네것인지, 내것인지)

객체는 명칭이 부여되거나 소유격을 통해 참조한다.


*오류종류

  • 구문오류
  • 논리적버그 : 컴파일러에게는 오류가 아니지만, 개념적으로 아닌것
  • 입력값 오류

System.in.read(); 사용

int code = System.in.read();

입력버퍼인 System.in와 read()메소드를 이용해서 입력.

콘솔창에 임의의 값을 입력하면 입력버퍼에 값이 담긴다.

System.out.printf()를 통해 출력을한다.

 

35를 입력했을때,

%d 는 3의 아스키코드값 51을 출력

%c 는 3을 char타입으로 바꾸어 'c'를 출력

즉 3에 대해서만 출력한다. (숫자하나에 대해서만 출력)

 

 

 

두 개의 숫자 입력후 그 두 개를 출력하려면:

80을 입력했을때, 8과0 에 대해 모두 출력하려면

code = System.in.read();

System.out.printf();를 한번씩 더 넣어야 두개의 숫자에 대해 출력이된다.

위의 %d 는 8의 아스키코드 값 56을 출력

아래의 %d 는 0의 아스키코드 값 48을 출력

 

 

보이는 그대로 출력하려면 ? 

아스키코드값이 아닌 보이는그대로 출력한다면 

System.out.printf("code1 is %d\n",code1-48); 

8은 아스키코드에서 56이고 48을빼야 8이나오므로 code에서 48을빼준다.

숫자 하나를 입력받아 그대로 출력하고자 할때 아스키코드 값 48을 빼주어야한다.

 

하지만 출력이 8과 0각각되므로

두 코드를 붙여서 출력하려면

(code1-48)*10+(code2-48); 으로 코드를 더해줘야 80으로 출력된다.

 

아스키코드값 문자변환과 숫자갯수만큼 메소드를 넣는 번거로움을 해결할 함수가 있다.

Scanner scan = new Scanner(System.in);

Scanner를 이용해서 80이라는 문자를 그대로 불러와서 숫자로 변환해줄 수있다.

Scanner scan = new Scanner(System.in);

new연산자를 통해 객체를 생성한다.

scan은 Scanner의 이름이다. (변수선언과 비슷)

다른 Scanner와 식별이 가능하도록 이름을붙여준다.

System.in은 Scanner가 사용하는 부품이다.

개체 Scanner를 이용해 scan이라는 객체를 만들어준다.

String line = scan.next();

Scanner를 통해 입력받은 값을 String형 변수 line에 넣어준다.

 

 

Scanner사용시 import를 해줘야한다.

impot : 개체가 다른것들과 중복되지않도록 식별자역할을 한다.

도구사용시 도구가 속한 패키지명을 같이써야하지만 상단에 한번만 명명해주면 사용가능.

java.util패키지의 Scanner 클래스를 이용하는것.

java.util.Scanner; // 상단에 명명해주면

java.util.Scanner scan = new java.util.Scanner(System.in);을

Scanner scan = new Scanner(System.in); 로만 사용가능.

 

 

단축키

ctrl + / : 주석처리

ctrl + shift + / : 범위주석처리 /**/ , 서식중간에도 사용가능

alt + 화살표 : 코드이동

서식안 주석처리 예시

 

 

next()메소드

nextLine() 문자열을 모두 입력받아 리턴.
next()단어단위로, 공백 이전까지만 문자열리턴
nextInt()정수로

 

 

기본형 과 참조형

기본형 : byte, short, int, long , char, float, double, boolean

기본형 변수에는 값을 담는다.

 

참조형 : String

참조형 변수에는 이름만 붙인다.

 

 

변수선언

int a = 3;

변수선언시 타입과 변수명을 선언 한후 초기화한다.

a는 값을 담는 변수가 된다.

Scanner scan은 객체를 담는 변수다(이름표). 정해놓은 명칭을 통해 도구(Scanner)를 쓰게된다.

 

 


 

 

실습

 

*성적입력하고 출력하기.

import java.io.IOException;
import java.util.Scanner;

class Test {
	public static void main(String[] args) throws IOException {
		int kor, eng, math;
		int total;
		float avg;

		kor = 0;
		eng = 0;
		math = 0;
		
		System.out.println("┌──────────────────────────────────────────┐");
		System.out.println("│                 성적 입력                  │");
		System.out.println("└──────────────────────────────────────────┘");
		//여기에 성적을 입력하는 코드를 작성하시오
		Scanner scan = new Scanner(System.in);

		System.out.printf("국어 : ");
		kor = scan.nextInt(); //공백까지만 출력	
		System.out.printf("영어 : ");
		eng = scan.nextInt(); //공백까지만 출력		
		System.out.printf("수학 : ");
		math = scan.nextInt(); //공백까지만 출력

		
		total = kor + eng + math;
		avg = total / 3f;

		System.out.println("┌──────────────────────────────────────────┐");
		System.out.println("│                 성적 출력                  │");
		System.out.println("└──────────────────────────────────────────┘");
		System.out.printf("국어 : %d\n",kor);
		System.out.printf("영어 : %d\n",eng);
		System.out.printf("수학 : %d\n",math);		
		System.out.printf("총점 : %d\n",total);
		System.out.printf("평균 : %5.2f\n",avg);
		System.out.println("──────────────────────────────────────────");

		}
}

출력화면

  • Scanner scan = new Scanner(System.in);  으로 입력값을 받는다.
  • System.out.printf("국어 : ");    무엇을 입력해줘야하는지 묻는 출력문을 넣는다.
  • kor = scan.nextInt();     입력받은 값을 kor에 넣는다.
  • System.out.printf("국어 : %d\n",kor);  입력받은 값을 출력한다.

 

 


 

*메모장에있는 내용 출력하기

메모장 작성 후 저장

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;

class Hello {
	public static void main(String[] args) throws IOException {
		int kor, eng, math;
		int total;
		float avg;

		kor = 0;
		eng = 0;
		math = 0;
		
		//여기에 성적을 입력하는 코드를 작성하시오
	
		FileInputStream fis = new FileInputStream("C:\\Users\\yh\\Desktop\\202102\\workspace\\data.txt");
		Scanner scan = new Scanner(fis);
		kor =scan.nextInt();
		eng = scan.nextInt();
		math = scan.nextInt();
		
		total = kor + eng + math;
		avg = total/3.0f;
		
		System.out.println("┌─────────────────────────────────────────┐");
		System.out.println("│                 성적 출력                 │");
		System.out.println("└─────────────────────────────────────────┘");
		System.out.printf("국어 : %d\n",kor);
		System.out.printf("영어 : %d\n",eng);
		System.out.printf("수학 : %d\n",math);
		
		System.out.printf("총점 : %d\n",total);
		System.out.printf("평균 : %5.2f\n",avg); 
		System.out.println("──────────────────────────────────────────");
	}
}

 

문서의 필수블록 : Header, main , footer

 

아웃라인을 <div>로 구분후 <h1>, <h2>식으로 넘버링하면 제목열의 깊이가 변경되면 불편함이 발생한다.

대신 <section> <h1>으로 지역화시키면 자동으로 넘버링부여됨. 

 

지역화

<section>

   <h1>페이지정보</h1>

   <태그>...</태그>

</section>

 

<section>
	<h1>뉴렉처 온라인</h1>
    
		<section>
        	<h1>헤더</h1>
            
            <nav>
            <h1>메인메뉴</h1>
            <ul>
            	<li>학습가이드</li>
                <li>강좌선택</li>
            </ul>
            </nav>
            
		</section>    
</section>

 

Section태그의 종류 : article, aside, nav

  • <article> tag는 문서 혹은 요소가 독립적으로 존재할 수 있을 때 사용한다.
  • <section> tag는 논리적으로 관계 있는 문서 혹은 요소를 분리할 때 사용한다.
  • <div> 요소간 논리적 관계와는 상관없이 요소를 나눠야 할 필요가 있을 경우 사용한다

 

 

 

웹상에서 f12버튼을 누르면 '개발자도구'가 뜬다.

또는 확인하고자하는 영역에 마우스를 대고 오른쪽버튼 ->검사 누르면 해당영역 확인가능.

 

 

블록 태그는 자기 영역을 갖는다

블록태그

블록요소

  • 사용가능한 최대 가로 너비를 사용
  • 전체를 차지 하기 때문에 각 요소들이 수직으로 쌓인다
  • 가로 너비와 세로 길이를 지정할 수있다

 

인라인태그는 영역을 가지지않는다. (width, height 변형불가)

인라인태그

인라인요소

  • 내용만큼만 영역사용
  • 요소들이 수평으로 쌓임
  • 가로 너비와 세로길이 지정 불가능
  • 수평으로 쌓여 위,아래 여백 사용 불가능

 

인라인태그참조 :

developer.mozilla.org/ko/docs/Web/HTML/Inline_elements

 

 

 

Table 태그

<table>

  <tr> 1행에 넣을 내용들

    <td>테이블 내용</td>

  </tr>

  <tr> 2행에 넣을 내용들

    <td>테이블 내용</td>

  </tr>

</table>

출력화면

 <section>
            <H1>공지사항 목록</H1>
            <table>
                <tr>
                    <td>1024</td>
                    <td>스프링 MVC 소스코드</td>
                    <td>newlec</td>
                    <td>2020-12-12</td>
                    <td>1352</td>
                </tr>
                <tr>
                    <td>1023</td>
                    <td>스프링 JSON 출력을 위한 라이브러리 설정</td>
                    <td></td>
                    <td>2020-11-29</td>
                    <td>994</td>
                </tr>
                <tr>
                    <td>1022</td>
                    <td>스프링 강좌 <kbd>Ctrl</kbd>+<kbd>shit</kbd>RestController 한글 깨짐 설정 코드</td>
                    <td>newlec</td>
                    <td>2020-11-25</td>
                    <td>802</td>
                </tr>
            </table>
        </section>

 

 

 

 

출력버퍼 : OutputStream

버퍼는 원래 우리가 만들어야한다.

객체지향 : 기능을 갖고있는 주체를 얻어낸다.

 

35를 넣었을때 35를 그대로 인식하지 않고 코드로 인식한다. 그에 대응되는 문자를 출력

 

System.out.write('A');
System.out.flush();

출력: A

 

System.out.write() 는 문자 하나만 출력하므로 문자열을 출력하려면 여러번써줘야하는 번거로움이 발생한다.

System.out.print()를 사용하면 문자열출력가능

이스케이프 문자 : 문자열 사이에 꽂아 넣을 수 있는 명령어

" " 문자열의 시작과 끝을 의미

  • \n 새 행new line삽입
  • \" 큰 따옴표 삽입
  • \' 홑 따옴표 삽입
  • \\ 역슬래쉬 삽입

포맷 문자열과 형식 지정자
형식 지정자

 

write(80)을 넣으면 해당 되는 문자값인 P를 출력한다.

80출력을 위해서는 아스키코드 56,48을 코드값을 얻어서 '8'과 '0'이라는 문자값으로 출력해야한다.

 

System.out.print()는 문자를 그대로출력해준다.

 

		System.out.write(80); // P 출력
		System.out.flush();
		System.out.print(80); //80

print() 매개값이 여러개이다 ex. print(double d),print(boolean b),print(char c)

print()사용시 ()안에 \n을 넣으면 새 행삽입.

printf()는 형식을 변환해주고 그 형식에 맞게 숫자를  출력해준다.

println() 개행

System.out.printf("%d-%d-%d",2013, 07, 23);//2013-7-23
System.out.printf("%d년%d월%d일",2013, 07, 23); //2013년7월23일
System.out.println('A'+1);//65+1 => 66 출력
System.out.println("A"+1);//A1 출력 String타입

System.out.write('A'+1); //B 출력
System.out.flush();

System.out.printf("국어 :%d\n",kor);// %d 출력형식 \n새행, kor값불러오기

double num2 = 12.3456789;
System.out.printf("num2(소수점 둘째 자리까지) :%.2f\n",num2);//num2(소수점 둘째 자리까지) :12.35

System.out.printf("평균 : %5.2f\n",avg); //평균 : 74.33 소수점을 포함하여 총 5자리, 소수점이하는 2자리
  • 정수/실수타입은 값이 실수타입으로 나온다. avg = total / 3.0 (avg에 실수타입으로 저장됨)
  • print('A'+1) A라는 문자를 아스키코드값(A=65)로 인식하여 65+1 =66 출력
  • System.out.printf("%.2f\n",num) 
  • 정수/실수 =실수

 

 

 

시멘틱 태그의 기본구성

시멘틱태그

 

시멘틱이란 ? 의미론적인, Semantic : connected with the meanings of words.

특정한 태그에 의미를 부여해서 웹페이지를 만들기위해 사용

div(콘텐트 블럭화)와 같은 기능을 수행

but, 태그에 의미를 부여함으로써 웹페이지구조를 쉽게 이해 할 수있다.

과거 의미를 다달리써서 표준화시킴

 

시멘틱태그 3종류

  • header : body안에있음, 주로 머릿말 ,제목표현
  • main : 본문
  • footer : 회사소개, 저작권, 약관, 제작정보 등

h1,h2,h3 넘버링을 해옴
div  대신 section
<section>잡고 <h1>잡으면 자동으로 지역화

HTML5 의 섹션태그

<h1></h1>, <h2></h2>등 넘버링 해결을 위한 태그.

<section> </section> 으로 감싸면 자동 넘버링이 된다.

<h1><h2><h3> 를 신경 쓸필요없다.

지역화가능

 

섹션태그 종류:

  • section:  가장 범용적, section만 써도되지만 아래 태그들을 추가적으로 특화시켜만듦
  • article :  실제 본문 (문장을 감싸고 있는 블록), 실질적인 내용
  • aside : 본문과 먼것, 본문이외 내용
  • nav : 링크, 네비게이션,

 

 

 

 


VS code 실습

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <header id="header">
        <h1>뉴렉처 온라인</h1>
        <section>
            <h1>헤더</h1> 

            <nav>
                <h1>메인메뉴</h1>
                <ul>
                    <li>학습가이드</li>
                    <li>강좌선택</li>
                    <li>AnswerIs</li>
                </ul>
            </nav>

            <section>
                <h1>강좌검색폼</h1>
                <form>
                과정검색
                </form>
            </section>
            
            <nav>
                <h1>회원메뉴</h1>
                <ul>
                    <li><a href="index.html">Home</a></li>
                    <li><a href="../member/login.html">로그인</a></li>
                    <li>회원가입</li>
                </ul>
            </nav>
            
            <nav>
                <h1>고객센터메뉴</h1>
                <ul>
                    <li>마이페이지</li>
                    <li>고객센터</li>
                </ul>
            </nav>
        </section>
    </header>    


    <section id="aside">
        <h1>고객센터</h1>

        <nav>                
            <h1>고객센터메뉴</h1>
            <ul>
                <li><a href="list.html">공지사항</a></li>
                <li>자주하는 질문</li>
                <li>수강문의</li>
                <li>이벤트</li>
            </ul>   
        </nav>

        <nav>
            <h1>협력업체</h1>
            <ul>
                <li>노트펍스</li>
                <li>나무랩연구소</li>
            </ul>
        </nav>                 
    </section>

Outline 확장 프로그램을 통해 블럭을 확인할 수있다.

 

 

언어에는 연산자, 제어구조, 배열, 함수, 구조체가 있다.

각 언어마다 특징이있다.
과거 : 플랫폼을위해탄성
현재 : 특정기술에맞는 특화된언어
ex:그루비(자바 위), 스칼라(자바 위 )




자바 :규칙, 단일방법, 객체지향

변수선언 : 반드시 영문소문자로, 스페이스 (X) ,특수기호(X)

형변환 : Cascading

번역기를통해 프로그램을만든다.
메모리+CPU는 쉽게달라지지않는다(계산기 기능이 바뀌지않는거처럼)
계산기능 + 계산값을저장할 공간(메모리) + 실행기(real machine)
계산 ->인터페이스-> 출력 : 모니터 직접사용하지않는다.
인터페이스 : 간접적으로만나게. 밑단을 가려줌.함수형태

플랫폼이 프로그램을 직접사용하지않고 반드시 인터페이스API(함수형태)이용

프로그램 : 절차언어역할
절차작성 : 프로그래밍
입출력도구 : 플랫폼 (자동차,냉장고,소프트웨어들 카카오톡,페이스북)

어떤API쓰니 ? = 어떤플랫폼쓰니 ?


 

콘솔:

콘솔은 입력장치와 출력장치를 총칭하는 말

사용자인터페이스, 입출력장치, 함수형태
과거 : 라디오(주파수) ->스크린(색감조정,전원=콘솔) ->스크린안에 여러스크린이 생김(윈도우창같은)리얼콘솔,virtual콘솔=>사용자인터페이스

컴퓨터 기본콘솔 : 모니터, 키보드, (프린터x 마우스x)

자바플랫폼이 제공하는 기능 : 콘솔

 

함수이름: 직관적인 이름사용

System.out(포장지역할).write(30);

함수들은 객체안에 포함

 

 

 

출력스트림을 통해 비동기처리

자바 변수선언 / 부동소수점 / 함수의 역할/ OutputStream

스트림이란?

자바에서 데이터는 stream을 통해 입출력된다. stream은 데이터가 출발지에서 나와 도착지로 흘러가는 단일방향의 흐름.

입력과 출력을 동시에 수행하려면 입력스트림, 출력스트림이 필요하다.

스트림에는 버퍼가 포함되어있다.

 

출력스트림을 통한 비동기처리

API write(3)을 넣고 호출할때, 모니터를 직접사용하지 않는다.

프로그램과 모니터가 1:1로 동기화하지않는다. (1:1로 일을하지않는다)
어플리케이션은 여러개 존재하기 때문에 동기화를 하게될 경우 모니터는 과부하된다.
입출력 길목에 버퍼를 두고 값을 버퍼(=대기장소)에 머물게한다.


자바는 운영체제위에서 사용 ->운영체제버퍼, 자바의 버퍼 각각 존재
출력버퍼, 입력버퍼 : 함수이용->출력
함수를 갖고있는 포장지역할 : out 
출력버퍼는 물리적으로 컴퓨터안에서 출력을위해 사용하는 데이터공간(메모리상에있음/실존)
비어있는공간에 값을 넣는다.

 

개체(Entity)와 객체(Obejct)

개체(Entity)와 객체(Object)

API는 객체로 포장되어있다.
출력될때 사용되는 대상(출력버퍼가 대상),모니터가 대상이아니라 버퍼가 대상
대상을 준비해놓고 함수이용
개체 (entity) :실존하지않는것, but 식별가능, 자동차메뉴, 음식메뉴, 메뉴명,

                  명칭은분명하지만 실존하지않는다. 메뉴이름, k7

                  타입명칭=자료형명=형식명칭
객체 (object) : 실존물,쇠돌이,실체,인스턴스 
                   쇠돌이는 k7의 객체이다=쇠돌이는 k7의 인스턴스이다
자동차를 주문할때 k7주세요할수있지만, 실존하면 k7라고하지않는다. 나의 k7이다. 소유격(너의, 나의)사용
객체에 이름을 부여한다. k7형식(개체)의 쇠돌이(객체)다.
부여한 이름을 객체이름, 참조변수라고 한다.


Stream객체
out : 출력을 위한 함수를 갖고있는 출력객체
in :입력을위한 함수를 갖고있는 객체

 

 

System.out.println() 에 대해..

System.out = new PrintStream(new OutputStream());

  • System : 카테고리역할
  • out : PrintSteam의 인스턴스다.

        PrintStream을 통해 OutputStream을 간접적으로 사용.

        PrintStream은 OutputStream의 자식의 자식클래스.

  • println() : 객체가 참조하는 개체의 메소드중 하나

 

java.lang.System 클래스 내부에 존재하는 static 객체인 out이 있고,

out객체는 PrintStream의 객체이므로 PrintStream이 갖고있는 println()메소드를 사용한다.

 

OutputStream은 추상클래스(추상 클래스는 객체가 될 수없다)->후손클래스이용해서 객체생성

println()은 out이라는 객체와 그 객체에서 뽑아온 함수.

 

ref. cbw1030.tistory.com/59?category=1060226

 

 

 

출력버퍼의 사용

출력할때, 출력버퍼를 준비해야함, 객체생성시 new라는 연산자를 이용해야한다.(실존하게하는연산자)
하지만 출력버퍼는 실존하게 만들필요가없다. 자바는 이미 만들어놨다.
콘솔입출력은 프로그램마다 하나씩 부여받은 버퍼

 

System.out = new PrintStream(new OutputStream());
System이라는 포장용기에 담여 out(객체)으로 존재
'.'(점)을찍어 수많은 API이용 : System.out.함수();


함수는 무엇인가 ? 기능
무슨기능 ? 켜다,끄다, 함수로 구현 -> 대상은 ? 라디오, 티비,가스레인지

대상을 거론하지않고 함수를 만들면 :대상이 눈에띄지않음->대상이 주인공 
라디오가있어야 켜고 끌수있다.
티비가 있어야 켜고끌수있다.


대상이 머릿속에있음,실존객체
기능은 부차적
타겟 실존객체에 대해 조립 ->기능(객체지향),기능은 따라오는것
출력도구가 필요 , 도구, 입력도구, 입력객체(안에 기능)

 

문자코드

KeyCode

2를누르면 입력버퍼에 2(입력값)가 그대로 들어가지않는다.

키보드에 다양한 값이있다 (수많은 키) 키를 식별하는 번호가있다.
키를 식별하는 번호가 만들어졌다->keycode(키코드.일련번호)
키를 누르면 키코드가 들어간다.

 

ASCII(아스키코드,American Standard Code for Information Interchange)

입력값들을 전달할때 똑같은 값이 전달.

사용하는 모든기호에 숫자부여한 문자코드표

예시:

A : 65
B : 66
C : 67.

아스키코드

총 128개 0부터 127까지. 총128개를 7비트로 표현

총 128개 (2^7) 7비트 + 1비트 (패리티비트) = 총 8비트로 표현가능 (256개, 2의 8승)

한국어/중국어/일본어 : EUC-KR, EUC-JP, EUC-CN

문제점 발생 : 다른언어간 같은 코드발생 (번호충돌)

유니코드:

유니코드등장 (재배열) :전세계모든 언어모드가 충돌나지않게 여러언어 같이쓸수있게나옴

 

System.out.write()함수 예시:

public class Exam_01{
    public static void main(String[] ar){
    System.out.write(65); //값이 버퍼에 담김ㄴ다
    System.out.flush(); // 출력
    }
}

write는 문자하나만 담을 수 있고 출력하려면 flush() 함수를 사용해야함 -불편함

 


자바 실습

이클립스 -> download -> download Packages -> Eclipse IDE for EnterPrise Java Developers

www.eclipse.org/

 

The Community for Open Innovation and Collaboration | The Eclipse Foundation

The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 375 open source projects, including runtimes, tools and frameworks.

www.eclipse.org

압축풀고 eclipse폴더를 자주 사용할 폴더로 옮겨준다.

eclipse폴더안의 eclipse.exe 선택후 마우스 오른쪽클릭 ->시작화면에 고정

 

 

통합개발환경 IDE

편집기(코드작성) + 컴파일실행환경 + 파일관리(탐색기) + 번역과 실행(개발도구)

특정개발도구 

JDK위에 통합개발도구를 사용할수있고 통합개발도구에는 인텔리제이와 이클립스가있다.

JDK가 설치되어야 이클립스 사용가능. 이클립스가 컴퓨터에 깔린 JDK를 알아서 사용

개발 : 소스코드작성 -> 번역-> 디버깅-> 배포과정이 필요

JDK는 각각의 과정을 수행 할 수있도록 환경을 제공, 이클립스는 JDK를 사용해서 위의 과정을 한꺼번에 할 수 있도록 도와준다.

이클립스는 IBM에서 자바전용 개발환경을 기획했다가 워크벤치만 만들고 플러그인기능을 추가해 다른언어에도 사용할수있도록 만듦.
이클립스:워크벤치

 

이클립스 실행 -> workspace 디렉토리선택

Open Perspective에서 개발환경을 선택할 수있다. java선택 (자기 환경에 맞게 배치)

 

메모장으로 만들었던 Hello.java 파일을 src폴더로 드래그해서 넣어준뒤 run 

출력 : total is 210

 

 

 

 

 


  • 실수로 메뉴를 닫았을 경우 window - perspective - reset 하면 복구가능
  • ctrl + shift + f : 들여쓰기
  • ctrl + f11 : run
  • 파일명에 * 뜬경우 : 저장 안됨
  • ctrl + Alt + ↑↓:라인위아래로복사
  • ctrl + Shift + c : 한줄 주석처리

 

 

 

자바 프로그래밍이란? : 자바(를 이용해서 컴퓨터) 프로그램을 만드는 것

 

1. 프로그램은 무엇입니까?

2. 왜 자바를 이용합니까?

 

1. 프로그램은 무엇입니까?

:“목적하는 것을 이루기 위한 순서를 미리 작성해 놓은 것”



1.1 컴퓨터 프로그램은 무엇입니까?

: 컴퓨터를 이용해서 “목적하는 것을 이루기 위한 순서를 미리 작성해 놓은 것”

 

1.2 컴퓨터란 무엇입니까?

: 계산기? <-> 컴퓨터: 프로그래밍이 가능한 계산기

 

1.3 컴퓨터를 이용하는 방법은 어떻게 되나요?

: 컴퓨터가 가지고 있는 계산기 기능을 이용해서 원하는 계산식을 얻는 것.

 

1.4 스위치 조작 방법은?

0과 1을 이용해서 조작을 할 텐데

 

1.5 스위치 조작을 대신할 수 있는 방법은 없는지?

: 번역기를 거쳐서 0과 1로 만든다.

 

1.6 처음 만든 번역기의 형태는 어셈블리어를 번역하는 번역기였다. 어셈블리어란?

: 기계 장치의 내장된 기능에 대한 명칭

 

1.7 2세대 번역기가 또 있다고 한다. 종류는 크게 컴파일러와 인터프리터로 나누어 볼 수 있는데… 기존 1세대 번역기(어셈블러)에서 2세대 번역기가 나온 이유는 무엇인가?

: 장치가 달라질 경우에 장치에 맞게 프로그램을 다시 작성해야 하는 불편함을 없애기 위해




운영체제란?

DJ->CD/LP판 옮겨서 실행해주는 사람

DJ가 사라졌다. 왜? DJ 역할(음악을 틀어주는 역할)을 누군가가 대신해주게 되었다. 

: DJ의 역할을 대신해주는 기계란? 주크박스

컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공.


컴퓨터의 운영방법

컴퓨터 테이프

 


운영체제의 구현 기술 

: 사용자 인터페이스 : shell (bsh(bash), dos->윈도우 탐색기)

  커다란 보조기억 장치





1.8 2세대 번역기인 컴파일러와 인터프리터는 어떤 차이가 있으며 어떤 경우에 인터프리터를 사용하는가?

차이: 번역하는 순서?(x), 중간 과정을 생략하고 안생략하는 차이(x)

         번역만 하느냐-전문 번역기 / 실행하면서 번역을 하느냐-실행기(필요에 따라서 번역)

REPL(Read–eval–print loop - Wikipedia)의 필요성이 인터프리터를 만들게 되었다.

 

인터프리터 언어는 두 가지 큰 단점(소스코드/실행속도)이 있음에도 요즘 그것이 확산되는 이유는?

아마도 다른 장점의 필요성이 단점을 누르는 것 아닌가?

: 파이썬(범용플랫폼)/자바스크립트/…

“문법이 쉬워서? 다양한 뭐든지 약간 쉽게 만들 수 있다.”

“멀티플랫폼”/배열을 정렬(기준? 데이터 구조?  p.x > p.x ) / 

 

1.9 자바의 탄생 배경이 WORA를 구현하기 위해 태어났기

: Write Once Run Anywhere(Write once, run anywhere - Wikipedia)

 

2. 왜 자바를 이용합니까?

 

2.1 왜 자바를 이용해서 컴퓨터 프로그램을 만듭니까?

: WORA 때문에

2.2 탄생배경

 

2.3 WORA를 위해서 자바 플랫폼을 새로 만들었다.

자바 플랫폼은 어떤 역할을 하는건가요?

 

1) 플랫폼이란

: 프로그램이 운영되기 위한 기반

2) 자바 플랫폼의 특징은?

기존 플랫폼이 없는 것도 아닌데 굳이 자바 플랫폼을 만든 이유는?

:  WORA 때문에 .. 돼지코를 구현하고 있는 플랫폼

 

2.4 번역기도 인터프리터와 컴파일러 두 가지를 사용한다.

컴파일러와 인터프리터 중에 하나만 사용하면 될텐데…

왜 굳이 두 가지 번역기를 사용하는가?

: 성능과 WORA 두 마리 토끼를 잡으려고 했다.

자바는 꼭 두 가지를 사용해야만 하나요? 한 가지만 사용해도 되나요?

: 한가지만 사용해도 되죠..- 인터프리터만 사용해도 된다.

 

반만 번역해서 반은 실행할 때 번역한다.

반만 번역한 결과물을 우리는 무엇이라고 하는가?

: 중간코드, 의사코드, 슈도코드, 바이트코드,.......



3 자바의 계보

언어적인 특징

 

jdk -> 컴파일 -> 실행

 

3세대 프로그래밍 언어

 

1. 값(데이터형식)

값의 종류 : 정수, 실수, 문자, 부울

 

정수의 표현

: 진수에 따른 값의 표현 -> 10진법, 16진법, 8진법, 2진법

: 크기에 따른 값의 표현 -> 4바이트(기본크기), 8바이트 : 35L(대/소문자 안가림)

실수의 표현

: 소수점에 따른 값의 표현 -> 234.12, 지수표현으로 바꾸면 2.3412e2

: 크기에 따른 값의 표현 -> 4바이트 : 34.23F , 8바이트(기본크기) : 34.23

 

2. 값의 형식명

정수의 형식명 

: byte, short,  int, long

실수의 형식명

: float, double

 

23->정수->4바이트 크기

:  2바이트 크기의 정수로 사용하고 싶다. -> (short)23 : 명식적인 형식 변환

 

1. 컴퓨터의 의미와 그것을 이용하는 방법

 

컴퓨터란 프로그래밍이 가능하며 고성능의 계산 능력을 가진 기계를 말하며 다음과 같은 부품으로 구성되어 있다.

(1) - 연산처리와 실행을 담당하는 CPU

(2) - 프로그램 전체 코드를 담고 있으며 계산 결과 값을 보관할 수 있는 주기억장치

(3) - 컴퓨터 전원이 꺼져도 유지되어야 할 데이터를 영구적으로 저장하도록 도와주는 보조기억장치-하드디스크 

(5) - 사용자와 상호작용을 도와주는 모니터와 키보드

(4) - 위의 모든 장치들을 하나로 연결해주는 메인 보드

 

컴퓨터는 이렇게 최소  5가지의 구성으로 이루어져 있다.

 

이 중에서 가장 중요한 역할을 하는 부품은 CPU(Central Processing Unit - 중앙처리장치)이며 연산 기능과 실행 기능을 담당한다. 

 

1-1 계산 능력을 가진 기계

CPU는 컴퓨터에서 가장 중요한 부품이며 대부분 다음과 같은 구조로 이루어져 있다.

 반도체 집적도가 높아지면서 과거에는 하나의 온전한 CPU가 지금은 코어(Core)라는 블록으로 CPU 안에 포함되어 있다.  따라서 요즘 CPU는 과거로 보면 여러 CPU가 합쳐진 CPU라고 할 수 있다.

 

코어 하나에는 ALU(Arithmetic Logic Unit-산술논리연산장치)와 CU(Control Unit-실행 흐름장치)를 가지고 있으며, ALU가 바로 계산을 담당하는 유닛이며 CU는 실행을 담당한다.

 

1-2 CPU를 이용해 계산하기

 

우리가 컴퓨터를 이용해서 3+4와 같은 계산을 하려면 어떻게 해야할까?

우리는 컴퓨터의 실행을 담당하는 CU(Controll Unit)에게 3+4를 계산해 달라고 해야 한다.

 

 

그런데 CU는 기계이기 때문에 3+4가 무슨 의미인지를 모른다. 다만 ALU를 조작하기 위한 스위치 정보를 알려주면 그 정보를 이용해 전기선에 전원은 넣어주는 정도는 수행할 수 있다.

따라서 컴퓨터를 이용해 3+4를 계산하려면 ALU를 조작하는 스위치 상태를  우리가 작성해서 알려주어야만 한다.

 

1-2 컴퓨터에게는 왜 0과 1로 된 기호로 알려주어야 하는가?

 

CPU의 ALU는 기계장치이다. 기계 장치를 이용하는 방법은 장난감 자동차를 이용하는 방법과 별반 다르지 않다.

위의 장난감에는 모터에 연결된 스위치가 2개 있다. 이 두개 선을 조작하면 탱크를 직진, 좌회전,우회전 할 수 있다. 이 것이 이 장난감이 가지는 기능집합이고 장치에 내장된 명령어(=어셈블리어)이다. 

 

어셈블리어는 문자로 되어 있어서 인간이 장치의 기능을 이해하기에는 편하지만 실제 실행하려면 스위치를 조작하는 방법을 알아야만 한다.

 

직진은 1 1,  좌회전은 0 1 이다. 이런 스위치 조작 방식으로 탱크를 위의 그림처럼 움직이게 하려면 스위치를 어떤 순서로 조작해야 할까?

위의 그림처럼 1과 0로 나열한 순서에 따라서 스위치를 조작하면 탱크는 예정된 경로대로 잘 움직일 것이다.

 

만약에 장난감 탱크에 위의 절차를 기억시킬 수 있는 메모리가 존재하고 그것을 수행시켜주는 CU(Control Unit)이 존재한다면 프로그래밍이 가능한 장난감이 되는 것이다.

 

 

1-3 컴퓨터를 이용해 3+4 계산하기

 

이해를 돕기 위해서 앞에서는 장난감을 예시로 들었지만 컴퓨터 또한 스위치를 조작하는 방식으로 동작시키기 때문에 1과 0로 실행 코드를 작성해야만 한다.

 

그렇다면 컴퓨터의 ALU는 어떤식으로 조작을 하면 될까? (꼭 알아야 되는 내용은 아니므로 상식선에서 호기심을 살짝 해결할 정도로만 보도록하자)

 

 

위의 그림처럼 ALU도 스위치를 가지고 있다. 이 스위치를 이용해서 ALU를 다음과 같은 순서로 ALU를 조작해야 3+4를 연산할 수 있다.

 

3+4를 계산하기 위한 ALU와 Register의 조작순서

 

1. 값 3을 왼쪽 레지스터에 옮기고

2. 값 4를 오른쪽 레지스터에 옮긴 후에 

3. 두 레지스터에 있는 값 더한다.

 

위의 같이 ALU를 조작하기 위해 다음처럼 스위치를 순차적으로 조작한다.

 

1. 값 3을 왼쪽 레지스터에 옮긴다.



2. 값 4를 오른쪽 레지스터에 옮긴다.

 

3. 두 레지스터에 있는 값 더한다



이런 스위치 조작 상태를 순차적으로 적으면 다음과 같다.

 

010 011

110 100

001

 

이 절차가 바로 3+4를 계산하기 위한 수행절차이다. 이 절차를 메모리에 옮겨 놓으면 CU가 알아서 하나씩 수행을 해준다.

2. 컴퓨터 프로그램을 만드는 방법

 

앞서 봤던 것처럼 컴퓨터 프로그램은 스위치 조작상태를 직접 우리가 작성하는 것을 말한다. 하지만 요즘에 그런 방식으로 컴퓨터 프로그램을 만드는 일은 거의 없다. 왜냐하면 번역기가 있기 때문이다.

 

2-1 1세대 번역기와 2세대 언어

0과 1로 코드를 작성해야만 CPU가 실행할 수 있지만 그렇다고 인간이 0과 1을 직접 사용해서 코드를 작성할 필요는 없다.

 

 

위의 그림에서 010 이 MOV와 동일한 의미라면 우리는 010보다 이해하기 쉬운 MOV를 이용해서 코드를 작성하면 된다. 대신에 그것을 010으로 변경해주는 번역기를 만들어 사용하면 되는 것이 아닌가?

 

 

그래서 번역기를 활용하는 프로그래밍 방식이 등장하게 되었다. 이 번역기는 어셈블리어(기계 내장 명령어)기계어(기계 실행코드)로 변경해주는 번역기로 어셈블러(Assembler)라고 한다.

 

2-2 2세대 번역기와 3세대 언어

2세대 언어인 어셈블리어는 CPU에 종속된 언어이다. 그래서 이기종의 CPU 두개가 있을 경우에는 각 CPU 별로 코드를 따로 작성해주어야만 한다. 

 

 

다행스럽게도 이런 문제를 단번에 해결해주는 컴파일러라는 번역기가 등장하였다.

 

 

이 번역기는 자신이 정해놓은 연산자를 이용해서 코드를 작성하고 번역기를 돌리면 현재 CPU용에 맞는 어셈블리어 코드를 만들어준다.

 

이렇게 또 다른 번역기가 등장하면서 우리가 컴퓨터 프로그램을 만드는 방법은 크게 3가지 방법이 생겼다.

 

 

1세대-기계어를 이용하거나 2세대-어셈블리어를 이용하거나 3세대-컴파일언어를 이용해서 코드를 작성할 수 있다.



3. 컴파일 언어와 인터프리터 언어

 

최근에 프로그램을 만들 때는 3세대 언어를 이용하여 프로그램을 만든다. 3세대 언어의 특징은CPU가 제공하는 명령어를 이용하는 것이 아니라 컴파일러(번역기)가 제공하는 명령어를 이용한다.

 

3-1 컴파일 언어

 

컴파일러를 만드는 회사는 여러 곳이 있으며 컴파일러마다 제공하는 키워드나 구문 규칙이 조금씩 다르다. 다음은 컴파일 언어의 3가지 예를 보이고 있다.

 

 

자바 언어도 자바 컴파일러가 제공하는 키워드와 구문규칙을 이용해서 코드를 작성하는데 위의 코드에서 오른쪽의 코드가 자바 언어로 작성된 코드이다.

 

HyperText : 다른 페이지로 이동

404 에러 : 경로확인해볼것

 


 

상대경로와 절대경로

상대경로

선택한 파일에 대한 상대적인 루트를 지정하는 방법

 <a href="../index.html">홈</a>

 

 

 

Signup.html에서 Front-web에있는 index.html을 연결하려면 <a href="../index.html">홈</a>와 같이 ../로 지정하여 한계층 위 폴더를 지정해야한다.

/ 하위폴더 지정

./현재폴더 지정(동일폴더)

../한 계층 위 폴더 지정

 

절대경로

각 폴더의 지정된 이름을 나열

어떠한 웹페이지나 파일이 가지고있는 고유한 경로, 절대적인 위치

<a href="member/signup.html">가입페이지</a>

위치가 변경될 경우 다 경로를 수정해야한다.

 

 

Q. list.html에서 signup.html을 링크하고싶다면 어떤경로로 설정해야하는가?

 

 

 

 

../../member/signup.html

로 지정해야한다. Root안에 member 폴더와 customer폴더가있다.

list.html은 customer ->notice folder안에 있으므로 두계층위로 올라가야한다.

 

 


 

 

경로지정 실습

Front-web 폴더안에 member폴더, notice폴더가 있다.

Front-web폴더에는 index.html 홈화면이있고, member 폴더에는 agree.html, login.html, signup.html 이,

notice폴더에는 detail.html, list.html이있다.

 

 

login페이지의 Home링크 <a href = "index.html">Home</a>으로 입력할 경우 member폴더의 index.html로 자동인식하게된다.

클릭시 Front-web폴더의 index.html으로 넘어가지않고 오류가 발생한다.

 

 

 

 index.html은 member폴더 밖에 있으므로 상위표시 '../'를 넣어준다. 

 

 

 

상대경로입력 후 적용된 모습확인가능.

 

index.html 에서 '로그인'클릭 후 이동한 모습

 

 

 

login.html에서 공지사항목록 클릭 후 이동한 모습

 

 

 

 

 


크롬 확장 프로그램 활용

크롬안에서 실행될 수있는 여러 확장 프로그램이있다.

Chrome 웹스토어(https://chrome.google.com/webstore)에서 Web Developer 다운로드.

 

 

 

 

다운로드 후 크롬브라우저 상단에서 확인가능

 

 

 

 

톱니바퀴를 누르면 여러메뉴가 나온다.

 

 

 

 


 

 

콘텐츠 블록의 종류

 

 

 

body에는 제목,목록,문장,표,입력폼이 있다.

 

 

HTML 문서의 기본구조

 

 

 

 

제목 태그

 

 

 

목록 태그

 

 

 

HTML 문서의 아웃라인

 

 

 

 

 

 


 

크롬 확장 프로그램 활용

HTML5 Outliner

각 페이지별 구성형태 파악용 ( 웹 정책 홈페이지 구조 및 검색 반영 시 유용 )

 

 

 

 

자바

  • 컴파일러 + 인터프리터

모든장치에서 돌아가는 단일한 실행 환경을 위해 만들어짐

모든 플랫폼에서 실행할 수있도록 코드를 만들기 위함

WORA : Write Once Run Anywhere (한번작성하면 모든곳에서 실행)

 

  • 자바소스파일 (.java)     →      바이트코드 파일 (.class)    →    기계어 변환    →    실행

 

코드작성

점점 실행코드가 길어지고 복잡해짐 -> 함수+클래스

클래스명 : 대문자로 시작, 파일명과 동일

들여쓰기 : 가독성

블럭만들기

 

 

세미콜론 ; 의 역할 

식과 식을 구분

한문장의 끝을 ; 으로 끝내야함

 

 

변수선언

어떠한 용도로 쓸것인지 선언

컴파일러에게 키워드를 알려주는것

컴파일러가 정의해놓은 키워드 : if, switch, for, while, case, break, +, - ,* , ...

사용자가 사용할 키워드 : x, y, z, menu, .. ->선언

 

  • 값의 형식명칭

 

값의 형식명칭 / 데이터타입

 

  • 정수형식과 변환

26(10진수) = 0x1A (16진수)

byte  = 8 bit

short = 2 byte = 16 bit

int    = 4 byte = 32 bit

long = 8 byte = 64 bit 

 

long x = 30; 

30은 정수 int타입 4 byte이다. 이것을 long타입 8byte에 담을 수있다.

 

byte x = (byte)30;

30은 정수 int타입 4byte이다. 이것을 byte타입 1byte에 담을때는 '(바꾸려는형식)' 으로 형변환을 해줘야한다.

int형을 byte로 형식변환할때는 손실되는 부분이 있기 때문에 형변환해야한다.

 

 

 

  • 정수값의 크기와 범위

음수,양수부분 모두 0을 포함하므로 -1

 

 

 

  • 고정소수점

실수를 표현하는 소수부의 자릿수를 미리 정해놓고 고정된 자릿수로 소수를 표현하는것

고정소수점은 32비트 실수를 고정 소수점방식으로 표현

1비트 부호, 15비트 정수, 16비트 소수부 방식으로 표현

정수부표현에 한계가있다.

정수부가 15비트로 이므로 -2^15 ~ 2^15 -1 = 32767까지만 정수부 표현가능.

 

 

  • 부동소수점(Float Point) 표현방식의 4바이트 실수

부동소수점이란 하나의 실수를 가수부와 지수부로 나누어 표현

부동소수점 방식은 고정 소수점방식보다 훨씬 많은 범위까지 표현가능

 

12.125 → 1.2125e1 (e:지수 exponent)

부호비트가 1일경우 음수

 

 

 

절차를 자르는 도구로써의 함수

함수내용이 바뀌면 함수사용하는입장에서는 모른다.(코드의 변화를 알 수가 없다) ->코드변화를 차단할수있음

인터페이스 : 안쪽의 구현을 바꿔도 그 이름을 쓰는 입장에서는 문제가 없다.
함수 :인터페이스역할 , 또다른역할

 

 

 

출력 스트림을 이용한 비동기처리

출력함수는 System.out이라는 객체에 묶여있다.

입력함수는 System.in 이라는 객체에 묶여있다.

 

어플리케이션에서 모니터에 어떤것을 출력할때, 실제로 함수가 모니터에 값을 전달하지않는다.

여러개의 프로그램이 동시에 돌아가고있다. 명령을 분산하고 동시에 사용하기 위해 버퍼를 이용한다.

마치 회사에 서류결제할 사람들이 여러명일때 결제함을 만들어 결제서류를 두고오면 본인일을 할 수있다.

자바에서는 출력버퍼를 OutputStream이라고 부른다. (단방향버퍼)

출력버퍼는 어플리케이션들이 동기화 되는것을 막아주고 비동기형식으로 어플리케이션이 출력값을 출력버퍼에 담는다.

함수 : 반복되는것을 함수화, 밑단의 코드가 달라져도 영향x, 단일화된 기능부여,코드변화 차단,대리자역할

 

  • 인터페이스 장점 : 장치가 달라지면 프로그램을 다 고쳐야한다 -> 문제발생 -> 장치코드가 달라져도 프로그램은 달라지지않게 - > 함수만듦 -> 함수사용자는 변동이없다(이름변동x) -> 함수는 그대로니까 - > interface
  • 함수는 인터페이스다 ( X ) :인터페이스는 함수능력중 하나.
    인터페이스는 함수다 ( X ) :과거 : ok, 현재 : 인터페이스 기능이 늘어났음

 

 


자바 실습

메모장에 소스코드 입력 → Hello.java 로 저장 cmd창에 소스코드경로지정 → javac Hello.java + 엔터  에러출력

에러 출력 이유 : 변수타입을 지정안함

 

 

변수타입 지정 → int , double 입력 → 출력을위한 함수입력 'System.out.printf() cmd창에 javac Hello.java + 엔터 → 총점출력됨

 


메모리구조 찾아볼것

자바 프로그램 순서 :

  • 자바소스파일 (.java)     →      바이트코드 파일 (.class)    →    기계어 변환    →    실행

                            컴파일러 javac.exe                               인터프리터 java.exe

 

  • 이클립스에서 소스작성 후 저장을 누르면 .class파일 생성 → run →Computer

 


 

자바번역기 특징

 

컴파일러 : 개발자가 사용 , 인터프리터 : 사용자 사용

 

 

 


Java CMD창에서 컴파일

메모장을 켜서 아래와 같은 코드를 입력해준다.

public class Hello{
	public static void main(String[] args){
		System.out.println("Hello World!");
	}
}

 

 

클래스명과 동일한 이름인 Hello.java로 저장해준다. (확장자는 반드시 .java)

 

 

윈도우키 + R 눌러 cmd창을 실행후 방금 저장한 파일의  경로를 넣어준다.

 

dir로 목록을 조회한다

 

 

'javac Hello.java' + 엔터 : 자바소스파일을 컴파일해서 바이트코드파일(.class)생성하기

 

 

바이트코드파일이 생성되었는지 확인을 위해 dir + 엔터해서 목록검색

 

 

.class파일 확인후 'java Hello'+ 엔터를 누르면 "Hello World"가 출력된다.

 

 

 

 

 

페이지를 그룹핑하고 구조화한다.

이름:  소문자만 사용
단어구분:  -
마지막은 행위명이 된다.


파일구조 생성 실습

1.폴더를 만들고 하위폴더안에 해당 html를 만든다.

 

 

2.

agree, login, signup, detail, list 각 페이지에 <h1>각 페이지 이름</h1> 과 <a href="index.html">홈</a>을 넣어준다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>가입동의 페이지</h1>
    <a href="index.html">홈</a>
</body>
</html>

3. index.html에는 Home, 로그인, 공지사항에 링크를 걸어준다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>공지사항 목록</title>
</head>
<body>
    <h1>인덱스 페이지</h1>
    뉴렉처 온라인
학습가이드
강좌선택
AnswerIs
과정검색                                                                                                         
<a href="index.html">Home</a>
<a href="login.html">로그인</a>
회원가입
마이페이지
고객센터
고객센터
고객센터메뉴
<a href="list.html">공지사항</a>
자주하는 질문
수강문의
이벤트
협력업체
노트펍스
나무랩연구소
공지사항
home고객센터공지사항

제목


번호	제목	작성자	작성일	조회수
1026	스프링 MVC 공지사항 관리자 view 페이지	newlec	2020-12-30	1546
1024	스프링 MVC 소스코드	newlec	2020-12-12	1352
1023	스프링 JSON 출력을 위한 라이브러리 설정	newlec	2020-11-29	994
1022	스프링 강좌 RestController 한글 깨짐 설정 코드	newlec	2020-11-25	802
1020	스프링 강의 20강용 Notice 서비스 파일	newlec	2020-11-06	1524
1016	Tiles ViewResolver 설정 내용	newlec	2020-10-22	921
16	html.zip 파일 (스프링 웹 MVC 강의용)	newlec	2020-10-12	1360
14	전기 점검이 있을 예정입니다.	newlec	2020-06-15	1239
10	오라클 수업용 테이블 생성용 스크립트	newlec	2019-10-04	2251
9	JSP 수업용 html 파일	newlec	2019-10-03	3591
1 / 2 pages
이전
1
2
다음
회사정보
Copyright ⓒ newlecture.com 2012-2014 All Right Reserved. Contact admin@newlecture.com for more information

</body>
</html>

4. 웹서버 연동을 위해 exteionsion에서 live server검색 후 install

 

 

 

5. 웹서버연동 : 웹서버연동하려는 페이지 선택 → 마우스 오른쪽버튼 Open with Live Server 클릭

 

 

6. 웹서버가 연동되면 웹브라우저가 자동실행된다.

 

 

 

 


 

Visual Studio code 환경변수 설정

제어판 - 시스템 - 시스템속성 - 고급- 환경변수 - 시스템변수

system32경로 넣고 확인

 

 환경변수 미설정시, Live server사용은 되지만 웹브라우저가 팝업되지않았다.

HTML

  • 웹퍼블리싱 : 웹출판 ->웹문서 만들기
    웹문서 만들기를 위한 기술 :HTML /CSS
    HTML 이란 ? 마크업언어
  • 마크업 : 범위표시하는것
  • 마크업언어 =>표식을 위한 기호를 정의하고 사용하는  방법을 통일화한 명령어 집합
    문서에서 HT도 마크업할 수 있는언어

    SGML -> HTML =>HTML ->ML =>태그를 이용해서 문서의 구조를 표시 :제목,문장,표,목록 + HT

    HT(Hyper Text) : 문서를 연결해주는 텍스트
    웹문서 : 브라우저 리더기 
    웹서버 : 문서를 제공해주는 서버

  • 웹문서의 3요소 : 콘텐트, 구조, 스타일


HyperText

팀버너슬리 1990년 Hypertext 제안 (좀 더 쉬운 문서 공유의 필요성)

물질을 쪼개는 과정→증명최소한의 물질연구양자(입자)이론
최소입자를 가속,충돌시킴,운동에너지 등 연구
연구할때마다  새로운결과물이 쌓임 ->다시 문서찾기가 어려워짐
Hyper Text제안 (쉽게 찾을수있게 링크) : 콘솔에서 찾아야했음 =>Hyper text 에 반응 미지근
Mark Andressen이 윈도의 기반에 netscape 만듦 +마우스등장 (기존문서+hyper text)

과거 방식 :gopher서버에 접속-자료조회-다운로드(text기반)
현재 방식 : hyper link클릭으로 다른곳으로 이동가능 (태그 +링크)

 




 

명령프롬프트에서 컴파일 ( 소스코드 번역없이 실행 )

· 메모장에 코드 입력 - 새로운폴더 "workplace" 생성 후 .java로 저장

· 윈도우키+ R (실행창 켜기) → cmd입력 (명령 프롬프트)

· cd + 스페이스 + java가 설치되어있는 경로붙여넣기 (ctrl+v 또는 마우스 오른쪽버튼)

· java -version 입력 + 엔터 : jdk 설치버전확인

· 메모장으로 작성한 소스파일있는 경로에서 java -version엔터하면 'java'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.' 오류발생

 

·java.exe파일 위치와 소스코드 위치차이때문에 발생

 

java.exe파일 위치와 소스코드  위치차이 때문에 발생

환경변수 설정

· 어느위치에서든 자바파일을 실행시키기 위해 환경변수 설정을 해야함

· 제어판 → 시스템 및 보안 시스템속성 고급 환경변수시스템변수 에서 경로 등록

(소스코드가 어디에 있든 자바실행을 도와준다)

· JAVA_HOME으로 변수를 새로 설정 : 경로를 bin전까지 넣기.

· PATH에 %JAVA_HOME%\bin 넣기 : bin앞의 디렉토리가 변경될 경우 JAVA_HOME으로인해 자동반영.

 

JAVA_HOME
PATH

· 커맨드창 다시 실행 ->소스코드있는 경로지정 ->java -version + 엔터 : jdk확인

· 소스코드있는 경로지정 -> 파일명입력

C:\Users\yh\Desktop\202102\workspace>java Hello.java

다음과 같은 에러발생 (클래스 등 미입력으로 인한 오류)

· 번역기 미사용시 : 실행타임이길고 소스코드노출문제발생

· cd ../ 엔터: 상위로 이동

· dir 엔터 : 목록을 나타냄

 

환경변수 설정이 완료되면 어느 경로에서든 자바가 실행되어야한다. java -version했을때 jdk가 확인되어야한다.

*프로그래밍 :

컴퓨터 프로그램을 만드는것

메모리에 있는것을 실행

*C/C++단점을 보완 -> 자바

C/C++단점을 보완 -> 자바

*자바 언어의 특징:

양방향 소프트웨어

언어와 플랫폼이름이 동일 (플랫폼단일화)

간결 / 가이드/ 객체지향

 

*자바 플랫폼의 특징 :

자바플랫폼을 통해 다양한 운영체제사용가능

(전용 운영체제쓰는 단점탈피)

자바API가 interface역할 (자바코드와 운영체제사이)

ex. 변환플러그어댑터

 

*컴파일 언어 :

코드 → 번역 → 보조기억장치 → 메인메모리 → 실행

ex: C, C++ 

CPU안의 Control Unit이 실행

특정CPU에서만 동작

기계어를 직접 만들어 실행

메모리 관리를 해야함

한번에 미리 번역

배포시 구문오류 존재 X

실행환경 도구 필요X

컴파일언어 실행방법

컴파일언어 특징

*인터프리터언어 :

번역없이 소스코드가 바로실행

실행을 도와주는 실행엔진필요(virtual machine)

소스코드로 배포 -> 배포환경넓힘

한줄한줄 번역

실행타임이 느림

ex:python, javascript

*JDK, JRE, JVM 차이점 :

JVM : 자바가상머신( Java Virtual Machine)

OS별로 존재, 바이너리 코드를 읽고 검증, 실행.

 

JRE : 자바실행환경(Java Runtime Environment)

JVM + 자바프로그램 ,

실행에 필요한 라이브러리 파일 등 ,

JVM의 실행환경 구현

 

JDK : 자바개발도구(Java Development Kit) 

JDK = JRE + 개발을 위한 도구

컴파일러, 디버그 도구등 포함

 

JDK > JRE > JVM (JDK가 가장 큼, JDK를 설치하면 JRE, JVM도 설치됨)

인터넷

네트워크간 연결을 위해 인터네트워크 등장.

인터넷은 인터네트워크기술중 하나.

  • 서버 : 자원제공
  • 클라이언트 : 자원요청
  • 서버용 컴퓨터 : CPU, 메모리, 하드디스크 합수가능, 꺼지지않게 만들어짐, 파워가 2개이상
  • 프로토콜 : 다양한 웹서버에 요청하고 받을 수 있도록 만든 협업 규약
  • WWW : 문서를 전달하는 다양한 규약중 하나. 요즘은 www위에서 FTP,SMTP,TELNET들이 서비스된다.

-과거 웹개발 : 단순문서작업, 홈페이지 개발

-현재 웹개발: 어플리케이션플랫폼 개발, 새로운 플랫폼을 다루는것

 


HTML : 문서구조(항목), 마크업랭귀지

CSS : 스타일 (Cascading)

웹문서 구성요소 : 콘텐트, 구조, 스타일


Visual studio

  1. 비주얼 스투디오 코드 다운로드 (옵션 모두선택)

  2. 파일을 저장할 폴더 생성

  3. 폴더선택후 마우스 오른쪽 버튼누르면 '비주얼스튜디오로 열기'로 열면 폴더와 연결됨 또는 비주얼스튜디오를 먼저 열고 file -> open folder 로 연결가능

  4. 새로운 파일생성 -> 파일이름 입력 -> .html 입력해야 html파일생성됨

  5. <b></b>와 같은 태크고 각 컨텐트를 구분한다 ->마크업

  6. 의미적인내용 + 단일하게 구분하는 방법을 위해 고안됨

  7. 태그 : 마크업 도구

  8. HTML 문서기본 구조 규칙이있다.

  9. !를 입력하면 하단에 emmet abbreviation이 뜨고 엔터누르면 자동완성

 

<!DOCTYPE html>
<html lang="en">
<head> //메타데이타, 콘텐츠에서 사용될 부가정보
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title> //검색되는 부분, 즐겨찾기할때 자동저장되는 기본이름
</head>
<body>
    //출력될 내용
</body>
</html>

*<ul></ul> 순서없는 목록

*순서가 있고 없고 의 차이 : 2가 1을 해야만 하는지의 여부

  • 어떤것을 만들것인가에 따라 언어가 결정된다

  • C,C++ : 코딩절차를 만드는데 적합​

  • 컴파일 언어 : 3+4 를 컴파일(binary code)로 번역후 디스크에 저장 ->런타임 ->Execute (실행속도빠름)

  • 컴파일언어 : C,C++, Java, C#

  • 인터프리터언어 : 번역없이 실행 ->소스코드가 바로 디스크에있음 ->바로필요할때 필요한언어만 번역

  • 인터프리터언어: Python , Javascript , 실행속도 느림, 배포부담이 적음

  • 컴퓨터가 1,0 만 인식하는 이유? 천공처럼 기계가 구멍뚫린곳, 안뚫린곳에 따라 움직인것에서 반도체 발전

  • 프로그램이란 ? 컴퓨터프로그램은 컴퓨터를 이용하기 위한 수행절차, 자바프로그램이란 자바이용을 위한 수행절차


 

JDK 설치

https://jdk.java.net/15/

  1. 파일다운로드 -> 압축파일 풀기
  2. 압축을 푼 폴더에서 jdk-15.0.2폴더를 잘라내기 -> 바탕화면에 새로운 폴더(tools)생성해서 안에 붙여넣기
  3. 윈도우키 + R : 커맨트창 켜기
  4.  jdk-15.0.2가 있는 경로를 찾아준다
  5.  cd+스페이스바+탭 : 탭을 누르면 해당 디렉토리의 파일을 순서대로 보여준다.
  6. cd입력후 스페이스바를 넣기 -> jdk-15.0.2가 들어있는 주소를 저장후 붙여넣기해준다.
  7. C:\Users\yh\Desktop\20210219\tools\jdk-15.0.2>cd bin엔터
  8. C:\Users\yh\Desktop\20210219\tools\jdk-15.0.2\bin>javac -version
  9. javac 15.0.2 // javac -version 엔터
  10. 자바 버전이 확인되면 설치 완료

*C로 한번에 이동은 'cd C:\'  

프로그래머와 개발자의 차이

 

-개발자: 아키덱처 + 방법론 + 검색능력 (거시적) + 사용자요구사항

            해결이 된 노하우를 엮어서 제품을 만든다.

 

-프로그래머: 이론 + 수학 + 알고리즘

                절차를 사전에 기록하는사람, Before + Write ,문제해결에 포커스

 

-개발자에게 코딩테스트가 필수는 아니지만 나만의 유니크한 제품을 만들려면 알고리즘공부가 필요할때가 있다.   

 

-내가 만들고자하는 제품이 있어야하고 관련된 이론, 알고리즘 공부

 

-코딩테스트는 모든 알고리즘의 공통분모를 묻는것

 

 

+ Recent posts