[JAVA] 소수 판별 알고리즘 모음
1. 가장 일반적인 방법 public static void main(String[] args) { int num = 23; boolean isPrime = true; for (int i = 2; i
1. 가장 일반적인 방법 public static void main(String[] args) { int num = 23; boolean isPrime = true; for (int i = 2; i
num = 1234라는 숫자를 뒤집는다고 가정하고 숫자 뒤집기 진행 숫자를 뒤집을 때 해야 하는 방법은 1. num 을 끝에서부터 한 개씩 자른다. 2. 잘린 숫자를 맨 앞에부터 차례대로 위치시킨다. 1. 끝에서부터 한개씩 자르기 num에서 10을 나눈 나머지 값은 num의 마지막 숫자가 된다. 그리고, num 을 10으로 나눈 몫으로 다시 대체시켜줘야 한다. 반복문 범위는 num 이 0이 아닐 때 까지 수행하라고 조건을 걸어줘야 한다. (1) 1234 % 10 = 4 (num = 1234 -> num = 123, digit = 4) (2) 123 % 10 = 3 (num = 123 -> num = 12, digit = 3) (3) 12 % 10 = 2 (num = 12 -> num = 1, digit ..
문자열을 거꾸로 뒤집는 방법 1. for문으로 증감식을 사용하는 방법 2. StringBuilder 의 reverse 메서드를 사용하는 방법 3. While 문으로 시작 인덱스와 끝 인덱스를 하나씩 뒤집는 방법 1. for문 으로 증감식을 사용하는 방법 String str = "hello"; String reverseStr = ""; for (int i = str.length() - 1; i >= 0; i--) { reverseStr += String.valueOf(str.charAt(i)); } System.out.println(reverseStr); // olleh 증감식으로 문자열의 끝 인덱스부터 첫 인덱스 까지 거꾸로 순회하면서, 해당 문자열의 인덱스 값을 조회하여 문자열에 넣는 방식 2. Str..
스프링에서 트랜잭션을 어떻게 적용하는지에 대해서 글을 작성해 보겠다. 전에 포스팅 했던 트랜잭션 + 경쟁하면 생기는 문제점 글을 참고해서 보면 좋다!! 트랜잭션 (Transaction) + 경쟁하면 생기는 문제점 3가지 1. 트랜잭션 (Transaction) 데이터베이스의 상태를 변화시키기 위해 수행하는 작업단위 (1) 상태 변화데이터베이스의 상태를 변화시킨 다는 것은 쿼리문을 가지고 데이터베이스에 접근해 수정하고, hyeonju0121.tistory.com 1. Spring에서의 트랜잭션 처리 방법 - @Transcational 클래스, 메서드 위에 @Transcational 어노테이션을 추가할 수 있다. 이 어노테이션을 추가하게 되면, 추가된 클래스나 메서드에 트랜잭션 기능이 적용된 프록시 객체가 생..
1. Lombok 자바의 보일러 플레이트 코드를 줄여주는 매우 고마운 라이브러리다! 보일러 플레이트 코드는 자바로 코딩할 때 매번 똑같은 코드들을 반복해서 짜고.. 이런 반복적으로 비슷한 형태를 띠는 코드를 말한다. 1.1 Lombok의 기능 (1) @Setter, @Getter Java Bean 규약에 있는 setter, getter 들을 자동으로 생성해준다. (2) @ToString Object에 기본 구현된 ToString 대신 객체의 데이터를 보여주는 TroString을 자동으로 생성해 준다. (3) @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor 객체 생성자를 자동으로 생성해 준다. @NoArgsConstructor : 아무것..
1. 클라이언트와 서버 (1) 클라이언트 (client) 서비스를 요청하는 쪽 서버와 이어진 모든 기기 (컴퓨터의 경우 WIFI/ 모바일은 모바일 네트워크)와 단말기에서 이용하는 웹에 접근하는 SW이며, 주로 서버에 요청을 보내고 응답을 받는 역할을 한다. (2) 서버 (server) 서비스를 제공하는 쪽 다수 클라이언트에게 서비스를 제공하기 때문에 고사양의 하드웨어를 갖춘 컴퓨터이지만, 하드웨어의 사양으로 서버와 클라이언트를 구분하는 것은 아니며, 사양의 관계없이 서비스를 제공하는 소프트웨어가 실행되는 컴퓨터를 서버라고 한다. (3) 서비스 (service) 서버는 클라이언트로부터 요청을 받아 응답을 내려주고 클라이언트는 서버에 데이터를 요청하고 응답을 받는다. 서비스의 종류에 따라 파일 서버/ 메일 ..
스프링 프레임워크를 다루기 전에 꼭 필요한 자바 개념이 있다. 바로 인터페이스랑 리스트다. 1. 인터페이스란? 자바에서 클래스에 포함하는 메서드의 구체적인 내용을 작성하지 않고, 상수와 메서드 타입만 정의한 것이다. 극단적으로 동일한 목적 하에 동일한 기능을 수행하게끔 강제하는 것이 바로 인터페이스의 역할이다. 즉, 자바의 다형성을 극대화하여 개발코드 수정을 줄이고 프로그램 유지보수성을 높이기 위해 인터페이스를 사용한다. 1.1 인터페이스 구조 인터페이스는 다른 클래스에서 구현하는 것을 전제로 만들어진다. 그 때문에 인터페이스를 선언할 때는 암묵적으로 public abstract 접근 제어자가 붙은 추상 클래스라고 불린다. 인터페이스는 interface 키워드를 통해 선언할 수 있으며, implement..
1. 트랜잭션 (Transaction) 데이터베이스의 상태를 변화시키기 위해 수행하는 작업단위 (1) 상태 변화 데이터베이스의 상태를 변화시킨 다는 것은 쿼리문을 가지고 데이터베이스에 접근해 수정하고, 삭제하는 것을 말한다. 백엔드 개발을 하면서 crud 작업을 수행하며 이와 같은 작업들이 모두 데이터베이스의 상태를 변화시키게 된다. (2) 작업 단위 작업단위는 프로젝트별, 상황별 정의하기 나름이다. 작업단위 예시 ex) 트랜잭션 : 오늘 날씨에 대한 일기 작성하기 오늘 일기 작성하기라는 작업 단위를 두었다면, 이 하나의 작업단위 내에는 (1) 오늘 날씨 데이터를 가져오기, (2) 일기를 DB에 저장하기 이렇게 두 가지 단위로 나눌 수 있다. 이 (1) (2) 를 수행한 것이 하나의 데이터베이스 상태를 ..
1. 스프링 MVC (1) Dispatcher Servlet Dispatcher Servlet에서 모든 요청을 받는다. 수문장 역할 Dispatcher Servlet 은 어디로 요청을 보낼지, Handler Mapping 한테 물어봐야 한다. (요청 핸들러 메서드 호출) Handler Mapping에 대해서 예시를 들면, 도서관에서 책을 찾을 때 도서검색기에서 책을 검색하고 책의 위치를 알 수 있다. 여기서, 도서검색기는 Handler Mapping과 비슷한 역할이다. 책의 위치를 알고 그 위치대로 내가 찾으러 가면 되니까!! (2) Controller Dispatcher Servlet 이 Handler Mapping을 통해 해당되는 컨트롤러를 받아오면, Dispatcher Servlet 이 요청을 실제..
1. 프레임워크란? 소프트웨어나 애플리케이션 개발을 간단하게 해주는 뼈대 자주 쓰일 만한 기능을 모아 놓은 유틸(클래스)들의 모음이다. 즉, 기본적인 설계나 필요한 라이브러리는 알아서 제공해주고, 개발자는 만들고 싶은 기능을 구현하는데 집중하라는 취지에서 만들어진 것! 1.1 프레임워크 장단점 장점 • 효율적 프레임워크가 개발에 필요한 최소한의 기능을 제공하기 때문에 자신이 모든 기능을 작성할 필요가 없고, 애플리케이션 개발에 필요한 시간과 비용을 줄일 수 있다. • 유지보수 프레임워크를 사용하면 코드가 보다 체계적이여서유지보수에 안정적이다. 단점 • 프레임워크에 있는 코드를 습득하고 이해하는데 시간이 걸린다. 2. 프레임워크 vs 라이브러리 개발자가 구현하고자 하는 기능을 쉽게 제공해줄 수 있다는 점에..
1. 해시 테이블 (Hash Table) - 키 (Key), 값 (Value)을 대응시켜 저장하는 데이터 구조 - 키를 통해 해당 데이터에 빠르게 접근이 가능하다. - 해시 맵, 해시 표라고도 한다. - 해싱 (Hashing) 키를 특정 계산식에 넣어 나온 결과를 사용하여 값에 접근하는 과정 1.1 해시 테이블 구조 - 키 : 해시 테이블 접근을 위한 입력 값 - 해시 함수 : 키를 해시 값으로 매핑하는 연산 (키 -> 해시 값) - 해시 값 : 해시 테이블의 인덱스 - 해시 테이블 : 키-값을 연관시켜 저장하는 데이터 구조 좋은 Hash Function은 Hash Value에 값을 골고루 분포되어 접근할 수 있게 만들어주는 것이다. 그렇지 않은 경우, 접근하는 쪽에 계속 접근하게 돼서해시충돌이 발생하게..
1. 배열(Arrays) 정렬 배열에서 정렬을 할 때는 import.util.Arrays 을 통해 sort() 를 이용함 1.1 String 배열 정렬 (오름차순, 내림차순) public static void main(String[] args) { String[] str_arr = {"a", "d", "c", "b"}; System.out.println("기존 배열"); for (String s : str_arr) { System.out.print(s + " "); // a d c b } System.out.println(); System.out.println("String 배열 오름차순"); Arrays.sort(str_arr); for (String s : str_arr) { System.out.pr..