전체 글 87

Java | Document Class / Element Class / Jsoup 크롤링 예제 코드

Document 및 Element 클래스는, XML 문서를 다루기 위한 DOM(Document Object Model) API에 속하는 클래스입니다. 1. Document 클래스 Document 클래스는 XML 문서의 전체 구조를 나타냅니다. Document 객체는 XML 문서의 루트 엘리먼트에 대한 진입점이며, 해당 문서의 전체 트리 구조를 포함합니다. 2. Element 클래스 Element 클래스는 XML 문서에서 특정 엘리먼트를 나타냅니다. Element 객체는 XML 문서의 특절 엘리먼트에 대한 정보를 포함하며, 이 엘리먼트의 하위 엘리먼트, 속성 등을 다룰 수 있습니다. 보통 XML 문서를 파싱할 때, XML 문서의 구조를 Document로 읽어오고, 그 다음에 원하는 정보 추출을 위하여, E..

Java 2024.02.29

Java | TrustManager이란? / SSL 인증서 없이 https 통신

TrustManager란? Java에서 SSL/TLS 연결에서 서버의 인증서를 검증하는 데 사용되는 인터페이스입니다. SSL/TLS 연결은 데이터의 암호화 및 보안 통신을 위해 사용되며, 서버의 인증서를 신뢰할 수 있는 것으로 확인하는 것이 중요합니다. TrustManager를 사용하면 클라이언트 애플리케이션이 서버의 인증서를 검증하고, 서버가 신뢰할 만한지 여부를 결정할 수 있습니다. TrustManager는 보통 X509 형식의 디지털 인증서에 대한 신뢰 관리를 담당합니다. X509TrustManager 인터페이스 TrustManager 인터페이스의 하위 인터페이스로, X509 디지털 인증서를 처리합니다. checkClientTrusted 및 checkServerTrusted 메소드를 제공하여 클라이..

Java 2024.02.29

암호화된 값을 URL 인코딩 시 주의할점 + Tip!

1. Base64 Encoding 후 URL 인코딩 대부분의 암호화 알고리즘은 이진 데이터를 생성하므로, 보통 Base64 인코딩을 하여 텍스트로 변환합니다. 그 후에 URL Encoding을 적용합니다. Base64로 인코딩한 값은 URL 안전하지 않은 문자를 포함할 수 있기 때문에 URL 인코딩을 추가로 적용하여 안전한 URL 문자열로 만들어야 합니다. 2. 특수 문자 처리 URL에 사용되는 몇 가지 특수문자들은 문제를 일으킬 수 있습니다. 예를 들어 '+' 문자는 URL에서 공백을 나타내는 데 사용되어 주의가 필요합니다. Base64 인코딩 후에 나타날 수 있는 '+'문자를 '%2B'로 바꾸어야 합니다. 3. 길이와 URL 제한 URL에는 길이 제한이 있을 수 있어, 암호화된 값이 너무 크면 URL..

개발지식공간 2024.02.29

Base64와 UTF-8의 차이점

1. Base64(인코딩/디코딩) 주로 이진 데이터를 텍스트로 변환하는 데 사용합니다. 이진 데이터는 특수한 문자나 제어 문자를 포함할 수 있어서 일반적인 텍스트로 처리하기 어려울 때 Base64를 사용하여 안전하게 전송하거나 저장할 수 있습니다. 64개의 문자로 이루어진 알파벳(영문 대소문자, 숫자, '+' 및 '/')을 사용하여 이진 데이터를 표현합니다. 각 6비트의 이진 데이터 뭉치를 하나의 문자로 매핑하여 문자열을 생성합니다. 2. UTF-8(문자 인코딩) 텍스트 데이터를 컴퓨터에서 처리하고 저장하기 위한 문자 인코딩 방식 중 하나입니다. 주로 유니코드 문자를 나타냅니다. 가변 길이 인코딩 방식으로, 각 문자를 1byte에서 4byte까지 다양한 크기의 byte로 나타냅니다. Base64는 이진 ..

개발지식공간 2024.02.29

Java | JSONObject 클래스란?

JSONObject? JSON 형식의 데이터를 표현하는 Java 클래스입니다. JSON(JavaScript Object Notation)은 경량의 데이터 교환 형식으로, 사람이 읽고 쓰기도, 기계가 분석하고 생성하기도 쉽습니다. JSONObject는 주로 자바에서 JSON 데이터를 다룰 때 사용됩니다. import org.json.JSONObject; public class JSONObjectExample { public static void main(String[] args) { // JSON 객체 생성 JSONObject jsonObject = new JSONObject(); // 키-값 쌍 추가 jsonObject.put("name", "John"); jsonObject.put("age", 25);..

Java 2024.02.29

Java | HttpRequestHandler란?

HttpRequestHandler Interface? Apache HttpComponents 에서 제공하는 HTTP 서버에서 사용되는 Handler Interface 입니다. public interface HttpRequestHandler { void handle(HttpRequest request, HttpResponse response, HttpContext context) throws HttpException, IOException; } handle 메서드를 살펴보면, HTTP 요청을 처리하는 로직을 구현해야합니다. 클라이언트의 요청을 받아 어떻게 응답할지를 정의합니다. request : 클라이언트로부터 받은 HTTP 요청 객체입니다. response : 서버에서 클라이언트로 응답을 보낼 때 사용하..

Java 2024.02.29

CT | 문자열을 Integer로 형변환 시 NumberFormatException 방지하여 문제풀기 - (프로그래머스)크기가 작은 부분문자열

Java에서의 자료구조와 알고리즘을 공부하고자 간단한 문제를 풀어봤습니다. 문제 설명 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다. 제한사항 1 ≤ p의 길이 ≤ 18 p의 길이 ≤ t의 길이 ≤ 10,000 t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다. 이 문제를 처음 풀 때..

Coding Test 2024.02.28

Database | DB Query Optimizer의 실행계획 선택시, 고려 비용 요소들

DB total cost 데이터베이스 쿼리 실행 계획(Execution Plan)에서의 total cost는 쿼리를 실행하는데 필요한 예상 비용을 나타내는 지표입니다. 모든 행을 반환하는데 걸리는 예상 시간입니다. Access Method Cost(접근 방식 비용) 특정 테이블에 엑세스하기 위해 사용되는 비용으로, 인덱스 스캔, 풀 테이블 스캔 등과 같은 다양한 엑세스 방식이 고려됩니다. 인덱스 스캔은 조건에 맞는 행을 찾는데 인덱스를 사용하는 것입니다. 풀 테이블 스캔은 전체 테이블을 순차적으로 읽는 것입니다. Access Method Cost는 각 엑세스 방식에 대한 비용을 측정하여 최적의 엑세스 방법을 선택하는데 사용됩니다. Join Cost(조인 비용) 두 개 이상의 테이블을 조인할 때 발생하는 ..

Database 2024.02.28

PostgreSQL | 모니터링 SQL 정리

유용한 모니터링 SQL 쿼리들을 정리하려고 합니다. 1. pg_stat_activity - 현재 실행중인 쿼리와 세션 정보 SELECT * FROM pg_stat_activity; PostgreSQL 서버에서 현재 실행중인 활동 및 세션 정보를 제공합니다. datid, datname, pid, usesysid, usename, application_name, client_addr, client_hostname, client_port, backend_start, xact_start, query_start, state, waiting, state_change, query 등이 포함될 수 있습니다. 2. pg_stat_user_indexes - 인덱스 사용률 확인 SELECT relname, indexreln..

Database 2024.02.27

PostgreSQL | 데이터를 한 테이블에서 다른 테이블로 복사하거나 이동 쿼리

PostgreSQL에서 SELECT 문의 결과를 이용해 지정한 테이블에 새로운 행을 삽입하는 쿼리입니다. INSERT INTO target_table SELECT column1, column2, ... FROM source_table WHERE condition; target_table : 데이터를 삽입할 대상 테이블의 이름 SELECT column1, column2, ... 원본 테이블에서 선택할 컬럼 목록 source_table : 데이터를 가져올 원본 테이블의 이름 WHERE condition : 필요에 따라 조건을 지정하여 특정 행만 선택 가능 특정 테이블을 다른 테이블로 조건을 통해 복사하거나 이동할 때, 좋은 쿼리입니다.

Database 2024.02.27