Java(70)
-
[JAVA 기술면접] 성능튜닝
자바 애플리케이션, JVM 실행과정JVM 이란?- 스택 기반의 가상 머신- OS에 구애받지 않고 재사용 가능하게 함- 자바 바이트코드를 실행할 수 있는 주체자바 실행과정JVM은 OS로부터 프로그램이 필요로하는 메모리를 할당 받음javac(자바 컴파일러)가 .java코드를 읽어 .class로 변환시킨다 (.java -> .class)Class Loader를 통해 class 파일들을 JVM으로 로딩로딩된 class 파일들은 Execution Engine을 통해 해석해석된 바이트코드는, Runtime Data Area에 배치됨 (JVM은 필요에따라 실행중간에, 스레드 동기화와 GC 작업을 수행)클래스 로더란?- 자바는 런타임 도중에 로드하고 링크하는 특징이 있다- 런타임 도중에 (동적) 로드를 담당하는 부분이..
2024.10.24 -
[JAVA 기술면접] 객체지향 특징 (4가지 특징, SOLID)
객체지향이란?필요한 데이터를 추상화 시켜서 상태와 행위를 가진 객체를 만들어서 사용절차적인 것과 달리, 객체들을 이용하여 유기적인 상호작용을 통해서 로직을 구성장점- 코드 재사용성 용이- 유지보수의 편리함- 대형 프로젝트에 적합단점- 처리속도가 상대적으로 느림- 객체가 많으면 용량이 커짐- 설계시 많은 시간과 노력이 필요 객체지향의 4가지 특징캡슐화접근제어자를 이용하여, 객체 안에 노출되어야할 것과 노출되지 말아야할 것을 정의하고 접근을 제어하여 은닉하는 것이 목적코드의 수정이 있을때도, 영향범위를 예측할 수 있어 유용함상속부모 객체의 속성과 기능을 이어받아 사용이 가능필요에 따라, 자식객체에서만 특정하여 수정이 가능추상화"공통의" 속성이나 기능을 묶어서 표현주로 추상화클래스 혹은 인터페이스를 이용하여 ..
2024.10.24 -
[슬라이딩윈도우] 백준 12891번
문제문자열 {A, C, G ,T}인 문자열만 주어지는 상황1. 문자열 길이(S)를 입력 받고, 그 중에 부분 문자열(P)을 가지고 비밀번호를 만듬2. 부분 문자열중에서 비밀번호를 만들 때,A,C,G,T 각각의 만족하는 최소 조건이 존재3. 최소 조건을 만족하면 비밀번호를 만들 수 있음 (해당 개수 세기)4. 2초이내, (1 ex) A C G T A C G G T A C C (주어진 문자열) (A (2개), C(0개), G(1개), T(1개) 이상 조건 충족)->해당 조건을 만족하는, 비밀번호 만들 수 있는 개수 구하기 문제분석1,000,000개 이므로, O(n)으로 시간복잡도를 가져야함슬라이딩 윈도우를 이용하여, 부분문자열을 표현조건에 맞는 비밀번호 생성 문자를 이용하여, 몇개를 만들 수 있는지 구현[..
2024.10.24 -
[기능구현#2] 스프링 검증 어노테이션 생성 (Spring bean validation)
1. 스프링 어노테이션 만들기2. 검증 관련 어노테이션 클래스 구현3. 패스워드 유효성 검사 예제 스프링 어노테이션 만들기@Constraintvalidation을 하기위한 구현체 연결 어노테이션@Target어노테이션을 사용할 곳default 값은 모든 대상Type 종류 타입설명ElementType.FIELD필드ElementType.METHOD함수ElementType.PARAMETER파라미터ElementType.CONSTRUCTOR생성자ElementType.LOCAL_VARIABLE지역변수ElementType.PACAGE패키지ElementType.ANNOTAION_TYPE다른 어노테이션@RETENTION어노테이션의 지속 시간종류타입설명RetentionPolicy.SOURCE컴파일 후에 해당 어노테이션이 사..
2024.10.23 -
[기능구현#1] 패스워드 검증 추가하기
1. 직접 검증2. BindingResult3. 애노테이션 사용 직접검증HashMap을 이용하여, error를 담고 ModelAttribute로 반환thymeleaf의 조건문과 삼항문을 이용하여, error 인 경우와 정상인경우 렌더링//[Controller] Map errors = new HashMap(); if ( member.getPasswd() != null && member.getPasswd().length() >= 8 ){ if (member.getPasswd().matches("[a-zA-Z]+")){ errors.put("passwd", "비밀번호는 숫자와 특수문자를 포함해야합니다."); }..
2024.10.23 -
[투포인터] 백준 1253
1. 문제2. 문제 분석3. 슈도코드4. 구현문제주어진 N (1 - 숫자 범위 : ( 숫자 - 2초 이내 풀어낼 것 ( CPU 계산 : 1초에 1억번 연산 )- N세제곱은 시간 오버이므로, 주의하며 구현 문제분석N제곱 안에 문제를 풀어내야함 (시간제한)투포인터 ( O(n) )를 사용하여 , 두수의 합으로 표현되는 수 찾기 가능단, 두수의 합으로 표현되는 수의 개수를 찾는것이기에 한가지 조합만 있으면 됨[투포인터]* 투포인터 사용 전, 오름차순 정렬이 전제 조건임1. Arr[i] + Arr[j] 2. Arr[i] + Arr[j] > M // j 감소3. Arr[i] + Arr[j] == M // count 증가, i 증가, j 감소 슈도코드N (배열의 개수) for (N만큼 반복){ A배열에..
2024.10.23