분류 전체보기 101

스프링데이터 JPA (JpaRepository)

스프링 데이터 JPA - 스프링 데이터 JPA는 JPA를 보다 더 편리하게 사용하도록 도와주는 기술이다. - 개발자가 데이터 액세스 계층을 구현하는데 필요한 많은 반복적인 코드를 줄이고, 간단한 설정을 통해 데이터베이스와의 상호 작용을 가능하게 하는 것입니다. - JpaRepository와 같은 인터페이스를 사용하여 기본적인 CRUD(Create, Read, Update, Delete) 기능을 제공받을 수 있습니다 - Spring Data JPA는 JPA를 사용하여 데이터베이스와 상호 작용하는데 도움을 주는 스프링 프레임워크의 일부입니다. JpaRepository - JpaRepository는 Spring Data JPA에서 제공하는 인터페이스로, 기본적인 CRUD(Create, Read, Update,..

Spring 2023.11.30

스프링부트 jpa 라이브러리 추가 및 연결(인텔리제이)

먼저 build.gradle 파일에 jpa,h2 데이터베이스 관련 라이브러리를 추가해준다. 그리고 application.properties에 두줄도 추가해준다. - show-sql : JPA가 생성하는 SQL을 출력한다. - ddl-auto : JPA는 테이블을 자동으로 생성하는기능을 제공하는데 none을 사용하면 해당기능을 끈다. create 를 사용하면 엔티티 정보를 바탕으로 테이블도 직접 생성해준다. 그러고 나서 Gradle에 새로고침 모양을 눌러줘서 라이브러리를 다운받으면 된다. JPA를 사용하도록 스프링 설정도 변경해주자 SpringConfig 클래스에 가서 EntityManager를 추가해준다. - EntityManager는 Java Persistence API (JPA)의 일부로서, 데이터베..

Spring 2023.11.29

CISC와 RI

CISC (Complex Instruction Set Computer ) - 약자를 해석하면 복잡한 명령어 집합을 활용하는 컴퓨터를 의미한다. CISC란 이름 그대로 복잡하고 다양한 명령어들을 활용하는 CPU 설계 방식이다. - 다양하고 강력한 기능의 명령어 집합을 활용하기 때문에 명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용한다. - 적은 수의 명령어만으로도 프로그램을 동작시킬 수 있다는 점은 메모리 공간을 절약할 수 있다는 장점이 있다. - 단점으로는 활용하는 명령어가 워낙 복잡하고 다양한 기능을 제공하는 탓에 명령어의 크기와 실행되기까지의 시간이 일정하지 않다. CISC 명령어 집합은 복잡하고 다양한 기능을 제공하기에 적은 수의 명령으로 프로그램을 동작시키고 메모리를 절약할 수 있지만, 명..

명령어 병렬 처리 기법

- 명령어 병럴 처리 기법에는 대표적으로 명령어 파이프 라이닝, 슈퍼스칼라, 비순차적 명령어 처리가 있다. 명령어 파이프 라인 - 명령어 처리 과정을 클럭 단위로 나누어 보면 다음과 같이 나눌 수 있다. 1) 명령어 인출 2) 명령어 해석 3) 명령어 실행 4) 결과 저장 - CPU는 각 단계가 겹치지만 않는다면 동시에 실행할 수 있습니다. -> t1은 명령어 1,2를 동시에 처리하고 있는 것을 확인할 수 있습니다. 다른 것도 마찬가지입니다. -> 이처럼 마치 공장 생산 라인과 같이 명령어들을 명령어 파이프라인에 넣고 동시에 처리하는 기법을 명령어 파이프라이닝 이라고 한다. - 파이프라이닝이 높은 성능을 가져오기는 하지만 특정 상황에서는 성능 향상에 실패하는 경우도 있다. 이러한 상황을 파이프라인 위험이..

CPU 성능 향상 기법

클럭 - 컴퓨터 부품들은 클럭 신호에 맞춰 일사불란하게 움직인다. 즉, 클럭 신호가 빠르게 반복되면 CPU는 명령어 사이클을 더 빠르게 반복하고 다른 부품들도 그에 발 맞춰 더 빠르게 작동한다. - 실제로 클럭 속도가 더 높은 CPU는 일반적으로 성능이 좋다. - 클럭 속도는 헤르츠(Hz)단위로 측정한다. 이는 1초에 클럭이 몇 번 반복되는지를 나타낸다. ex) 1초에 100번 반복되면 CPU 클럭 속도는 100Hz인 것이다. -> 1GHz는 1,000,000,000(Hz)이다. 코어와 멀티코어 - CPU의 성능을 높이는 또다른 방법은 CPU의 코어와 스레드 수를 늘리는 방법이 있다. - 코어란 CPU 내에서 명령어를 실행하는 부품이고, CPU 내에 여러개가 있을 수 있다. - 코어를 여러 개 포함하고 ..

CPU의 작동 원리(명령어 사이클, 인터럽트)

플래그 - 연산 결과에 대한 추가적인 상태 정보를 플래그라고 한다. - ALU는 계산 결과와 더불어 플래그를 내보낸다. - ALU는 결과값 뿐만 아니라 연산 결과에 대한 추가적인 정보를 내보내야 한다. - 이러한 플래그는 CPU가 프로그램을 실행하는 도중 반드시 기억해야 하는 일종의 참고 정보이다. - 플래그들은 플래그 레지스터라는 레지스터에 저장됩니다. 제어장치 1) 제어장치는 클럭 신호를 받아들인다. - 클럭이란 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위이다. - 클럭의 주기에 맞춰 데이터가 이동되거나, 연산이 수행되거나, CPU가 메모리에 저장된 명령어를 읽어 들인다. 2) 제어장치는 해석해야 할 명령어를 받아들인다. - 제어장치는 명령어 레지스터로부터 해석할 명령어를 받아들..

프로그래머스 가장 가까운 같은 글자(JAVA)

문제 설명 정답 class Solution { public int[] solution(String s) { int[] answer = new int[s.length()]; // 문자열의 길이만큼 반복 for(int i=0; i substring 메서드로 현재 문자열의 직전 문자열까지 추출한다. -> 추출한 문자열 중에서 현재 문자열의 lastIndex를 추출한다. -> 추출한 문자열 중에서 현재 문자열이 존재하지 않다면 -1을 index 변수에 저장한다. -> 존재한다면, 마지막 인덱스 번호를 index변수에 저장한다. -> index번호를 이용해서 (현재 문자열의 인덱스번호 - index(이전 문자열중 현재 문자열의 마지막 위치)) 의 값을 answer 배열에 넣어준다. 배운것 lastIndexOf( ..

프로그래머스 2023.11.27

빈과 의존관계

컴포넌트 스캔과 자동 의존관계 설정 - 생성자에 @Autowired 가있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서넣어준다. 이렇게 객체 의존관계를 외부에서 넣어주는 것을 DI (Dependency Injection), 의존성 주입 이라고 한다. * 컴포넌트스캔 원리 - @Component 애노테이션이 있으면 스프링 빈으로 자동 등록된다. - @Controller 컨트롤러가 스프링 빈으로 자동 등록된 이유도 컴포넌트스캔 때문이다. -> 컨트롤러에 들어가서 보면 @Component 애노테이션이 있는 것을 확인할 수 있다. - @Component 를포함하는다음 애노테이션도스프링 빈으로 자동등록된다. 1) @Controller 2) @Service 3) @Repository 자바 코드로 직접 스프링..

Spring 2023.11.25