[WebFlux] 동기와 비동기, Blocking과 Non-blocking
·
webFlux
웹플럭스를 공부하면서 [WebFlux] 카테고리에 학습내용을 정리 할 예정입니다.그 중에 첫 번째로 동기와 비동기, 그리고 blocking 과 non-blocking 에 대해서 정리해보고자 합니다.  🪴   동기와 비동기 먼저, 동기와 비동기에 대해서 정리해보겠습니다.호출하는 함수와 호출 당하는 함수에 대해서 많이 언급을 할 예정입니다. 이것을 각각 Caller(호출하는 함수) 와 Callee(호출 당하는 함수) 로 부르겠습니다.  아래 두 모델을 확인해보겠습니다. A 모델 >@Slf4jpublic class A { public static void main(String[] args) { log.info("Start main"); var result = getResult(..
[JOOQ] 프로젝트에 jooq 설정하기
·
ORM & DSL/JOOQ
nosql 에 절여졌던 제가 postgre 를 사용하면서 Jooq 를 만나게 되었습니다.이번 포스팅에서는 Jooq 설정 방법에 대해 이야기를 하고,다음 포스팅부터는 Jooq 를 이용하여 간단한 쿼리를 작성하는 방법 등을 다루며 jooq 와 친해져보도록 하겠습니다. 1️⃣  jooq 랑 살짝 친해지기 🪴 jooq 가 뭔가요이번 포스팅에서는 jooq 설정을 주로 다룰 예정입니다.따라서 jooq 에 대해서는 아주 간단하게만 언급하려고 합니다. jooq 는 Java Object Oriented Querying 의 약자로,Java에서 SQL을 객체 지향적으로 다룰 수 있도록 도와주는 라이브러리라는 뜻입니다. JPA나 Mybatis와 같은 ORM들과는 다르게 SQL을 직접 사용하지만,자바 코드로 안전하게 다룰 수..
[ CS ] 암복호화랑 친해지기
·
CS
개발을 하다보면 암복호화는 쉽게 만날 수 있는 개념입니다.이번 포스팅에서는 단순히 암복호화의 정의 뿐만 아니라 양방향 암호화의 블록개념까지 다뤄보고자 합니다.  1️⃣  양방향 암호화 vs 단방향 암호화암호화는 크게 양방향과 단방향으로 나눌 수 있습니다.복호화를 할 수 없는 것이 단방향 암호화이고, 복호화가 가능한 것은 양방향 암호화입니다. 암호화를 할 때 AES와 SHA를 많이 접하게 되는데AES 암호화는 양방향 암호화의 구현방법 중 하나이고, SHA는 단방향 암호화의 구현방법 중 하나입니다. 단방향 암호화는 복호화를 할 수 없기 때문에 주로 유저의 비밀번호를 암호화할 때 많이 사용되고,데이터를 외부서버로 전송하여 정보 보호가 필요할 때는 양방향 암호화를 사용합니다. 아래는 양방향 암호화와 단방향 암호..
[프로젝트] 블로그 포스팅 확인해주는 서버
·
프로젝트
블로그 모임을 만들다...  블로그를 주기적으로 작성하고 싶었지만 이직 이후에 여러가지 핑계(?)를 대며 자주 작성하지 못하고 있었습니다.그러다가 저와 비슷한 상황이던 대학교 동기랑 카톡하게 되었습니다.  이게 시작이었습니다.정말정말 다행스럽게도 참여를 희망하는 분들이 꽤 모이게 되었고, (저 친구가 매우 인싸이기에 가능한 일이었던..)저는 그렇게 '블로그 적금' 이라는 블로그 모임을 만들게 되었습니다.    모임 홍보 차 잠시 소개를.... ^^  사실 이 글은 블로그 적금 2기를 홍보하기 위해 작성한 글이기도 합니다...!그래서 아주 잠시 모임 소개를 하자면,,,^^요런 모임입니다.'블로그 적금' 1기는 10회차까지 진행하기로 하였습니다. (블로그 포스팅 주기가 한 회차) 2주에 하나의 글을 포스팅하..
[Mongo] 몽고에서 Criteria 빼고 Qclass 사용하기
·
DB/Mongo
🪴 0. 들어가기 전 MongoDB는 스키마가 없는 비관계형 데이터베이스로, ORM처럼 관계를 매핑하는 방식이 아닙니다.따라서 SQL이 아닌 JSON 기반 쿼리를 사용하며, 이를 객체로 다루기 위해 Criteria를 사용합니다. 그러나 Criteria를 사용했을 때, 필드명을 실수로 잘못 작성하더라도 컴파일 시 에러를 확인할 수 없다는 단점이 있습니다. 이번 포스팅에서는 MongoDB에서 Criteria를 사용하지 않고, Qclass 와 QueryDSL을 적용한 방법에 대해 다뤄보겠습니다.🪴 1. 기존의 Criteria 코드 Criteria 는 JSON 기반의 쿼리를 객체로 작성하기 위해 사용하는 방식입니다. 비교를 위해 먼저 Criteria로 작성된 예제 코드를 보여드리도록 하겠습니다.@Slf4j@..
[Spring] 커스텀 에러 만들기
·
SpringBoot
저는 현재 회사에서 WebFlux 를 활용한 PG 도메인 프로젝트를 진행하며, 커스텀 에러를 사용하고 있습니다.이번 글에서는 WebFlux 뿐만 아니라 MVC 환경에서도 적용 가능한 커스텀 에러 설계 및 사용 방법을 공유하고자 합니다. 중간에 WebFlux 문법이 등장할 수 있지만, 사용된 어노테이션은 MVC 환경에서도 적용 가능하니 참고해 주세요 ☺️🪴 들어가기 전커스텀 에러에 대해 소개하기 전에 이 글에서 다뤄질 에러 종류에 대해 정리하고 가겠습니다.이 글에서 언급하는 에러는 크게 HTTP 통신 에러와 애플리케이션 단계의 에러 두 가지로 나눌 수 있습니다.HTTP 통신 에러는 클라이언트가 직접적으로 받게 되는 에러로, 서버에서 응답한 HTTP 상태 코드와 메시지를 통해 전달됩니다.애플리케이션 단계의..
[Mongo] ObjectId 중복가능성
·
DB/Mongo
MongoDB를 사용하면서 ObjectId 타입을 접하게 되었습니다. 저는 ObejctId에 대해서 MongoDB의 Document를 식별하기 위해 사용되는 12바이트의 식별자라고만 인지하고 있었습니다.그런데 저희 팀의 사수님께서 'ObjectId가 생성될 때 프로세스 ID 값도 사용된다'는 말씀을 해주셨습니다.단순히 랜덤숫자와 생성날짜의 조합이 아닌 프로세스의 ID값이 생성될 때 영향을 미친다?  저는 ObjectId가 생성될 때 영향을 주는 다른 값들도 존재하는지, 그리고 존재한다면 어떤 것들이 있는지 궁금해져 이 글을 작성하게 되었습니다. 1. MongoDB와 BSON 먼저, MongoDB는 BSON을 사용하고 있습니다. 또한  NoSQL 데이터베이스로 문서 기반(Document-Oriented) ..
[Mongo] MongoDB 설치 및 간단한 테스트 진행 (+에러해결)
·
DB/Mongo
1️⃣ MongoDB 설치 및 DB 생성1. MongoDB Homebrew 추가brew tap mongodb/brew 2. brew 업데이트brew update 3. MongoDB 설치 진행brew install mongodb-community@7.0 4. MongoDB 서버 시작 명령어brew services start mongodb/brew/mongodb-community 5. MongoDB 서버 종료 명령어brew services stop mongodb/brew/mongodb-community 6. MongoDB Compass (GUI) 설치설치만 해두고 8 단계에서 DB 생성하겠습니다. https://www.mongodb.com/try/download/compass Try MongoDB Tools..