markdown syntax highlight
https://support.codebasehq.com/articles/tips-tricks/syntax-highlighting-in-markdown
천재꺼 수업정리 티스토리
https://han-s-coding.tistory.com/68
리소스를 컴파일하면 cpu가 알 수 있는 기계어가 된다.
저차원 언어: 기계에 가까운 언어
고차원 언어: 사람에게 가까운 언어
예전에는 속도, 크기 문제에 굉장히 민감했었는데, 지금은 컴퓨팅파워(컴성능)이 좋아져서 ㄱㅊ
빅데이터는 속도가 중요
옛날에는 OS마다 다 다르게 프로그래밍했어야. 언어가 다 달라서
JVM(Java Virtual Machine) 덕분
요즘 나오는 언어는 이런 거 많음
Dynamic (동적)
프로그래밍에서는 '필요한 시점에'라는 뜻.
Static (정적, 고정)
다이내믹의 반대.
자동 실행 프로그램... 쓰든 안 쓰든 일단 ram에 올려두는 것.
브라우저의 인터넷 연결 프로그램... 미리 ram에 올려둬서 키자마자 빨리 뜨는 것. (엣지가 윈도우에서 빨리 뜨는 이유)
아래아한글같은건 하드에서 가져와야해서 좀 느림.
필요할 때 메모리에 로딩 => 다이나믹 로딩. 속도는 느리지만 메모리 공간은 이득
메모리에 박아두고 시작 => 스태틱 로딩. 공간을 무조건 잡지마 속도는 빠름. (자주 쓰는 거)
정적 대신 고정이라고 해도 된다.
고정 ip(static ip)라는 말... 반댓말은 유동 ip(dynamic ip)
고정 ip가 더 좋다. 일반적으로 비쌈.
ipconfig
라고 치면 이더넷 어댑터 이더넷 보여줌.IPv4 주소가 ip인데 동적 ip이다. 돈 주고 고정 ip 사면 박아넣을 수 있다.
JRE(java runtime environment) : JVM + 표준 클래스 라이브러리. 실행만...
JDK(java development kit) : JRE + 개발 도구. 개발하고 실행해봐야해서
우리는 JDK 깐 적 없지만 오라클 깔았기 때문에 java 있을 것.
LTS라는 용어는 많이들 쓴다. Long Term Support(장기 지원 서비스 버전)
발표할 때 이 LTS는 몇년몇월며칠까지 지원하겠다 말함.
우리가 받을 때는 LTS받는다.
그냥 JDK 있고 OpenJDK 있는데 오픈소스 친화적이라고 보이려고...
Win
키 + R
하고 cmd 말고 wt하면 windows terminal 열림!
JDK 설치하고 나면 터미널에서 java
쳤을 때는 뭐가 나오지만,
javac
는 못 찾아서 안 나옴.
윈도우에서는
.exe
가 기본적으로 달려있다는 취급이라
java
라고만 해도java.exe
라고 알아서 된다.
C:\Program Files\Java\jdk-1.8
자주 보일 디렉터리
.dll
없는 아이콘들은 .exe
가 생략된 애들이다.
알려진 파일 형식의 확장명 숨기기 체크해제하면 .exe 나옴.
경로 알려주기
알려주는 방법은,, PPT에
시스템 환경 변수 편집 -> 작업표시줄 검색에 치면 됨.
환경 변수 창에서 시스템 변수(S)에 있는 Path에 넣어야 공통 유저가 쓸 수 있다.
하위 폴더는 안 찾기 때문에 bin안에 있는 javac.exe
를 찾게 하려면 bin 디렉터리까지 환경 변수에 넣어줘야 한다.
그리고
%SystemRoot%
-> 이거는 시스템 변수의 새로 만들기에서 앞부분 디렉터리를 변수에 담은 것.
예를 들면 C\Program Files\Java\jdk-1.8
을 JAVA_HOME
이라는 변수명에 넣으면,
Path에서 적을 때 %JAVA_HOME%\bin
이렇게만 적어도 된다.
-> 변수는 시스템 변수에 추가돼서 적힘.
자바 소스 파일(.java
) -> 바이트 코드 파일(.class
) -> 기계어(01010..) -> 실행
.java
를 컴파일러(javac.exe)가 .class
로 만들어주고 자바 버추얼 머신(java.exe)이 기계어로 만들어줌.
소스파일 A.java
컴파일 javac A.java
실행 java A
.java
파일 자체를 클래스라고 한다.(퉁치는 말..?)public class Calculator{
public static void main(String[] args) {}
}
모든 클래스의 첫글자는 대문자로 시작. 여기서는 Calculator
.
.java
의 파일명도 클래스 이름으로 해서 Calculator.java
라고 해야 됨.
자바는 무조건 main()
함수를 찾기 때문에 그걸 먼저 하고 다른 것들이 실행됨.
메모장 인코딩이 UTF-8인데, 영어만 있으면 ㄱㅊ. 한글은 MS949인가 그거여야 하나 봐.
public class Calculator{
public static void main(String[] args) {
int a = 234;
int b = 456;
String c = "Hello";
System.out.println(a*b);
System.out.println(c);
}
}
형변환...
package = 폴더 개념
class = 파일 개념
package chap01;
public class First01 {
public static void main(String[] args) {
System.out.println(); //syso에 ctrl+space
// 변수 a, b에 1, 2를 넣어서
// result 변수에 a+b의 값을 출력하기
int a = 1;
int b = 2;
int result = a+b;
System.out.println(result);
}
}
C에서는 함수라고 했는데,
OOP에서는 메서드라고 한다. 99% 동일.
int a = 1; // a <- 1 이런 뜻. R에선 이렇게 한대.
a = a + 1;
int result = a+2;
System.out.println(result);
실행 단축키 오라클처럼 ctrl
+enter
했다.
public
클래스 아무나 다 써라.
내가 만든 클래스 아무나 쓰면 안 된다? -> public 안 됨.
package chap01
-> 내 클래스 존재
package chap02
있으면
private
으로 붙여놓으면 다른 패키지에서 못 쓴다.
메모리에 상주한다. = 빈도가 높고 늘 쓰인다.
static은 안 쓰면 막 갖다 못 씀. -> 메모리에 없는데? 돼서.
나중에.
긴 주석은 /* */
사이에
package chap01;
public class First01 {
public static void main(String[] args) {
System.out.println(); //syso에 ctrl+space
/*
변수 a, b에 1, 2를 넣어서
result 변수에 a+b의 값을 출력하기
할당 연산자
*/
int a = 1; // a <- 1 이런 뜻. R에선 이렇게 한대.
a = a + 1;
int result = a+2;
System.out.println(result);
}
}
번역 때문에 그렇지 숫자가 들어갈 필요는 없다.
그냥 네모칸 안에 뭐가 들어갈 수 있다...
ctrl
+ alt
면 줄 복사alt
누른 채 위아래 방향키 -> 줄 옮기기 됨.초기에는 선언과 할당을 함께 하지만,
나중에는 선언 다 해놓고 나중에 할당하게 될 것.
$
, _
만 가능. 숫자로 시작 불가.정수, 실수, 논리 타입
값 크기는 몰라도 메모리 사용 크기 정돈 아는게 좋다.
byte(1byte, 8bit) : -128 ~ 127
short(2byte, 16bit) : -3만2천 ~ 3만2천 (-32,768 ~ 32,767)
int(2byte, 32bit) : -2billion ~ 2billion (-21억 ~ 21억)
long(8byte, 64bit) : -9백22경 ~ 9백22경 (-2^63 ~ 2^63)
char(2byte, 16bit) : 유니코드 0~65535 (short랑 같다.)
byte는 bit 8칸인데 맨앞은 부호(+/-)가 들어가서 7자리에만 숫자 절댓값 데이터 들어감.
- 리터럴(literal)
소스 코드에서 프로그래머가 직접 입력한 값 얘기.
16진수 표기법
0x
혹은 0X
라고 쓰고 뒤에 적음. (A~F도 소문자 가능)
0x12
은 1*16 + 2 = 18 의미.
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15
2진수는 0B
나 0b
로 시작함. 1까지만 적음.
8진수는 0
으로 시작. 7까지 적음