분류 전체보기 338

JDK와 JRE

jdk 8을 설치했더니 jdk-1.8과 jre-1.8이라는 폴더가 생겼다. 우선 왜 java 8을 jdk-1.8이라고 하는가?- java 8의 공식적인 이름은 JAVA SE 8- 1.8.0은 개발자들을 위한 버전명- 메이저 major 버전 변경이 된다는 것은 상당한 변화를 의미하는데 자바에서의 이런 변화는 그리 크지 않음--> 개발자 입장에서는 1.8, 1.9 이런 식으로 명명 jre란?- JRE( Java Runtime Environment )는 자바 가상 머신( Java Virtual Machine ), 자바 클래스 라이브러리( Java class library ), 자바 명령( Java command ) 및 기타 인프라를 포함한 컴파일된 Java 프로그램을 실행하는데 필요한 패키지- 일반적으로 컴퓨..

이해 2024.05.04

20240504_개인프로젝트_구상

아카데미를 졸업하고 처음으로 개인프로젝트를 시작해본다. 일단 목표는 기존에 안 써봤지만 각종 기업 요구사항에 많은 기술스택을 사용해보는것 DB: mySQL 또는 PostgreSQLBack: MSA + Spring Boot  + JPAFront: React + TypeScript개발환경: JDK 17 + IntelliJ + Gradle비고: 최대한 클린코드로 제작 + 테스트 코드 작성 + nGrinder + 프로메테우스 DB: Oracle SQL을 썼는데 현재 DB 점유율 상 mySQL이나 PostgreSQL도 배우는 것이 필요해보인다.Back: 기존 팀프로젝트가 모놀리틱 아키텍처였고, 문제도 많았다(특히 하나 에러나면 전체 마비되는 것)           현업에서 MSA가 많이 사용되고 있기 때문에 미리..

모듈이란?

조만간 MSA를 구현한 프로젝트를 만들 예정이다. 어떻게 해야 되는지 알아보던 도중 '모듈'이란 단어가 나와 찾아보았다. 모듈- 코드를 더 쉽게 구조화하고 관리할 수 있게 해주는 것- 프로젝트의 각각의 기능이나 부분- 독립적으로 배포될 수 있는 코드의 단위 모듈의 장점- 전체 프로젝트를 이해하고 관리하기 쉬움- 각각의 부분을 독립적으로 개발하고 테스트할 수 있음- 필요에 따라 유연하게 조합하여 전체 시스템을 만들 수 있음 패키지와의 차이- 패키지: 클래스와 인터페이스를 그룹화하는 단위- 모듈: 패키지를 그룹화하는 단위            모듈 디스크립터 파일(module-info.java)에 의해 정의            다른 모듈에 대한 의존성을 명시적으로 선언하여 모듈 간의 의존성을 명확하게 관리 멀..

이해 2024.05.04

클린 코드

여기저기서 클린코드에 대한 글을 보다가 정리한 걸 포스팅  클린코드란?- 쉬워서 읽었을 때 이해하기 쉬운 코드--> 누가 봐도 이해가 잘 되는 코드! 왜 클린코드?- 코드를 봤을 때 무슨 일을 하는지 파악하기 쉽다--> 리뷰가 빨라진다==> 디버깅이 빨라진다 어떻게 해야 클린코드?--> 규칙을 정하기 1. 함수 이름은 동사 / 클래스나 속성 이름은 명사- 함수는 특정한 동작을 수행하니까 동사- 클래스나 속성은 동작을 명칭이니까 명사 2. 변수는 누가 봐도 확실히 이해할 수 있도록 짓기- 계좌를 나타내는 변수명: account(O) / acc(X)--> 변수가 무엇을 뜻하는지 빠르게 파악하기 위함 3. camelCase(카멜 표기법)을 사용하기- testcase보다는 testCase가 test와 Case를..

이해 2024.04.30

간단한 IT 용어 정리(프로토콜/HTTP/아키텍처/REST)

