컴파일러 란? 흔히 컴파일러란, 고차원의 언어를 저차원의 즉 기계어로 옮기는 과정으로 이해를 하고 있습니다. 여기서 기계어란 H/W 가 이해할 수 있는 어셈블리어를 떠오르게 됩니다. 이게 전혀 틀린 말은 아니지만, JAVA 의 컴파일을 보다보면 조금 의아한 의문점이 생깁니다. 컴파일러에 대해 다시 한번 보고, C 언어의 컴파일과 JAVA 의 컴파일에 대해서 한번 알아 보겠습니다. 위키에 컴파일러를 찾아보면, 특정 프로그래밍 언어로 쓰고 있는 문서를 다른 프로그래밍 언어로 옮기는 프로그램을 뜻하며, 소스코드( 원시 코드 )를 목적코드로 출력한다고 합니다. C 계열의 언어를 예로 들면 C언어를 컴파일 하면 기계어인 어셈블리어로 변환이 되며 이는 H/W에서 이해할 수 있는 언어입니다. 자바에서 컴파일을 하면 ..
static 은 객체가 아닌 클래스에 할당이 됩니다. 그래서 A 클래스에 여러 객체가 생성되어도 static 은 같은 메모리를 참조하고 있습니다. static 은 클래스가 최초 로딩될 때 수행 되며, static 초기화 블록은 순차적으로 읽혀집니다. 이를 바탕으로 아래 예제를 살펴봅시다. public class Main { static private String val = "Hello"; static { val = "static block"; } public static void main(String[] args) { System.out.println(val); } static { val = "static block2"; } } 결과 static block2 Static 사용 static 을 어떻게 잘...
List Interface를 구현하는 ArrayList, Vector, LinkedList에 대해 알아보도록 하겠습니다. 3 자료구조에 대한 클래스 계층은 아래 그림과 같습니다. ArrayList vs Vector Vector 는 ArrayList와 거의 동일하며, 유일한 차이점은 동기화(synchronized)입니다. 이로 인해 ArrayList 보다는 오버헤드가 더 있습니다. 그래서 대부분의 자바 프로그래머들은 ArrayList를 더 많이 사용하고, 동기화가 필요한 경우에는 명시적으로 동기화를 구현합니다. ArrayList vs LinkedList 두 자료구조의 시간 복잡도를 살펴보겠습니다. ArrayList LinkedList get() O(1) O(n) add() O(1) O(1) amortize..
자바에서 문자열을 다루는 클래스는 몇 개가 있습니다. 그중 String 은 자바 뿐만 아니라 다른 언어에서도 많이 사용을 하다 보니, 자연스레 그냥 String으로 구현을 하게 됩니다. 그런데, String으로 그냥 개발해도 관계가 없다면 다른 클래스들이 나오지 않았겠죠? String, StringBuffer와 StringBuilder를 한번 알아보도록 하겠습니다. StringBuffer vs StringBuilder 먼저, StringBuffer와 StringBuilder를 비교해보겠습니다. 간단하게 아래 표와 같이 정리를 할 수 있습니다. StringBuffer StringBuilder Thread-Safe Not Thread-Safe Synchronized Not Synchronized Since ..
클래스패스란, JVM이나 Java 컴파일러에 사용자정의 클래스와 패키지의 위치를 지정해주는 파라메터 이다. 쉽게 말해, 자바가 클래스를 찾아 사용을 해야하는데 클래스들이 어디 있는지 위치를 지정해주는 값이다. 아래의 MyClass.java 파일을 컴파일 해서, 실행을 해보자. /Users/charlieshin/javatest/MyClass.java public class MyClass{ public static void main(String[] args){ System.out.println("Happy Coding!"); } }java 파일을 컴파일 하고, MyClass 를 수행해주면 된다. javatest $ javac MyClass.java javatest $ ls MyClass.class MyCla..
Java Exception에는 Exception과 RuntimeException이 있다. 차이는 먼저 아래 표를 참조하자. Exception - Checked Exception RuntimeException - Unchecked Exception 처리 여부 반드시 예외 처리 해야 한다 예외 처리를 하지 않아도 된다 트랜잭션 롤백 롤백이 되지 않음 롤백 진행 예외 처리 확인 컴파일 중 런타임 중 발생 외부 영향으로 발생 할 수 있는 것들 ( 사용자 동작, 운영체제 등 ) 프로그래머 실수에 의해서 발생 Checked Exception은 try~catch 구문이나 throws를 이용하여, 예외를 바로 처리하거나 호출하는 함수에서 처리를 해야 한다. 그렇지 않으면 컴파일 시에 처리하지 않은 예외가 있다고 에러를..
- Total
- Today
- Yesterday
- Filter
- Postman
- maven
- intellij
- elasticsearch
- Kibana
- Log
- docker
- plugin
- scala
- mac
- error
- logstash
- Java
- Linux
- Git
- spring
- Index
- Size
- spring boot
- install
- JSON
- JPA
- SpringBoot
- tomcat
- gradle
- Spark
- apm
- Container
- AWS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |