1212 메서드, 객체지향 프로그래밍
자바 개발 4가지 플랫폼 JavaSEm JavaEE, JavaME, JavaFX JavaSE 개발환경 구축을 위해서 설치하는프로그램 JDK(Java Development Kit) 설치시 JVM, API, TOOL 설치됨 Java program을 구동하는 프로세서 J
접근 제어(Access Modifier)클래스와 클래스의 멤버를 사용할 때 접근 가능한 범위를 지정함private < default < protected < publicpublic: 모든 패키지에서 접근 가능. 모 든 클래스는 public, 모든 멤버는
수직적 구조 = 계층화 => 상속코드 중복 최소화, 유지보수의 용이성(새로운 필드 추가, 삭제), 확장성이 좋음."is a kind of"자바는 단일상속만 지원함.상속을 사용하면 하위클래스가 상위클래스를 재활용 할 수 있다(하위 클래스에서 상위클래스에 접근하여 사용 가
추상 클래스와 인터페이스 자바 최상위 클래스, object
사용자 생성 classVO, DAO, Utility. 특히 utilityJava 제공 classjava.util.Random 등다운받아 사용하는 APIGson(Java 객체를 JSON으로, JSON을 Java 객체로 변환하는 API) 등https://mvnre
Java String class String class literal pool : 재활용 메모리 공간 charAt(a) > 원하는 인덱스(a) 입력시 인덱스에 해당하는 문자 하나를 반환받음 replaceAll(a, b) > a를 b로 치환한 값을 반환. > 원본
비트코인cyberpunk 운동의 산물. 인터넷상에서 다수의 사람들에게 신뢰받는 탈중앙형 화폐비트코인을 기반으로 블록체인 기술 발달.이더리움에서 사용하는 화폐를 이더 라고 함.P2P 네트워크를 통해 관리되는 분산 데이터베이스의 한 형태. 블록체인 노드에 디지털 서명된 거

4가지 방법이 있다.String: 일반 text typeObject: 자동으로 json 변환됨. status: 200 OKResponseEntity: Body의 내용을 Object로 설정. 상황에 따라 HttpStatus Code 설정ResponseBody: RestC
Spring Boot에서의 Validation 어떠한 서비스 로직을 처리하기 전의 데이터의 유효성 검사를 위해 관련 로직을 모두 작성하다보면 코드도 길어지고 검증 과정에서 나타날 수 있는 다양한 에러에 대해 모두 작성하기 는 어려운 일이다. 이를 위해서 spring

Spring Boot 기본 개념 Spring Concept IoC 제어의 역전 Inversion of Control. 다른 객체를 직접 생성하거나 제어하는 것이 아닌 외부에서 관리하는 객체를 가져와 사용하는 것. 스프링은 스프링 컨테이너가 객체를 관리, 제공하는
데이터베이스 관리 소프트웨어. 관리 특징에 따라 관계형, 객체-관계형, 도큐먼트형, 비관계형 등으로 나뉨.Relational DBMS. 관계형 모델을 기반으로 한 데이터베이스 관리 소프트웨어. H2나 MySql 등H2: spring boot가 지원하는 인메모리 관계형
URL의 설계 방식. 자원을 이름으로 구분해 자원의 상태를 주고받아 쉽고 명확하고 이해하기 쉬운 API를 뜻함.서버/클라이언트 구조무상태캐시 처리 기능계층화인터페이스 일관성장점URL만으로도 기능을 알 수 있음클라이언트와 서버 역할 분리HTTP 표준을 사용하는 모든 플랫
final 한 번 값이 할당되면 더 변경, 수정이 되지 않음을 선언하는 키워드 필드에 선언 시 해당 필드는 수정이 불가하다. 값이 바뀌지 않기 때문에 상수로서 사용하기 위해 static과 함께 쓰는 경우도 많다. 클래스에 선언 시 상속이 불가하다. 메소드에 선언 시 오버라이딩이 불가하다. final 키워드 사용의 이점 불변성 보장 코드 의도를 확실히...
이전에 실습했던 간단한 게시판 만들기 프로젝트에서는 일대다, 다대다 관계를 설정해 본 적이 없었다. 하지만 현재 진행하는 프로젝트 ERD에는 일대다, 다대다 관계가 필수였기에 관련 개념을 알아보았다. 관계 설정시 확인해야 할 것들 관계의 다중성 N:1 - @manyToOne 1:N - @OneToMany 1:1 - @OneToOne ...
@ControllerAdvice모든 controller에서 발생할 수 있는 예외 처리@ExceptionHandler특정 controller의 예외 처리@ControllerAdvice로 모든 컨트롤러에서 발생할 예외 정의 -> @ExceptionHandler로 발생하는
Scheduling
Plastic SCM이 뭔데?
게임 개발 프로젝트를 진행하게 되어 유니티에 대해 알아볼 필요가 생겼다.'레트로의 유니티 게임 프로그래밍 에센스' 책을 참고하여 내용을 간단히 정리해 보았다.
Unity의 동작 원리에 대해 알아보자!
Plastic SCM은 분산형과 중앙집중형을 모두 지원한다. 분산형 ex) GitHub 리포지토리의 clone 요구, 클라우드 서버로부터 클라우드 리포지토리를 로컬 리포지토리에 받고, 작업 후 안정된 분기점을 클라우드 리포지토리에 push 함 클라우드가 안정적인 장
Unity Raycast

postgreSQL에서 위치 정보 검색을 위해 Point 타입을 사용하려 했으나 엔터티 저장 과정에서 bytea로 해석되어 에러가 발생했다. PointConverter를 구현하여 org.springframework.data.geo.Point 타입을 PGpoint로 변환하도록 작성했지만 같은 문제가 발생하여 이를 위해 Point 타입 대신 PostGIS 확장...
로그인, 로그아웃 기능을 구현하면서 HttpServletResponse 객체를 주로 사용했는데, HttpServletRequest 객체가 있음을 알게 되었고 둘의 차이가 궁금해서 찾아보게 되었다. HttpServletRequest와 HttpServletResponse 클라이언트와 서버 간의 HTTP 통신을 담당하는 객체 각각 요청과 응답 정보를 처리하는...
Spring Security spring에서 모든 호출은 DispathcerServlet을 통과한다. 이후 매칭되는 Controller로 분배된다. 그 이전에 모든 요청이 거쳐야 할 단계가 있다면 Filter를 활용하여 공통 처리 부분을 수행한다. Spring Security는 FilterChainProxy를 통해 상세로직을 구현한다. Spring Sec...
프로젝트 요구사항 명세에 의해 PostgreSQL과 QueryDSL을 사용하게 되었기에 간단히 알아보았다. PostgreSQL 오픈 소스 RDBMS 데이터 무결성과 확장성을 중시 특히 대규모 애플리케이션과 복잡한 쿼리 처리에 적합 특장점 오픈 소스 BSD 라이선스로 배포되는 오픈 소스 데이터베이스 관계형 모델과 객체 관계형 모델 지원 전통적인 ...
이래저래 자잘한 기능들을 구현했다. 즐겨찾기 기능 구현 Puser 테이블과 Pstore 테이블 사이에 P_favStore 테이블을 두고 즐겨찾기 추가, 삭제를 구현하였다. @ManyToOne JPA에서 엔티티 간의 다대일 관계를 정의할 때 사용하는 어노테이션 다대일 관계: 여러 엔티티가 하나의 엔티티와 연관될 때 사용 ex) 여러 개의 주문(order...
Spring Security 적용 >WebSecurityConfig을 통해 설정하고 인증, 인가 필터를 적용하여 인증, 인가 기능을 마무리했다. Spring Security를 적용해 로그인 구현하기 WebSecurityConfig JwtAuthenticationFilter 인증 처리 JwtAuthorizationFilter 인가 처리 UserDet...
오늘은.. 카카오 소셜 로그인을 구현해봤다. 로그인 자체는 어렵지 않으나 로직이 좀 헷갈려서 오래 걸렸다. 카카오 소셜 로그인 Kakao Developers 흐름 프론트에서 카카오 로그인 요청 사용자가 프론트엔드에서 카카오 로그인 버튼을 클릭 프론트엔드는 카카오 OAuth 서버에 인증 요청을 보내고, 사용자에게 카카오 로그인 화면을 보여줌 ...

개발이 어느 정도 마무리 되고, 명세대로 테스트 코드를 작성하게 되었다. 지금까지 개발 중 테스트는 Postman으로 보내고, DB를 확인하는 방법으로 진행했었다. 테스트 기반 개발도 해보고 싶었는데, 이번에 테스트에 대해서 알아보고 다음 개발때는 한번 해봐도 좋을 것 같다. 테스트 종류 일반적으로 단위 테스트, 통합 테스트, 종단 간 테스트로 나눌 수 ...
MSA Microservice Architecture 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 개발, 배포, 유지보수하는 소프트웨어 아키텍처 스타일 각 서비스는 특정 기능이나 비즈니스 도메인을 중심으로 나뉨 독립적인 개발, 배포, 운영, 확장 가능 서비스 간의 통신은 주로 HTTP, HTTPS, 메시지 큐를 통해 통신 특징 독립적인 배포...

아침을 여는 코드카타 시간.. 확실히 파이썬으로 풀다가 자바로 풀게 되니 알아야 할 것이 많다 파이썬은 다 알아서 해줬는데..🥲 오늘은 강의 학습에 앞서 평소에 알아봐야겠다고 생각했던 것들 먼저 정리를 하고 시작하려 한다. 학습해야겠다고 생각한 이유는 두 가지다. 튜터님과의 면담에서 내가 생각보다도 더 Java나 기본 개념에 대해 잘 모른다는 것을 알게...

오늘도 코드카타 프로그래머스-시저 암호 s.toCharArray(): 문자열을 문자 배열로 반환하여 각 문자에 대해 반복 작업 수행 소문자일 경우 -> (char) ('a' + (c - 'a' + n) % 26): 현재 문자를 'a'로부터 상대적 인덱스 값으로 변환, n 만큼 이동 후 %26으로 범위 내에서 돌도록 처리 대문자일 경우 -> (char) ...

Spring Cloud Config 분산 시스템에서 애플리케이션의 설정 데이터를 중앙 집중식으로 관리하고 동적으로 업데이트 할 수 있도록 돕는 도구 Spring cloud에서 제공. Git, 파일 시스템, 데이터베이스 등 다양한 구성 저장소와 통합 가능 특징 중앙 집중식 구성 관리 여러 애플리케이션의 설정 파일을 한 곳에서 관리 설정 변경 ...
오늘도 코드카타... 프로그래머스-명예의 전당 PriorityQueue Java의 큐 자료구조. 요소들이 우선순위에 따라 정렬된 상태로 유지됨 우선순위가 높은 요소가 큐에서 가장 먼저 제거되며 기본적으로는 Natural Order 또는 Comparator에 의해 결정됨 특징 정렬 상태 유지 요소들이 우선순위에 따라 자동 정렬됨 기본 정렬...

역경으로 시작한 아침.. 코드카타 하는데 인텔리제이만 너무 버벅대서 50분 정도를 이것저것 설정 건드려보느라 날렸다 보조모니터 때문인가, 뭐 다른게 실행되고 있나.. 재부팅도 해보고 별걸 다했는데 충전 꽂으니까 말짱해졌다 ㅋ ㅋ ㅋ ㅋ ㅋ Docker Compose >다중 컨테이너 애플리케이션을 정의하고 실행하기 위한 도구 단일 파일(docker-comp...

오늘도 아침을 여는 코드카타.. 프로그래머스-모의고사 수많은 불합리하고 말도안되는 알고리즘 문제 중 한가닥 공감을 사는 문제.. 흑흑 int students : 수포자들(정상인들)의 정답 패턴을 작성 int[] scores : 정상인들의 눈물겨운 결과를 저장할 배열 for(int i=0; i< answers.length; i++): 정답 배열(answ...

ㅋㄷㅋㅌ 프로그래머스-로또의 최고 순위와 최저 순위 HashSet java.util 패키지에 포함된 집합 자료 구조. 중복 비허용, 순서 유지 x, 빠른 검색, 추가, 삭제 작업 제공 해시 테이블 기반으로 동작 특징 중복 불허 순서 보장하지 않음 빠른 검색, 삽입, 삭제: O(1) 시간 복잡도로 요소를 검색, 추가, 삭제할 수 있음 null 허용 스레...
Hash > 데이터를 key-value 형태로 저장하고 관리하는 데 사용되는 자료형 Hash Function을 사용해 데이터를 저장하고 검색하며 높은 효율성을 제공 HashMap, HashSet, HashTable 등이 있음 Java는 직접적으로 Set, Map 자료형만을 제공하지는 않음. 다만 이러한 인터페이스를 구현한 다양한 자료형 제공 Set 구...

MSA 개인 과제 실습 일단 구성해야 할 아키텍처는 다음과 같다 먼저 기본 프로젝트를 모두 생성하고, 유레카 서버에 정상 등록되는지 확인했다 본격 개발 시작 진행하면서 어려움을 겪은 부분을 정리해보았다 엔티티 설정 시 Id 필드를 자동생성되게 하지 않아서 상품 등록 시 에러 발생 RDB로 PostgreSQL을 사용하는데, 이미 DB가 생성된 후라...
오늘의 알고리즘 코드카타는 매일 진행된ㄷㅏ... 하면 할수록 파이썬이 그리워진다. 프로그래머스-개인정보 수집 유효기간 문제 분석 주어진 것 today: 오늘 날짜 terms: 약관 종류와 유효기간(개월 수) privacies: 개인정보 수집일과 동의한 약관 종류 날짜 비교 today와 비교해서 만료일이 지나면 개인정보의 인덱스를 결과에...
코코드드카카타타 프로그래머스-달리기 경주 뭐지 너무 간단한거 아닌가 역시나 시간초과로 몇몇 테스트케이스에서 실패가 반환되었다 Arraylist의 indexOf 메서드를 사용하면 리스트를 처음부터 끝까지 순회하기 때문에 오래 걸린다 HashMap 이용 각 플레이어들의 위치를 저장하는 hashmap playerIndex를 이용해서 인덱스와 플레이어를 ...
새로운 팀플에서 배송 관련 기능을 담당하게 되었다. 요구사항만 잔뜩이지 정책 관련해서는 세세하게 설정된 부분이 많지가 않아 어렵다. 정말 기획이 개발보다 어렵다... 기능에 대해 정리하면서 고민되었던 부분에 관해 알아본 사실을 정리해 보았다. 고민들 1. 주문 ID 설정 방식 요구사항 user를 제외한 각 엔터티의 Id를 UUID로 설정하도록 함 상황...
팀원의 제안으로 dto 작성 시 record 타입을 사용하게 되었다 Record > 데이터를 저장하고 전달하기 위한 불변 객체를 생성하는 데 사용되는 새로운 클래스 타입 특징 간결한 문법 필드, 생성자, equals, hashCode, toString 메서드를 자동으로 생성함 불필요한 보일러플레이트 코드를 줄여줌 *보일러플레이트 코드: 여러...
개요 주문(Order): 업체가 요청한 주문 배송(Delivery): 주문에 대한 배송 정보 배송 상세 경로(DeliveryRecords): 배송이 경유지를 거치는 단계를 상세히 기록한 정보 일단 배송은 주문 생성 시점에 생성된다. 배송에는 다음과 같은 정보가 포함되어 있다. 그리고 배송이 만들어지는 시점에 배송 상세 경로(DeliveryRecords...
프로그래머스-이진 변환 반복하기 시간초과 replaceAll은 문자열을 직접 순회하면서 0을 바꾼다. 내부적으로 정규식을 사용하기 때문에 느리다. 어차피 순회할 거 그냥 직접 순회하면서 0의 개수를 카운트하고 동시에 남은 1의 개수를 세도록 한다.
프로그래머스-피보나치 수 시간초과 재귀함수로 구현해서 시간복잡도가 O(2^n)로 증가함 DP 적용 배열에 값을 저장해 중복 계산을 줄임 시간복잡도 O(n) 분배법칙을 이용해서 미리 수를 나눠 저장하여 숫자가 커지지 않도록 함 배열을 선언하지 않고 변수로만 계산할 수도 있다
모니터링과 보안 모니터링 시스템의 성능, 가용성, 안정성을 지속적으로 감시하여 잠재적인 문제를 빠르게 대응할 수 있게 하기 위해 필수적인 요소. 병목 현상이나 리소스 낭비를 식별하고 해결하여 시스템의 전체 효율을 높일 수 있다. 보안 다양한 위협요인에 대응하기 위해 강력한 인증 및 권한 부여 매커니즘이 필요함. 정기적인 보안 점검 및 취약성 테스트로 시스...
시큐어 코딩 CORS(Cross-Origin Resource Sharing) > 웹 브라우저에서 다른 출처(origin)의 리소스를 요청할 때 발생하는 보안 정책 웹 애플리케이션이 서버와 상호작용할 때 동일 출처 정책(Same-Origin Policy)가 적용되고, 이 정책은 스크립트 기반 요청이 동일한 출처에서만 허용되도록 제한함 CORS는 이 제한을 ...
ELK > Elasticsearch, Logstash, Kibana의 약자 > 로그 데이터 처리 및 시각화를 위한 오픈소스 도구들의 스택 이 세 도구들은 각각의 역할을 수행하며 함께 강력한 데이터 검색, 분석 및 시각화 환경을 제공함 ELK의 구성 요소 Elasticsearch 분산형 검색 및 분석 엔진 특징 JSON 형식으로 데이터를 저장함 A...
DDD(Domain-Driven Design, 도메인 주도 설계) > 소프트웨어 설계 접근 방식 중 하나 복잡한 소프트웨어 시스템 개발 시 비즈니스 도메인을 중심으로 설계하고 개발하는 것을 목표로 함 개발팀과 도메인 전문가가 협력해 소프트웨어 설계의 기반이 되는 도메인 모델을 정의하고, 이를 코드에 반영함 주요 개념 도메인 (Domain) 소프...
@Transactional 매일 자정에 실행되는 팀 랭킹 업데이트 기능을 구현하고 있다. @Scheduled 어노테이션을 추가한 private 메서드에 @Transactional 어노테이션을 추가하니 다음과 같은 경고를 볼 수 있었다. Methods annotated with '@Transactional' must be overridable 왜일까?...
리그 내 팀별 랭킹 기능을 만들었다. 아직 걸리는 점이 좀 있어 좀 다듬어야 할 것 같다. 현재 코드는 다음과 같이 구현되어 있다. LeagueRankingScheduler에서 자정에 updateLeagueRankings이 실행된다. updateRankings 내에서 현재 진행중인 리그를 찾고, 각 리그마다 어제 날짜로 기록된 경기 결과를 조회한다. ...
저번 주 만든 리그 랭크 산정 기능에 대해 피드백이 있어서 수정했다. 리그 내 랭킹 업데이트 로직에서 플래그를 많이 이용했는데, 플래그 함수 남발은 가독성도 좋지 않고 실수를 유발할 확률이 높다. 실제로 튜터님도 엔티티 코드까지 가서야 어떤 내용인 지 확인할 수 있으셨다 하고, 사실 나도 며칠 후 보니 헷갈리는 느낌이 들었다. 원래 코드 변경 코드 ...
reshape2 R에서 데이터를 변환하는 데 사용되는 패키지 melt() 데이터를 long format으로 변환 데이터의 열을 하나의 열로 노력서 변환하는 데 사용됨 id.vars = 'id'; id를 고정된 기준 열로 유지 math, english 열이 variable 열로 melt됨 각 성적이 value에 저장됨 dcast() long format...
데이터 탐색 탐색적 데이터 분석(EDA: Exploratory Data Analysis) > 데이터를 이해하고 의미 있는 관계를 찾아내기 위해 데이터의 통계값과 분포 등을 시각화하고 분석하는 것 결측값 > 존재하지 않는 데이터(NA) 환경에 따라 null, 공백, -1 등 다양한 값을 가질 수 있음 결측값을 처리하기 위한 R 패키지로 Amelia(mi...
기초 통계 t-검정 > 두 그룹의 평균이 통계적으로 유의미하게 차이가 있는지를 검정하는 방법 두 그룹이 정말 다른지, 아니면 우연한 차이인지를 판단하는 데 사용됨 필요한 이유 표본 데이터(샘플)에서 측정한 평균을 바탕으로 모집단(전체 데이터)의 평균 차이를 추론해야 할 때 표본 크기가 작을 때(보통 30개 이하), 정규분포를 따른다고 가정하고 비교 단...
Code Coverage > 소프트웨어 테스트에서 테스트코드가 실제 애플리케이션 코드를 얼마나 실행했는지를 측정하는 지표 테스트가 전체 코드 중 어느 정도를 검사했는지 확인하는 방법! 코드 커버리지의 중요성 테스트 품질 측정: 코드의 어느 부분이 테스트되지 않았는지 확인할 수 있음 버그 예방: 테스트되지 않은 부분을 찾아 추가 테스트 작성 가능 코드 안...
의존성 주입(Dependency Injection, DI) > 객체가 직접 의존하는 객체를 생성하는 것이 아니라 외부에서 주입받는 방식 객체 간의 결합도를 낮추고, 유연한 코드 구조를 만들기 위해 사용하는 설계 패턴 의존성 어떤 객체가 다른 객체를 필요로 하는 관계 ex) Car는 Engine 객체를 직접 생성(new Engine()) 하고 있음(직접...
이름이 비슷하지만 완전 다른 것들 CORS는 웹 보안 정책이고 CQRS는 백엔드 아키텍처 패턴이다. CORS(Cross-Origin Resource Sharing) > 다른 출처 간의 요청을 허용할지 말지를 서버가 제어하는 보안 매커니즘. 다른 출처란? 프로토콜, 도메인, 포트 번호 중 하나라도 다르면 다른 출처(origin)으로 간주된다! 예를 들...
함수형 프로그래밍(Functional Programming) > 함수를 일급 객체로 다루고, 상태 변경 없이(불변성), 순수 함수들을 조합해 프로그램을 만드는 프로그래밍 패러다임 순수 함수와 불변성을 기반으로 부작용 없는 함수들을 조합해 프로그램을 만드는 방식 기존에는 "어떻게 할 지(How)" 하나하나 명령을 작성했다면, 함수형은 "무엇을 할 지(Wha...
왜 필요한가? MSA 환경에서는 여러 서비스가 각자 독립적으로 동작함 동시에 같은 데이터에 접근하거나, 수정하려는 시도가 발생할 수 있음 Lock을 이용해서 한번에 한 서비스만 데이터 관련 작업을 할 수 있게 방지해야 함 분산 락 (Distributed Lock) 여러 서버 또는 인스턴스가 동시에 같은 자원에 접근하지 않도록 막는 방법 MSA에서는 여...
Transaction > DB 작업을 하나의 단위로 묶어 성공하면 commit, 실패하면 rollback하는 기능 Spring Transaction은 AOP 기반이다 -> 메서드 실행 전/후에 트랜젝션 관련 처리를 자동으로 끼워 넣음 AOP (Aspect-Oriented Programming) > 관점 지향 프로그래밍 코드의 공통 관심사를 분리해서 핵심...
CPU Scheduling > CPU가 어떤 프로세스를 언제 실행할지를 결정하는 과정 여러 프로세스가 CPU를 효율적으로 사용할 수 있도록 순서를 정하는 작업 CPU는 한 번에 하나의 프로세스만 처리할 수 있으므로, 여러 프로세스가 있을 경우 어떤 프로세스를 먼저 실행할지를 결정해야 함 목적 제한된 CPU 자원을 공정하고 효율적으로 분배하여 빠르게 처...
URI (Uniform Resource Identifier) > 자원의 위치 또는 이름을 식별할 수 있는 통합 식별자. URL과 URN을 포함하는 상위 개념이다. URI = URL + URN URI는 어떤 자원을 고유하게 식별하기 위한 문자열 그 방법으로 위치를 알려주면 URL 이름만 알려주면 URN URL (Uniform Resource Locato...
Gradle >자동 빌드 도구. 개발자가 작성한 소스코드를 컴파일, 테스트, 패키징, 배포할 수 있도록 자동화해준다 특징 Groovy(or kotlin) 기반의 유연한 DSL(Domain Specific Language) 의존성 관리, 멀티 프로젝트 지원 성능이 빠르고 캐시를 잘 활용함 Java/Kotlin/Spring, Android 등 다양한 환경에...
Lock > 여러 작업(스레드, 프로세스 등)이 동시에 공유자원에 접근할 때, 한 번에 하나만 접근할 수 있도록 제어하는 매커니즘 Lock의 목적 데이터 무결성 보호 Race Condition(경쟁 상태) 방지 동시성 문제 해결 Lock이 필요한 이유 멀티스레스 환경에서는 여러 스레드가 동시에 같은 데이터를 조작할 수 있다. 이 때 순서에 따라 결과...
ID 기초 개념 DID(Decentralized Identifier, 분산 ID) 탈중앙화된 신원 정보 자기 주권 신원(SSI, Self-Sovereign Identify) DPKI (분산 PKI) 기반, DID로 엔티티 식별, 증명으로 인식 가능 DID Document = did + public key VC(Verifiable Claim, Verif...
Spring Boot에서 Open DID 기반으로 회원가입/로그인을 구현하기 위해서는 ID/PW 방식이 아닌 DID + Verifiable Credential(VC) 기반의 인증 흐름을 따라야 함 기본 개념 DID: 사용자의 탈중앙 식별자(예: did:ethr:0x1234...) VC: 사용자의 신원을 증명하는 디지털 자격 증명 eWallet: 사용자가...
Feign Client vs Messaging system | 항목 | Feign Client (HTTP) | Kafka / RabbitMQ (Messaging) | | ----- | ------------------- | ---------------------------- | | 통신 방식 | 동기 (Synchronous) | 비동기 (Asy...
Kubernetes > 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 운영해주는 컨테이너 오케스트레이션 플랫폼 필요성 컨테이너가 많아지는 경우, Docker 같은 기술로 컨테이너 하나는 쉽게 띄울 수 있지만, 수십, 수백개의 컨테이너를 자동으로 배포하고 관리 트래픽이 많아지면 자동으로 확장(scailing) 장애가 생기면 자...
쿠버네티스 >컨테이너를 실행하는 플랫폼 핵심개념 application manifest 쿠버네티스에 애플리케이션을 배포하고 관리하기 위해 사용하는 설정 파일 보통 YAML 형식으로 작성하고, 쿠버네티스 리소스를 정의함 특징 선언형(Declarative): 원하는 상태를 정의하고, 쿠버네티스가 이를 알아서 유지함 재사용 기능...
DNS(Domain Name Server) > 도메인 네임을 관리하는 서버 계층적이고 분산된 도메인 네임에 대한 관리 체계이자 이를 관리하는 프로토콜 domain name: 호스트의 IP 주소와 대응되는 문자열 형태의 호스트 특정 정보 domain name과 IP 주소는 name server에서 관리함 Domain name . 으로 계층적으로 구분됨 ...
HTTP(HyperText Transfer Protocol) > 웹에서 클라이언트(보통 브라우저)와 서버 간에 데이터를 주고받는 프로토콜 비연결성(stateless), 텍스트 기반인 애플리케이션 계층(응용 계층)의 프로토콜 기본 구조 HTTP의 특성 요청-응답 기반 프로토콜 HTTP는 클라이언트-서버 구조 기반의 요청-응답 프로토콜이다 요청, 응답에...
쿠버네티스 교과서를 보고 실습한 내용 Kubernetes 설치 MAC OS 파워셸 설치 brew install --cask powershell rancherdesktop 설치 https://rancherdesktop.io/에서 다운로드, 마운트, 애플리케이션에 추가 Docker Desktop 설치 https://www.docker.com/prod...
Http header > 웹 클라이언트와 서버 간의 통신에서 부가적인 정보를 주고받기 위한 핵심 요소 HTTP message의 body를 해석하고 처리하는 데 필요한 지침, 메타데이터, 인증 정보, 캐시 제어 등이 포함됨 HTTP header body의 의미를 설명하고, 요청/응답을 조정하는 정보 집합. HTTP msaage의 구조 HTTP header...

Kafka > 실시간 데이터 스트리밍을 위한 분산 메시지 브로커 분산 스트리밍 플랫폼. 로기 기반 메시지 저장 및 처리. 실시간 데이터 파이프라인 구축에 최적화 발행/구독(Pub/Sub) 방식 실시간 로그 수집, 이벤트 처리, 모니터링 등에 적합 LinkedIn에서 개발되어 오픈소스로 제공됨 핵심 개념 | 개념 | 설명 ...
Kubernetes에서 외부와 통신하는 방법 Kubernetes 클러스터 내부에는 많은 서비스가 있지만 기본적으로는 밖에서 접근할 수 없다. 외부에서 접근하기 위한 방법은 크게 세가지가 있다 | 방식 | 설명 | 예시 | | -------...
CQRS (Command Query Responsibility Segregation) > 명령과 조회 책임 분리 전통적인 CRUD 기반 애플리케이션에서는 같은 모델로 데이터를 읽기(Query)도 하고, 쓰기(Command)도 수행한다. CQRS는 이 두가지를 명확히 분리하는 아키텍처 패턴. when? 복잡한 도메인에서 유용함 읽기와 쓰기 성격이 완전...

Nginx Ingress > Kubernetes 클러스터 내에서 외부 트래픽을 내부 서비스로 라우팅해주는 Ingress Controller Ingress >Kubernetes 리소스 중 하나로, 외부 HTTP/HTTPS 요청을 클러스터 내부 서비스로 전달하는 규칙을 정의함 /api로 들어오는 요청을 api-service로, /web 요청을 web-ser...
StringBuffer > Java에서 가변(mutable) 문자열을 다루기 위해서 사용되는 클래스 String 클래스는 불변(immutable)이기 때문에 문자열을 수정할 때마다 새로운 객체가 생성되는데, 이런 비효율을 줄이기 위해 StringBuffer나 StringBuilder를 사용한다. 패키지: java.lang 가변성: 문자열 직접 수정 가능...
블록체인 > 데이터를 블록 단위로 묶어서 체인처럼 연결한 분산형 데이터베이스 모두가 공유하는 장부 핵심 개념 Block 거래나 기록을 담은 데이터 묶음 하나의 블록에는 다음과 같은 정보가 포함되어 있음 트랜젝션 정보 이전 블록 해시값 자기 해시값 시간 정보 등 Chain 각...
블록체인 네트워크 > 블록체인 기술을 구현하고 운용하는 노드(node)들의 연결 구조 블록체인은 중앙 서버가 없는 분산 네트워크로 작동하며, 모든 노드는 데이터를 공유하고 합의에 참여함 기본 구조 노드 블록체인 네트워크에 참여하는 컴퓨터 역할에 따라 종류가 나뉜다 Full Node : 전체 블록체인 데이터를 보유, 트랜젝션 검증 및 블록 저장 ...
스마트 컨트랙트 > 코드로 작성된 자동화된 계약. 특정 조건 만족 시 사람의 개입 없이 자동으로 실행됨. 특징 자동 실행 : 조건 충족시 즉시 실행 변경 불가 : 블록체인에 올라가면 수정 불가능 -> 신뢰성 확보 중앙기관 불필요 : 제 3자 없이도 계약 가능 투명성 : 누구나 내용을 열람 가능(퍼블릭 블록체인의 경우) 동작 흐름 A -> B 에게 1...
Solidity > 스마트 컨트랙트를 작성하기 위한 고수준 객체 지향 프로그래밍 언어 이더리움 뿐 아니라 BNB Chain, Polygone, Avalanche 등 EVM 기반 블록체인에서 사용됨 Solidity의 기본 구조 pragma : 컴파일러 버전 명시(^0.8.0은 0.8 이상) contract : 스마트 컨트랙트 선언 unit : 부호 없는 ...

환경 세팅 설치 https://nodejs.org/ko/download 에서 node.js를 설치했다. 설치 후 버전 확인 초기화 폴더 내에 package.json 생성됨 hardhat 설치 으로, 정적 타입(static type)을 지원하는 언어 JavaScript 코드에 타입 시스템과 클래스 기반 객체지향 프로그래밍(OOP) 기능을 추가한 언어. Microsoft에서 개발 .ts 확장자 사용 JavaScript로 컴파일되어 실행됨 왜 사용할까? | JavaScript...
NestJS > TypeScript 기반 백엔드 프레임워크 모듈화, 의존성주입, 데코레이터 기반 아키텍처를 제공하여 대규모 애플리케이션을 설계하기 유지보수하기 쉽게 해줌 특징 TypeScript 기반 모듈화 구조 의존성 주입 Express or Fastfy 기반 핵심 개념 Module NestJS의 기본 구성 단위 관련 기능들을 하나의 모듈로 묶음 ...
Express > Node.js 환경에서 동작하는 대표적인 웹 애플리케이션 프레임워크 HTTP 요청, 응답을 편하게 처리하고 서버를 빠르게 만들 수 있게 돕는 도구 특징 간결, 유연함: 최소한의 구조만 제공 미들웨어 기반 구조: 요청, 응답 사이 다양한 기능 추가 가능(로그, 인증, 에러처리 등) 라우팅 기능: URL과 HTTP 메서드에 따라 처리 로직...
npm > Node Pacakage Manager JavasScript 기반의 패키지 매니저 패키지 매니저: 프로젝트에 필요한 의존성 패키지를 관리하는 프로그램 의존성 패키지: 해당 프로젝트를 실행하는 데 꼭 필요한 라이브러리와 모듈 주요 기능 오픈소스 패키지 설치 타 개발자들이 만들어 둔 자바스크립트 라이브러리나 도구 설치 ex) npm insa...
Microprocessor > CPU의 기능을 하나의 집적회로 칩 안에 구현한 하드웨어 제어장치 + 연산장치 + 레지스터 CPU 기능을 LSI(대규모 집적회로)에 탑재한 장치 클럭 주파수와 내부 버스 폭으로 성능 평가 PC 내의 중앙 처리 장치 CPU 명령어 처리 및 구성 방식에 따라 RISC, CISC, EISC로 구분함 RISC Reduced I...
OLTP (Online Transaction Processing) > 실시간 트랜젝션 처리 시스템 은행 입출금, 회원가입 등과 같이 실시간으로 다수의 사용자가 동시에 데이터를 읽고 쓰는 업무 처리용 시스템 특징 |항목|설명| |-|-| |목적|빠른 트랜젝션 처리 및 데이터 일관성 유지| |작업 형태|INSERT, UPDATE, DELETE 중심(쓰기 작...