본문 바로가기

Programming

(61)
[네트워크] OSI7계층이 뭔가요? 🎈 OSI (Open Systems Interconnection Reference Model) 7계층이란? 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것이다. 국제표준기구 (ISO)에서 발표한 것으로 '인터넷 연결을 할 때 이렇게 설계를 하면 통신이 정상적으로 작동을 할것이다'라는 권고안이다. 🎈 왜 나눌까? 통신이 일어나는 과정을 단계별로 알 수 있고, 특정한 곳에 이상이 생기면 그 단계만 수정할 수 있기 때문이다. 1. 물리계층 (physical layer) 0과 1로 되어있는 데이터를 전기신호로 바꿔주는 계층이다. 물리계층에서는 0과1로 데이터가 구성이 되고, 통신단위는 'bit'이다. 이 계층에서는 단지 데이터를 전달만 할 뿐 전송하려는 데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 ..
[Spring] Filter와 Interceptor의 차이가 무엇인가요? (+ AOP) 개발을 하다보면 공통적으로 처리해야 할 업무들이 있다. 예를들면 세션체크처리, 권한체크, pc와 모바일웹의 분기처리, 페이지 인코딩 변환 등이 있다. 공통업무에 관련된 코드를 모든 페이지 마다 작성 해야한다면 중복된 코드가 많아지고 프로젝트 단위가 커질수록 서버에 부하를 줄 수도 있으며 소스 관리도 복잡해질 수 있다. 이 때문에 공통 부분은 빼서 따로 관리하는게 좋다. 공통업무를 프로그램 흐름의 앞, 중간, 뒤에 추가하여 자동으로 처리할 수 있는 방법은 아래와 같이 3가지가 있다. 1. Filter 2. Interceptor 3. AOP 3가지 방식의 특징 및 차이점은 아래와 같다. Filter Interceptor AOP 적용시점 Spring Context 외부 Spring Context 내부 ~ Co..
[네크워크] TCP와 UDP의 차이점이 뭔가요? 소켓 프로그래밍이 뭔가요? TCP UDP 연결방식 연결기반 - 연결 후 통신 - 1:1 통신방식 비연결기반 - 연결 없이 통신 - 1:1, 1:n, n:n 통신방식 특징 데이터의 경계를 구분하지 않는다.(byte-stream) 신뢰성 있는 데이터 전송 - 데이터의 전송 순서가 보장됨 - 데이터의 수신여부를 확인 - 패킷을 관리할 필요가 없음 UDP보다 전송속도가 느림 서버소켓은 연결만을 담당 데이터의 경계를 구분함(datagram) 신뢰성이 낮은 데이터 전송 - 데이터의 전송순서가 바뀔 수 있음 - 데이터의 수신여부를 확인안함 - 데이터가 손실되어도 알 수 없음 - 패킷을 관리해주어야함 TCP보다 전송속도가 빠름 소켓 대신 IP를 기반으로 데이터를 전송 UDP는 연결자체가 없어서 서버소켓과 클라이언트 소켓의 구분이 없음 관련 클래..
[Spring] @Transactional이 내부적으로 어떻게 동작하나요? 🎈@Transactional 의 작동원리, 흐름 Spring에서는 클래스, 인터페이스, 메소드에 부여할 수 있는 @Transactional이라는 어노테이션을 제공하고 있다. @Transactional이 붙은 메소드를 호출하면, Spring은 해당 메소드에 대한 프록시를 만든다. 트랜잭션은 트랜잭션의 시작과 연산 종료시의 커밋 과정이 필요하므로 프록시를 생성해 해당 메서드의 앞뒤에 트랜잭션의 시작과 끝을 추가하는 것이다. 프록시 객체는 @Transactional이 포함된 메서드가 호출될 경우, 트랜잭션을 시작하고 Commit 또는 Rollback을 수행한다. CheckedException이 발생하거나 예외가 없을 때는 Commit을 진행하고, UncheckedException이 발생하면 Rollback을 ..
System.out.println()의 원리가 무엇인가요? 🎈 System.out.println()은 세 부분으로 나눌 수 있다. [ System ] System은 java.lang 패키지의 마지막 클래스이며 JVM이 시작될 때 자동으로 초기화된다. 자바 프로그램은 운영체제상에서 바로 실행되는 것이 아니라 JVM 위에서 실행된다. 따라서, 운영체제의 모든 기능을 자바 코드로 직접 접근하기 어렵다. 하지만 System클래스를 이용하면 운영체제의 일부 기능을 이용할 수 있다. System 클래스는 운영체제 시스템과 관련된 기능을 제공하는 클래스이며, 모든 멤버가 기본 static이기 때문에 별도의 인스턴스 객체를 생성할 필요가 없다. 표준 입출력 관리와, 환경 변수 접근, 시스템 속성 , 현재 ms / ns 시각 확인 , 객체 복사 등에 사용된다. [ out ] S..
[Spring] @Component와 @Bean의 차이가 뭔가요? 스프링은 개발의 제어권이 스프링 컨테이너(IoC 컨테이너)에 있다고 한다. 그래서 이를 IoC(Inversion Of Control), 제어의 역전이라고 한다. 스프링이 개발자 대신 객체를 제어하기 위해서는 객체들이 빈(Bean)으로 등록되어 있어야 한다. 과거에는 객체를 빈으로 등록하기 위해 XML로 지정했어야 한다고 하는데, 요즘엔 어노테이션으로 간단하게 등록할 수가 있다. 스프링에서 빈으로 등록하는 방법은 무엇일까? 스프링 MVC에서는 @Controller, @Service, @Repository 등으로 빈으로 등록할 수 있으며, configuration 관련 객체들은 @Bean과 @Component 으로 스프링 컨테이너에 객체를 빈으로 등록할 수 있다. @Bean 과 @Component의 차이는 ..
[JPA] 즉시로딩(EAGER)과 지연로딩(LAZY) 차이점이 뭔가요? 위 내용대로 엔티티를 작성하면 다음과 같다. [ Member.class ] [ Team.class ] Team과 Member는 양방향 연관관계이고, 연관관계의 주인은 Member이다. 🎈 예제코드 위 예제는 Team 객체와 Member 객체를 각각 만들고 Member 객체의 Setter 메소드를 통해 Team 객체를 셋팅해준 뒤 em.find() 메소드를 통해 Member를 조회한다. 여기서 중요한 점은 Member를 조회했다는 점이다. 👉🏻 FetchType이 EAGER 일 때 쿼리 Member를 조회했는데 Team까지 join되어 쿼리가 나간 것을 볼 수 있다. 👉🏻 FetchType이 LAZY 일 때 쿼리 Member만 조회해온 것을 볼 수 있다. EAGER는 사전적 의미인 열심인, 열렬한 처럼 M..
VPN이란? 🎈VPN 이란? VPN은 Virtual Private Network의 약자로 가설사설망이다. VPN은 모든 네트워크 패킷을 암호화 해서 → VPN 서버에 보내고, (VPN 서버를 통해서) → 인터넷에 안전하게 접속한다. VPN 서버에 연결하면, 인터넷 트래픽이 그 누구도 들여다볼 수 없는 암호화된 터널을 통과하게 된다. VPN으로 https를 지원하지 않는 사이트도 안전하게 접속이 가능하다. 모든 트래픽이 암호화 되기 때문이다. 데이터가 서버에 도착하면 암호 해독 프로세스를 통해 외부 패킷이 제거된다. (복호화) 🎈 VPN은 언제 사용할까? 1. 공공 Wi-Fi를 정기적으로 사용해야 하는 경우 VPN은 공용 Wi-Fi를 이용할 때 꼭 필요하다. 완전한 개인 정보 보호를 원한다면 VPN을 사용하여 인터넷 ..
[내용정리] 토스 SLASH 22 - 토스뱅크의 완전히 새로운 대출 시스템 https://youtu.be/SLamxuykpnw 토스뱅크는 마이크로 서비스의 장점을 그대로 가져오면서 전통적인 금융시스템과의 연계를 새롭게 디자인했다. 마이크로서비스 아키텍처로 구성된 '서비스 서버'와 모놀리틱으로 구성된 '코어뱅킹 서버'를 각각 독립된 API 서비스로 정의했다. 전문방식이 아닌 HTTP API 통신방식이 필요할 경우 코어뱅킹 시스템과 통신하면서 독립된 마이크로 서비스가 비즈니스 로직을 직접 해결할 수 있도록 구성했다. 비즈니스 로직을 처리하는 시스템 구조 뿐 아니라 KCB, NICE와 같은 대외기관과의 통신구조도 새롭게 디자인 했다. 대출이 실행되기 위해서는 고객의 신용정보가 필요하다. 신용정보는 허가받은 기관과의 통신을 통해서 사용할 수 있다. 또한 현재 고객이 가지고 있는 대출정..
카프카(Kafka)란? 🎈카프카(Kafka)란 ? 카프카는 데이터 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 설계된 고성능 분산 이벤트 스트리밍 플랫폼이다. 🎈이벤트 스트리밍 플랫폼이란? 이벤트 스트리밍은 DB, 센서, 모바일 장치, 클라우드 서비스 및 소프트웨어 애플리케이션과 같은 이벤트 소스로부터 실시간 데이터를 이벤트 스트림 형식으로 획득하는 방식을 말한다. Kafka는 세 가지 주요 기능을 결합하여 end-to-end 이벤트 스트리밍을 구현할 수 있다. 이벤트 스트림을 지속적으로 발행(publish-write), 구독(subscribe-read) 한다. 이벤트 스트림을 원하는 만큼 내구성 있고 안정적으로 저장(store) 한다. 이벤트 스트림 을 발생 시 또는 소급하여 처리(Proce..
[JAVA] String 클래스에 대해 설명해 주세요. 🎈 스트링 내부를 들여다보면? 스트링 내부를 살펴보면, Char 배열로 생성된 불변객체 값이다. 🎈 Java에서 String은 불변(Immutable) 객체이다. 불변 객체란, 객체가 생성된 후 내부의 상태가 변하지 않고 계속 유지되는 객체를 말한다. 변수에 객체가 한 번 할당되면 해당 객체의 참조를 변경할 수도, 내부의 상태를 수정할 수도 없는 것이다. 🎈 왜 String은 불변 객체일까? 1. String Pool String이 불변이기 때문에 String Pool도 존재할 수 있다. 어떤 프로그래밍 언어라도 String 타입은 매우 빈번하게 사용된다. 그래서 Java에서는 String Pool이라는 공간에 String을 포함시켜서 매번 String 객체를 새로 생성하기보다는 값이 같은 String이..
[OS] Context Switching이란? 🎈 Context Switching이란? 여러개의 프로세스가 실행되고 있을 때 기존에 실행되던 프로세스를 중단하고 다른 프로세스를 실행하는 것 즉, CPU에 실행할 프로세스를 교체하는 기술 🎈 왜 Context Switching이 필요한가? 컴퓨터가 매번 하나의 Task만 처리할 수 있다면? 해당 Task가 끝날때까지 다음 Task는 기다릴 수 밖에 없음 또한 반응속도가 매우 느리고 사용하기 불편함 Task가 동시에 처리되는 것처럼 하기 위해서 어떻게 해야할까? Computer multitasking을 통해 빠른 반응속도로 응답할 수 있음 빠른 속도로 Task를 바꿔 가며 실행하기 때문에 사람의 눈으론 실시간처럼 보이게 됨 CPU가 Task를 바꿔 가며 실행하기 위해 Context Switching이 필..
[자료구조] Linked List(연결 리스트) 와 Array(배열)의 차이 크기 Array 의 size는 반드시 array 선언 시점에 지정되어있어야 합니다. LinkedList 의 size는 다양할 수 있습니다. node 들이 추가될 때 runtime 시점에서 LinkedList size 는 커질 수 있기 때문입니다. 메모리 할당 Array 에서, Memory 는 Array 가 선언되자 마자 Compile time 에 할당되어집니다. 이것을 Static Memory Allocation 이라고 부릅니다. Stack section 에 memory 할당이 이루어집니다. LinkedList 에서, Memory 는 새로운 node 가 추가될 때 runtime 에 할당되어집니다. 이것을 Dynamic Memory Allocation 이라고 부릅니다. Heap section 에 memor..
[운영체제] 프로세스 vs 스레드 vs 멀티스레드 차이점이 뭔가요? 🎈 프로세스 (Process) - 운영체제에서는 실행 중인 하나의 애플리케이션을 프로세스라고 한다. - 사용자가 애플리케이션을 실행하면 --> 운영체제로부터 실행에 필요한 메모리를 할당 받아 --> 애플리케이션의 코드를 실행한다. - 이 때 실행되는 애플리케이션을 '프로세스' 라고 한다. (예) 크롬 브라우저 2개를 실행하면, 2개의 프로세스가 생성됨. 이렇게 하나의 애플리케이션은 여러 프로세스를 만들기도 함 🎈 스레드 (Thread) - 사전적 의미 : 한 가닥의 실 - 한 가지 작업을 실행하기 위해, 순차적으로 실행한 코드를 실처럼 이어 놓았다고 해서 붙여진 이름 - 하나의 스레드 = 하나의 흐름 - 프로세스 내에서 실행되는 흐름의 단위 - 한 프로세스 내에 스레드가 2개라면, 코드가 실행되는 흐름이..
[블록체인-8] 비트코인 멤풀 📍 비트코인 멤풀(Bitcoin memoppl) 이란? - 매번 비트코인이 전송될 때마다, 실시간으로 이용 가능한 노드에서 거래에 대한 정보가 먼저 확인되어야 한다. - 일단 승인이 된 후 거래는 ‘채굴자‘가 처리할 때까지는 일정 기간 동안 확인되지 않은 채로 남아 있는다. - 이 기간동안 가상 대기실이라고하는 Mempool에서 보류중인 거래를 보관한다. - 비트코인 노드에는 보류중인 거래들을 채굴자가 찾을 때까지 기다리는 지정된 영역이 있다. 이러한 대기 영역은 노드마다 크기와 용량이 다르다. 따라서 서로 다른 양의 미확인된 거래들을 보유하는 다양한 멤풀이 있다. - 멤풀이 지워지는 속도보다 빨리 채워지면 병목현상이 발생하고 거래 대기 시간이 상당히 느려진다. - 멤풀이 가득차게 되면, 거래 수수료에 ..
Docker를 사용하여 MySQL 설치하기 1. Docker 설치하기 Docker 홈페이지에 접속하여 OS에 맞는 Docker를 내려 받아 설치한다. $ docker -v 2. MySQL Docker 이미지 다운로드하기 $ docker pull mysql 다음 명령어로 다운로드한 Docker 이미지를 확인한다. $ docker images 3. MySQL Docker 컨테이너 생성 및 실행 (ex) mysql_container 라는 컨테이너 생성 $ docker run --name mysql_container -e MYSQL_ROOT_PASSWORD= -d -p 3306:3306 mysql:latest 4.Docker 컨테이너 리스트 출력 $ docker ps -a 5. MySQL Docker 컨테이너 접속 $ docker exec -it mys..
[NFT] NFT 세계관을 이해하기 위해 참고한 영상 1. NFT 초기시장! 늦게 들어갈수록 손해 메타버스 시대 세계관 NFT 결합 - 김동은 대표 '김미경의 레벨업' https://youtu.be/RMsabJ_Lmtw 2. 💲메타버스를 넘나드는 새로운 투자트렌드, NFT 뜻과 개념! 이 영상 하나면 정복! - 김미경의 북토크 'NFT 레볼루션' 성소라, 롤프 회퍼, 스콧 맥러플린 https://youtu.be/elAr4odQbH8
[내용정리] (원문/번역) 블록체인이 돈과 경제를 어떻게 변화시키고 있는가 - 돈 탭스콧 블록체인이 돈과 경제를 어떻게 변화시키고 있는가 블록체인이 무엇일까요? 아직 알지 못한다면 아는 것이 좋을 것이고, 안다고 해도 실제 운영 방식에 대한 자세한 설명이 도움이 될 것입니다. 돈 탭스콧이 인터넷의 두 번째 세대를 표방하며 돈 www.ted.com 향후 몇십 년에 가장 큰 영향을 끼칠 기술이 있습니다. 소셜 미디어는 아닙니다. 빅데이터나 로봇공학 심지어 인공지능도 아닙니다. 놀랍게도 그것은 비트코인 같은 전자 통화의 기초가 된 기술입니다. '블록체인' 이라고 하죠. 블록체인입니다. 세상에서 가장 격조있는 소리는 아니지만 저는 이것이 인터넷의 차세대 모습이고 기업과 사회, 여러분 모두에게 큰 가능성을 보장한다고 봅니다. The technology likely to have the greatest..
[블록체인-7] 암호화폐 지갑 유형(콜드월렛, 핫월렛) / 공개키 암호화 방식 📍 암호화폐 지갑이란? - 블록체인 네트워크와 상호작용하는 수단 중 하나이다. - 지갑의 종류는 (1) 소프트웨어, (2) 하드웨어, (3) 종이지갑으로 나뉜다. - 암호화폐 지갑은 '지갑 주소'와 '암호(개인키)'로 구성되어 있다. 지갑의 주소는 다른 사람들이 암호화폐를 송금할 수 있도록 공개해도 되지만, 개인키는 오직 지갑 소유자 본인만 알고 있어야 한다. - 암호화폐 지갑은 비트코인 지갑, 이더리움 지갑 등 각각의 암호화폐 종류별로 따로 가지고 있어야 한다. - 작동 메커니즘에 따라 (1) 콜드월렛과 (2) 핫월렛 으로 구분된다. 📍 콜드 월렛이란? - 코인 지갑은 크게 콜드월렛과 핫월렛으로 나뉜다. 이를 나누는 기준은 '인터넷 연결 유무'이다. - 콜드월렛은 인터넷에 연결되어 있지 않고 오프라인 ..
[블록체인-6] 디앱(DApp) 📍 디앱(DApp)이란? - 이더리움 플랫폼 코인 위에서 작동하는 탈중앙화 분산 애플리케이션이다. - 아이폰은 iOS 운영체제를 사용하고, 갤럭시는 안드로이드 운영체제를 사용하듯이 디앱은 블록체인을 운영체제를 사용한다고 보면 된다. - 디앱은 스마트 컨트랙트가 도입되면서 생겨났다. - 모든 암호화폐는 기본적으로 매우 유사한 방식으로 작동하기 때문에, 프로그램 소스 코드의 상당 부분이 동일하게 재사용될 수 있다. 이더리움 창시자인 비탈릭 부테린은 이런 특징을 고려하여 여러 가지 암호화폐에서 공통적으로 사용할 수 있는 특징들을 모아 이더리움 플랫폼을 구성했다. 개발자는 이더리움 플랫폼 위에서 다양한 분산형 애플리케이션(DApp)을 구축할 수 있다. - 디앱은 비트코인과 같이 익명성, 무국적성, 탈중앙화, 분..
[블록체인-5] 이더리움(Ethereum) / 스마트 컨트랙트(Smart contract) / EVM 📍 이더리움(Ethereum)이란? - 암호화폐의 대장인 비트코인과 더불어 코인계를 이끌어가는 양대산맥이 바로 '이더리움'이다. 이더리움은 비트코인을 기반으로 만든 가장 대표적인 알트코인으로서, '비트코인 2.0'이라고도 부른다. - 이더리움은 비트코인과 비슷한 전자화폐의 기능과 더불어 솔리디티(Solidity) 등의 언어를 이용해 스마트 계약을 작성함으로 여러 분야에 접목할 수 있다는 특징이 있다. - 이더리움은 블록체인 기술을 기반으로 스마트 계약 기능을 구현하기 위한 분산 컴퓨팅 플랫폼이다. '이더리움'은 플랫폼이고, '이더'가 암호화폐이지만 일반적으로 구별하지 않고 '이더리움'을 암호화폐의 이름으로 사용하기도 한다. - 이더리움은 솔리디티라는 언어를 통해 스마트 컨트랙트를 위한 코드를 작성하고, ..
[블록체인-4] 합의 알고리즘 / 작업증명(PoW) / 지분증명(PoS) / 위임지분증명(DPoS) 📍 합의 알고리즘(Consensus algorithm)이란? - 다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 알고리즘이다. - 블록체인은 통일된 의사결정을 하는 중앙 관리자가 존재하지 않는다. 이 때문에 참여자의 의견 일치를 합리적이고 효율적으로 하기 위해 다양한 알고리즘이 개발되었다. - 블록체인 데이터는 수많은 노드에 보관되고, 각 노드들은 블록에 기록된 데이터가 위조되지 않은 원본이라는 것을 합의하는 과정을 필요로 한다. 특정 노드가 악의를 품고 데이터를 조작하는 등의 악의적인 상황이 발생하더라도 다수의 노드들이 상호검증을 거쳐 올바른 블록 생성을 이끌어내기 위한 알고리즘이 '합의 알고리즘'이다. - 가장 일반적인 합의 알고리즘 유형으로는 '작업 증명'과 '지분 증명'이 있다. 📍 작업 ..
[블록체인-3] 분산원장기술 / 채굴 📍 분산원장기술(Distributed Ledger Technology)이란? * 분산 = 광범위하게 널리 분포되어 있음 * 원장 = 거래내역이 기록된 장부 - 거래 정보를 기록한 원장을 특정 기관의 중앙화된 서버가 아닌 분산된 네트워크에서 참여자들이 공동으로 기록하고 관리하는 기술이다. - 분산원장은 블록체인의 핵심이다. - 분산원장의 장점은 중앙집중형에 비해 높은 효율성, 시스템 안정성, 보안성, 투명성이다. 중앙집중형은 인증과 거래 증명을 위해 여러가지 중간 매개체와 인증기관이 필요하다. 하지만 분산원장은 사용자가 직접 거래내역을 공유하기 때문에 중앙화된 시스템을 운영하는데 필요한 비용이 줄어든다는 장점이 있다. 또한 거래 정보가 분산되어 저장되기 때문에 해킹과 위조의 위험성이 낮아진다. 📍 채굴(M..
[블록체인-2] 블록체인은 비트코인과 같을까? 비트코인은 왜 만들어졌을까? 📍 블록체인은 비트코인일까? 결론부터 말하면 블록체인은 비트코인이 아니다. 비트코인은 블록체인으로 만든 하나의 성공적인 사례이고 블록체인이라는 개념을 세상에 알리는 데 결정적인 역할을 했다. 📍 비트코인은 왜 만들어졌을까? 블록체인을 제대로 알기 위해서는 비트코인의 탄생 배경을 이해하는 것이 중요하다. 비트코인은 2008년 미국발 금융위기를 배경으로 등장했다. 당시 미국 정부는 금융기관들의 실패로 인해 생긴 위기를 해결하기 위해 막대한 양의 달러를 찍어냈다. 이로 인해 미국 달러의 가치가 추락했고, 물가는 폭등했으며, 금리는 바닥을 쳤다. 이때 대다수의 구성원은 엄청난 손실을 입었고 자산 가치의 가장 기본적인 잣대인 화폐가 신뢰도를 잃으면서 사람들은 중앙기관의 정책이 자산에 영향을 주는 것에 불만을 가졌..
[블록체인-1] 블록체인이란? 📍 블록체인(Blockchain)이란? - 쉽게 말해 데이터베이스이다. - P2P(Peer to Peer) 네트워크를 통해서 관리되는 분산 데이터베이스의 한 형태이다. * P2P란 기존의 서버와 클라이언트 개념에서 벗어나 개인 컴퓨터들이 네트워크로 연결되어 서로 정보와 자료를 공유하는 것을 말한다. 즉, 연결된 각각의 컴퓨터가 서버이자 클라이언트 역할을 하며 정보를 공유하는 방식이다. - 정보를 담은 장부를 중앙 서버가 아닌 블록체인 네트워크에 연결된 여러 컴퓨터에 저장하는 기술이다. * 중앙서버가 아니다 = 탈중앙화 = 특정 개인이 데이터를 관리하는 것이 아니다 = 다수가 데이터를 저장, 증명하기 때문에 중앙 관리자가 필요 없다 - 특징 1) 누구나 데이터를 추가할 수 있다. 2) 데이터는 추가만 가능..
[Jenkins] CI, CD, 젠킨스에 대해 알아보자
[Git] Git-flow 전략에 대해 알아보자
[내용정리] 모바일 개발자에서 프론트엔드로 전향한 이유 - 드림코딩 엘리 평소에 좋아하는 개발자님인 '엘리'님의 직무전환 스토리를 듣고 태도에서 배울점이 많아 영상 내용을 정리하였습니다. 🙏🏻  www.youtube.com/watch?v=wD8GnE_AJQQ # 결국은 시장성 - 대학생 때부터 시스템 프로그래밍에 대한 관심이 많았음 - 삼성전자에서 근무 시, C와 C++ 임베디드 업무를 하다가 안드로이드가 나오면서 안드로이드 팀으로 반강제적으로 이동하게 됐음 - 미국으로 취업을 준비할 때도, 임베디드 및 스프링 백엔드에 관심이 있었으나 안드로이드에 대한 수요가 높아서 기둥을 세웠던 안드로이드 개발자로 취업함  # 주니어 시절- 삼성전자에서 근무 시 애플리케이션을 만든 것이 아니어서 실무경력이 부족한 편이었음 - 이를 보충하기 위해 공식사이트에서 다양한 것을 배우고, 운영체..
REST API가 뭔가요? 📍 REST : Representational State Transfer 직역하자면 대표적인 상태 전달 애플리케이션 개발의 *아키텍처 중 하나 (*아키텍처 : 애플리케이션을 설계, 제작하는데 사용하는 패턴과 기술의 총칭) 웹 애플리케이션 상에 존재하는 모든 리소스에 대해 고유의 URI를 부여한 후 HTTP Method(GET, POST, PUT, DELETE)를 이용해 리소스에 대해 *CRUD 명령을 적용 (*CRUD : Create, Read, Update, Delete의 줄임말 ) 📍 REST의 구성요소 3가지 자원 (Resource) - URI : 서버에 존재하는 데이터의 총칭. 모든 자원은 고유의 URI를 가짐 행위 (Verb) - HTTP Method : 클라이언트가 HTTP Method를 이용..
[JAVA] GC, stop-the-world, G1GC에 대해서 설명해 주세요. 📍Garbage Collector 동적으로 할당한 메모리 영역 중 사용하지 않는 영역을 탐지하여 해제하는 기능 📍 Stop-the-world 가비지 컬렉터를 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것 Stop-the-world가 발생하면 가비지 컬렉터를 실행하는 쓰레드를 제외한 나머지 쓰레드는 모두 작업을 멈춘다. 가비지 컬렉터 작업을 완료한 이후에 중단했던 애플리케이션 실행을 다시 시작한다. 어떤 가비지 컬렉터 알고리즘을 사용하더라도 stop-the-world는 발생한다. 대개의 경우 가비지 컬렉터 튜닝이란 stop-the-world 시간을 줄이는 것이다. 📍Young 영역(Yong Generation 영역) 새롭게 생성한 객체의 대부분이 여기에 위치한다. 대부분의 객체가 금방 접근 불가능 ..