Back-end 68

변수명 짓는 방법

1. 변수명을 거의 동사로 시작하지 않는다.(boolean변수는 isLoggedIn) 명사, 형용사, 부사만 들어간다. 2. 최대한 간결하게 && 의미 명확히 전달되게 3. 관사 쓰는거 아니다. auser 이런 거 안된다. (users-복수, user-단수) 4. 전치사 쓰는 것 아니다.(~의 갯수) numberOfUsers 보다는 userCount아니면 numUsers 5. 마이크로소프트 오픈소스보면 변수명 잘 지어져있다. https://tecoble.techcourse.co.kr/post/2020-04-24-variable_naming/ 좋은 코드를 위한 자바 변수명 네이밍 JAVA… tecoble.techcourse.co.kr

@SuppressWarnings

1. @SuppressWarnings 이란? @SuppressWarning 어노테이션은 컴파일 경고를 사용하지 않도록 설정해주는 것으로 컴파일 에러가 나올 때 그 경고를 없앨 수 있도록 하는 것이다. 두 가지 종류를 같이 사용할 때는 @SuppressWarnings({"unused","unchecked"})처럼 객체 형식으로 묶어서 사용할 수 있다. //unused : 사용하지 않는 코드 또는 불필요한 코드가 있을 경우 경고를 억제시킨다. @SuppressWarnings("unused") private final Logger logger = LoggerFactory.getLogger(getClass()); //all : 모든 경고 //cast : 캐스트 연산자 관련 경고 //dep-ann : 사용하지 말..

ENUM

1.열거형이란? 관련 상수(열거형 상수는 객체임)들을 같이 묶어 놓은 것을 말한다. java의 열겨형은 값과 타입 둘다 체크함 2. 열거형 정의하는 방법 enum 열거형 이름{ 상수명1, 상수명2, ...} enum Direction {EAST, SOUTH, WEST, NORTH} class Unit{ int x, y; Direction dir ; //열거형을 인스턴스 변수로 선언 void init(){ dir = Direction.EASE; //유닛의 방향을 EAST로 초기화(클래스의 static 변수를 참조하는 것과 동일) 열거형 상수 비교에 ==와 compareTo(비교연산자 사용 불가 대신 compareTo사용)사용가능 compareTo 같으면 0, 왼쪽이 크면 양수, 오른쪽이 크면 음수 3. 열..

람다식(Lamda expression)

1. 람다식이란? 자바는 람다식의 도입으로 인해 객체지향언어인 동시에 함수형 언어가 되었다. 람다식의 장점은 과거 메서드보다 간결하며 이해하기 쉽다는 것이다. 모든 메서드는 클래스에 포함되어야 해서 클래스를 새로 만들어야 했고 객체를 생성해야 메서드를 호출할 수 있었지만, 람다식은 람다식 자체로 이 모든과정을 해결할 수 있다. 람다식은 아래와 같이 표현된다. 반환타입 메서드이름(매개변수 선언){ 문장들} (매개변수 선언) -> {문장들 } //ex1) int max(int a, int b){ return a>b? a:b; } //람다식으로 변환하면 (int a, int b) ->{ return a>b? a:b;} (int a, int b) -> a>b? a : b (a,b) -> a>b? a:b //ex..

Scanner

1. 특징 1) 입력을 받을 때 String으로 받고 싶으면 next() 혹은 nextLine()을 사용하면 되고 int 로 입력받고 싶을 경우 nextInt()를 사용하여 입력받으면 된다. 2) 공백(띄어쓰기) 또는 개행(줄 바꿈)을 기준으로 읽는다. Scanner의 입력 메소드들은 대부분 공백과 개행(' ', '\t', '\r', '\n')을 기준으로 읽는다. 2. 사용예시 import java.util.Scanner;// Scanner 클래스 호출 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in);// Scanner 객체 생성 byte a = in.nextByte(); // b..

0. StringBuilder vs. StringBuffer

1.String String은 Immutable 하기 때문에 값을 변경할 수 없다. 따라서. concat()을 이용하여 값을 덧붙일 때 기존 String에 있던 값을 버리고 새로운 값을 할당한다. (concat이나 +를 사용하면 속도가 현저히 느려짐- 힙 메모리에 많은 임시 가비지가 생성되므로 힙 메모리 부족으로 애플리케이션 성능에 영향을 끼친다. ) 2. StringBuffer, StringBuilder String과 반대로 StringBuilder, StringBuffer는 가변성을 가지기 때문에 .append(), .delete()등의 api를 이용해서 동일 객체 내에 문자열을 변경하는 것이 가능하다. 멀티 쓰레드 환경에서 StringBuffer를 사용하여 값이 예상치 못하게 변경되는 것을 방지할 ..

0. BufferedReader, BufferedWriter, Scanner, StirngTockenizer

1. 버퍼 버퍼란 특정 데이터를 한 곳에서 다른 곳으로 전송할 때 일시적으로 그 데이터를 보관하는 임시 메모리 영역이다. 입출력 속도를 향상하기 위해서 버퍼를 사용한다. - 버퍼를 이용한 입력 : BufferedReader - 버퍼를 이용한 출력 : BufferedWriter - 버퍼 Flush : 버퍼에 남아있는 데이터를 출력시키는 작업 2. BufferedReader 1) Scanner와 차이 Scanner는 띄어쓰기, 엔터 등을 경곗값으로 인식해서 따로 가공할 필요가 없어 사용하기에 편리하다. 그러나 BufferedReader는 엔터만 경계로 인식하고 받은 데이터가 String으로 고정되기 때문에 데이터를 따로 가공해야 하는 경우가 많다. 그 대신 BufferedReader가 빠르다. (알고리즘 문..

X. GarbageCollection(가비지 컬렉션)

1. Garbage Collection(가비지 컬렉션)이란? JVM에서 가비지 컬렉터가 불필요한 메모리를 정리해 준다(메모리 누수 방지) 2. Minor GC와 Major GC JVM의 Heap영역은 처음 설계될 때 2가지를 전제로 설계되었다. 1. 대부분의 객체는 금방 접근 불가능 상태가 된다. 2. 오래된 객체에서 새로운 객체로의 참조는 아주 적게 존재한다. 즉, 객체는 대부분 일회성이 되며, 메모리에 오랫동안 남아있는 경우는 드문 것이다. 그렇기 때문에 객체의 생존 기간에 따라 물리적인 Heap 영역을 나누게 되었는데, 이에 따라 Young, Old 총 2가지 영역으로 설계되었다. (초기에는 Perm영역이 존재했지만, java8부터 제거됨) 1) Minor GC Young 영역( Young Gene..

@transactional annotation

DefaultTransactionDefinition def = new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); // transaction 상태 정보 알려줌 TransactionStatus status = txManager.getTransaction(def); // 에러 없으면 commit txManager.commit(status); } catch (TransactionException ex) { // 에러 있을 경우 rollback txManager.rollback(status); LOGGER.error("insertBoard"); public void ins..

Querystring vs. @PathVariable 이용상 차이점

1. Querystring https://prde.tistory.com/61?category=946261 ※Controller에서는 아래와 같이 쿼리 스트링일 때는 getParameter로 ~ @RequestMapping("/boardRead") public String boardRead(HttpServletRequest request, Model model){ Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); UserDTO user = userDetailsDao.findUserByEmail(authentication.getName()); String userid = user.getUserid()...