Java 19

[회고록] Stock-simulation 프로젝트 API 완성도 기록지

이번 회고록 또한 저번 프로젝트 회고록과 마찬가지로 늦은 감이 있다. 이번 회고록의 목적은 학생 신분의 재정상 유지하기가 어려운 서버 비용때문에, 서비스 배포를 유지할 수 없었기에이 프로젝트의 완성도를 기록하고, 회고하는 것이다. 이 회고록의 목적이 기술적 기록이 아닌 프로젝트의 완성도에 대한 기록이니만큼, 코드나 기술적 설명 없이 Api 호출에 대한 캡처 내용으로 구성된다. 로그인, 회원가입과 같은 기본적인 기능을 제외하고 주요 기능이라 판단되는 Api들을 위주로 작성할 예정이다.추가적으로 해당 기능을 개발하며 겪은 고민과 트러블 슈팅등 또한 간략하게 소개해보고자 한다. 프로젝트 소개 해당 Stock-simulation 프로젝트는 프로젝트 이름 그대로 모의 주식 투자 서비스이다.가상의 돈을 사용하여, ..

백엔드 멘토링 2024.12.20

객체지향적 Refactoring 과정의 기록

현재 진행 중인 프로젝트의 객체지향적 리팩터링 과정을 기록해보고자 한다.구체적인 리팩터링 과정에 앞서 리팩터링이란 무엇인지 짧게 설명하자면 Refactoring이란 외부 동작을 바꾸지 않으면서 내부 구조를 개선하는 방법이다. 즉, 결과는 바뀌지 않지만 내부적으로 코드의 구조 혹은 코드의 디자인을 개선시켜서 코드의 가독성과 유연성, 유지보수성등을 향상하는데 목적이 있다. 지금 쓰는 글이 단순히 리팩터링에 대한 글이라고 생각하지는 않았으면 한다.내가 한 리팩터링은 사실 리팩터링보다는 구조 개선에 가까운 코드 수정이며, 진행하면서 많은 것들이 바뀐다.다만 객체지향설계와 객체지향프로그래밍을 공부하면서 최대한 프로젝트를 객체지향적으로 고치고자 하기에, 코드를 고쳐가며, 어떤 문제점들이 있었는지 자세한 코드와 함께..

백엔드 멘토링 2024.07.11

단축 url 서비스 Base62으로 리팩터링하기 - 회고록

