Programming - Methodology

1. CleanCode ‘클린코드’(로버트 C. 마틴) 참고 1) 클린코드 규칙 의도를 분명히 밝혀라. 어떤 데이터를 저장하고 있는지 예측 서로 흡사한 이름을 사용하지 않도록 주의 하자 그릇된 정보를 피하라. 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용하지 말자 의미 있게 구분 하라. 발음하기 쉬운 이름으로 정하자. 우리는 혼자 일하지 않는다. 검색하기 쉬운 이름을 사용하라. 타입과 관련된 문자열을 넣지 말아라. 한 ...

더보기

SpringBoot - queryDSL Study2

6. 실무 활용 - 순수 JPA와 Querydsl 1) 순수 JPA 리포지토리와 Querydsl** H2에서 테스트 코드 실행 전, 매번 drop all objects 실행하기 기존 테이블을 지우지 못해서 에러가 발생한다. a. 순수 JPA 방식 순수 JPA는 JPA Native query를 이용하고, Spring Data JPA는 JPA에서 Spring에 기본으로 제공해주는 메서드를 이용할 수 있다. Spring Data JPA가 훨씬 간편하지만, 메서드가 제한적이다.(findAll 같은 것) 실습...

더보기

SpringBoot - queryDSL Study1

1. Spring Boot 개발 환경 1) spring.io : Spring Web, jpa, h2, lombok, devtools를 설정하여 프로젝트 설정하기 queryDSL은 라이브러리가 아니라 추가로 설정해주어야 한다. springboot 3.0 이상은 jdk 17, h2 2.1.214 버전 이상 javax 패키지는 jakarta로 변경 2) SpringBoot JPA는 EntityManager에 종속적이라서 싱글톤 패턴으로 멀티스레드 환경에서 문제가 될 것 같지만 SpringBoot에서 EntityManager를 사용하게 되면, 멀티...

더보기

Docker - Docker Study3

1. Docker로 다중 컨테이너 애플리케이션 구축하기 1) 각 역할에 대한 컨테이너를 도커화하는 방법 a. MongoDB 이미지 도커화 현재, 이 노드 API가 연결할 때, 데이터베이스와 통신하기 때문에, 데이터베이스를 포함하는 컨테이너를 가동하여 이것이 작동하려면, 이 포트 27017를 노출해야 한다. 도커 컨테이너에서 로컬 머신으로 가동시켜야 한다. 우리 서비스가 로컬 머신을 통해 서비스에 연결할 수 있다. MongoDB 이미지는 포트번호 27017를 노출시키고 있다. 통신 URL : mongodb://localhost:27017/course-goals 현...

더보기

Test - Programmers2

1. Lv.2 33문제 풀기 : 정답률 높은 순서 약 3만명 이상 푼 문제부터 풀고 Kakao 문제는 거의 다 풀기 문제 당, 최대 2시간 고민 1) 최댓값과 최솟값 compareTo는 문자열 정렬 시, 사용! ** import java.util.*; class Solution { public String solution(String s) { String[] sp = s.split(" "); String answer = ""; int[] num = new int[sp.length];...

더보기

Docker - Docker Study2

1. Docker 기본 개념 0) 기본 개념 a. 가상화 기술? 가상 머신 vs 컨테이너 기술 b. 개념 정리 : 컨테이너 기반 기술의 오픈소스 플랫폼 c. 가상머신에서 게스트 OS는 하이퍼 바이저로 자원 할당받음 컨테이너는 게스트 OS를 대신하고, 컨테이너 엔진으로 자원 할당 받음 가상 머신은 매우 속도가 느리고 컨테이너인 도커는 속도가 빠르다. d. 게스트 OS는 호스트 OS와 비교적으로 상대적인 개념이다. Windows 위에 VMware로 Linux를 만드는 경우, ...

더보기

Test - Programmers1

1. Lv.1 1) x만큼 간격이 있는 n개의 숫자 long 자료형 사용하기! Why? 유효 범위 때문에 이러한 문제가 발생했다. class Solution { public long[] solution(int x, int n) { long[] answer = new long[n]; long y = (long) x; for(int i=0; i<n; i++){ answer[i] += y; y += (long) x; ...

더보기

TIL - 26주차 코드

1. Stream API, Linux : 230522 1) Stream API : 전체 코드 Program.java package main.java.ex4.stream; import java.io.IOException; import java.util.regex.Pattern; import java.util.stream.IntStream; public class Program { public static void main(String[] args) throws IOException { ExamRepository repository = new ExamReposit...

더보기

TIL - 25주차 코드

1. 230515 1) JPA AJAX로 모든 프론트단을 설계하고 도배질하려면, JPA로 구현하면 된다. 쿼리가 길어진다면, 무조건 View 테이블로 만들어서 Join도 최대한 줄이고 동적쿼리도 줄일것 하지만, JOIN을 많이 하려면, Mybatis를 이용해야 한다. nativeQuery로 설정을 해주면, Mybatis나 MariaDB로 변환되는 것인데 JPA를 쓰는 것은 nativeQuery를 안 된다. 2) 구글 로그인 아이콘 변경하는 방법 : 현재, 기존 Google 로그인 버튼의 코드에서 아이콘을 추가하면, 에러가 발생한다...

더보기

Interview - Java, Web, Spring, DB

1. Java + FrameWork : 230512 1) OOP 프로그래밍 방법론 중에 하나이다. 객체를 중심으로 둔 방법론이다. 2) Mybatis 데이터베이스를 이용하기 위한 Mapper 프레임워크입니다. 데이터를 저장하기 위한 라이브러리 중에 하나이다. 데이터 베이스를 이용하기 위한 프레임워크 DAO 인터페이스와 Mapping을 연결해준다. 3) JPA 데이터베이스를 이용하기 위한 ORM(객체 관계형 매핑) 관련 프레임워크이다. DAO나 Repository를 대신 구현해준다. 4) 가비지 컬렉터 : 메모리에 할당되는 것은 Heap에 할당...

더보기

TIL - 24주차 코드

1. Vue.js 인증과 권한 : 230508 1) Pinia 사용 방법 pinia 설치 방법** : npm install pinia a. Pinia 기본 설정 main.js import { createApp } from 'vue' import { createRouter, createWebHashHistory } from 'vue-router' import { createPinia } from 'pinia' const pinia = createPinia(); // Vue.createApp이 글로벌 라이브러리이다. createApp(App) .use(router) .use(pini...

더보기

Project - 성능 개선 테스트 및 레퍼런스

1. 성능 개선 테스트 : 230507 1) 성능 개선에 대한 개념 성능 개선이 무엇인가 : 렌더링 성능저하 해결하기 SQL 튜닝 개념 및 접근 방법 MySQL 쿼리 튜닝 은 어떻게 할까? 기초편 (INDEX) 2) 성능 개선하는 실제 예시 홈페이지 리라이팅 시, 아키텍쳐 변경 문제점 JPA N+1 문제의 해결 방법 도메인 운영시, 데이터가 필요한 이유

더보기