전체 글 100

레디스

레디스 트랜잭션 However, RedisTemplate is not guaranteed to run all the operations in the transaction with the same connection. Read-only commands, such as KEYS, are piped to a fresh (non-thread-bound) RedisConnection to allow reads. Write commands are queued by RedisTemplate and applied upon commit. 레디스는 multi, exec, and discard commands로 트랜잭션을 제공합니다. 위의 명령은 스프링에서 RedisTemplate을 이용해 실행할 수 있습니다. 하지만 Re..

카테고리 없음 2023.03.30

아키텍처

아키텍처(Architecture)의 의미를 이해할 수 있다. 우리가 알아야 할 애플리케이션의 아키텍처를 이해할 수 있다. 아키텍처를 통해 Spring Framework의 모듈(Module) 구성을 이해할 수 있다. 아키텍처: 어떠한 시스템을 구축하는데 있어 해당 시스템의 비즈니스적 요구 사항을 만족하는 전체 시스템 구조를 정의하는 것 컴퓨터 시스템에서의 아키텍처 유형 시스템 아키텍처 소프트웨어/ 애플리케이션 아키텍처 웹 애플리케이션 아키텍처 API 계층 클라이언트의 요청을 받아들이는 계층. 일반적으로 표현 계층(Presentation Layer)라고도 불리지만 REST API를 제공하는 애플리케이션의 경우 API 계층이라고 표현. 서비스 계층 API 계층에서 전달 받은 요청을 업무 도메인의 요구 사항에 ..

Spring Framework 특징

1. POJO(Plan Old Java Object)기반의 구성 pojo programming : POJO를 이용해서 프로그래밍 코드를 작성하는 것 Java나 Java의 스펙(사양)에 정의된 것 이외에는 다른 기술이나 규약에 얽매이지 않아야 한다 예) 특정 기술 상속 특정 환경에 종속적이지 않아야 한다. 예) 톰캣 -> 제티 POJO 프로그래밍이 필요한 이유 특정 환경이나 기술에 종속적이지 않으면 재사용 가능하고, 확장 가능한 유연한 코드를 작성할 수 있다. 저수준 레벨의 기술과 환경에 종속적인 코드를 애플리케이션 코드에서 제거 함으로써 코드가 깔끔해진다. 코드가 깔끔해지기 때문에 디버깅하기도 상대적으로 쉽다. 특정 기술이나 환경에 종속적이지 않기 때문에 테스트 역시 단순해진다. 객체지향적인 설계를 제한..

02. 이상한 나라의 객체

객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다. 객체를 발견하고 창조하는 것은 지식과 행동을 구조화하는 문제다.- 레베카 워프스브록(Rebecca Wirfs-Brock)[Wirfs-Brock 1990] 객체지향과 인지 능력 세상을 더 작은 객체로 분해하는 것은 본질적으로 세상이 포함하고 있는 복잡성을 극복하기 위한 인간의 작은 몸부림이다. 인간은 좀 더 단순한 객체들로 주변을 분해함으로써 자신이 몸담고 있는 세상을 이해하려고 노력한다. 즉, 객체란 인간이 분명하게 인지하고 구별할 수 있는 물리적인 또는 개념적인 경계를 지닌 어떤 것이다. 객체지향 패러다임은 인간이 인지할 수 있는 다양한 객체들이 모여 현실 세계를 이루는 것처럼..

01 협력하는 객체들의 공통체

객체지향이란 시스템을 상호작용하는 자율적인 객체들의 공동체로 바라보고 객체를 이용해 시스템을 분할하는 방법이다. 자율적인 객체란 상태와 행위를 함께 지니며 스스로 자기 자신을 책임지는 객체를 의미한다. 객체는 시스템의 행위를 구현하기 위해 다른 객체와 협력한다. 각 객체는 협력 내에서 정해진 역할을 수행하며 역할은 관련된 책임의 집합이다. 객체는 다른 객체와 협력하기 위해 메시지를 전송하고, 메시지를 수신한 객체는 메시지를 처리하는 데 적합한 메서드를 자율적으로 선택한다.

Comparator의 compareTo

Comparator의 compareTo a.compareTo(b)는 a의 아스키 코드 값과 b의 아스키 코드를 비교하는 메서드이다. a는 기존에 존재하던 값을 의미하고 b는 새롭게 들어오는 값을 의미한다. 이때 (a - b) > 0라면 양수가 반환되고 그 반대에는 음수가 반환, 값이 같을 때에는 0을 리턴한다. 음수거나 0일 때에는 순서가 그대로 유지되지만 양수가 나오게 되면 두 값의 자리가 변경된다. 출처 가장 큰 수 (Java, Comparator, 프로그래머스) Comparator를 직접 구현하여 String끼리 값을 비교할 수 있는지를 묻는 문제였다. 기본적으로 주어지는 Collections.reverseOrder()를 이용하여 내림차순을 구현하면 String은 사전순으로 정렬되게 되어있으 mid..

알고리즘 2023.03.05

[ 객체지향 ] 추상화

추상화의 핵심 개념과 목적을 이해하고 설명할 수 있다. 기존 클래스들의 공통점을 모아서 상위 클래스를 만드는 것 abstract 제어자가 내포하고 있는 의미를 이해하고, 어떻게 사용되는 지 설명할 수 있다. 미완성 추상 메서드 추상 클래스 - 객체 생성이 불가 추상 클래스의 핵심 개념과 기본 문법을 이해할 수 있다. 메서드 시그니처만 존재하고 바디가 선언되어 있지 않은 추상 메서드를 포함하는 클래스 추상클래스는 상속 관계에 있어 새로운 클래스를 작성하는데 매우 유용 추상 클래스는 자바 객체지향 프로그래밍의 추상화를 구현하는데 핵심적인 역할 final 키워드를 이해하고 설명할 수 있다. 위치 의미 클래스 변경 또는 확장 불가능한 클래스, 상속 불가 메서드 오버라이딩 불가 변수 값 변경이 불가한 상수 자바 ..

프로그래머스 디스크 컨트롤러

주의할 점 1. 작업요청이 동시에 들어온 경우 ex) [0, 8], [0, 3], [0, 5] 2. 작업이 끝나고 다음 작업이 바로 실행되지 않는 경우 ex) [0,2], [10,2] 3. 현 작업 진행 중에 여러 작업들이 요청된다면 작업 실행 시간이 짧은 순으로 먼저 실행해야 함 import java.util.*; class Solution { public int solution(int[][] jobs) { //소요시간 int answer = 0; //끝나는 시간 int end = 0; PriorityQueue q = new PriorityQueue(new Comparator() { @Override public int compare(int[] o1, int[] o2) { return o1[0]!=o2..

알고리즘 2023.03.02