분류 전체보기(75)
-
스프링에서의 WebSocket 설정과 SockJS
WebSocketws프로토콜을 기반으로 클라이언트와 서버 사이에 지속적인 완전 양방향 연결 스트림을 만들어주는 기술이다. 사전 지식폴링(Polling)>- 단방향- 클라이언트 -> 서버- 클라이언트에서 주기적으로 서버에 업데이트 있는지 확인하는 요청을 보냄 서버센트 이벤트(SSE; Server Sent Event)>- 단방향- 서버 -> 클라이언트- 한 번 연결하면 서버가 클라이언트에 지속적으로 데이터를 보냄- 클라이언트에서 서버로 데이터를 보낼 수 없음 웹 소켓(WebSocket)>- 양방향- 서버 클라이언트- 한 번 웹 소켓이 연결되면 계속 연결된 상태로 있어서 따로 업데이트가 있는지 요청을 보낼 필요가 없음- node의 모듈 및 라이브러리: ws, Socket.IO WebSocket 객체 생성하기..
2024.06.18 -
JPQL - Criteria 기초 (조회, 집합, 정렬)
Criteria 쿼리는 JPQL을 자바 코드로 작성하도록 도와주는 빌더 클래스 API이다. Criteria를 사용하면 문자가 아닌 코드로 JPQL을 작성하므로 문법 오류를 컴파일 단계에서 잡을 수 있고 문자 기반의 JPQL보다 동적 쿼리를 안전하게 생성할 수 있는 장점이 있다. Criteria 기초Criteria API는 javax.persistence.criteria 패키지에 있다. 아래는 단순한 Criteria 쿼리이다.//JPQL: select m from Member mCriteriaBuilder cb = em.getCriteriaBuilder(); // 1. Criteria 쿼리 빌더// 2. Criteria 생성, 반환 타입 지정CriteriaQuery cq = cb.createQuery(..
2024.05.28 -
indexOf(), substring() 알고리즘
간단한 문장 속 단어 알고리즘을 풀어보겠습니다.문장 속 가장 긴 단어를 출력하는 프로그램이고, 가장 길이가 긴 단어가 여러개일 경우 문장 속에서 가장 앞쪽에 위치한 단어를 답으로 합니다. 각 단어는 공백으로 구분됩니다. 입력 예시it is time to go 출력 예시time package com.example.testproject;import java.util.Scanner;class Main{ public String solution(String str){ String answer = ""; int m = Integer.MIN_VALUE, pos; //가장 작은 값으로 초기화 /* 1. split을 쓰는 방법 String[] s = str.split(" ")..
2024.05.20 -
대소문자 변환 알고리즘
대문자와 소문자가 같이 있는 문자열을 받아 대문자는 소문자로, 소문자는 대문자로 변환하는 알고리즘을 구현해보자.import java.util.Scanner;class Main{ public String solution(String str){ String answer = ""; for(char x : str.toCharArray()){ if(Character.isLowerCase(x)){ answer += Character.toUpperCase(x); }else{ answer += Character.toLowerCase(x); } } return answer; } ..
2024.05.20 -
알고리즘 - 문자열
문자열에서 특정 문자의 갯수를 구하는 간단한 알고리즘을 구현 해보겠다.package com.example.testproject;import java.util.Scanner;class Main{ public int solution(String str, char c){ int answer=0; str = str.toUpperCase(); c = Character.toUpperCase(c); for(int i=0; i for문은 둘 중 아무거나 사용해도된다. 주석으로 되어있는 for문은 향상된 for문이다. 결과는 아래와 같다. ※ 정리 ※String, Char 의 차이→ String은 문자열이고 Char은 문자(한글자)이다.static 메소드는 인스턴..
2024.05.20 -
JPQL - Named 쿼리 - 정적 쿼리
JPQL 쿼리는 크게 정적 쿼리와 동적 쿼리로 나눌 수 있다.- 동적 쿼리: em.createQuery(“select…”) 처럼 jpql을 문자로 완성해서 직접 넘기는 것. 런타임에 특정 조건에 따라 jpql을 동적으로 구성할 수 있다.- 정적 쿼리: 미리 정의한 쿼리에 이름을 부여해서 필요할 때 사용할 수 있는데 이것을 Named 쿼리라 한다. Named 쿼리는 한 번 정의하면 변경할 수 없는 정적인 쿼리다.Named 쿼리는 애플리케이션 로딩 시점에 JPQL 문법을 체크하고 미리 파싱해둔다. 따라서 오류를 빨리 확인할 수 있고, 사용하는 시점에는 파싱된 결과를 재사용하므로 성능상 이점도 있다. 그리고 Named 쿼리는 변하지 않는 정적 SQL이 생성되므로 데이터베이스의 조회 성능 최적화에도 도움이 된다..
2024.05.14