728x90

Java 44

Java(자바) - 스트림

strame() 으로 스트림 객체를 받아 처리 체인 패턴으로 중간 처리와 최종 처리를 연계하여 사용 가능 최종 처리가 있어야 오리지널 및 중간 처리 스트림이 동작 내부 반복자 컬렉션 바깥에서 가져와 처리하는 외부 반복자와 달리 내부에서 처리하며 병렬 작업이 가능 중간 처리 매핑 mapToXXX() : 다른 요소로 변환 Function 함수형 인터페이스 사용 람다식으로 표현 asXXXStream() : 각 long 혹은 double요소로 변환 boxed() : wrapper 클래스로 변환 flastMapXXX : 복수 개의 요소들로 변환한 새로운 스트림 리턴 필터링 distinct() : 중복 제거 filter() : 조건 필터링 Predicate 함수형 인터페이스 사용 람다식으로 표현 정렬 sorted(..

BackEnd 학습/Java 2024.01.31

Java(자바) - 컬렉션 프레임워크

List 순서를 유지하고 저장 중복 저장 가능 객체를 인덱스로 관리 객체의 주소를 저장 ArrayList 제한 없이 객체 추가 가능 배열과 동일한 방식(삭제 혹은 삽입시 앞 혹은 뒤 객체들을 이동 시켜 인덱스 구성 맞춤) Collections.synchronizedList()메소드로 동기화 매핑 가능 Vector synchronized 메소드로 구성되어져 있어 멀티 스레드가 동시에 실행 불가 멀티 스레드 환경에서 안전하게 객체 추가 및 삭제 가능 LinkedList 인접 객체를 체인처럼 연결해서 관리 앞 뒤 링크만 변경하면 되므로 빈번한 삽입, 삭제 작업에 성능이 좋음 Set 순서를 유지하지 않고 저장 중복 저장 안됨 하나의 null만 저장 가능 HashSet hashCode()의 리턴값이 같고, equ..

BackEnd 학습/Java 2024.01.29

Java(자바) - Thread(스레드)

멀티 스레드 개념 프로세스(process) 실행 중인 하나의 애플리케이션 하나의 애플리케이션은 다중 프로세스 생성 가능 ex) chrome 2개 멀티 프로세스는 서로 독립적이며 하나의 프로세스에서 오류가 발생해도 다른 프로세스에 영향을 미치지 않음 멀티 태스킹(multi tasking) 두 가지 이상의 작업을 동시에 처리 스레드(thread) 하나의 코드 실행 흐름 멀티 스레드는 애플리케이션 내부에서의 멀티 태스킹이라 볼 수 있음 멀티 스레드는 하나의 프로세스 내부에서 생성되기 때문에 다른 스레드에 영향을 미칠 수 있음 모든 자바 애플리케이션은 메인스레드가 main() 메서드 실행으로 시작 싱글 스레드는 메인 스레드가 종료되면 프로세스도 종료 멀티 스레드는 실행 중인 스레드가 있으면 프로세스가 종료되지 ..

BackEnd 학습/Java 2024.01.25

Hash Table/Hash Map

