목록Study/닥치는 대로 주워 담기 (109)
일단 씻고 나가자
2025. 03. 24 월요일 - [Spring] scheduler의 수행 주기 3가지?: fixedDelay, fixedRate, cronfixedDelay는 이전 스케줄링의 종료 시점으로 얼마나 이후에 실행할 것인지,fixedRate는 이전 스케줄링 시작 시점으로 얼마나 이후에 실행할 것인지,cron은 개발자의 설정 주기로 실행. fixedRate는 실행 주기를 정확히 맞출 수 있다는 장점이 있지만,이전 수행과 겹쳐 수행되어 원치 않은 결과를 낼 수 있음. cron은 주기를 7가지를 순서대로 적는 정규식 형태인데,초, 분, 시, 일, 요일, 날짜, 년도(생략 가능) 순으로공백으로 구분하여 적으며, 생략할 부분은 *으로 적는다. 예를 들어 [0 5 * * * *]는 매 시 5분 (ex. 1시 5분, 2..
2025. 03. 17 월요일 - [Java] var 키워드? 적절한 사용 방법?: var 키워드는 java 10부터 도입된 키워드로,변수 선언 시 변수명 앞에 명확한 타입을 선언해야 하는 기존 규칙과 다르게var만 선언해도 알아서 complier가 compile 시점에 타입을 추론해준다. var은 크게 코드를 간결하게 하고 가독성을 높이기 위해 사용되며,반대로 타입이 불명확하여 다른 개발자가 유추하기 힘든 코드라면 사용이 지양된다. 흔히 향상된 for문, 객체 생성 시 인스턴스 생성 부 타입이 명확하다면 변수 앞에,등의 할당하려는 객체 타입이 명확하며 깔끔한 코드 작성이 필요한 상황에 쓰인다. var은 지역 변수에만 사용 가능하고, 전역 변수에는 사용할 수 없으며,초기화 없이 선언, null 할당, 배..

2025. 03. 14 금요일 - 이분 그래프 판별 알고리즘 구현 방법?: 모든 노드를 두 개의 구분으로 나눈다. DFS/BFS를 이용하여, 인접한 노드를 다른 색으로 표시한다.만약 인접한 노드가 나와 같은 색이라면 이분 그래프가 아니므로 판별할 수 있다. 어차피 특정 노드 기준 DFS/BFS로 다 돌았다면 그 그룹은 다 돈 것이며,방문하지 않은 새로운 노드라면 그 노드는 또 다른 그룹일 것이다. - LinkedList, ArrayList 차이?: 기본적으로 ArrayList는 배열 형태로, LinkedList는 원소의 연결로 구현되어 있다. 이 성질 때문에, ArrayList는 중간 위치에 원소 삽입/삭제 시 위치 이전, 이후의 원소들을 모두 한 칸씩 미루거나 당겨야 하므로 단점이 생기며,Linke..
2025. 03. 13 목요일 - [Java] synchronized(this/다른 객체/클래스.class), static synchronized method 차이?: synchronized는 동시성을 보장하기 위한 모니터 기법으로, synchronized method는 메서드 처음부터 끝까지 전체 실행의 동시성을, synchronized block은 해당 범위 내의 코드만의 동시성을 보장한다. synchronized(this/다른 객체)의 차이는 어떤 객체의 모니터를 사용할 것인가이다.Java는 모든 객체 내부에 하나씩의 monitor를 가지고 있는데,this의 경우 지금 스레드가 실행 중인 객체, 즉 부모 객체의 monitor lock을 이용하고,다른 객체의 경우 해당 객체의 monitor lock..

2025. 03. 11 화요일 - [Java] 추상 클래스, 인터페이스의 차이? 람다?: 인터페이스는 추상 클래스의 일종으로 볼 수 있으며,추상 클래스에서 멤버 변수, 메서드를 제거하고 추상 메서드만을 남긴 것이 인터페이스이다. 추상 클래스는 하나 이상의 abstract 메서드를 가진 클래스로,클래스와 추상 메서드에 abstract 키워드를 명시해야 하며,그 외엔 구현된 메서드 및 변수를 가질 수 있다. 인터페이스는 하나 이상의 abstract 메서드만을 가진 것으로,abstract 키워드 명시 없이 추상 메서드를 작성할 수 있으며,상수 및 default, static 구현 메서드를 가질 수 있다. 추상 클래스와 인터페이스 모두 new로 인스턴스화 할 수 없으며,다른 클래스가 상속/구현을 통해 추상 메서..
2025. 03. 05 수요일 - [DB] 서브쿼리, JOIN의 차이?: 서브쿼리(where 사용)는 새로운 쿼리의 동적 조회이므로 새로운 테이블 전체를 부르는 것이라 성능이 저하. 필터링 용도이기 때문에 하나의 행, 혹은 하나의 열로 반환이 되어야 함. JOIN은 결합 도중에 조건에 맞는 테이블을 거르고 합치기 때문에, 테이블이 가볍고 성능적 이점이 있다. 즉, 서브쿼리(where)는 다 불러놓고 조건 검사를, JOIN은 조건에 맞는 애들만 부른다라고 생각하면 됨. https://velog.io/@hanry19/subqeury-%EC%99%80-join-on%EC%9D%98-%EC%B0%A8%EC%9D%B4%EB%A5%BC-%EB%8A%90%EB%81%BC%EB%8B%A4.-%EC%A1%B0%ED%9A..
2025. 03. 04 화요일 - [Java] 숫자로 된 String 문자열을 stream으로 한 글자씩 나누어 int[]에 담는 방법?: stream은 primitive 자료형 대신 Wrapper을 사용하기 때문에, chars()로 바꿀 땐 주의. String str = “123123”; // chars() 이용int[] arr = str.chars().boxed().mapToInt(Character::getNumericValue).toArray(); // split() 이용int[] arr = Arrays.stream(str.split(“”)).mapToInt(Integer::parseInt).toArray(); - [OS] 은행원 알고리즘?: dead lock의 회피를 위한 알고리즘. 현재 프로세..

2025. 02. 26 수요일 - [DB] 트랜잭션 상태?: transaction states. 트랜잭션은 총 5가지의 상태를 가진다. active // 실행 중partially committed // 마지막 연산 실행 완료, commit 직전committed // 성공적으로 종료failed // 오류 발생으로 중단aborted // 오류 발생으로 roll back (재시작 or kill) - [Network] DNS에서 A 레코드와 CNAME 레코드?: DNS에서 전달하는 매핑 정보도 결국 DB에 저장되는 레코드라 볼 수 있다.(name, 실제 ip 쌍으로 저장되는 레코드) A 레코드는 문자열을 ip 값으로 전달해주는 방식이고,CNAME (Canonica NAME, 표준적인) 레코드..
2025. 02. 25 화요일 - [DB] connection, session? 차이?: 커넥션은 WAS와 DB의 물리적인 연결이고, 세션은 논리적인 실행단위이다. 커넥션이란 TCP의 커넥션과 같으며, 클라이언트(WAS)와 서버(DB)가 지속해서 데이터를 주고받기 위해 유지하는 통로이다. 세션은 커넥션 내에서 개별 요청을 수행하는 개별 개체이며, 일반적으로 하나의 커넥션이 하나의 세션을 수행하고 회수된다. (멀티쿼리 등의 특수한 경우에서 하나의 커넥션이 여러 세션을 수행할 수도 있다)세션은 해당 커넥션에서 수행한 트랜잭션 및 쿼리에 대한 문맥(context)을 유지하고 필요하다면 재사용될 수 있으며 (= 여러 트랜잭션 수행 가능), 이때 세션이 저장하는 문맥이란 트랜잭션 수행 상태, 임시 테이블 유지, ..
2025. 02. 24 월요일 - [Java] List의 sort 방법?: Collections.sort(list) / Collections.sort(list, Collections.reverseOrder())list.sort(Comparator.naturalOrder()) / list.sort(Comparator.reverseOrder()) Collections.sort의 경우 reverseOrder가 Collections의 메서드인 것과 달리,list.sort의 경우 정방향/역방향 모두 선언해야 하며, Comparator의 메서드를 활용. - [DB] 테이블에서의 카디날리티? 인덱스 설계 시의 영향?: DB에서 Cardinality는 2가지 의미가 존재한다. 테이블 간 관계 -- One-to-One..