분류 전체보기 328

0. BufferedReader, BufferedWriter, Scanner, StirngTockenizer

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

영속성 컨텍스트

1. 영속성 컨텍스트 란? 엔티티를 영구저장하는 환경이라는 의미이다. 영속성 컨텍스트는 엔티티 매니저를 생성할 때 하나 만들어진다. 예를 들어 em.persist(member); 에서 persist() 메서드는 엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨택스트에 저장한다. 2. 엔티티의 생명주기 1) 비영속 : 영속성 컨텍스트와 전혀 관계가 없는 상태이다. Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); 2) 영속 : 영속성 컨텍스트에 저장된 상태이다. 엔티티 메니저를 통해 엔티티를 영속성 컨텍스트에 저장하고 관리하는 상태를 영속 상태라고 한다. em.persist(member); 3) 준영속 : 영속..

프로세스(Process)와 스레드(Thread)

1. 프로세스 1) 의미 : 프로세스란 실행 중인 프로그램을 의미하며 자원(메모리, CPU)과 스레드로 구성 하나의 새로운 프로세스를 생성하는 것 보다 하나의 새로운 스레드를 생성하는 것이 더 적은 비용이 든다. 2. 스레드 1) 의미 : 프로세스 내에서 실제 작업을 수행하는 것을 스레드라고 하며, 모든 프로세스는 하나의 스레드를 가지고 있다. 2) 멀티 스레드 : 자원 + 스레드 + 스레드 + 스레드...(싱글 스레드 = 스레드가 하나인 경우) 멀티 태스킹 : 여러 개의 프로세스가 동시에 실행될 수 있는 것 멀티 스레드 장점 : 시스템 자원을 보다 효율적으로 사용할 수 있다. 사용자에 대한 응답성이 향상된다(파일 전송되면서 채팅도 가능) 작업이 분리되어 코드가 간결해진다. 멀티 쓰레드 단점 : 동기화에..

CS/ETC. 2021.06.22

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..

mapper namespace에 관하여

1. 언제 namespace에 명확하게 인터페이스 명을 구체적으로 패키지까지 다 명시해주어야 하는가? 1) root-context.xml com.legalcounsel.javaprj.model.Auth com.legalcounsel.javaprj.model.Board com.legalcounsel.javaprj.model.BoardComment com.legalcounsel.javaprj.model.CommentProfile com.legalcounsel.javaprj.model.User com.legalcounsel.javaprj.model.BoardReplyVo com.legalcounsel.javaprj.model.FileVO 2) 인터페이스와 그 구현 클래스 package com.legalcoun..

카테고리 없음 2021.06.07

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()...