。゚(*´□`)゚。

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

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

[NC7기-24일차(5월26일)] - 웹프로그래밍 5일차

quarrrter 2023. 5. 26. 18:02

자바프로그래밍
  -문자 리터럴
    -2진수로 변환하는 방법: 
    ASC(amerian standard code for information interchange 미국정보교환표준부호),
    ISO-8859-1, KSC-5601(완성형(한글)), 조합형, MS-949, Unicode, UTF-8
  -변수 사용법
    -jvm이 관리하는 메모리 영역 소개
    -변수 선언, 변수에 값 할당
    -Primitive Data Type 소개: byte, short, long, char, float, double, boolean

 


문자 -> 2진수 -> 전기신호 

문자를 2진수로 바꾸는 규칙 =  character set(문자 집합)

 

1. ASCII (7bit) 

-문자를 7비트 2진수로 표현하는 식. 0~127, 총 128 상태 표현 가능

2. ISO-8859-1 (8bit)

0~255, 256 상태 표현 가능

ASCII + 알파 

 

첫 비트에 따라 Latin 1~10 이 정해지고, 한 번에 여러가지 쓸 수 없음 (default : Latin 1) 

ASCII 에서 앞 1자리 추가

 

3. KSC-5601 (16bit)  /국제용어: EUC-KR/ 완성형

0~65535, 65536 상태 표현 가능

ISO8859 + 알파

초성,중성,종성으로 이루어진 완성된 한글문자에 대해 2진수 정의

전각문자/기호/자소/선문자 0XA180 ~ 0XAFF
한글(2350자) 0XB0A1 ~ 0XC9FF
한자(한국에서 사용하는 일부) 0XCA80 ~ 0XFDFF
정의가 안 된 일부 문자는 메모리에 저장할 수 없었음(똠,똡) 윈도 95 나오기전까지 한글 표현에 한계 

4. 조합형(16bit) 

11172(19*21*27) + 알파

국제표준이 아님 ㅜ 

초중종 조합 후 맨 앞 1을 붙여 16진수 계산

 

5. MS-949 (16bit)

=EUC-KR(2350) + 알파  = 11172자 표현 가능

국가별로 임의 용도로 사용하라고 비워둔 영역(값)을 이용하여 추가 정의. => 국제 표준이 될 수 없음

(국가마다 비워둔 값 알아서 사용), MS 소프트웨어에서만 사용가능 

기존 EUC-KR 에 없던 문자를 추가 정의

 

6. 유니코드 Unicode, 국제표준 (16 bit) (=UTF-16, =UCS2)

ISO 8859-1 + 알파(모든 문자의 2진수 규칙 새로 정의)

Java에서 사용됨 

32bit(4byte)까지 확장됨 

기존 1byte 영어권 문자가 2byte로 커짐

메모리 낭비 및 기존 편집기 사용불가로 ,,, UTF-8 등장 ! 

 

7. UTF-8 (Universial Coded Character Set) UCS Transformat

Unicode 문자 -> 1 byte ~ 4byte로 재정의 

기존 영어 유니코드 읽기 가능, 미래지향적(외계어까지 가능할둣)

 


인코딩(encoding) <--> 디코딩(decoding)

인코딩: 코드화한다. = 어떤 형식에서 다른 형식으로 바꾸는 모~든 행위 (문자 UTF 도 포함됨)

영상 -- > 압축파일 

encoding software (=encoder) : H.264 / m pack 

다시 압축파일 -- > 영상 

decoding software (=decoder)

 

H.264 인코더를 사용하여 영상 인코딩 후 H.264 포맷의 압축파일을 H.264 디코더로 압축 해제후(코덱) 영상플레이어로 재생 가능


줄 바꿈 코드 (엔터)

\n = OA

Unix에서 Windows 읽으면 줄바꿈이 안 되는 경우 있음

 

 

PS C:\Users\bitcamp\git\bitcamp-study\myapp\app> javac -encoding UTF-8 -d bin/main src/main/java/bitcamp/myapp/App.java
PS C:\Users\bitcamp\git\bitcamp-study\myapp\app> java bitcamap.myapp.App
Error: Could not find or load main class bitcamap.myapp.App
Caused by: java.lang.ClassNotFoundException: bitcamap.myapp.App
PS C:\Users\bitcamp\git\bitcamp-study\myapp\app> java -classpath bin/main bitcamp.myapp.App
나의 목록 관리 시스템
-----------------------------
번호: 100
이름: 홍길동
나이: 20
재직여부: true
성별(남자(M),여자(W)): M
좌우시력: 1.5,/1.0
PS C:\Users\bitcamp\git\bitcamp-study\myapp\app>

변수 : 데이터를 임시 보관하는 메모리(RAM)

OS가 RAM을 관리하며 APP은 OS가 제공하는 영역의 메모리를 사용한다.

JVM의 경우 역시 OS가 제공한 메모리 영역 내에서 메모리 관리를 하며 JAVA APP 을 실행시킴.

JVM Stack
로컬 변수
(함수가 호출될 때 만들어짐)
Heap
instance 변수
(u라는 함수를 ,, 사용한다?)
Method Area
class 파일로딩(메서드 블럭, 명령코드)
static 변수

+Constants Pool
-문자열 & 숫자 

 

변수 선언: 메모리에 값을 담을 수 있도록 메모리의 일정 영역을 확보하는 명령 

int a ;

int = data type (메모리 용도)
a = variables 변수 (메모리 이름)

int
*정수 값을 담는 용도의 메모리
*크기는 4byte

값 할당(assignment) : 할당 연산자 "=" 사용

a = 100 ;

a : 변수, L-value
= : 할당연산자
100 : 값, R-value

 L-value : 반드시 변수여야함.
 R-value : 리터럴, 변수, 표현식

 

Data 타입 

Primitive data type(기본 데이터 타입) / class type 

 

Primitive data type(기본 데이터 타입)

정수 byte (1 byte)
short (2 byte)
int (4 byte)
long (8 byte)
char (2 byte)
부동소수점 float (4 byte)
double (8 byte)
논리 boolean (4 byte or 1 byte(배열)


App이 H/W를 사용하는 매커니즘

OS 에서 H/W를 제어하는 모든 기능을 가지고 있음.

JAVA App 실행 과정

1. Java app 에서 JVM API 호출 // System.out.println("Hello");
2. JVM에서 OS의 GUI API를 호출
3. OS에서 HW제어 통해 모니터 출력 ^_^

=> JAVA App에서 스스로 화면 출력하는 것이 아닌, 화면 출력 function을 통해 출력.
=> App에서 HW로 다이렉트 접근 방식은 없음. (해킹이 이런식)
=> Java를 사용하는 경우 JVM이 OS를 call 하기 때문에 OS호출용 함수를 알 필요가 없음 (추상화 개념, 리얼은 JVM이 OS호출)

 

//

c, c++은 개발자가 직접 메모리 관리를 해야한다. (확보 & 해지)

자바, c#, 파이썬 등은 시스템에서 알아서 메모리를 확보한다 (garbage collector)

 인건비를 절약하고 개발자 실수를 줄일 수 있고 메모리 안정성이 있어 관리, 속도가 느려도 java를 사용한다. 


프로그래밍 언어의 변천사

 

1. 절차적 프로그래밍 : 명령문 사용 go to

2. 함수 프로그래밍 : 명령문을 기능 단위로 묶음. f1( ) {...}, f2( ) {...}

3. 객체지향 프로그램 : 코드관리를 쉽게 하기 위해 관련된 함수끼리 분류한다.

 class A { f1( ) {...}, f2( ) {...} }

 class B { f3( ) {...}, f4( ) {...} }

4. 패키지 : 클래스 묶음

5. 모듈 : 패키지 묶음