Hash Table Hash table은 효율적 탐색을 위한 자료구조 key-value 형태로 데이터 입력 받음 HashMap과 다르게 null 입력 불가능 키는 중복이 안되지만 값은 중복 허용 Hash Map key와 value는 모두 객체 형태 key와 value 자료형 별개 가능 key를 이용해 value에 접근 가능 HashMap hashMap = new HashMap(); get(key)를 하여 key가 존재하지 않을 때 null을 return 해줌 → 해당 기능을 통해 값이 있는지 없는지 판단을 바로 할 수 있음 -10^9 ~ 10^9 는 int 형의 범위 import java.util.*; class Solution { public int longestConsecutive(int[] nums..

List(리스트)

List 순서를 가지고 데이터를 저장하는 자료구조 Arrary List, Linked List가 존재 Array List 연속된 메모리에 저장하는 구조 LinkedList 주소값을 가지고 비연속된 메모리에 저장하는 구조로 주소값을 통해 다음 값을 알 수 있음 Array List 특징 고정된 저장 공간 순차적인 데이터 static array(정적 배열) 선언 시에 size를 정하여 해당 size만큼의 연속된 메모리를 할당 받아 data를 연속적/순차적으로 저장하는 자료구조(static array)⇒ dynamic array 사용 ⇒ 매번 고정되어진 크기 때문에 해당 크기보다 크게 저장이 불가능함 random access 배열 변수는 자신의 첫번째 주소값을 가리킴 첫번째 주소값만 알고 있으면 어떤 주소든 접..

Two Pointer (투포인터)

정렬이 되어진 상황에 Two pointer 사용 리스트에서 두가지 원소를 가지고 특정한 값을 도출해야할 때 사용 아래의 문제는 nums가 주어졌을 때 두 원소를 더해서 target이 되면 True 아니면 False를 return 하는 전형적인 Tow Pointer 문제 import java.util.*; class Solution { public int[] twoSum(int[] nums, int target) { int[] answer = new int[2]; int[][] tmp = new int[nums.length][2]; int l = 0; int r = nums.length - 1; for(int i = 0; i < nums.length; i++){ tmp[i][0] = nums[i]; tmp..

Spring(스프링) - 순수 Java를 이용

프로젝트 진행 시 설계를 먼저 진행 DB는 정해져 있지 않을 가능성이 크므로 인터페이스로 구현(변경 용이) 클라이언트는 Service를 통해 기능을 접근하며 Service는 DB를 접근 일반적 구조 - Service - Entity - Repository Entity를 제외한 나머지는 interface로 생성하여 이를 구현하여 사용 초기 DB는 정해져 있지 않을 가능성이 크므로 단순히 자료구조를 이용하여 구현 ex)HashMap 사용 매번 구현한 후 테스트 케이스 작성 필수!! Junit을 사용하여 테스트 진행 테스트 방식 #given 데이터를 생성 #when 서비스 사용 #then Assertions를 이용하여 검증 출처 : https://www.inflearn.com/course/%EC%8A%A4%E..

자바성능튜닝 - JVM

HotSpot VM - 자바 성능을 개선하기 위해 JIT(Just In Time) 컴파일러를 만들었습니다. - JIT 컴파일러 : 프로그램의 성능에 영향을 주는 지점에 대해서 지속적으로 분석하여 분석된 지점은 부하를 최소하 하고 높은 성능을 내기 위한 최적화의 대상이 됩니다. - HotSpot VM은 VM 런타임, JIT 컴파일러, 메모리 관리자로 구성되어져 있습니다. - HotSpot VM 런타임에 GC방식과 JIT 컴파일러를 맞추어 사용할 수 있습니다. - VM 런타임은 JIT 컴파일러용 API와 GC용 API를 제공하며 JVM을 시작하는 런처와 스레드 관리, JNI 등을 제공합니다. JIT Optimizer - Client 버전과 Server 버전으로 나뉘어져 있습니다. - JIT는 각 메서드를 컴..

자바 성능 튜닝 - 서버 세팅

성능테스트를 통해서 병목 지점을 미리 파악하는 것이 좋은데 문제가 될만한 세팅 값을 먼저 진단하는 것이 효율적입니다. - 웹 서버 세팅 - WAS 서버 세팅 - DB 서버 세팅 - 장비 세팅 웹 서버 설정 - 웹 서버는 WAS 앞에 두어야 합니다. 정적인 부분은 웹 서버에서 처리해야 합니다. 그렇지 않으면 WAS 에서 웹 서버 역할까지 수행해야 하므로 많은 리소스들이 낭비되게 됩니다. - 아파치 웹 서버는 MPM을 사용하는데 MPM은 Multi - Processing Module의 약자로 여러 개의 프로세싱 모듈 기반의 서비스를 제공한다는 의미입니다. - 설정 파일에 ThreadsPerChild는 웹 서버가 사용하는 스레드의 개수를 지정하며 아파치 프로세스 하나당 지정한 수만큼 스레드가 생성됩니다. - ..