final이번 포스팅은 자바에서 final 키워드에 대해 포스팅하려고 합니다.스프링 프로젝트를 하면 DI를 할 때나 static 키워드를 선언할 때, 변하지 않는다는 개념으로 사용하는데, 사용하면서도 계속 무슨 의미인지 헷갈리는 느낌이 있어 공부할 겸 포스팅해보려고 합니다. 클래스에서 final 선언클래스에 final을 선언하면 상속을 해 줄 수 없습니다..String, StringBuilder, StringBuffer 등에서 사용되는데 이 클래스를 상속받아 클래스의 기본 속성을 변경하는 것을 막기 위해 사용됩니다.메서드에서 final 선언메서드에서 final을 선언하면 오버라이딩을 할 수 없게 됩니다.이것 역시, 메서드를 변경하는 것을 막기 위함입니다.변수에서 final 선언변수에서 final을 선언하..
Variable오늘은 자바의 변수에 대해 포스팅하려 합니다.변수의 종류, 스코프, 라이프 타임에 대해 알아보겠습니다.변수의 종류자바의 변수 종류부터 알아보겠습니다.1. 인스턴스 변수(not static field)static 키워드 없이 클래스 안에 선언된 필드(변수).클래스의 인스턴스마다 변수의 값이 다름.stack에 저장된다.(객체는 heap에 저장, 참조 변수는 stack)2. 클래스 변수(static field)static 키워드가 붙은 필드.모든 클래스에서 공용으로 사용가능하다.JVM의 메모리 영역에 저장된다.3. 로컬 변수메서드에서 임시로 상태를 저장하는 변수.{}안에서만 사용가능하다.stack에 저장된다.4. 파라미터 변수메서드의 인자로 사용되는 변수.stack에 저장된다.int a; // ..
이번 포스팅은 StringBuffer를 알아보고 StringBuilder와의 차이에 대해 포스팅하려고 합니다.StringBuffer와 StringBuilder의 차이우선, StringBuffer는 StringBuilder와 마찬가지로 불변 객체가 아닙니다.따라서, 문자열을 수정할 경우 String처럼 새로운 객체가 생성되지 않습니다.차이점- 두 클래스의 차이점은 thread-safe한가 그렇지 않은가로 나눌 수 있습니다.- StringBuffer의 경우 thread-safe합니다. StringBufferd가 가진 메서드에 synchronized가 붙어 있는 것을 확인할 수 있습니다. 즉, 멀티 스레드인 상황에서 안전합니다.- 반면, StringBuilder의 경우는 thread-safe하지 않습니다. 멀..
오늘은 StringBuilder에 대해 포스팅하려고 합니다. 정확히는 String과 StringBuilder의 속도차이에 대해 이야기하려고 합니다.StringBuffer와 StringBuilder의 차이는 다음 포스팅에 알아보겠습니다!StringBuilderStringBuilder 클래스는 변경가능한 문자열의 객체를 생성합니다.즉, String처럼 문자를 수정할 때마다 새로운 객체를 생성하지 않습니다.하나의 객체로 문자열을 수정하는 것이 가능합니다.StringBuilder stringBuilder1 = new StringBuilder("test");System.out.println("stringBuilder1 = " + stringBuilder1); // stringBuilder1 = testString..
이번 포스팅은 String대해 포스팅하려고 합니다.알고리즘을 풀다보면, 연산 속도 때문에 String을 +를 사용해서 문자열을 연결하기 보다 StringBuilder를 사용하곤 합니다.그래서, 이러한 이유를 알아 보기위해 먼저 String에 대해 공부하며 포스팅하려고 합니다!먼저, String에 대해서 살펴보면, String 클래스는 불변 객체라는 것을 알고 있으셔야 합니다!String 객체 생성 방법그리고,String 변수를 만드는 방법은 2가지가 있습니다.방법 1: 리터럴 값을 직접 변수에 할당하는 방법방법 2: new 생성자를 통해 인스턴스를 생성하는 방법String str1 = "test"; // 방법 1String str2 = new String("test); // 방법 2System.out.p..
이번 포스팅은 Java라는 언어가 call by value인지 call by reference인지 확인해 시간을 가지려고 합니다.공부를 하다가도 계속 헷갈려서 이번에 정리를 하려고 합니다.call by value는 값을 호출하는 것을 의미하고,call by reference는 메모리 주소값을 호출하는 것을 의미합니다.결론부터, 말씀드리자면, Java는 call by Value입니다.Call by Value위에서 언급한대로 call by value는 인자에 저장되어 있는 값을 호출하는 것 입니다.아래 코드를 보면, a 변수에 1이 할당됩니다.기본형 타입은 변수에 값 자체를 저장합니다.increase 함수에 들어가는 매개변수에는 변수 a가 복사되어 들어갑니다.즉, increase 메서드에서는 a의 값인 1이..
자바에서 Collection 타입을 사용하다 보면 자연스럽게 스트림과 람다식을 사용하게 됩니다.stream의 map 메서드와 filter 메서드, forEach 메서드에 사용된 람다식은 모두 같지만 map에서는 컴파일에러가 나지 않고, 나머지 메서드에서는 컴파일 에러가 나는 것을 확인할 수 있습니다.이것은 스트림 람다식이 각 메서드에 알맞은 방식으로 작성돼야 한다는 것을 의미합니다.위 이미지에 사용된 메서드들을 자세히 알아보면 각각 괄호 안에 받는 것이 각각 다 다르다는 것을 알 수 있습니다.Stream filter(Predicate predicate); //Predicate Stream map(Function mapper); //Functionvoid forEach(Consumer action); //..
싱글톤에서의 필드 공유 문제와 Spring Security에서 동시성 문제를 해결하기 위해 ThreadLocal을 사용한다는 것을 알 수 있었다.그래서 이번엔 ThreadLocal에 관하여 포스팅 해보려고 한다.ThreadLocalThreadLocal 클래스는 ThreadLocal 변수를 제공하는데, 이 변수가 스레드에 할당되면 할당된 스레드만 변수에 접근할 수 있다.즉, ThreadLocal은 해당 스레드만 접근할 수 있게 하는 저장소같은 역할을 한다.user A에 thread1 할당 -> thread1에서 apple를 쓰레드 로컬에 저장.user B에 thread2 할당 -> thread2에서 orange를 쓰레드 로컬에 저장.각각 스레드만이 저장된 데이터에 접근 가능함. 즉, thread2는 app..
이번 포스팅은 프로젝트 중 발생한 문제를 해결하는 과정에서 알게된 Deep Copy(깊은 복사)와 Swallow Copy(얕은 복사)에 대해서 포스팅 해보겠습니다.프로젝트 개발 중, 정기 결제를 개발해야 하는 상황이었습니다. 사용한 order 객체를 그대로 복사해 첫 번째 order 객체와 동일한 order 객체의 정보를 이용하여 결제 요청을 보내야했습니다.저는 처음에 첫 결제 때 사용한 order 엔티티를 가지고 와서 그대로 사용하려 했지만 에러가 발생했습니다.org.hibernate.HibernateException: Found shared references to a collection이러한 에러가 나서 찾아보니 특정 영속 객체에서 참고하고 있는 객체를 다른 영속 객체에 주입시킬 경우에 발생하는 에..
- Total
- Today
- Yesterday
- AttributeConverter
- http메서드
- 항해99
- 정기결제
- 네트워크
- 디자인패턴
- 세션
- 대용량데이터
- 외부API
- leetcode
- 프로그래머스
- 싱글모듈
- StringBuilder
- Http 버전
- socket통신
- 백준
- 분산락
- spring.
- fetch join
- 알고리즘
- SpringBatch
- 리트코드
- spring session
- 무상태성
- jpa
- java
- redisson
- 커넥션풀문제
- N + 1
- 벌크헤드
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |