코딩/TIL

2025.01.07. TIL

yoney 2025. 1. 7. 21:15


알고리즘

리스트의 최소값 구하기: Collections.min(list)

Array를 내림차순으로 정렬하기: Arrays.sort(arr, Collections.reverseOrder());

//오늘 풀었던 문자열 내림차순으로 배치하기 문제
import java.util.Arrays;
import java.util.Collections;
class Solution {
        public String solution(String s) {
            String answer = "";
            String[] arr = s.split("");
            Arrays.sort(arr,Collections.reverseOrder());
            for (int i = 0; i < arr.length; i++) {
                answer+=arr[i];
            }
            return answer;
        }
    }

 


자바

프로세스: 실행중인 프로그램을 의미. os에서 프로세스에게 code, data, memory 할당

쓰레드: 프로세스 내에서 일하는 코드 실행의 흐름(일꾼). 프로세스에 프로그램 실행 요청이 들어오면 쓰레드가 일을 처리함. 명령 실행을 위한 stack, heap 영역 존재

자바에서 메인 쓰레드가 자신 외의 작업 쓰레드들을 생성해서 병렬로 코드 실행. 여러 작업을 동시에 할 수 있어서 성능이 좋아지고 자원의 효율적인 사용이 가능하지만, 프로세스의 자원을 공유하면서 작업하기 때문에 자원을 서로 사용하려고 하는 충돌이 발생할 수 있음

 

자바에서 쓰레드를 구현하는 방법은 1. Thread 상속(다중상속이 안되기 때문에 효율성 문제로 잘 사용 안함)  2. Runnable 인터페이스 사용 3. 람다식 사용(간단하고 빠르게 작성 가능)

 

쓰레드가 여러개인 멀티쓰레드인 경우 순서가 정해져있지 않으면 쓰레드들이 번갈아가면서 일정하지 않게 출력됨.-> setPriority, getPriority()로 우선순위 설정 및 확인 가능(1-10까지)

 

데몬쓰레드: 보이지 않는 곳에서 실행되는 낮은 우선순위를 가진 쓰레드. 그래서 좀 늦게 실행됨

사용자 쓰레드: 높은 우선순위를 가진 쓰레드. 메인 쓰레드가 그 대표적인 예

 


프로젝트

enum: final static String으로 나타내던 고정값들을 모아놓은 집합이라고 할 수 있다. 그 집합을 넘어서서 필드와 메소드도 생성 및 선언이 가능하고 클래스처럼 쓸려면 생성자가 필수.getter는 사용 가능하지만 고정된 값이기 때문에 setter는 사용x

람다(=익명함수): 메소드를 하나의 식으로 표현한 것으로, (a,b)->a+b등으로 표현이 가능.

 

프로젝트에서 enum클래스에 람다를 적용하여 이를 활용하고자  Bifunction을 알아보았다.

Bifunction은 2개의 인자를 받고 1개의 객체를 리턴하는 함수형 인터페이스로, 프로젝트에서는 Long 타입 값 두개를 받아서 Double로 반환할 것이기에 private final Bifunction<Long, Long, Double> expression으로 선언했고

그리고 연산 결과는 expression.apply(a,b)형식의 메소드로 알 수 있다

 

그 후 연산을 시행하는 ArithmeticCalculator에 이 enum클래스를 활용하였다. 콘솔에서 operator를 받으면 그 operator와 enum 클래스 안의 operator와 일치하는 걸 찾아서 연산하고 그 결과를 list에 저장하도록 한다

'코딩 > TIL' 카테고리의 다른 글

2025.01.13 TIL  (0) 2025.01.13
2025.01.10 TIL- 프로젝트 해설 강의  (0) 2025.01.10
2025.01.06 TIL  (0) 2025.01.06
2025.01.02 TIL  (0) 2025.01.02
2024.12.31 TIL  (0) 2024.12.31