전체 글

Gyoogle (규글)
[Spring Boot] SpringApplication
·스프링(Spring)
스프링 부트로 프로젝트를 실행할 때 Application 클래스를 만든다. 클래스명은 개발자가 프로젝트에 맞게 설정할 수 있지만, 큰 틀은 아래와 같다. @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } @SpringBootApplication 어노테이션을 통해 스프링 Bean을 읽어와 자동으로 생성해준다. 이 어노테이션이 있는 파일 위치부터 설정들을 읽어가므로, 반드시 프로젝트의 최상단에 만들어야 한다. SpringApplication.run()으로 해당 클래스를 run하면, 내장 WAS를 실행한다...
Blocking/Non-blocking & Synchronous/Asynchronous
·CS/네트워크
Blocking/Non-blocking & Synchronous/Asynchronous 동기/비동기는 우리가 일상 생활에서 많이 들을 수 있는 말이다. Blocking과 Synchronous, 그리고 Non-blocking과 Asysnchronous를 서로 같은 개념이라고 착각하기 쉽다. 각자 어떤 의미를 가지는지 간단하게 살펴보자 homoefficio님 블로그에 나온 2대2 매트릭스로 잘 정리된 사진이다. 이 사진만 보고 모두 이해가 된다면, 차이점에 대해 잘 알고 있는 것이다. Blocking/Non-blocking 블럭/논블럭은 간단히 말해서 호출된 함수가 호출한 함수에게 제어권을 건네주는 유무의 차이라고 볼 수 있다. 함수 A, B가 있고, A 안에서 B를 호출했다고 가정해보자. 이때 호출한 함수..
[Spring] MVC Framework
·스프링(Spring)
Spring MVC Framework 스프링 MVC 프레임워크가 동작하는 원리를 이해하고 있어야 한다 클라이언트가 서버에게 url을 통해 요청할 때 일어나는 스프링 프레임워크의 동작을 그림으로 표현한 것이다. MVC 진행 과정 클라이언트가 url을 요청하면, 웹 브라우저에서 스프링으로 request가 보내진다. Dispatcher Servlet이 request를 받으면, Handler Mapping을 통해 해당 url을 담당하는 Controller를 탐색 후 찾아낸다. 찾아낸 Controller로 request를 보내주고, 보내주기 위해 필요한 Model을 구성한다. Model에서는 페이지 처리에 필요한 정보들을 Database에 접근하여 쿼리문을 통해 가져온다. 데이터를 통해 얻은 Model 정보를 C..
[Java] 직렬화(Serialization)
·Java
[Java] 직렬화(Serialization) 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 기술 각자 PC의 OS마다 서로 다른 가상 메모리 주소 공간을 갖기 때문에, Reference Type의 데이터들은 인스턴스를 전달 할 수 없다. 따라서, 이런 문제를 해결하기 위해선 주소값이 아닌 Byte 형태로 직렬화된 객체 데이터를 전달해야 한다. 직렬화된 데이터들은 모두 Primitive Type(기본형)이 되고, 이는 파일 저장이나 네트워크 전송 시 파싱이 가능한 유의미한 데이터가 된다. 따라서, 전송 및 저장이 가능한 데이터로 만들어주는 것이 바로 '직렬화(Serialization)'이라고 말할 수 있다. 직렬화 조..
Jmeter를 활용한 서버 부하 테스트
·정보
Jmeter는 Apache에서 재공하는 웹사이트 성능 측정을 할 수 있는 오픈소스 라이브러리다. [다운로드 링크] Apache JMeter - Download Apache JMeter Download Apache JMeter We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directories. Recent releases (48 hours) may not yet be ava jmeter.apache.org 만약 자바가 설치되어 있지 않다면, ..
[스프링 부트] windows & linux에서 파일 절대 경로 맞추기
·스프링(Spring)
로컬 pc로 스프링 부트 프로젝트를 작업하다가, aws ec2로 배포하게 되면 운영중인 rds나 데이터베이스에 대한 세부정보를 외부로부터 숨겨야한다. (비밀번호 등등) 다양한 방법이 있겠지만, 나는 내 로컬 pc와 linux의 절대 경로를 활용했다. 나는 rds와 mariadb 정보가 담겨있는 yml 파일을 따로 로컬과 linux app 폴더에 저장한 뒤, 스프링 부트의 application.java에서 조건문으로 나눠줬다. 자바에서는 'os.name'에 대한 프로퍼티를 시스템에서 얻으면 내가 어떤 운영체제를 활용하고 있는지 값을 받아올 수 있다. String os = System.getProperty("os.name").toLowerCase(); 만약 로컬(윈도우)라면 os에는 "win"이 저장된다. ..
[Git] default 브랜치는 master에서 main으로 변경되었음
·정보
현재 많은 Git 명령어 정보들이 'master' 브랜치를 이용하고 있다. 하지만 최근 프로젝트 생성 시 기본 브랜치가 'main'으로 변경되면서 혼동되는 경우들이 존재한다. "There isn't anything to compare. Nothing to compare, branches are entirely different commit histories" master로 push를 하면 커밋 결과가 제대로 적용되지 않고, main 브랜치와 Compare하는 창이 나온다. 기본 default 브랜치가 main이기 때문에, master로 push를 해도 아직 적용 단계가 안되었기 때문이다. 현재 많은 튜토리얼 들이 master 브랜치가 default인 기준으로 작성되어서 제대로 push가 되지 않는 상황이..
Spring Boot 동작 환경
·스프링(Spring)
1. 웹 브라우저에서 url(localhost:8080/hello)을 보낸다. 2. url을 받은 내장 톰켓 서버는 맵핑되는 컨트롤러에게 넘겨준다 (→ helloController) 3. 맵핑된 컨트롤러에서 model에 데이터를 담아 return해준다. 4. 컨트롤러가 return으로 반환해주는 model을 viewResolver가 템플릿을 찾아서 뿌려준다. 5. 변환된 html을 다시 웹 브라우저에게 제공해준다. 출처 : 링크 [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확..
[Algorithm] 카페 주문처리 시스템
·Algorithm
손님이 주문한 음료를 우선순위에 맞춰서 저장하여 처리하는 문제 (보안상 링크 및 자세한 설명 생략) 커피 종류는 최대 50개, 서로 다른 난이도를 가짐 하루에 최대 10,000명 손님이 한 명당 최대 10개 주문 가능 (커피 종류 중복 가능) 손님 번호는 1 ~ 100,000 커피 별로 주문 처리 시 우선순위 : 손님 주문 中 가장 높은 난이도 + 주문시각 오름차순 (같으면 주문 시각 오름차순) 주문 최대 호출 1만, 커피 만듬 호출 10만, 취소 호출 1만, 수량 체크 1만 함수 void init( ... ) : 음료 난이도 초기화 void order( ... ) : 손님이 주문한 음료 전송 (시간 포함) int supply(int kind) : kind 음료에서 가장 우선순위 높은 것 제조 (해당 손..
[Git] Logon failed, use ctrl+c to cancel basic credential prompt
·정보
git으로 push를 할 때 다음과 같은 문구가 뜨면서 로그인을 하라고 창이 뜬다. 어떤 문제인지 찾아보니, Git의 최신 업데이트가 있어서 발생한 이슈였다. bash 창에 `git update-git-for-windows`를 입력하고, 새로운 버전으로 업데이트를 시키면 해결이 가능하다.
Gyoogle
Gyoogle (규글)