프로토콜-      컴퓨터나 네트워크 장치 사이에서 통신을 원활하게 하기 위해 사용되는 규칙의 집합-      데이터가 어떻게 전송되고, 수신되며, 해석되는지를 정의 HTTP-      인터넷에서 데이터를 주고받는 데 사용되는 표준 프로토콜ex) 웹 브라우저에서 웹페이지를 요청하면, 해당 요청은 HTTP 프로토콜을 사용하여 웹 서버에 전송되고, 서버는 요청된 웹페이지를 HTTP를 통해 다시 클라이언트에게 보냄 아키텍처-      시스템이나 소프트웨어의 구조나 구성을 설계하고 정의하는 것-      시스템이나 소프트웨어가 어떻게 동작하고 상호작용하는지에 대한 체계적인 계획이 포함-       Rest(데이터를 주고 받는 방법)-      클라이언트 서버의 통신방식-      웹 서비스 사이에서 정보를 주..

이해 2024.04.30

Maven 프로젝트를 Gradle로 전환하기

nGrinder를 사용하기 위해 프로젝트를 Gradle로 바꾸어야 한다.언젠가 Gradle을 써볼 생각이었으니 일단 시작Intellij로 진행했기 때문에 Eclipse에서는 어떻게 되는지 잘 모릅니다...이하는 일단 Gradle과 Maven의 차이다.더보기1. 유연성# Gradle과 Maven 모두 설정파일 작성을 통해 규칙을 정합니다. 메이븐이 굉장히 엄격한 모델을 제공함으로서 커스터마이징이 굉장히 지루하고 때로는 불가능한 것 과는 대조적으로 Gradle은 책임감있고 권한있는 사용자를 전제로 빌드되어 훨씬 유연합니다. 2. 속도# 빌드 타임을 줄이는건 생산성을 향상시키는 가장 직관적인 방법 중 하나 입니다. Gradle과 Maven 모두 병렬 처리를 지원하지만 가장 큰 차이는 Gradle의 작업 회피 ..

기술면접을 위한 스프링과 스프링부트 이해

스프링 프레임워크- 자바 기반 애플리케이션 프레임워크- 엔터프라이즈급 애플리케이션을 개발하기 위한 다양한 기능 제공- 전자정부 표준 프레임워크의 기반 기술로 채택되어 공공기관 웹 서비스를 개발할 때도 사용 스프링 특징1. Ioc(제어 역전)(Invertion of control)- 일반적인 자바: 사용하려는 객체 선언                     해당 객체의 의존성 생성                     객체에서 제공하는 기능 사용                     --> 객체를 생성하고 사용하는 일련의 작업을 개발자가 직접 제어- 스프링:           사용하려는 객체를 직접 생성 X(객체의 생명주기 관리를 외부에 위임)                     --> 스프링 컨테이너(IoC ..

이해 2024.04.26

nGrider 사용

https://github.com/naver/ngrinder/releases  Releases · naver/ngrinderenterprise level performance testing solution. Contribute to naver/ngrinder development by creating an account on GitHub.github.com https://notspoon.tistory.com/48 nGrinder 성능테스트 사용법 및 테스트 예제1. nGrinder nGrinder는 네이버에서 제공하는 서버 부하 테스트 오픈 소스 프로젝트이다. 애플리케이션을 개발하고 nGrinder에서 여러가지 가상 시나리오를 만들어 트래픽에 몰렸을 때 성능을 측정할notspoon.tistory.comh..

Spring Security의 동작 원리 + JWT + Oauth2까지

1. 클라이언트가 어플리케이션에 요청(JSP에서 로그인) 1.1 AJAX를 통해 1차 검증 - ajax 컨트롤러 확인 1.2 서블릿필터에 의해 시큐리티필터로 시큐리티 작업이 위임 - mainLogin에서 login post로 요청 1.2.1 여러 시큐리티 필터 중에서 UsernamePasswordAuthenticationFilter에서 인증을 처리 1.2.2 로그인필터가 UsernamePasswordAuthenticationFilter를 상속 받아 사용 -> 로그인필터에서 처리 2. UsernamePasswordAuthenticationFilter(이하 로그인필터)의 attemptAuthentication에서 username과 password를 추출하여 UsernamePasswordAuthenticati..

이해 2024.04.19