-
<Spring> IOC 란?
IOC (Inversion of Control, 제어의 역전) 란 ? 제어권이 역전된 것 말 그대로 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미 IOC 적용 전 객체 생성 의존성 객체 생성 ➡ 클래스 내부에서 생성 의존성 객체 메소드 호출 ...
-
<JAVA> static 이란?
1. static 이란 ? static 을 번역했을 때 정적 즉 고정된 이란 의미를 가지고 있고, 여러 객체의 메소드들이 동시에 접근, 수정할 수 있는 전역변수같은 느낌이다 static 키워드를 사용한 변수를 클래스 변수라고 한다. 즉 객체가 아닌 클래스의 변수이기 때문에 new로 객체를 안만들었어도 사용이 가능하다. ex. S...
-
<JAVA> final 이란?
<JAVA> final 이란 ? 변하지 않는 값 1. final 이란 ? 일단 초기화 되고 나면 절대 그 값을 변경할 수 없음 final String finalStr = "finalStr"; finalStr = "change finalStr"; // ** 오류 발생 ** 2. 사용될 수 있는 곳 ...
-
<JAVA> GC (가비지 컬렉션)이란?
📚 Heap 의 구성 Young Generation 인스턴스를 처음 생성했을 때 메모리에 배정되는 영역. 이곳에서 일어나는 GC를 Minor GC 라고 함 Eden 객체가 최초로 할당 되는 곳 Eden 이 가득 찬 경우 객체들의 참조 여부를 확인하고, 참조가 없어진 경우 삭제 / 참조가 있...
-
<JAVA> 자바의 구동원리와 JVM
🕹 자바 프로그램 구동 원리 소스코드를 작성한다. (.java 확장자의 소스 파일) ➡️ Test.java 컴파일러 (Javac.exe) 가 자바 소스 코드(.java)를 바이트 코드(.class)로 변환한다 (.class 확장자의 클래스 파일) ➡️ Test.class 런처(java.exe) 로 자바...
-
<JAVA> 접근 제어자 (Access Modifier)
접근의 범위를 지정해주는 제어자 접근 제어자는 외부에서 마음대로 접근하지 못하도록 제한하는 역할을 한다. 접근 제어자는 생략 가능하며 생략했을 때에는 자동으로 default 로 설정되게 된다. 🗿 접근 제어자를 사용할 수 있는 곳 클래스, 멤버변수, 메서드, 생성자 에 접근 제어자를 사용할 수...
-
Spring vs Spring boot
Spring vs Spring boot 사용하고 있는 자바 프레임 워크가 Spring 인가요 Spring boot 인가요 라고 물어봤을 때 둘 간의 차이점이 뭐지 라고 고민했던 적이 있었다. 이번 포스팅에선 Spring 과 Spring boot 가 뭔지에 대해서 알아보고 더 나아가서 두개의 차이점까지 알아보자...
-
ES란?
Elastic Search 란 ? ES ElastciSearch 는 Lucene 기반의 Java 오픈 소스 분산 검색 엔진 → 자체적으로 검색 엔진이라고 하긴 좀 그렇고 프로그램으로 검색엔진 ! → 실질적으로 작동하는 검색 엔진은 Lucene 모든 데이터를 색인하여 저장하고 검색, 집계 등을 ...
-
트랜잭션이란?
트랜잭션이란 ? 모든 명령어의 성공 또는 실패 를 한꺼번에 모아서 처리 하는 것 명령어 중에 하나라도 실패하면 한 트랜잭션 내의 모든 명령어들이 무효화 (롤백) 됨 EX) 은행에서 돈을 송금하려고 할 때 내 계좌에서 돈을 출금 다른 계좌로 돈을 입금 하는 과정이 함께 일어 나야 하는데 2번...
-
낙관적 락(optimistic Lock)과 비관적 락(pessimistic Lock)
낙관적 락(optimistic Lock)과 비관적 락(pessimistic Lock) 낙관적 락 (optimistic Lock) : 충돌이 발생하지 않는다고 낙관적으로 가정 DB 가 제공하는 락 기능이 아니라 appllication 에서 제공하는 버전 관리 기능을 사용 vers...
-
트랜잭션 격리 수준 (isolation Level)
트랜잭션 격리 수준 (isolation Level) 동시에 여러 트랜잭션이 실행된 경우 어떻게 동작할지를 명시 Dirty Read (비커밋 읽기) 트랜잭션에서 커밋되기 전 작업 내용을 다른 트랜잭션에서 볼 수 있음 ...
-
InnoDB 의 Lock
InnoDB 의 Lock Lock 이란 ? 트랜잭션 처리의 순차성을 보장하기 위한 방법 DB 가 처리하는 가장 작은 단위 트랜잭션이 완벽하게 끝날 때까지 다른 요청을 막아줌 Lock 의 종류 락 적용 요소에 따른 분류 Shared Lock(S) Exclusive Lock(E) Inte...
-
분산락 (Distributed lock)
분산락 (Distributed lock) 서버가 여러 대인 상황에서 동일한 데이터에 대한 동기화를 보장하기 위해 사용 필요한 이유 : 서버가 한대가 아니라 여러 대인 경우 여러 서버로 API가 분산 호출 됨 서버들간에 동기화된 처리가 필요하고, 여러 서버에 공통된 락을 적용해야 하기 때문에 re...
-
교착상태 (DeadLock)
교착상태 (DeadLock) DeadLock 이란 ? : 두 트랜잭션이 각각 Lock을 설정하고 다음 서로의 Lock에 접근하여 값을 얻어오려고 할 때 이미 각각의 트랜잭션에 의해 Lock이 설정되어 있기 때문에 양쪽 트랜잭션 모두 영원히 처리가 되지않게 되는 상태 EX) 트랜잭션 A가 Resoucre1 데이...
-
<JAVA> 자바의 정의와 특징 및 SOLID
자바의 정의 자바는 썬 마이크로시스템즈에서 개발하여 1996년 1월에 공식적으로 발표한 객체지향 프로그래밍 언어 자바의 특징 1. 객체 지향 프로그래밍 (OOP) 프로그래밍을 개발하는 기법으로 , 부품에 해당하는 객체들을 먼저 만들고 객체들을 조립 및 연결하여 전체 프로그램을 완성 하는 것 캡슐화 ...
-
<JAVA> 자바 빌드 관리 도구 (Ant, Maven, Gradle)
자바 빌드 관리 도구 (Ant, Maven, Gradle) 자바 빌드 도구로 Maven 과 Gradle 을 사용했었는데 Maven 에서 Gradle 로 넘어갈 때 조금 더 간결하고 가독성이 좋다 이정도만 알고 넘어갔어서 이번에 차이점 및 성능 비교까지 해보려고 한다 빌드 관리 도구란 ? 우리가 프로그램에서 작성한 jav...
-
<Ruby> 심볼이란?
문자열과 거의 같은 오브젝트 , 문자열 같이 생긴 정수 루비에서 해시를 만들 때 아래 코드처럼 두가지 방법을 혼용해서 만드는 경우가 많은데 사용할 때 두가지의 정확한 차이점을 이해하지 않고 그냥 사용했던 경우가 많이 있었다 a = {'name': 'soyeon'} b = {'name'=> 'soyeon'} puts a[:name...
-
<Ruby> 코드 블록(code block)이란 ?
매개 변수처럼 메서드 호출과 결합 할 수 있는 코드 코드 블록은 이름이 없는 함수라고 생각하면 되고, 코드블록을 어떤 함수나 메소드에 매개변수로 전달 할 수 있다 코드 블록 사용하는 방법 첫번째, 중괄호로 코드 블록 표시하기 { puts "hello" } 두번째, do/end 로 코드 블록 표시하기 do puts ...
-
<JAVA> 전역변수와 지역변수
자바의 변수는 선언위치에 따라 크게 전역변수와 지역변수로 나뉜다 어느 위치에서든 호출이 가능하면 전역변수 특정 구역 내에서만 사용 가능하면 지역변수 전역변수의 경우는 그 내에서도 클래스 변수와 인스턴스 변수로 나뉜다 public class Test { int var1; // 인스턴스 변수 (전역변수...
-
<DB> 인덱스(index) 란 ?
[DB] 인덱스(index) 란 ? 개념 인덱스(영어: index)는 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조를 일컫는다. 인덱스는 테이블 내의 1개의 컬럼, 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다. 고속의 검색 동작뿐만 아니라 레코드 접근과 관련 효율적인 순서 매김 동작에 대...
-
<React> react-router-dom 리액트 라우터
리액트 라우터란 ? React 는 SPA 이기 때문에 말 그대로 페이지가 하나인 어플리케이션 페이지가 하나이기 때문에 페이지 이동이 불가능한데 페이지가 하나인 경우에도 일반 웹 사이트처럼 URL 에 따른 페이지 이동을 해주는게 React Router 이다 SPA란 ? Single Page Application ...
-
JWT란 ?
인증방식 서버 기반 인증 방식 서버 기반 인증 방식은 서버측에서 유저 정보를 저장 => 세션 유저가 로그인을 하면 세션을 만들고 서버의 메모리와 데이터베이스에 저장 문제 사용자 수가 늘어날수록 세션으로 저장하는 정보가 증가하기에 메모리를 많이 사용 쿠키는 단일 도메인 및 서브 도메인에서만 작동...
-
자바 object 매핑 (modelmapper, mapstruct)
Entity DTO 매핑 필요성 Entity -> DTO 로 변환하거나 DTO 에서 Entity 로 변환하는 경우는 굉장히 많다 하지만 이때마다 개발자가 일일히 코드로 수정한다고 하면 실수 하기 쉽고 코드량이 많아지고 복잡해질 수 밖에 없다 귀찮다 .. 😩 ...
-
반복자 패턴 (이터레이터 패턴, iterator pattern)
반복자 패턴 (이터레이터 패턴, iterator pattern) 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체안에 들어있는 모든 항목에 접근할 수 있게 해 주는 방법을 제공해 주는 패턴. 자바를 예로 들었을 때 List 와 Map 을 동일한 방법으로 접근 하는 거라고 생각...
-
인터프리터 패턴 (Interpreter Pattern)
인터프리터 패턴 (Interpreter Pattern) 미니 언어로 쓰여진 프로그램 -> Interpreter(통역) -> 문제 해결 문장을 해석할 떄 사용하는 패턴 , 즉 간이언어를 만들기 위한 패턴 언어를 해석할 땐 보통 BNF 형태로 나타내는 경우가 많음 -&...
-
브리지 패턴 (Bridge pattern)
브리지 패턴 (Bridge pattern) 구현부에서 추상층을 분리하여 각자 독립적으로 변형 & 확장이 가능, 즉 기능과 구현에 대해서 두 개를 별도의 클래스로 구현 기능 클래스 계층과 구현 클래스 사이에 다리를 놓는다 구조 Implementor : 기...
-
추상화 팩토리 패턴 (Abstract Factory Pattern)
< 팩토리 메소드 패턴 보려면? 추상화 팩토리 패턴 (Abstract Factory Pattern) 추상화 팩토리 패턴은 디자인패턴에서 생성패턴에 속한다 [GOF] 상세화된 서브클래스를 정의하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 ...
-
팩토리 메소드 패턴 (Factory Method Pattern)
< 추상화 팩토리 패턴 보려면? 팩토리 메소드 패턴이란? 객체 생성 처리를 서브 클래스로 분리해서 처리하도록 캡슐화 하는 패턴 팩토리 메소드 패턴은 디자인패턴에서 생성패턴에 속한다 [GOF] 객체를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브...
-
디자인 패턴이란?
디자인 패턴이란? [위키백과] 소프트웨어 공학에서 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다 즉 , 객체 지향 프로그래밍 설계할 때 발생하는 문제들을 방지 하기 위해서 사용되는 패턴 개발 하기 전 설계할 때 올바른 설계를 할 수 있도록 도와주고 다른 ...
-
플라이 웨이트 패턴 (Flyweight pattern)
플라이웨이트 패턴 (flyweight pattern) 동일하거나 유사한 객체들 사이에 가능한 많은 데이터를 서로 공유하여 사용하도록 하여 메모리 사용량을 최소화하는 소프트웨어 디자인 패턴 객체를 직접 만드는게 아니라 없다면 만들고, 있으면 객체를 공유 많은 수의 객체를 생...
-
Trie(트라이) 자료구조
내가 구매한 상품을 구매한 사람들이 구매한 상품을 추천해주는 로직을 구현할 일이 생겼는데 그때 Trie 자료구조를 써보는게 어떻겠냐고 말씀해주신적이 있다 결국은 다른 방식으로 구현했지만 추후에 쓸 일이 있을지도 모르니깐 정리해놔야겠다 Trie(트라이) 자료구조란? 탐색 트리의 일종 보통 ...
-
앱 개발 방식 네이티브 앱 vs 하이브리드 앱 vs 모바일 웹 vs 웹 앱
네이티브 앱 안드로이드 , IOS 등 각 OS 에 맞는 언어로 개발하는 것 흔히 말하는 어플리케이션 , 스마트폰에서 인터넷을 거치지 않고 바로 실행할 수 있는 앱 안드로이드 - JAVA , IOS - Swift 장점 스마트폰 고유의 기능 사용 가능 (위치, 캘린더 등) 성능이 좋음 단점 안드로이드와 IOS ...
-
자바 직렬화
자바 직렬화 조건 직렬화 할 클래스에 java.io.Serializable 인터페이스를 상속 public class Test implements Serializable 자바 직렬화 하는 방법 java.io.ObjectOutputStream 사용 자바 역직렬화 하는 방법 java.io.Ob...
-
직렬화 vs 마샬링 vs 역직렬화
직렬화란(Serialize)란 ? 직렬화(Serialize) object 나 data 를 저장하거나 나중에 재구성할 수 있는 포맷으로 변환 하는 과정 -> 바이트 스트림으로 바꿔서 데이터를 스트림에 쓰기 위해 연속적인 데이터로 변환 하는 것 object 를 직렬화 하는 걸 마샬링이라고도 한다 마샬링 ...