클라우드 3일차

soso·2024년 6월 12일

클라우드 부트캠프

목록 보기
3/77

시멘틱 태그가 나타나는 시점부터 HTML5라고 부름

시멘틱 태그는 오히려 웹 개발의 어려움을 가중시킬 수 있음
시멘틱 태그가 없다고 HTML5가 아니다 > 시멘틱 태그는 HTML5의 일부일 뿐 HTML5의 전부가 아니다

java는 웹 서버를 포함하여 다양한 용도로 사용하는 언어

java로 web client를 위한 application > applet

html에서 applet을 만나면 web browser에 해석을 요청, java 해석기는 없기 때문에 JVM 탑재 필요, JVM은 단독 설치 불가하고 JRE 설치 시 같이 설치

몇몇 브라우저(예 : Netscape 브라우저)에서는 JRE가 탑재

컨테이너(Container)는 애플리케이션 구성 요소들을 관리하고 이들의 라이프사이클, 보안, 트랜잭션 등을 책임지는 환경

컨텍스트(Context)는 애플리케이션 또는 구성 요소가 실행되는 환경을 의미하며, 이 환경에서 필요한 설정 및 자원을 포함

변수는 ... 상자
값을 변경할 수 있으면 변수, 변경할 수 없으면 상수

JavaScript는 주로 브라우저에서 클라이언트 측 스크립트 언어로 사용되며, 동적 타이핑을 지원하기 때문에 변수 타입을 고려하지 않고도 변수의 값을 변경할 수 있음 그러나 이 유연성 때문에 의도치 않은 동작이나 보안 취약점, 특히 해킹에 취약할 수 있음



예외적으로 '$','_' 사용 가능

JS에서 자료형은 원시형과 오브젝트형으로 나눌 수 있음

원시형 : 숫자형, 문자열형, 불리언형, 널형, Undefined형
(JS에서 특이한점 : 널형, Undefined형을 데이터 타입으로 봄)

원시형

숫자형의 변수 선언 및 자료형 확인

NaN
계산 중에 오류가 났거나 부정확한 수학 연산을 사용하면 NaN이 반환
(형식은 number인데 결과가 number가 아니게 된 값)
C/C++과 같은 컴파일 기반의 언어에서는 숫자 0으로 나눈다거나 맞지 않은 자료형이 변수에 입력되면 치명적인 오류를 일으키며 프로세스가 죽음
하지만 자바스크립트에서는 프로세스가 죽지 않고 NaN을 반환하며 해당 연산에만 영향을 미침


JS에서 .은 참조 연산자

문자열의 길이를 구하는 속성 : 문자열.length

큰따옴표와 작은따옴표의 혼용

큰 따옴표와 작은따옴표를 혼용하고 싶을때는 큰 따옴표 안에 작은 따옴표를 넣거나 작은 따옴표 안에 큰 따옴표를 넣음
(예 : 'She's gone' (x) "She's gone" (o) )

boolean 값

null값

undefined값

변수는 선언했지만 값이 할당되지 않은 상태를 나타냄
값이 할당되지 않은 상태라는 의미로 해당 변수에 undefined 값이 자동 할당됨
문법적으로 가능할지라도 의미적으로 바람직하지 못하므로 undefined 값을 변수에 대입하는 코드는 사용하지 말것

null과 undefined의 차이
null : 해당 변수의 값이 없다는 의미로 사용자가 의도적으로 대입하는 값
undefined : 사용자의 실수로 초기화하지 않은 변수에 의도하지 않게 대입되는 값, 일종의 오류 값
사용자가 변수의 빈 값을 설정하는 경우에는 null 값을 사용

오브젝트형

클래스뿐만 아니라 배열 또는 컬렉션 등도 오브젝트형에 속함
원시형 변수와의 가장 큰 차이점은 값을 할당하는 방식
원시형 : 특정 변수에 값을 복사하는 방식(call by value)
오브젝트형 : 특정 변수에 메모리 주소를 복사하는 방식(call by reference)

Hello.java 파일을 JDK(javac)로 컴파일 해서 Hello.class라는 bytecode로 만드는 과정을 개발이라고 함
이 bytecode는 텍스트도 아니고 0과 1로 이루어진 기계어도 아닌 중간에 위치해있음

JDK(javac) 안에는 JRE(java)가 내장되어있는데,
ClassLoader
ByteCode Verifier
Machinecode Generator
이렇게 3개의 엔진이 내장되어 있음

세개의 엔진을 거치고 나면 JVM을 거치게 되는데, load하게 되면 static 멤버를 초기화함(main을 제외) 그 다음 상속 관계를 파악함 그 후 object를 유도한 적이 있나 확인 그 다음 object 클래스를 읽어달라고 ClassLoader 엔진에게 요청, ClassLoader이 자신이 가지고 있는 것을 다시 검사
매 클래스마다 동적 검사 > 보안이 철저
그 후 root까지 도달한 후 main 수행

JVM이 register 영역에서 변수의 할당 연산자 뒤에 있는 값만큼의 메모리를 할당(int라면 4byte)

stack 영역에 main이라는 메서드의 영역이 할당

기본적으로 크기만큼의 메모리를 할당받게 되는데 구역이 정해져있음
처음에는 heap영역과 기타영역으로 나뉘게 된다.
heap 영역은 두 구역으로 나눌 수 있는데, instance(객체) 영역과 method area(구조)로 나눌 수 있다
instance 영역(안에 있는 모든 것을 객체라 부름)
young generation
eden 모든 객체들이 태초(new)로 가게 되면 eden 영역에 할당
s0
s1

설계할때 eden 영역에서 메모리가 자동으로 죽도록 설계해야함

method area
일반 method를 저장

static String이라는 클래스를 default로 null값을 할당
	   Static의 메서드 올림

final
	String Literal Pool

old generation
기타 영역은 stack, non heap(코드 캐시), pc-register(multi-thread code cache) 영역 이렇게 세개로 나눌 수 있다

stack
local 변수는 stack 영역에 할당
주소값과 값을 가지는 공간 각각 생성

인터프리팅 언어는 실행해 봐야

원시형 언어는 콜스택에 값이 바로 저장된다

오브젝트형은(var msg = {name : '불꽃 남자'};)
콜스택에 주소값을 가지고 레퍼런싱하여 메모리힙에 할당

더하기 연산자

문자열 + 문자열 > 문자열의 결합

+문자열(숫자형) > 숫자형
+불린형 > 숫자형

문자열(숫자형) (-/) 숫자 > 숫자
문자열(숫자형) (-
/)

복합 할당 연산자

+= : a = a + b
-= : a = a - b
= : a = a b
/= : a = a / b

비교 연산자

==


내가 메서드를 정의하지 않고 뒤늦게 call back하는 function을 call back function이라 함

0개의 댓글