일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 캐싱
- 캐시
- string
- 객체지향
- 책임
- 자바
- cache
- 도메인 모델
- 인터프리터
- 캡슐화
- Refactor
- clean code
- 쿼리 최적화
- 객체지향의 사실과 오해
- 클린코드
- 클린 코드
- REST API
- 협력
- 리팩토링
- spring boot
- JIT
- 재사용성
- 스프링부트
- Java
- JPA
- SRP
- Lombok
- 추상화
- 스프링
- 객체
- Today
- Total
목록Develop (54)
GO SIWOO!

📌JVM이란 무엇인가? 기존의 프로그래밍 언어에서는 크로스 컴파일을 통해 컴파일러가 실행되는 플랫폼이 아닌 다른 플랫폼에서 실행 가능한 코드를 생성할 수 있어야 했다. 예로 윈도우에서 컴파일 한 실행파일을 리눅스에서 실행하면 실행이 되지 않고 크로스 컴파일을 해주어야 했다. Java는 JVM으로 위의 문제를 해결했다. JVM은 Java Virtual Machine을 줄인 것으로 직역하면 '자바를 실행하기 위한 가상 머신 기계(컴퓨터)'이다. JVM을 통해서 Java 언어로 작성한 프로그램은 OS에 종속되지 않고 실행이 가능해졌다. 📌Java 컴파일 순서 1. 자바 소스코드(.java) 작성 2. 자바 컴파일러(javac.exe)가 자바 소스코드(.java)를 바이트 코드(.class)로 컴파일 3. 바이..

자바에서 변수는 기본적으로 기본형 변수와 참조형 변수 2종류가 존재한다. 📌기본형 변수 (Primitive Variable) 실제 값(데이터)을 담을 수 있는 변수의 타입이다. 자바에서 제공하는 기본형 변수는 8가지로 논리형, 문자형, 정수형, 실수형으로 구분되며 boolean, char, byte, short, int, long, float, double가 있다. 특징으로는 산술 연산 가능, null로 초기화가 불가하다. 📌참조형 변수 (Reference Variable) 기본형 변수를 제외한 모든 변수로 String, System과 같은 것이 있다. 참조형 변수에는 값을 저장하지 않고 객체의 주소값을 저장한다. 📌기본형 변수와 참조형 변수의 메모리 저장 위치 기본형 변수와 참조형 변수 모두 stack..

📌함수형 인터페이스(Functional Interface) 함수형 인터페이스란 단 하나의 추상 메서드를 가진 인터페이스 이다. Java 8에서 추가된 람다 표현식을 사용하기 위해서는 기존의 여러 개의 메서드를 가진 인터페이스를 사용할 수 없다. 람다 표현식은 단축된 표현식을 통해서 하나의 메서드만을 정의할 수 있기 때문이다. 이에 따라서 람다 표현식을 쓸 수 있는 인터페이스는 오직 public 메서드 하나만 가지고 있는 인터페이스여야 하며, Java 8에서는 이러한 인터페이스를 함수형 인터페이스라고 부른다. default 메서드, private 메서드, static 메서드는 얼마나 있던 상관이 없다. 오직 단 하나의 추상 메서드만을 가지고 있어야 함수형 인터페이스 이다. @FunctionalInterfa..

📌람다 표현식(Lambda Expression)의 추가 Java 8에서 람다 표현식이 추가 됨으로써 함수형 인터페이스, 메서드 참조가 등장할 수 있었고, 이를 바탕으로 스트림 API가 탄생, 컬렉션 기반의 기술을 편리하고 빠르게 처리가 가능하게 되었다. 계속 비대해지는 자바 기반의 프로그램은 프레임워크와 라이브러리의 추가로 인터페이스 기반의 개발을 하게 되었고 이로인해 익명 클래스를 사용하며 코드의 중복이 매우 심하다는 문제가 생겼다. 추가로 익명 클래스도 하나의 클래스이기 때문에 실제로 컴파일하면 클래스 파일이 별도로 생성되므로 추후 배포, 업데이트에 계속 따라다니는 문제이다. 이러한 문제를 때문에 Java 8부터 람다 표현식이 포함 되었다. 📌람다 표현식으로의 변환과 사용 익명 클래스를 람다 표현식으..

