| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- spring boot
- 클린 코드
- 책임
- 객체지향의 사실과 오해
- Refactor
- string
- 리팩토링
- 스프링
- JPA
- 캡슐화
- 인터프리터
- 클린코드
- 자바
- clean code
- JIT
- SRP
- 캐싱
- 추상화
- 스프링부트
- 캐시
- 재사용성
- 협력
- cache
- 객체지향
- 쿼리 최적화
- Lombok
- 도메인 모델
- 객체
- REST API
- Java
- Today
- Total
목록Java (12)
GO SIWOO!
📌 리팩토링 이유 약 1년간 대학 동기들과 한국어 학습 웹 어플리케이션 웹 서비스 프로젝트를 진행한 적이 있다. 해당 프로젝트는 표준 국어 대사전 API와 Kakao 로그인 API, OpenAPI를 사용해 단어, 문장, 음성 한국어 검색, 사용자만의 단어장, 단어 퀴즈, 랭킹, 오픈사전등의 기능을 제공하는 프로젝트였다. 해당 프로젝트를 통해 공모전에서 은상 교내 대회에서 은상을 타기도 하는 등 많은 성과를 이루었지만 다음과 같은 곳에서 부족함을 느끼고 이 프로젝트를 내 힘으로 완벽히 리팩토링을 하고 싶었다. 1. Git/Github등 협업툴의 사용법과 관리 미숙 버전/이슈의 관리가 메신저로 이루어져 매우 힘들었다. 프로젝트의 결과물을 명확히 확인을 할 수 없었다. 2. 프로젝트 진행 중 mapper 사용..
📌 에러 인텔리제이 : Intellij IDEA 2021.2.1 스프링부트 : 3.0.5 자바 : 17 junit : 5.9.2 Could not autowire. No beans of 'MockMvc' type found. MockMvc를 Spring IoC 컨테이너에서 찾을 수 없단다 @AutoConfigureMockMvc를 통해 MockMvc를 사용할 수 있을 텐데... 그런데 또 MockMvc 객체를 활용한 Test들은 전부 성공하고 있다. 테스트 성공은 하지만 빨간줄이 보통 거슬리는게 아니다. 📌 해결책 https://stackoverflow.com/questions/73511395/intellij-could-not-autowire-no-beans-of-mockmvc-type-found-but-..
📌 euqals 메서드? 자바의 모든 클래스는 Object 클래스를 상속한다. Object 클래스 내부에 equals(Object obj) 메서드가 있다. public boolean equals(Object obj) { return (this == obj); } 위의 euqals 메서드는 Object 클래스에 정의되어 있는 것으로 객체의 주소값을 비교해 같은 객체인지 boolean 형으로 반환해 준다. 📌 String 비교 시 equals 메서드? String 객체의 equals 메서드를 통해서 문자열을 비교할 수 있다. String str = "check"; System.out.println(str.equals("check")); // true 하지만 String 객체의 값이 null로 차있을 경우에는..
📌개요 컴퓨터는 사람의 언어 문법에 가까운 고급 언어를 이해할 수 없다. 이와 같은 이유로 고급 언어로 작성된 코드를 컴퓨터가 이해할 수 있는 저급 언어인 기계어로 바꿔야 컴퓨터가 이해할 수 있다. 0과 1의 2진수 만을 이해하는 컴퓨터를 사람이 이해하기 위해 어셈블리 언어가 생기게 된다. 이 어셈블리 언어는 어셈블러를 통해 2진수로 변경해 컴퓨터가 읽을 수 있게 한다. 1950년대에 High-level Language, 고급 언어라는 개념이 등장하고 사람의 언어 문법과 더더욱 가까운, 우리가 부르는 프로그래밍 언어 java, C, Python 등이 여기에 속하게 된다. 고급 언어 또한 어셈블러가 기계어로 바뀌듯이 바꿔주어야 하는데 이 역할은 컴파일러(Compiler)와 인터프리터(Interpreter)..
📌 json-simple 특징 1. 내부적으로 JSON 데이터를 처리하기 위해 Map과 List를 사용합니다. 2. JSON 데이터를 구문 분석하고 JSON을 파일에 기록할 수 있습니다. 3. 타사 라이브러리에 대한 의존성이 없습니다. 4. 매우 가벼운 API이며 간단한 JSON 데이터를 처리하기 위해 적합합니다. 📌 build.gradle implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1' 📌 JSONObject 사용법 JSONObject 클래스를 사용해 json 객체를 다룰 수 있다. JSONObject jsonObject = new JSONObject(); jsonObject.put("Nam..
📌Java 컬렉션 프레임워크? (Collection Framework) 컬렉션 프레임워크란 데이터 그룹을 저장하는 클래스들을 표준화한 설계이다. 컬렉션 프레임워크를 활용하면 객체지향적이고 재사용성이 높은 코드를 작성할 수 있다. 📌배열과 다른 점은? 배열 또한 연관된 데이터를 관리하기 위한 수단이다, 근데 왜 컬렉션 프레임워크? → 자료형이 같아야 한다. → 데이터의 추가, 삭제가 번거롭다. → 배열은 정해진 크기를 변경할 수 없다. 📌컬렉션 프레임워크의 종류? 아래 그림은 자바 컬렉션 인터페이스의 종류이다. 컬렉션 인터페이스로는 Set, List, Map이 ****있다. Set, List는 Collection 인터페이스를 상속받는다. 하지만 Map 인터페이스는 Collection 인터페이스를 상속받지 ..
📌Java String 객체의 생성 방식 Java의 String 객체는 두 가지 생성 방식이 있다. 1. new 연산자 이용 Heap 영역에 존재 ex) String str = new String("스트링"); 2. literal을 이용한 방식 String Constant Pool이라는 영역에 존재 ex) String str = "스트링"; 📌Java String Pool Literal로 String 객체를 생성하면 해당 String 객체의 값은 위의 그림과 같이 Heap 영역 내의 String constatns Pool 이라는 곳에 저장된다. 이 영역에 저장이 되면 String 값은 불변성을 지니고 이 불변성은 다른 String 객체를 선언할 때에도 String Pool내의 같은 곳을 가리키게 된다. ..
📌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..