일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 스프링 시큐리티
- virtualization
- 배포
- vm
- 백엔드
- 영속성 컨텍스트
- 스프링 부트
- Spring
- Container
- mysql
- 가상화
- 컨테이너
- JPA
- CS
- 데이터베이스
- ORM
- 도커
- spring batch
- Spring Security
- computer science
- web server
- HTTP
- Java
- 웹 서버
- spring cloud
- CI/CD
- Today
- Total
목록Java (13)
개발 일기
Array 배열에서의 정렬 - 단일 기준// 오름차순 정렬int arr[] = {5,3,2,4,1};Arrays.sort(arr); // [1,2,3,4,5]// 내림차순 정렬Integer arr[] = {5,3,2,4,1};Arrays.sort(arr, Collections.reverseOrder()); // [5,4,3,2,1]그러나 위 코드에서도 알 수 있듯이 내림차순 정렬의 Collections.reverseOrder()는 객체 형태에게만 가능하기 때문에 기본형인 int가 아닌 참조형 변수 즉, 객체 타입인 Integer배열로 선언한 것을 알 수 있다. 그래서 아래와 같이 처리할 수 있긴한데 그래도 코드가 길고 번거로워진다.int arr[] = {5,3,2,4,1};Integer[] temp = ..

스택(Stack)Stack은 LIFO(Last In First Out) 구조로 되어 있으며, 쉽게 해석하면 "후입 선출" 입니다. 즉, 마지막(최근)에 넣은 것을 먼저 뺀다는 말이다.그렇다면 어떠한 자료구조를 통해서 스택을 다룰 수 있을까? 스택은 순차적으로 데이터를 추가하고 삭제하기 때문에 ArrayList와 같은 배열기반의 컬렉션 클래스가 적합하다.java.util에서 Stack.class를 제공하고 있다. 아래는 Stack class의 관련 메소드들이다.메서드설명boolean empty()Stack이 비어있는지 알려준다.Object peek()Stack의 맨 위에 저장된 객체를 반환.pop()과는 달리 Stack에서 객체를 꺼내지는 않는다.( 비었다면 EmptyStackException발생 )Obj..

자료구조(Data Structure)란?컴퓨터 프로그램에서 데이터를 효율적으로 저장하고 관리하기 위해 설계된 구조로 Array, List, Map 등이 대표적이다.배열(Array)배열은 인덱스와 값을 일대일 대응해 관리하는 자료구조데이터를 저장할 수 있는 모든 공간은 인덱스와 일대일 대응하므로 어떤 위치에 있는 데이터든 한 번에 접근할 수 있다.일반적으로 배열은 선언할때 크기가 고정특정 인덱스에 있는 데이터를 읽거나 변경하는 데 O(1)의 시간 복잡도데이터를 순차적으로만 접근할 수 있어 위치를 모르는 경우 효율이 떨어짐.배열에 들어가는 데이터는 모두 동일한 자료형 이어야 함.배열 중간에 값을 추가하려면 기존 데이터를 모두 이동시켜야 함.// 1차원 배열int[] arr = {0, 0, 0, 0, 0, 0..

알고리즘 문제를 풀어보면 제한 시간이 있는 것을 확인할 수 있다. 시간 복잡도 (Time Complexity)알고리즘에서 시간 복잡도는 주어진 문제를 해결하기 위한 '연산 횟수'로 잡는다. 즉, 소요되는 기본 연산 수에 의거하여 시간복잡도가 계산되는데 여기서 주요 기본 연산으로는 데이터의 비교, 덧셈, 곱셈, 나눗셈 등이 있다.일반적으로 수행 시간은 1억번의 연산을 1초로 잡는다.알고리즘의 성능을 나타내는 지표로, 입력 크기에 대한 연산 횟수의 상한을 의미합니다. 시간 복잡도는 낮으면 낮을 수록 좋다.그런데 이러한 생각이 들었다. '예를들어 1차원 배열의 경우 탐색하고자하는 배열마다 만약 찾고자하는 값이 index 0에 있냐 아님 배열의 가장 마지막 Index에 위치하냐에 따라 연산 횟수가 달라지지 않나..

코테에서 터미널에서 입력받는 로직을 처리해야하는 경우가 있다. 크게 Scanner 클래스와 BufferedReader 클래스를 통해 처리할 수 있을텐데 이 두개를 중심으로 정리해보고자 한다.ScannerScanner란 사용자로 부터 입력을 받을 수 있도록 도와주는 것으로 콘솔창에서 입력이 필요할때 사용java.util.Scanner 패키지에 포함상대적으로 BufferedReader에 비해서 사용하기 용이한 메서드들을 클래스에서 많이 제공데이터를 파싱하기 위해서 내부적으로 정규 표현식 등을 사용하여 BufferedReader에 비해 내부적으로 복잡한 과정을 거쳐 처리 시간이 더 오래 걸린다. ➜ "작은 접시를 가지고 계속 오가며 음식을 조금씩 담아요"라고 타 블로그에서 설명했다.입력량이 고정되어 있고, ..

정리하게된 계기스프링 부트를 쓰게되면서 접근 제어자를 고민할때가 정말 많다. 그러나 사실 정확히 알지 못하고 그냥 때려맞추거나 Best Practice를 무작정 매번 따라 가려고한다. 근데 정확히 왜 이게 주로 이렇게 접근 제어자를 설정하는지 이해하면서 개발을 진행하고 싶고 그러기 위해서는 접근 제어자에 대해서 잘 알고 있어야한다는 판단이 섰다. 그래서 정리해보게 됐다.접근 제어자(Access Modifier)란?자바에서 접근 제어자는 클래스와 클래스의 멤버인 필드, 메소드, 생성자를 생성할 때 외부에서 접근할 수 있는 범위를 제한해주는 장치이다.크게 클래스의 접근 제어자와 클래스 멤버의 접근 제어자 이렇게 두가지로 나누어서 고려해볼 수 있다. 클래스의 접근 제어자클래스를 정의할 때 지정 가능한 접근 ..

프록시 프록시를 이해하고 아래의 즉시로딩 지연로딩에 대해서 이해할 수 있다. 우선 왜 프록시가 쓰이는가? Member를 조회할 때 Team도 함께 조회해야 하는가? // 1. 회원과 팀 함께 출력 public void printUserAndTeam(String memberId) { Member member = em.find(Member.class, memberId); Team team = member.getTeam(); System.out.println("회원 이름: " + member.getUsername()); System.out.println("소속팀: " + team.getName()); } // 2. 회원만 출력 public void printUserAndTeam(String memberId) ..

이전 게시글에서 스프링 생태계에 대해서 알아봤는데 Spring Framework의 3대 특징인 Spring 삼각형에 대해서 공부해보고자 한다. Spring 삼각형 위 사진이 바로 유명한 Spring 삼각형이다. Spring의 핵심 특징인 3대 특징이다. POJO는 IoC/DI, AOP, PSA를 통해서 달성할 수 있다는 것을 의미한다. 이제 하나씩 알아보자 POJO(Plain Old Java Object) 기반의 구성 우선 POJO부터 알아보자. POJO는 이전 게시글 스프링의 등장 배경에서 마틴 파울러는 EJB에 오래된 방식의 "오래된 방식의 간단한 자바 오브젝트로 돌아가자"라는 말이 기원이라고 했었다. 조금 더 자세한 일화를 봤는데 마틴 파울러가 2000년에 콘퍼런스 발표를 준비하다가 만들어낸 용어인..