본문 바로가기

분류 전체보기

(65)
Java String CompareTo 메서드 Java를 쓰면서 String 비교 메서드를 사용하는데 equals()는 많이 사용했지만 CompareTo는 써보지 않았다. 그래서 String의 CompareTo()에 대해서 정리를 해보려 한다. 참고 문서 : https://www.w3schools.com/java/ref_string_compareto.asp Java String compareTo() Method Java String compareTo() Method ❮ String Methods Example Compare two strings: String myStr1 = "Hello"; String myStr2 = "Hello"; System.out.println(myStr1.compareTo(myStr2)); // Returns 0 becaus..
Java 데이터 타입 Primitive type(기본형) Reference Type(참조형) 자바에서 변수의 데이터 타입은 크게 원시 타입이라고도 불리는 Primitive Type(기본형)과 Reference Type(참조형)으로 나뉜다. 영어로 말해서 뭘 말하는 건지 모를 수 있으니 알아두자 Primitive Type 기본형 자바 메모리 영역중 스택 영역에 실제 값이 할당되는 기본 데이터 타입들이다. 자바에서 데이터 타입의 최소 크기는 1byte다. boolean : 논리형 1byte true 또는 false char : 문자형 2byte 유니코드 문자데이터 byte : 정수형 1byte -2^7 ~ 2^7-1 short : 정수형 2byte -2^15 ~ 2^15-1 int : 정수형 4byte -2^31 ~ 2^31-1 long : 정수형 8byte -2^63 ~ 2^63-1 float :..
Spring Bean Scope 빈 스코프 Bean Scope란? Bean Scope는 빈 객체를 정의할 때 지정 하는 범위를 말한다. 개인적으로 정의하자면 빈 객체가 어디 부분에서 쓰이고 얼마나 쓰일지에 대한 내용을 말하는것으로 생각한다. scope 값을 설정 하지 않으면 singleton(싱글톤)이 디폴트 값이다. 참고 문서 : https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-factory-scopes Core Technologies In the preceding scenario, using @Autowired works well and provides the desired modularity, but determining exactly wh..
Java String, StringBuilder, StringBuffer 자바에서 문자열 클래스는 대표적으로 String, StringBuilder, StringBuffer가 있다. 사실 String밖에 다루지 않아봐서 잘 몰랐는데 좋은 경험을 하게 되어서 나머지 두 클래스도 다뤄야 겠다고 생각했다. String과 (StringBuilder, StringBuffer)의 차이 String과 StringBuilder/StringBuffer의 차이는 String 클래스는 immutable(불변), StringBuilder와 StringBuffer 클래스는mutable(가변)적인 클래스라는 차이가 있다. 불변/가변은 자바의 Heap메모리 영역과 관련이 있다. 자바에서 객체들은 Heap영역에 메모리를 할당을 받게되는데, String처럼 불변 속성의 클래스인 경우 값이 변하면 기존에 할..
Spring AOP (Aspect Oriented Programming) AOP란? AOP는 관심 지향 프로그래밍이라는 뜻으로 실제 서비스 기능을 나타내는 비즈니스 로직 전, 후로 로깅이나 성능 검사, 권한 체크 등의 부가적인 기능, 즉 인프라 로직을 추가할 때 사용하는 나타나는 개념으로 인프라 로직이 기능별로 횡단적으로 공통적으로 나타나기 때문에 이를 횡단 관심사라고 한다. AOP는 쉽게 생각하면 이런 횡단 관심사에 따라 프로그래밍 하는 것이라고 생각할 수 있다. 개인적으로는 기능마다 공통적으로 비즈니스 로직 전, 후에 인프라 로직을 추가하는 프로그래밍 이라고 생각한다. AOP는 객체 지향 프로그래밍을 의미하는 OOP와 대비되는것으로 오해할 수 있는데, 실제로 AOP는 OOP를 보완하는 역할로 Spring Document에 나와있다고 한다. (참고 : https://docs..
Spring DI(의존성 주입)와 IoC(제어의 역전) 의존성 주입 DI(Dependency Injection)에 대해 DI는 스프링의 핵심 장점중 하나다. 한 객체가 다른 객체로부터 의존되어있는, 다른 객체의 변화에 영향을 받는 것이 의존되어있다고 한다. 그림과 같이 A객체안에는 B객체와 C객체를 new로 생성하고 있는데 이 경우 A객체는 B객체와 C객체에 의존되어 있다. 의존성을 주입은 아래 그림과 같이 직접 new로 B와 C객체를 생성하는게 아닌 외부로부터 객체를 받는것이다. 이렇게 의존성 주입으로 얻을 수 있는 장점은 관심사가 분리되어있다는 점이다. 이는, 관심사 분리 -> 수정이 쉽다 -> 유연성과 확장성 상승을 의미한다. 이러한 의존성 주입은 스프링에서 주로 IOC 컨테이너로 부터 *Bean 객체를 주입받을때 일어난다 *Bean : 스프링의 IOC..
[알고리즘] 안정 정렬 (Stable Sort) 버블정렬, 삽입정렬, 퀵정렬, 선택정렬 등 정렬 알고리즘은 정렬의 안정성에 따라서 안정 정렬과 불안정 정렬로 나뉜다. 그 중 안정 정렬을 먼저 정리하려고 한다. 안정 정렬 안정 정렬이란 정렬 전 동일한 키 값의 요소 순서가 정렬 후 유지가 되는 정렬 알고리즘을 안정 정렬이라고 한다. 예시로 [3, 2, 1, 5, 7, 5] 배열이 있다고 가정한다. 이를 오름차순으로 정렬한다고 할때 [1, 2, 3, 5, 5, 7]이 된다면 안정 정렬 [1, 2, 3, 5, 5, 7]이 될 수 있다면 불안정 정렬이다. 안정 정렬에 해당하는 정렬 버블 정렬 (Bubble Sort) 삽입 정렬 (Insertion Sort) 병합 정렬 (Merge Sort) 정렬 과정을 볼 수 있는 참고 사이트 : https://visualg..
JVM 가비지 컬렉터(GC) Garbage Collector JVM (Java Virtual Machine) 어떠한 운영체제나 CPU 아키텍처 환경에서도 자바 바이트 코드를 실행 할 수 있도록 만들어진 자바 가상 머신이다. 자바 컴파일 후 나오는 class 파일이 자바 바이트 코드를 담고있다. JVM 구조 JVM은 크게 4가지로 구성되어있다. Class Loader : 컴파일러(javac)에 의해 만들어진 자바 바이트 코드를 Runtime Data Areas로 적재를 수행한다. Execution Engine : Runtime Data Areas에 적재된 자바 바이트 코드를 기계어로 변경하고 이를 실행한다. 하나읽고 하나 실행하는 인터프리터 방식과 이를 보완한 JIT(Just-In-Time) 방식이 있다. Runtime Data Areas : 운영체제로부터 메모리를..