AI 시대에 이미 알고 있었던 내용 말고 흥미로운 사실이 있어서 적어보려고 한다.AI 프롬프트를 제작할때 1. Few-shot Prompting (예시 제공)원하는 결과물의 '좋은 예시'와 '나쁜 예시'를 함께 줘서 AI가 모방하도록 하라.2. Chain of Thought (생각의 사슬)"답변하기 전에 단계별로 생각 과정을 설명해줘"라고 지시하여 AI가 소리 내어 사고하도록 하라. (단순히 답만 내는 것보다 추론 능력이 향상됨)기본적으로 요즘 AI는 사고 과정을 보여줘서 Chain of Thought를 쓴다고 생각했는데, Deep Research 같은 연구 말고는 명시하지 않는 이상 잘 이용하지 않는다고 한다.쓴다 해도 명시적인 CoT보다는 Hidden CoT 여서 사용자에게 보이지 않는다.영상에서는 ..
import java.util.Arrays; 모든 메서드가 static으로 인스턴스 생성이 불필요하다. Arrays는 배열을 위한 필수 유틸리티 클래스이다. Arrays를 사용하면 아주 편리한 배열 관련 기능을 쓸 수 있다 🤩🤩 정렬Arrays.sort(arr); 출력용Arrays.toString(arr);Arrays.deepToString(arr2);int[] arr = {1, 2, 3};System.out.println(arr); // [I@15db9742 (주소)System.out.println(Arrays.toString(arr)); // [1, 2, 3] ✅int[][] arr2 = new int[][]{{1, 2, 3}, {4, 5, 6}};System..
Java에는 여러가지 배열이 있다.코딩테스트에서 자주 쓰는거는 그냥 배열([]), ArrayList 정도 될거 같다. 그 2개의 가장 큰 차이점은 고정 크기이냐 가변 크기이냐의 차이다. 그냥 배열은 고정 크기로 크기를 바꿀 수 없다. ArrayList는 동적 할당을 하여 크기를 바꿀 수 있다. 배열은 어떻게 선언/할당할까여기 보다시피크기만 정해서 빈배열을 만들거나정식 방법과 약식 문법이 있다. 약식 문법은 선언할때만 가능하여 할당 할때는 사용할 수 없다.ArrayList는 어떻게 선언/할당할까List.of와 Arrays.asList를 사용해서 리스트를 할당할 수 있는데List.of는 null 값을 처리하지 못한 다는 것을 기억하자.만약 ArrayList를 배열로 바꾸고 싶으면 이렇게 2가지 방법이 있..
Stateless 아키텍처가 무엇인지 궁금했었다. Load Balancer를 공부하며 Sticky Session에 대해 알게 되었고,요즘에는 Sticky Session 대신 어떤 것을 더 선호하는지 알아보자. Stick Session(Session Affinity)Affinity는 친밀감을 뜻한다.Session Affinity는 말 그대로 세션을 특정 서버에 붙여두는 것을 뜻한다.서버가 세션 데이터를 로컬 메모리에 저장하기 때문에같은 사용자의 요청을 같은 서버로 보내야저장된 세션에 접근이 가능하다.보통 이것을 쿠키로 구현하는데Duration-based cookie(기간 기반)Application-based cookie(애플리케이션 기반)항목Duration-basedApplication-based쿠키 생성..
저번 프로젝트를 진행할때 cert-manager와 Let's encrypt를 썼었다. HTTPS를 위해 꼭 필요한 SSL/TLS에 대해 일단 알아보자. SSL/TLS우선 SSL(Secure Sockets Layer)를 업그레이드 한것이 TLS(Transport Layer Security)이다. (무려 1999년에)모두 client와 서버간 암호화를 위해 만들어진 통신 프로토콜이다. HTTPS의 S도 이 TLS를 이용해 Secure 한다는 뜻이다. SSL은 현재 쓰이지 않고 TLS를 쓰지만 관용적으로 그냥 TLS 대신 SSL라고 부르기도 한다.(현실에서 SSL를 거의 TLS 의미로 계속 쓰고 있는 듯 하다) TLS Handshake, 인증서TLS 암호화 통신을 하려면↓ TLS Handshake 필요하고 ..
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 구현 문제처럼 보이는 BFS 문제였다. 문제 요약이 문제는 알파벳 블록을 특정 수단을 이용하여 제거하고 남은 컨테이너의 수를 구하는 문제이다.입력으로는 전체 블록들의 배치와각 회차별 수단과 제거 알파벳이 주어진다. (["A", "BB", "A"]) 알파벳이 한번만 나오면 지게차를 사용하고 (예시: A)두번 나오면 크레인을 사용한다. (예시: AA) 지게차를 사용할 경우 외부에서 접근 가능한 블록들만 제거가 가능하다. 단, 순차적으로 지게차를 이용해 제거하고 접근 가능한 블록을 연쇄적으로 제거하는 것이 아닌각 회차별 딱 그 시점에서 제거 가능한 블록들만 제거 가능하..
정의부터 살펴보자 IOPS는 Input/Output Operations Per Second를 의미한다.초당 수행할 수 있는 입출력 작업 횟수를 나타낸 것이다. 반면에 Throughput은 한국말로 처리량이다. 초당 전송할 수 있는 데이터의 양을 나타낸다. IOPS는 빈도를 나타내고 Througpht은 양을 나타낸다. 비유로 이해해보자. 만약 고속도로에 작은 차가 많이 있다면 높은 IOPS에 낮은 Throughtput를 의미하고큰 트럭들이 적게 있다면 낮은 IOPS에 높은 Throughtput를 의미한다. 현실에서는 어떤 상황에서 각각이 중요할까? 만약 큰 파일을 읽어야 한다면 당연히 Throughput이 중요할 것이다. 반면에 데이터베이스 쿼리를 많이 해야한다면 IOPS가 중요하다. 수학적으로 본다..
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 각 차들의 입차, 출차 시간이 주어지고 그 시간을 합해서 총 요금을 계산하는 문제다.특별한 조건으로는 만약 입차만 기록되어 있고, 출차가 없을 경우 11:59분에 출차했다고 생각하면 된다. 입력으로는기본 시간, 기본 요금, 추가 시간 단위, 추가 요금 그리고 기록들이 주어진다. 출력으로는차량번호를 오름차순으로 각 차량의 총 요금을 출력하면 된다. 나는 각 기록에 대해서차량번호를 오름차순으로 정렬하기 위한 ArrayList 한개입차 기록을 저장하기 위한 HashMap 한개각 차량의 총 시간을 저장하기 위한 HashMap 한개 이렇게 3개의 자료구조를 사용했다. ..