📌JavaDoc을 공부하게 된 계기 우아한테크코스 프리코스를 진행하던 도중 메서드의 역할을 알기 쉬운 코드, 유지보수가 가능한 코드를 목표로 하기 위해서 어떤 식으로 코드를 작성해야 할까 고민하던 중 문서화가 가능하다면 목표를 달성할 수 있을 거라 생각해 JavaDoc을 공부하게 되었다. 📌JavaDoc이란? Java 소스코드에서 HTML 형식으로 API 문서를 생성하기 위해 SunMicrosystems(현 오라클)에서만든 문서 생성기이다. 코드의 문서화를 위한 주석으로 프로젝트에 대한 이해와 레거시 코드를 살펴볼 때 JavaDoc이 작성되었다면 혼란과 비용을 줄일 수 있다. /** * 구현체 주석 * 여러줄 작성 가능 * * @Annotation 어노테이션1 * @Annotation 어노테이션2 */ ..

📌Richardson Maturity Model이란? 백엔드 서버 API를 설계할 때에 설계한 API가 'RESTful' 하다고 판단하는 방법은 'Richardson Maturity Model (RMM)', 성숙도 모델을 바탕으로 판단한다. RMM은 REST API를 개발할때 확인해야 할 REST 요소 3가지를 나타내는 것이다. 이 요소들은 Resource, HTTP Method, Hypermedia Controls 으로 아래의 그림과 같다. 📌레벨 0 : POX의 늪 모델의 가장 낮은 수준으로 RESTful 하다고 할 수 없는데 기존의 리소스를 웹 서비스 형태로 제공해서 단순히 URI만 매핑한 상태입니다. http://service/getUser (POST) http://service/deleteUse..

📌API란 무엇인가? API는 Application Programming Interface의 약자로, API는 컴퓨터나 컴퓨터 프로그램 사이의 연결로 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스를 제공합니다. 우리가 익히 알고 있는 소프트웨어 인터페이스는 UI(사용자 인터페이스)로 윈도우에서 이용하는 U는 GUI(Graphical User Interface), 코드로만 이루어진 CLI(Command LineInterface)등이 있다. 이 UI를 통해서 사용자와 시스템간의 인터페이스를 정의합니다. 그리고 우리가 알고자 하는 API는 시스템과 시스템간의 인터페이스를 정의한 것으로 시스템간의 데이터를 주고 받기 위한 방법과 그 규격을 뜻하는 것으로 기능을 어떻게 구현하는지 몰라도 프로그래..

📌에러 웹 프로젝트를 하는중 한글 단어의 뜻을 받기위해 한국어 기초사전 OpenAPI를 사용하여 개발을 하였는데 한동안 잘 사용을 하다 다음과 같은 에러 문구가 뜨고 Postman을 사용해 프론트엔드 서버로 리턴하는 값을 살펴보니 아무 값도 리턴하고 있지 않았다. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 당장 프로젝트를 진행시키는데 있어서 어떻게든 기능이라도 구현을 해야했다. 에러의 이류를 찾아보니 SSL 인증서의 문제라고 한다 HTTPS 통신에서 사용하는 SSL은 웹 서버에 설치된 인..

📌에러 웹 프로젝트 팀에서 진행하고 있는 웹 프로그램 기능을 복기 하고자 들어갔는데 갑자기 스프링 프로젝트가 실행이 안되고 에러가 떴다... Exception in thread 'main' java.lang.NoClassFoundError ... 이번달 초까지만 해도 잘 실행되고 있었는데... 메인 메소드가 선언된 클래스도 SpringbootApplication어노테이션을 읽지 못한다, import도 안되는중... 'NoClassFoundError', 갑자기 클래스를 못찾겠단다. 찾아보니 컴파일 시점에 존재했던 클래스가 런타임에 찾을 수 없으면 발생한다고 한다. 이유를 생각해보니 얼마전에 윈도우 사용자 폴더가 한글이라 쿠버네티스 환경 구축하는데 어려움을 겪어 영어로 바꿔었는데 이로인해 빌드한 파일과 환경..

📌 단순 선택 정렬이란 무엇인가? 단순 선택 정렬은 가장 작은 요소부터 선택해 알맞은 위치로 옮겨 순서대로 정렬하는 알고리즘이다. 위의 배열을 보면 [3]의 요소가 1로 배열의 가장 작은 요소 이므로 이를 [0]의 8과 교환을 하게 되면 가장 적은 수가 배열의 가장 앞으로 오는 것을 볼 수 있다. 그 후 두 번째로 작은 수인 [5]의 3을 [1]과 교환을 한다. 이처럼 배열에서 가장 적은 수를 찾아서 배열의 맨 앞으로 바꿔주는 것을 최대 요소수(n) - 1번만큼 반복한다면 배열을 오름차순으로 정렬을 할 수 있다. 단순 선택 정렬의 순서를 정리하자면 다음과 같다. 주어진 리스트 중에 최솟값(a[min])을 찾는다. 그 값(a[min])을 아직 정렬하지 않은 부분의 첫 번째 요소를 교환한다. 이미 정렬된 위..