profile
DevOps를 살짝 찍먹하는 BackEnd 개발자

공유중인 가변 데이터는 동기화 해서 사용하라

여러 스레드가 가변 데이터를 공유한다면 반드시 동기화 해서 사용해야한다.한 스레드가 수행한 변경을 다른 스레드가 못보는 일을 방지일관성을 지키며 가변 데이터 사용한 스레드가 변경하는 중이라서 상태가 일관되지 않은 순간의 객체를 다른 스레드가 보지 못하게 lock일관성을

2022년 6월 27일
·
0개의 댓글
·
post-thumbnail

Java에서 쓰레드란?

JVM 시작 → 자바 Process 시작 → 프로세스 안에서 Thread 수행작업을 동시에 해주려면 여러 Thread 생성해서 수행각 Thread마다 메모리를 할당해줌Process메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)운영체제로부터 시스템 지원

2022년 6월 27일
·
0개의 댓글
·

상속과 조합

코드 재사용 가능확장성유연성캡슐화를 깨트림설계자가 확장 고려 안했거나, API 엉망일 경우) → 상위 수정되면 하위도 계속 수정상위클래스 생성자 각각에 대응하는 생성자 별도로 정의해줘야함내부 구현을 불필요하게 오픈 (잘못하면 외부 API가 내부 구현에 묶일수도)새로운

2022년 5월 13일
·
0개의 댓글
·

Builder란?

매개변수가 많아지면 코드를 읽기 어렵고, 어떤 순서로 매개변수 넣어야하는지 헷갈린다.개념setter메서드로 매개변수 값 정하기하나의 객체를 만들려고 메서드를 여러개 호출해야함 (코드 길어짐)객체가 완전히 생성되기 전까지는 일관성(consisitency)가 무너진 상태가

2022년 5월 13일
·
0개의 댓글
·

정적 팩토리란?

static factory method객체 생성 역할을 하는 클래스 메서드이름을 통해 메서드 특징, 파라미터 특징을 표현할 수 있다호출될 때마다 인스턴스를 새로 생성하지 않아도 된다인스턴스 미리 만들어놓거나, 새로 생성한 인스턴스를 캐싱하여 재활용 가능반환타입의 하위타

2022년 5월 13일
·
0개의 댓글
·

GC (가비지 컬렉터)

자바에서 불필요한 객체 정리(메모리 정리)해주는 역할C, C++ 에서 개발자가 메모리 관리하니 실수로 memory leak 발생하는 일이 많았지만, 자바에서는 GC가 메모리 해제Garbage란? Unreachable Object, 즉, stack 에서 더이상 참조하지

2022년 5월 13일
·
0개의 댓글
·

Connection Pool 이란?

웹 컨테이너 실행되면서 DB와 미리 Connection을 해놓은 객체들을 pool에 저장해두었다가클라이언트 요청이 오면 Connection을 빌려주고, 처리가 끝나면 Connection을 반납받아 pool에 저장하는 방식자바에서 DB에 직접 연결해서 처리하는 경우(JD

2022년 5월 13일
·
0개의 댓글
·

Object Pool 이란?

많은 수의 오브젝트가 생성되는 것을 방지하고자 Pool에 오브젝트들을 담아두고 사용 및 반납을 하는 방식매번 new 로 인스턴스를 생성하는 것이 아니라, Pool에 있는 오브젝트를 빌려오고 반납하는 방식장점잦은 오브젝트 할당으로 인한 메모리 부하 방지person을 생성

2022년 5월 13일
·
0개의 댓글
·
post-thumbnail

Memory Pool 이란?

주기억장치(CPU가 직접 접근하여 처리할 수 있는 고속의 기억장치)에서 메모리 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당이 불간으한 상태내부단편화(Internal Fragmentation)메모리 할당할 때 프로세스가 필요로 하는 크기보다

2022년 5월 13일
·
0개의 댓글
·

Annotation 이란?

annotation의 사전적 의미: 주석자바에서 annotion의 기능메타데이터 정보를 제공해줌. 즉, 데이터에 대한 설명을 의미데이터의 유효성 검사 등을 쉽게할 수 있어 코드가 깔끔해질 수 있음@Target어노테이션이 적용할 위치ElementType.METHOD: 메

2022년 5월 13일
·
0개의 댓글
·

Reflection 이란?

구체적인 클래스 타입을 알지 못해도 클래스의 정보(메서드, 타입, 변수 등등)에 접근할 수 있게 해주는 자바 API위와 같이 Car 클래스가 있다고 하자obj.move();에서 컴파일 에러가 난다obj는 Object 클래스라는 타입만 알 뿐 Car클래스의 구체적인 타입

2022년 5월 12일
·
0개의 댓글
·

DeadLock이란?

멀티 쓰레드 프로그래밍에서 동기화를 통해 락을 획득하여 자원을 여러 곳에서 함부로 사용하지 못하게 하는데두개의 쓰레드에서 서로가 가지고 있는 락이 해제되기를 기다리는 상태가 되는것을 Deadlock(교착상태)라고 한다서로의 작업이 끝날때(락이 풀리길)까지 무한정 대기

2022년 5월 12일
·
0개의 댓글
·

ArrayList, LinkedList의 특징과 차이

중복을 허용하고 순서를 유지하며 인덱스로 원소들을 관리한다는 점에서 Array와 비슷하지만 ArrayList는 배열과 다르게 배열을 추가하고 삭제하는 메서드가 존재데이터 추가시 더 큰 용량의 임시 배열을 만들어 복사연결된 노드들의 집합인데, 각 노드는 데이터와 포인터(

2022년 5월 12일
·
1개의 댓글
·

Overloading 과 Overriding 비교

하나의 클래스 안에서 같은 이름의 매서드를 여러개 정의매개변수의 개수가 다르거나, 매개변수의 타입이 달라야한다결과 다양한 매개변수를 받는 매서드를 만들어 유연한 코드를 작성할 수 있다.생성자에 사용하는 경우 객체를 생성할 때 상황에 따라 다른 매개변수를 받아 생성할 수

2022년 5월 12일
·
0개의 댓글
·

다형성(Polymorpism)

하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것하나의 코드가 여려 자료형으로 구현되어 실행됨OverloadingParent.javaExePoly.java결과같은 이름의 printName 매서드이지만, parameter를 안받을수도, String

2022년 5월 12일
·
0개의 댓글
·

Boxing 과 Unboxing

Boxing: 기본 자료형(Primitive Type)을 Wrapper Class로 객체화하는것Unboxing: Wrapper Class 를 Primitive Type으로 바꾸는것제네릭(<>)을 사용할 때 제네릭 타입에는 Primitive Type을 쓰지 못하기

2022년 5월 12일
·
0개의 댓글
·