일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java
- JavaScript
- IT
- SOP
- cors
- Newtonsoft.Json
- 스프링 시큐리티
- SSMS
- RAISERRR
- springboot
- git
- sql server manager
- OUT 파라미터
- IT story
- 스프링부트
- .NET 8.0
- ORM
- SQL Server 구성 관리자
- Exception in thread "main" java.lang.Error
- 자바
- 데이터베이스
- System.Text.Json
- SQL Server
- ERROR_MESSAGE
- github
- C#
- 권한
- jpa
- 프로시저
- MSSQL
- Today
- Total
목록자바 (7)
its_jh_stroy
Optional 타입은 스프링부트를 다루다보면 자주 나오는 타입이다.나중에 한 번 정리해야지 미루고 있다가 이번 기회에 가볍게라도 정리해보려고 한다. Optional자바 공식 문서에 나와있는 Optional 타입에 대한 설명이다.A container object which may or may not contain a non-null value. Optional 타입은 null을 포함할 수 있는 타입이다. 아래와 같이 자바에서는 기본 타입에 null을 할당할 수 없다.// Type mismatch: cannot convert from null to intint a = null; 개발 중 값을 주고받다 보면 변수에 null이 들어가는 경우도 있는데 그런 상황에서 사용될 수 있다.대표적으로 스프링부트에서 J..
vsCode로 자바 프로젝트를 만들고, App.java 파일을 실행해 보았더니 아래와 같이 오류가 발생했다. Error: Could not find or load main class java.test.App Caused by: java.lang.ClassNotFoundException: java.test.App 진짜 아무것도 안 했는데 오류가 발생해서 많이 당황했다. 패키지 변경하기알고 보니 이유는 패키지 이름의 문제였다. "java"로 시작하는 패키지는 JDK에서 사용하는 내장 패키지이므로, 사용자가 직접 "java"로 시작하는 패키지를 생성할 경우 발생하는 오류이다. 따라서 문제가 되는 App.java 위치를 옮겨 패키지를 변경해 주었다.// 패키지 이름 수정 // package java.test; ..
제어의 역전과 의존성 주입은 스프링의 핵심 개념이라고 할 수 있다.그리고 두 개념을 이해하기 위해서는 스프링 컨테이너와 빈이라는 개념에 대해 이해하고 있어야 한다. 스프링 컨테이너(DI 컨테이너)와 빈(Bean)스프링 프레임워크에서 별도로 관리하는 객체를 모아두는 곳을 스프링 컨테이너라고 한다.이렇게 관리되는 객체를 빈이라고 한다.필요한 경우, 개발자가 빈을 등록하거나 의존성 주입을 통해 빈을 주입받아 사용할 수 있다. 제어의 역전(Inversion of Control)객체를 직접 생성하는 것이 아니라, 외부(스프링 컨테이너)에서 관리하는 객체를 가져와 사용하는 것이다.빈을 제어하는 주체가 스프링 컨테이너에서 개발자로 뒤집혀서 제어의 역전이라 부른다. 의존성 주입(Dependency Injection)외..
String 타입의 불변성(Immutable)자바에서 문자열 타입의 변수는 안전성 및 효율성을 위해 값을 변경할 수 없도록 설계되었다.- 안정성 : 값을 조작할 수 없음- 효율성 : 문자열 상수 풀에 의해 동일한 문자열은 동일한 문자열 리터럴을 참조 아래와 같이 문자열을 변경하면 실제 값이 변경되는 게 아니라 새로운 값이 만들어져 변수에 대입되는 것이다.String str1 = "Hello World";str1 = "Hello Java"; StringBuffer와 StringBuilder문자열의 불변성 때문에 변경이 자주 발생하는 경우, 매번 새로운 String 객체가 만들어지고 기존 객체는 가비지 컬렉션 대상이 되어 성능 저하의 원인이 될 수 있다.이러한 문제 방지를 위해 나온 문자열 변경을 지원하는 ..
자바에서 날짜와 시간을 다루기 위해서 Calendar 클래스를 활용한다.기능 구현을 위해 해당 클래스를 가져온다.import java.util.Calendar; Calendar 인스턴스는 getInstance() 메서드를 통해 생성할 수 있다.Calendar calendar = Calendar.getInstance(); Calendar의 정적 필드로 YEAR, MONTH와 같은 상수가 있다.클래스를 자세히 살펴보면 아래와 같은 형태로 되어있다. // Calendar.classpublic static final int YEAR = 1;public static final int MONTH = 2;// ...public static final int DATE = 5; 위 필드는 날짜나 시간을 가져올 때 ..
== 연산자기본 타입의 경우 값을 비교하고 참조 타입은 메모리 위치 값을 비교한다. qeuals참조 타입에서 객체의 실제 값을 비교하기 위해 사용된다.하지만 오버라이드하지 않으면 객체의 참조 값을 비교하므로 값 비교를 위해 별도의 오버라이드가 필요하다.String 타입의 경우 미리 오버라이드 되어 제공된다. 문자열 상수 풀(String Constant Pool)과 new자바에서 문자열을 만드는 방법은 두 가지가 문자열 리터럴을 대입하는 방법과 new를 통해 생성하는 방법이 있다. 문자열 리터럴을 생성하여 변수를 생성하면 해당 리터럴은 힙 영역의 문자열 상수 풀이라는 공간에 저장된다.이후 같은 문자열로 변수를 생성하려고 하면 미리 저장된 풀의 문자열을 참조한다.이미 풀에 저장된 문자열 리터럴을 통해 변수를..
자바 실행 과정자바는 두 번의 컴파일을 거쳐 프로그램이 실행된다..java 확장자로 작성된 프로그램을 첫 번째 컴파일을 통해 .class 파일로 변환하고, JIT 컴파일이라 불리는 두 번째 컴파일을 거쳐 코드를 실행하는 것이다.그러한 과정을 순서되로 나열하면 아래와 같이 동작한다. 1. 자바 코드 작성개발자가 .java 확장자로 소스 코드를 작성한다. 2. 컴파일자바 컴파일러(javac)에 의해 컴파일되어, 바이트 코드가 담긴 .class 파일이 생성된다. 3. 로드JVM의 클래스 로더가 .class 파일을 찾아 메모리에 로드한다.이 과정을 통해 JVM이 .class 파일의 바이트 코드를 읽어들일 수 있게 된다. 4. 링크클래스 로더가 .class 파일 내용이 올바른지 검증하고 실행에 필요한 메모리를 준..