본문 바로가기

전체 글

(404)
[JAVA] 문자열 구분 split (구분자 여러개/특수기호 등) 문자열에서 구분자를 지정하여 문자열을 분할하고 싶은 경우 split을 사용 String[] split(String regex) : 인자로 주어진 정규식과 매치되는 문자열을 구분자로 분할 String[p] split(String regex, int limit) : 인자로 주어진 정규식과 매치되는 문자열을 구분자로 분할하되, 두 번째 인자로 정규식 적용 횟수 제한이 가능 1. 하나의 문자(구분자)로 구분하는 경우 (공백 혹은 띄어쓰기 포함) String str = "appleSbananaSorange"; // S를 기준으로 구분 - 출력: [apple, banana, orange] String[] arr = str.split("S"); 2. 정규식 메타문자를 구분자로 구분하는 경우 String str = "..
[02장.2] 4. 이식 가능한 서비스 추상화(PSA) 이식 가능한 서비스 추상화(PSA; Portable Service Abstraction)이란? : 스프링에서 제공하는 다양한 기술들을 추상화해 개발자가 쉽게 사용하는 인터페이스 예시) - 클라이언트의 매핑과 클래스, 메서드의 매핑을 위핸 애너테이션 - 스프링에서 데이터베이스에 접근하기 위한 기술로 JPA, MyBatis, JDBC와 가은 것들이 존재하는데, 어떤 기술을 사용하던 일관된 방식으로 데이터베이스에 접근하도록 인터페이스를 지원 - WAS를 톰캣이 아닌 언더토우, 네티 같은 곳에서 실행해도 기존 코드를 그대로 사용할 수 있음 더 자세한 사항은 아래 링크 참고 https://kcode-recording.tistory.com/44 [Spring Core] PSA (Portable Service Abs..
[02장.2] 3. 관점 지향 프로그래밍(AOP) 관점 지향 프로그래밍(AOP; Aspect Oriented Programming)이란? : 프로그래밍에 대한 관심을 핵심 과점, 부가 관점(공통 기능)으로 나누어 관심 기준으로 모듈화 하는 것 핵심 관심 사항(Core concern) : 비즈니스 로직(애플리케이션의 주목적)을 달성하기 위한 핵심 로직에 대한 관심사 부가 관심 사항(Cross-cutting concern) : 애플리케이션 전반에 걸쳐 공통적으로 사용되는 관심사 예시) 계좌 이체 프로그램 - (핵심 관점) 계좌 이체, (부가 관점) 로깅, 데이터베이스 연결 고객 관리 프로그램 - (핵심 관점) 고객 관리, (부가 관점) 로깅, 데이터베이스 연결 이에 AOP 관점을 적용하여 부가 관점 로직을 모듈화 할 경우, 부가 관점 코드를 핵심 코드에서 ..
[02장.2] 2. 빈과 스프링 컨테이너 스프링 컨테이너란? : 빈을 생성하고 관리 : 빈이 생성되고 소멸되기까지의 생명주기를 관리 빈이란? : 스프링 컨테이너가 생성하고 관리하는 객체 : 스프링의 객체 : 빈의 이름은 클래스 이름의 첫 글자를 소문자로 바꿔 관리 빈을 등록하는 방법 1) XML 파일 설정 2) 에너테이션 추가 등 @Component // MyBean 클래스를 빈으로 등록 public class MyBean{ }
[02장.2] 1. 제어의 역전(IoC)과 의존성 주입(DI) IoC (Inversion of Controller) : 제어의 역전 : 다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져야 하는 것 [클래스 A에서 B 객체 생성] : 자바에서는 코드를 작성해 객체를 생성할 때 필요한 곳에서 바로 생성 진행 public class A{ b = new B(); } [스프링 컨테이너 객체 관리 방식] 제어의 역전(IoC)를 적용한다면 아래와 같은 코드의 형태로 바뀌며, 이전과 다르게 클래스 B 객체를 직접 생성하는 것이 아닌 어디서 받아와 사용하는 것으로 추측이 가능함 - 스프링은 스프링 컨테이너가 객체를 관리, 제공하는 역할을 진행 public class A{ private B b; // 코드에서 객체를 생성하지 않고 어디선가 받아온 객체를..
[JAVA] 배열의 복사(System.arraycopy(), Arrays.copyOf) 배열을 복사할 수 있는 방법 1) System.arraycopy() 2) Arrays.copyOf() / Arrays.copyOfRange() System.arraycopy(원본 배열, 시작 인덱스, 복사할 배열, 복사할 배열의 시작 인덱스, 복사할 배열의 마지막 인덱스) 원본배열 = Arrays.copyOf(복사할 배열, 복사할 배열에서 복사해 올 길이) * 사실상 Arrays.copyOf()의 코드를 보면 System.arraycopy() 메서드를 래핑한 함수임을 알 수 있음 [차이점] - Arrays.copyOf() : 새로운 배열 생성이 가능 : 전부 복사하거나 복사 대상의 객체를 유지시킬 필요가 없을 때 사용 - System.arraycopy() : 복사할 길이를 명시해야 하거나, 객체를 유지하..
[JAVA] main 메서드 매개값 String[] args (자바 커멘드라인 입력) public static void main(String[] args) static : 프로그램이 실행되는 순간 메모리가 할당되며, Garbage Collector에 의한 메모리 정리 대상이 아님 : 따라서 static을 사용하여 메모리에 항상 상주하도록 설정해야 함 String[] args : args 문자열을 배열로 사용한다는 의미 : main 함수는 프로그램 실행 시 처음으로 수행되는 함수이기 때문에 외부로부터 값을 입력받을 수 있어야 하며, 내부에서 값을 호출할 수 없음 : 위와 같은 이유 때문에 main이 시작되기 전에 데이터를 입력받는 스레드가 필요하며, 이를 위해 JDK는 JVM이 클래스 파일을 처리하기 전 커맨드 라인을 통해 데이터를 사용자로부터 입력을 받음 : JDK는 사용자가 main에게..
[JAVA] 2진수, 8진수, 16진수 < - > 10진수 1. 2진수, 8진수, 16진수를 10진수로 변경 (String의 진수값을 int 형의 10진수로 출력) int num = Integer.parseInt("String의 진수값", 해당 진수); String str1 = "1010"; // 2진수 String str2 = "21"; // 8진수 String str3 = "1A"; // 16진수 // 위 각 진수들을 10진수로 바꾸기 int num1 = Integer.parseInt(str1, 2); // 2진수 >> 10진수, 10 int nu2 = Integer.parseInt(str2, 8); // 8진수 >> 10진수, 17 int num3 = Integer.parseInt(str3, 16); // 16진수 >> 10 진수, 26 2. 10진수를 각..