일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring
- mybatis
- Spring Security
- 객체지향프로그래밍
- java
- 트랜잭션
- RestControllerAdvice
- Filter
- git
- proxy pattern
- 스프링 시큐리티
- 디자인패턴
- exception
- aop
- network
- OOP
- 인터셉터
- 관점지향프로그래밍
- 스프링
- response
- aspect
- request
- http
- Redis
- MYSQL
- 자바
- spring boot
- 스프링부트
- Interceptor
- SQL
- Today
- Total
목록자바 (12)
장쫄깃 기술블로그
들어가며 Java에서 문자열을 다루는 대표적은 클래스로 String, StringBuffer, StringBuilder 가 있다. 연산이 많지 않을때는 특별한 이슈가 발생할 가능성이 거의 없다. 하지만 연산횟수가 많아지거나 멀티스레드, 경쟁 상태(Race Condition) 등의 상황이 자주 발생하면 각 클래스의 특징을 이해하고 상황에 맞는 적절한 클래스를 사용해야 한다. String, StringBuffer, StringBuilder의 기본적이니 차이는 String은 불변(Immutable), StringBuffer와 StringBuilder는 가변(Mutable) 이다. 1. String String 객체는 한번 생성되면 할당된 메모리 공간이 변하지 않는다. concat 메소드 또는 + 연산자를 통해..
JVM이란? JVM이란 Java Virtual Machine, 자바 가상 머신의 약자를 따서 줄여 부르는 용어이다. 가상머신이란 프로그램이 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것 JVM은 스택 기반의 가상머신이다. ARM 아키텍쳐같은 하드웨어는 레지스터 기반으로 동작하지만, JVM은 스택 기반으로 동작한다. JVM의 역할은 다음과 같다. 자바 어플리케이션을 클래스 로더를 통해 읽어들여 자바 API와 함께 실행 Java와 OS 사이에서 중개자 역할을 수행하여 Java가 OS에 구애받지 않고 재사용을 가능하게 함 프로그램에 필요한 메모리 할당, 관리 GC(Garbage Collection) 수행 JVM 구조 Class Loader (클래스 로더) JVM내로 클래스(.class 파일..
들어가며 Java Strong Reference / Soft Reference / Weak Reference / Phantom Reference Java의 참조 유형에는 크게 4가지가 있다. 참조 유형에 따라 GC 실행 대상 여부, 시점이 달라진다. Strong Reference (강한 참조) Soft Reference (소프트 참조) Weak Reference (약한 참조) Phantom Reference (팬텀 참조) 아래로 갈수록 GC의 대상이 되는 경우와 실행되는 시점이 앞당겨진다. 1. Strong References (강한 참조) Java의 기본 참조 유형이다. MyClass obj = new MyClass(); obj 변수가 참조를 가지고 있는 한, MyClass 객체는 GC의 대상이 되지 ..
들어가며 Java의 가비지 컬렉터는 다양한 종류가 있지만 공통적으로 다음의 2가지 작업을 수행한다. 힙(Heap) 내의 객체 중 Garbage를 찾아낸다. 찾아낸 Garbage 객체를 반환하여 메모리를 회수한다. 최초의 Java는 Garbage Collection 작업에 사용자가 관여하지 않도록 구현되었었지만, JDK 1.2 부터는 java.lang.ref 패키지를 통하여 GC와 어느 정도 상호작용을 할 수 있게 되었다. Reference에 대해서는 해당 글을 참고하면 된다. 참고 : https://jangjjolkit.tistory.com/31 [Java] 참조 유형 (Strong Reference / Soft Reference / Weak Reference / Phantom Reference) 들어가..
객체 지향 설계 5원칙 - SOLID 객체 지향 설계의 정수라고 할 수 있는 5원칙이 집대성되었는데, SOLID 원칙이다. SOLID는 각 5가지 원칙의 앞 머리 알파벳을 따서 부르는 이름이다. SRP(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open Closed Principle) : 개방 폐쇄 원칙 LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 DIP(Dependency Inversion Principle) : 의존 역전 원칙 SRP(Single Responsibility Principle) : 단일 책임 원칙 어떤 클래스를 변..
Java 현재시간 측정 함수 Java에서 기본적으로 제공하는 함수중 System.currentTimeMillis 함수를 이용하면 현재 시간을 밀리세컨드 단위로 출력할 수 있다. System.java 클래스에 있는 함수 설명을 보면 1970년 1월 1일 UTC 시간 기준으로 현재까지의 시간 차이를 밀리 세컨드 단위로 출력한 값이다. Returns the current time in milliseconds. Note that while the unit of time of the return value is a millisecond, the granularity of the value depends on the underlying operating system and may be larger. For exam..
다형성(Polymorphism)이란? 다형성이란 프로그램 언어 각 요소들(상수, 변수, 식, 객체, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다. 또는 여러 형태를 받아들일 수 있는 성질, 상황에 따라 의미를 다르게 부여할 수 있는 특성 등으로 정의를 하기도 한다. 정리하면 다형성이란 하나의 타입에 여러 객체를 대입할 수 있는 성질로 이해하면 될 것이다. 다형성을 활용하면 기능을 확장하거나, 객체를 변경해야할 때 타입 변경 없이 객체 주입만으로 수정이 일어나게 할 수 있다. 또한 상속을 사용한다면 중복되는 코드까지 제거할 수 있으므로 더욱 객체 지향 설계와 가까워질 수 있다. 다형성을 구현하는 방법 다형성을 구현하는 여러 방법 중 대표적으로 알려져있는 오버로딩, 오버라이..
상속(Inheritance)이란? 상속은 객체들 간의 관계를 구축하는 방법이다. 상속은 기존 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것이다. 하위 클래스들에서 사용할 공통된 메소드를 상위 클래스가 제공해주고, 하위 클래스들은 상위 클래스에서 없는 기능을 추가하거나 재정의한다. 기존 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것 상속의 장점 1. 코드를 재사용할 수 있다. 하위 클래스들이 공통으로 사용할 기능을 상위 클래스에 적용하고, 하위 클래스는 필요할 때 기능을 추가하거나 재정의 하면 되기 때문에, 공통 코드를 재사용할 수 있다. public class Bird { public void fly() { System.out.println("푸드덕 푸드덕"); }..
캡슐화(Encapsulation)란? 객체의 속성(data fields)과 행위(methods)를 하나로 묶고, 실제 구현 내용 일부를 외부에 감추어 은닉한다. 캡슐화는 객체 내부의 속성이나 행위를 외부에서 직접 접근할 수 없게 하는 것이다. 흔히 은닉과 혼동하는 경우가 많은데, 은닉화란 캡슐화를 통해 얻어지는 '실제 구현 내용 일부를 외부에 감추는 효과'이다. 객체의 속성과 행위를 묶으면 응집도가 올라가므로 자율적인 객체가 된다는 장점이 있다. 자율적인 객체가 되면 다른 객체의 영향을 덜 받기 때문에 자신의 상태를 스스로 잘 처리할 수 있게 된다. 그런데 이 상황에서 캡슐화가 이루어지지 않으면 외부에서 내부 속성에 접근하여 사용할 수 있기 때문에 결합도가 높아지고 응집도가 낮아지게 된다. 이렇게 되면 ..
추상화(Abstraction)란? 컴퓨터 과학에서 추상화는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려내는 것을 말한다. 추상화는 이처럼 구체적인 사물들 간의 공통점을 취하고 차이점을 버리는 일반화를 사용하거나, 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거함으로써 단순하게 만드는 것을 말한다. 핵심은 불필요한 코드를 제거하고 중요한 부분을 살려 단순하게 만드는 것이다. 추상화 예제 추상화란 공통적인 부분을 취하고 차이점을 버리는 것이라고 했다. 예를 들어 SuperCar, SnowCar, FastCar가 있다고 하자. public class SuperCar { public void move() { System.out.println("슈퍼하게 달립니다."); } } ..