이번 단축 url 서비스 토이 프로젝트를 진행함에 있어서 나는 단축된 url로 제공할 임의의 문자열이 필요했다. 그래서 초기에 나는 random 값을 사용하여 ASCII CODE에서 무작위로 문자, 숫자를 불러오자! 라고 생각하여 아래와 같이 코드를 작성했었다. public void makeKey() { randomKey = levelingKey(random.ints(AsciiCodeIndexForRandomString.NUMBER_START_IN_ASCII_CODE.index, AsciiCodeIndexForRandomString.LOWER_ALPHABET_LIMIT_IN_ASCII_CODE.index) .filter(i -> (i = AsciiCodeIndexForRandomString.UPPER_A..

백엔드 멘토링 2023.10.08

자바의 신 - 복습 정리(2)

- 자바의 동작 과정 자바 코드를 작성한다 -> .java 파일 Java Compiler(javac)가 .java파일을 .class파일로 컴파일 한다. .class 파일들이 JVM에 들어가 Class Loader가 클래스들을 JVM에 올린다. JVM에 있는 class 파일들이 Interpreter와 JIT Compiler에 의해 해석된다. 해석된 바이트 코드들을 Runtime Data Area로 옮겨져 실질적인 실행이 된다. - JIT Complier = java JVM에 있는 컴파일러로 자주 사용되는 메서드나 클래스를 캐시에 저장시켰다가 필요할 때 컴파일 해서 준다. - warm-up = 성능 확인 또는 향상을 위해 JIT 컴파일러의 캐시에 원하는 데이터가 캐싱되도록 유도하는 것을 말함 - 쓰레드? 프..

백엔드 멘토링 2023.09.23

자바의 신 - 복습 정리(1)

-IDE란? = 통합 개발 환경으로 개발자가 효율적으로 개발하도록 도와주는 소스 코드 편집기 -마크업 언어란? = 태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어의 한 가지 -C언어, Python, Java의 차이? = C언어 : 절차지향 언어 Java, Python : 객체지향 언어 - 자바의 특징 = 객체지향 언어이며, jvm이라는 가상 머신을 사용하기 때문에 이식성이 좋고 GC가 자동으로 메모리 관리를 해주기 때문에 편리하다 - 컴파일이란 = 고수준 언어(C, Java등등)을 컴퓨터가 이해할 수 있는 언어로 바꾸어 주는 과정 - JVM이란 = Java Virture Machine의 약어로 자바안에 내장된 가상 컴퓨터이다, 이로 인해 이식성이 좋다는 장점이 있지만 속도가 저하된다. - 객체란..

백엔드 멘토링 2023.08.27

RestTemplate vs webClient vs openFeign 차이

Spring framework 에는 다양한 http 요청 방식을 통해 웹서비스와의 통신이 가능합니다. 가장 주로 사용되는 http 요청 방식 3가지인 restTemplate vs webClient vs openFeign에 대해 매우 간단하게 알아보겠습니다. 1. RestTemplate RestTemplate은 Spring에서 제공하는 동기식 http 통신을 위한 방법입니다. 주로 MVC기반의 프로그램에서 사용되며 JSON, XML등 다양한 형식의 데이터를 처리 할 수 있습니다. 장점 간단한 구성과 사용법 예전 버전의 Spring에서도 사용 가능 다양한 http 클라이언트 설정 가능 단점 동기 방식을 기반으로 하기에 병렬 처리가 어려움 non-blocking 요청 처리가 불가능 2. WebClient We..

백엔드 멘토링 2023.08.27

Car-Racing 토이 프로젝트 step 1 회고록 (1)

2023.06.15 토이 프로젝트 시작 3학년 여름 방학 때 공부하며 아주...작은..토이 프로젝트를 하나 진행하였다. 자동차 경주 게임을 개발하는 일 이었는데 인터넷을 검색해보니 이미 유명한 프로젝트였고, 여러 코드들도 많이 있었지만 무슨 객기인지 다른 사람의 코드를 보고싶지 않았다. 그걸 보게 되면 처음 설계부터 기능 요구사항 까지 연습하려던 계획이 무산될 것 같았다ㅋㅋ 처음 프로젝트 시작할때는 기능 요구사항, README.md를 먼저 작성해 주었다. 다른 사람들이 어떻게 README를 작성하는지 참고하며 나도 따라 썼던 것 같다. 개발 기간과 개발 환경은 그렇다 쳐도 요구사항 부분은 수정해야 할 부분이 참 많아 보인다. 나는 개인적으로 받고있는 멘토링을 해주시는 멘토분이 코드 리뷰를 해주셨는데, R..

백엔드 멘토링 2023.07.11

일급 컬렉션(First-Class Collection)이란?

Car-racing 미션을 진행하면서 일급 컬렉션이라는 것에 대해 공부해보았고, 사용해보았다. 일급 컬렉션이란? Java에서 일급 컬렉션(First-Class Collection)은 다른 객체와 동등한 지위를 갖는 컬렉션 객체를 말합니다. 일급 컬렉션은 다음과 같은 특징을 가집니다. 컬렉션 객체는 변수나 매개변수에 할당할 수 있다. 컬렉션 객체는 다른 객체와 동등한 지위를 가진다. 컬렉션 객체는 반환값으로 사용할 수 있다. 컬렉션 객체는 필요한 경우 메서드에서 생성할 수 있다. 그냥 간단하게 한 문장으로 말하면 Collection을 Wrapping 하면서, 그 외 다른 멤버 변수가 없는 상태를 일급 컬렉션이라 합니다. 예를 들어보자면 public class Cars { private final List ..

백엔드 멘토링 2023.07.10

2023/04/10 - Spring 공부중 관련 질문들 [2]

생성자 생성자는 간단하게 얘기하면 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메소드'이다. 따라서 인스턴스 변수의 초기화 작업에 사용되고, 인스턴스 생성 시에 실행되어야 할 작업을 위해서 사용된다. 생성자의 이름은 클래스의 이름과 같아야 한다. 생성자는 리턴 값이 없다. void 또한 사용하지 않는다. 생성자는 몇 가지 특징을 제외하면 메소드와 다르지 않다. 생성자는 메소드 처럼 클래스 내에 선언되고, 오버 로딩이 가능하므로 하나의 클래스에 여러 개의 생성자가 존재할 수 있다. JPA, JPA와 SQL mapper의 차이 JPA : (Java Persistence Api)의 약자로 자바 언어를 기반으로 한 ORM입니다. 이는 객체와 관계형 데이터베이스 간의 매핑을 처리해주며 개발자가 객체를 생성하고..

백엔드 멘토링 2023.04.13

2023/04/05 - java 11, 17 특징

먼저 Java 11이다 8버전과 비교하여 11버전 에서 추가된 기능들로는 인터페이스에 private 메서드 가능 (java 9) 이외에 컬렉션, 스트림, Optional에 몇몇 메서드 추가 (java 9) G1 GC가 디폴트 GC로 설정 (java 9) var 키워드 사용 가능 (java 10) OpenJDK가 Oracle JDK로 통합 이 있고 11버전과 비교하여 17버전에 추가된 기능들은 record 키워드 사용 가능 (자바 14) NullPointerException이 어떤 변수에 의해 발생했는지 설명 (자바 14) sealed 키워드 사용 가능 (자바 15) ZGC 도입 (자바 15) 등이 있다.

백엔드 멘토링 2023.04.07