전체 글
-
[TIL] SSE로 알람기능 구현하기 (Polling / Long Polling / Web Socket / SSE (Server Sent Event))TIL 2024. 11. 18. 00:59
SSE를 이용해서 알림기능 구현하기실시간으로 데이터를 업데이트 해야하는 경우에는 서버로부터 데이터를 받아와야한다.이때는 사용할 수 있는 기술로는1.Polling / Long Polling2.WebSocket 3.SSE와 같은 것들이 있다. Polling 기법클라이언트에서 서버로 주기적, 반복적으로 HTTP 요청을 보내는 것.주기적으로 요청을 보내다보면 만약 데이터에 변동사항이 생겼을 때 이를 확인하고 받아올 수 있음.요청하는데 부담이 크지않거나, 요청주기를 길게 잡아도 될만큼 실시간성이 중요하지않거나, 데이터 갱신이 특정 주기를 가질 때 적합하다. 장점:구현이 단순하다단점:Http Overhead 발생(계속 http 요청을 보내야하기 때문에 리소스 낭비가 발생한다. 요청 주기가 짧다면 http요청이 많아..
-
[알고리즘] java 좌표정렬 (compareTo)알고리즘 2024. 11. 17. 13:42
java 좌표정렬 7. 좌표 정렬 설명N개의 평면상의 좌표(x, y)가 주어지면 모든 좌표를 오름차순으로 정렬하는 프로그램을 작성하세요.정렬기준은 먼저 x값의 의해서 정렬하고, x값이 같을 경우 y값에 의해 정렬합니다.입력첫째 줄에 좌표의 개수인 N(3두 번째 줄부터 N개의 좌표가 x, y 순으로 주어집니다. x, y값은 양수만 입력됩니다.출력N개의 좌표를 정렬하여 출력하세요.예시 입력 1 52 71 31 22 53 6예시 출력 11 21 32 52 73 6 풀이:comparable 인터페이스의 구현 클래스인 Point클래스를 생성.compareTo메서드를 오버라이드한다.*이때 오름차순 정렬 시 음수 값을 리턴해야 한다. ( 오름차순 정렬시 앞의 값에서 뒤의 값을 빼면 음수가 나온다)(this 다음에..
-
[알고리즘] 삽입정렬알고리즘 2024. 11. 14. 12:25
삽입정렬삽입정렬은 앞에서부터 정렬시켜 나아가는 알고리즘이다. 데이터를 정렬할 때 앞에서부터 순차적으로 하나씩 비교하면서 위치를 찾아 삽입하는 방식으로, 적은 양의 데이터를 정렬하거나 이미 정렬된 부분이 많을 때 효율적이다.앞의 정렬된 데이터의 수만큼 순회하고 이를 N-1번 반복하므로 시간복잡도는 N^2이다. 삽입정렬의 진행과정 두 번째 요소부터 시작하여 현재 요소를 앞의 정렬된 부분과 비교.현재 요소보다 큰 값을 만나면 그 값을 오른쪽으로 밀어 공간을 만든다.정렬된 부분에 맞는 위치에 현재 요소를 삽입.이 과정을 리스트의 마지막 요소까지 반복. 코드 구현Scanner sc = new Scanner(System.in);int n = Integer.parseInt(sc.next());int[] arr..
-
[github-actions] 프라이빗 레포지토리 CI/CD 자동배포 설정하기TIL 2024. 11. 13. 21:42
1. PAT(Personal Access Token) 발급 이때 토큰의 권한은 repo관련 모든 권한과 workflow 권한을 추가해둔다.토큰은 1번만 보여주므로 다른곳에 복사해둔다. 2. Repository 권한 설정workflow permission 섹션에서 read and write permission 활성화 (organization의 레포지토리인 경우 어드민 권한 필요할 수 있음) 3. deploy.yml 작성 1.Checkout repositoryactions/checkout@v3 액션을 사용하여 main 브랜치의 최신 코드를 self-hosted 서버로 가져옵니다. 이 단계에서 GITHUB_TOKEN을 사용해 인증이 이루어지며, 워크플로우가 리포지토리에 접근하여 코드를 복사합니다. ..
-
[알고리즘] 버블정렬알고리즘 2024. 11. 13. 14:42
버블정렬 버블 정렬은 인접한 두 요소를 비교하여, 앞 요소가 뒤 요소보다 클 경우 두 요소의 위치를 교환하는 방식으로 정렬하는 알고리즘이다.이를 반복하면 가장 큰 수가 배열의 맨 뒤로 이동하게 됩니다. 각 순회가 끝날 때마다 정렬되지 않은 부분 중 가장 큰 요소가 마지막 위치에 고정된다. 버블정렬은 외부루프에서는 n-1번을 돌고 내부 루프에서는 n-1-i 번의 비교를 수행하므로 시간복잡도는 N^2이다.삽입정렬과 마찬가지로 배열이 길어질수록 비효율적이나 구현은 간단하다. Scanner sc = new Scanner(System.in);int n = Integer.parseInt(sc.next());int[] arr = new int[n];for(int i=0; i arr[j+1]){ ..
-
[알고리즘] 선택정렬알고리즘 2024. 11. 13. 14:33
선택정렬선택정렬은 배열 내 요소 하나마다 나머지 요소들 중 최소값을 찾아 해당 위치에 배치하는 방식의 정렬 알고리즘이다,이 방식은 배열의 첫 번째 요소부터 마지막 요소까지 반복하면서, 각 위치에 맞는 최소값을 찾아 배열 앞부분부터 정렬해 나간다. 배열 내 요소 1개당 n개의 배열 모두를 탐색하고,n개의 요소들에 대해 반복해야하므로 시간복잡도는 N^2 이다.따라서 배열의 크기가 커질수록 비효율적이지만 구현은 단순하다는 특징이 있다. int n = Integer.parseInt(sc.next());int[] arr = new int[n];for(int i=0; i
-
[코테] java - Character 메서드 정리알고리즘/코테 2024. 11. 11. 21:02
Character 클래스 메서드 isDigit(char ch) // 주어진 문자가 숫자인지 확인.예: Character.isDigit('5') → trueisLetter(char ch) // 주어진 문자가 알파벳인지 확인.예: Character.isLetter('a') → trueisWhitespace(char ch) // 주어진 문자가 공백 문자(스페이스, 탭 등)인지 확인.예: Character.isWhitespace(' ') → trueisUpperCase(char ch) // 문자가 대문자인지 확인.예: Character.isUpperCase('A') → trueisLowerCase(char ch) // 문자가 소문자인지 확인.예: Character.isLowerCase('a') → true..
-
[코테] java - 자료구조 TreeSet 정리알고리즘/코테 2024. 11. 8. 15:51
TreeSet 의 용도1. 중복제거2. 정렬 TreeSet 메서드TreeSet Tset = new TreeSet(); Tset 생성 (오름차순 정렬)TreeSet Tset = new TreeSet(Collections.reverseOrder()); Tset 생성(내림차순 정렬)Tset.add() // 값 추가Tset.remove() // 특정 값 제거Tset.size() // 크기 반환Tset.first() // 오름차순은 최소값, 내림차순은 최대값 (정렬시 맨앞 자료) 반환Tset.last() // 오름차순은 최대값, 내림차순은 최소값 (정렬시 맨뒤 자료) 반환