전체 글
-
자바 디자인 패턴(1)_싱글톤 패턴Java 2023. 11. 6. 16:55
싱글톤 패턴 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴으로 인스턴스 생성 시 비용절감의 장점이 있고, 의존성이 높아진다는 단점이 있다. 데이터베이스 연결모듈에 사용된다. 각 테스트마다 독립적인 인스턴스를 만들기 어렵다. 의존성이 높아진다는 단점은 의존성 주입을 통해 모듈간 결합을 느슨하게 만들 수 있다. 메인 모듈이 하위모듈에 직접적으로 의존성을 주기보다는 중간에 의존성 주입자를 통해 간접적으로 의존성을 주입하는 방식(디커플링) 상위 모듈은 하위 모듈에서 어떤것도 가져오면 안된다. 상위, 하위 모듈은 모두 추상화에 의존해야 하며, 추상화는 세부 사항에 의존하지 말아야한다. class Singleton { private static class instanceHolder { private stati..
-
자바 String, StringBuffer, StringBuilder 차이Java 2023. 10. 12. 16:42
자바 문자열 클래스StringStringBuffer : 문자열을 연산(추가하거나 변경) 할 때 주로 사용하는 자료형 (멀티 스레드 환경에서 안전)StringBuilder : 문자열을 연산(추가하거나 변경) 할 때 주로 사용하는 자료형 (문자열 파싱 성능이 가장 우수)/*String 내부구조 - final이 존재*/ public final class String implements java.io.Serializable, Comparable { private final byte[] value; } /*StringBuffer의 내부구조 - final이 미존재*/ public final class StringBuffer implements java.io.Serializable { private byte[] va..
-
자바 new String()과 리터럴("")의 차이Java 2023. 10. 12. 16:16
자바에서 String 문자열을 만드는 2가지 방법이 존재하는데, new String()과 리터럴("")이다. 2가지의 차이점은 저장공간의 차이이다.new String() : Heap 메모리 영역에 저장 (같은 값이 String pool에 존재하더라도, Heap영역에 별도로 객체를 생성)리터럴("") : String constant pool 영역에 생성 (constant pool에 같은 값이 존재한다면 생성되는 객체는 이미 존재하고 있는 값을 참조) 출처) https://yeoonjae.tistory.com/entry/Java-String-literal-%EA%B3%BC-new-String-%EC%9D%98-%EC%B0%A8%EC%9D%B4
-
자바 URL 통신 사용법 및 총 정리Java 2023. 10. 12. 13:51
자바를 사용해 URL통신 하는 방법import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import org.json.simple.JSONObject; import org.springframework.util.StringUtils; import javax.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.U..
-
스프링 어노테이션 정리 (추가 예정)Spring Framework 2023. 10. 12. 12:49
@RequiredArgsConstructor 의존성 주입 어노테이션 // 기존에 의존성 주입 @Autowired private BoardService boardService; // @RequiredArgsConstructor 사용 @RequiredArgsConstructor public class BoardController { private final BoardService boardService; } @RestController @Controller + @RequestBody의 조합 JSON 형태의 객체를 return하기 위해 사용한다. @RequestBody는 사용하지 않아도 된다. // @RestController 미사용 @Controller @RequiredArgsConstructor publi..
-
객체 지향 프로그래밍의 개념 및 4가지 특징WEB & CS 2023. 10. 10. 22:13
객체 지향 프로그래밍 프로그램을 여러 독립적인 부품들의 조합, 즉 객체들의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임 프로그램의 일부분에 해당하는 객체를 먼저 만들고, 만들어진 객체들을 조립해 하나의 완성된 프로그램을 만드는 프로그래밍 방법론 객체지향 장점 프로그램을 유연하고 변경이 용이하게 만들 수 있다. 문제가 생긴 해당 객체의 코드만 변경하기 때문에 코드수정 최소화하고 유지보수하는데 유리하다. 코드 재사용을 통해 반복적인 코드를 최소화하고 코드를 간결하게 표현할 수 있다. 객체지향 4가지 특징 추상화 객체의 공통적인 속성과 기능을 추출하여 정의하는 것 추상클래스와 인터페이스가 대표적인 문법이다. 객체가 수행하는 핵심적인 역할만 규정하고 추상클래스와 인터페이스를 상속받아 실..
-
자바 인터페이스와 추상클래스 차이점Java 2023. 10. 10. 19:20
* 인터페이스와 추상클래스는 추상 메소드를 통해 상속/구현을 통한 메소드 강제 구현 규칙을 가지는 추상화 클래스이다. 인터페이스와 추상클래스 공통점 new 연산자로 인스턴스 생성 불가능 사용하기 위해서는 하위 클래스에서 확장/구현이 필요 인터페이스와 추상클래스 차이점 가장 큰 차이점은 사용 목적에 중점을 두고 봐야한다. 인터페이스 다중상속이 가능 인터페이스를 구현하는 모든 클래스에 대해 특정한 메소드가 반드시 존재하도록 강제함 모든 메소드가 추상 메소드로만 이루어져 있는 것 implements라는 키워드처럼 인터페이스에 정의된 메서드를 각 클래스의 목적에 맞게 기능을 구현 추상클래스 다중상속이 불가능 상속받는 클래스들의 공통적인 로직을 추상화 시키고, 기능 확장을 위해 사용 클래스 내 추상 메소드가 하나..
-
자바 불변 객체와 final에 대한 개념Java 2023. 10. 9. 17:56
불변 객체(Immutable Object) 객체 생성 이후 내부의 상태가 변하지 않는 객체 read-only메소드만 제공하고, 내부 상태를 제공하는 메소드를 제공하지 않거나 방어적 복사를 통해 제공 방어적 복사 : 참조를 통해 값을 수정하면 내부의 상태가 변하기 때문에 내부를 복사하여 전달하는 것 불변 객체와 final을 사용하는 이유 Thread-Safe하여 병렬 프로그래밍에 유용하고 동기화를 고려하지 않아도 된다. 멀티 쓰레드 환경에서 공유자원을 동시에 쓰기(Write) 때문에 동기화 문제가 발생한다. 하지만, 공유 자원이 불변이라면 더 이상 동기화를 고려하지 않아도 된다. (항상 동일한 값을 반환하기 때문) 안정성을 보장하고 동기화를 하지 않아 성능상의 이점을 가져온다. 실패 원자적인 메소드를 만들..