전체 글

CS 👩🏻‍💻/네트워크

[CS] REST란?

REST란 REpresntational State Tranfer의 약자로, 주로 HTTP 프로토콜을 사용한 소프트웨어 설계에서 사용되는 아키텍처 스타일이다. 정확히는 REST란 자원을 이름으로 구분하여 자원에 대한 정보를 주고 받는 것을 말한다. 여기서 자원이란 HTML과 같은 파일들, 데이터, 소프트웨어 자체 등 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다. REST 구성 요소 REST는 다음과 같은 3가지로 구성이 되어있다. 자원(Resource) : HTTP URI 자원에 대한 행위(Verb) ..

CS 👩🏻‍💻/데이터베이스

[DB] PostgreSQL이란?

PostgreSQL이란? 가장 많이 사용되는 객체 관계형 DBMS 안정성이 매우 높고 사용자 친화적인데 그 이유는 PostgreSQL의 주요 특징 때문이다! 사용자 정의 유형 테이블 상속 정교한 잠금 메커니즘 외래 키 참조 무결성 보기, 규칙, 하위 쿼리 중첩 트랜잭션(savepoints) 다중 버전 동시성 제어(MVCC) 비동기 복제기본 테이블 공간 특정 시점 복구 그 중에서도 multi-version concurrency control (MVCC)는 PostgreSQL에서 처음으로 구현된 기능인데 PostgreSQL은 확장이 가능하도록 설계되어 있기 때문에 데이터 타입, 인덱스 타입, 함수형 언어 등을 직접 정의할 수 있다. MVCC(다중 버전 동시성 제어)란? MVCC는 동시 접근을 허용하는 데이터..

Spring 🟢

[Spring] RowMapper

RowMapper 인터페이스란?👀 공식문서 Say "row 단위로 ResultSet의 row를 매핑하기 위해 JdbcTemplate에서 사용하는 인터페이스" 간단히 말해서 그냥 Row를 객체에 매핑한다고 생각하면 된다! RowMapper의 특징이 인터페이스 구현 시, 각 row를 ResultSet에 매핑하는 실제 작업을 수행하지만 예외 처리에 대해 생각하지 않아도 된다!RowMapper 객체는 일반적으로 상태가 없으므로 재사용이 가능하므로 row 매핑 로직을 한 곳에서 구현하는 것이 좋다.메서드@NullableT mapRow(ResultSet rs, int rowNum) throws SQLExceptionResultSet 의 데이터의 각 행을 매핑하는 메서드 즉, 데이터베이스의 반환 결과인 Result..

JAVA 🎻

[JAVA] JDBC란?

JDBC란? Java Database Connectivity의 약자로, JDBC API는 Java 프로그래밍 언어에서 범용 데이터 액세스를 제공한다. JDBC API를 사용하면 관계형 데이터베이스부터 스프레드시트 및 플랫 파일에 이르기까지 거의 모든 데이터 소스에 액세스가 가능하고 JDBC 기술은 도구와 대체 인터페이스를 구축할 수 있는 공통 기반을 제공한다. JDBC API JDBC API는 java.sql, javax.sql 두 패키지로 구성되어 있으며 특정 데이터베이스 관리 시스템에서 JDBC API를 사용하려면 JDBC 기술과 데이터베이스 사이를 중개하는 JDBC 기술 기반 드라이버가 필요하다. (JDBC 드라이버는 순수하게 Java 프로그래밍 언어로 작성되거나 Java 프로그래밍 언어와 JNI(..

Spring 🟢

[Intellij] Cause: error: invalid source release: 16 해결하기

프로젝트 클론 후 실행을 하니 Cause: error: invalid source release: 16 오류가 발생하였다. 1차 시도 sourceCompatibility = '16' build.gradle에서 위의 source 버전을 11로 변경했다. 결과는? 클론한 프로젝트에 Record 클래스가 포함되어 있었다^_^... Record 클래스는 자바 14에서 추가되었기 때문에 컴파일 오류가 떴다ㅎ 고로 16이나 그 이상은 유지하며 오류를 해결해야 했다. 2차 시도 구글링을 통해 Project Structure에서 sdk를 16버전 설치 후에 변경, Modules → Lenguage level도 16으로 변경 결과는2 ? 여전히 안되었다. 똑같이 Cause: error: invalid source rel..

카테고리 없음

Kotlin, 널 안정성이란?

자바 언어 스터디를 진행 중인데 요새 핫한 코틀린이라는 언어가 자바와 무슨 차이가 있는지, 그 장점이 뭐길래 이렇게 핫한(?) 건지에 대해 궁금함이 생겨 찾아보게 되었습니다. Kotlin이란? Java 가상 머신에서 동작하는 프로그래밍 언어로, Java와의 상호운용성 Kotlin은 Java와 100% 상호운용성을 가지고 있기 때문에 Java 라이브러리와 API를 쉽게 사용 가능 또한, Java로 작성된 코드도 Kotlin에서 쉽게 사용할 수 있습니다. 상호운용성이란 하나의 시스템이 동일 또는 이기종의 다른 시스템과 아무런 제약이 없이 서로 호환되어 사용할 수 있는 성질 널 안전성 Kotlin은 널 안전성을 지원하는 언어로, null 값으로 인한 오류를 방지하고 안전하게 코드를 작성할 수 있도록 도와줌 기..

Algorithm 👩🏻‍🔧

[프로그래머스] k 번째 수 JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/42748 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 1. array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 2. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 3. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를..

Algorithm 👩🏻‍🔧

[BOJ 백준] 20546 기적의 매매법

문제 요약 문제 링크 주식을 살 수 있다면 가능한 만큼 즉시 매수 한 후 오로지 기도만 하는 BNP 전략의 준현이와 3일 연속 가격이 전일 대비 상승/하락 한다면 전량 매도/매수하는 33 매매법의 성민이가 있다. 입력 : 첫 번째 줄에 준현이와 성민이에게 주어진 현금이 주어진다. 두 번째 줄에 2021년 1월 1일부터 2021년 1월 14일까지의 MachineDuck 주가가 공백을 두고 차례대로 주어진다. 모든 입력은 1000 이하의 양의 정수이다. 출력 : 1월 14일 기준 준현이의 자산이 더 크다면 "BNP"를, 성민이의 자산이 더 크다면 "TIMING"을 출력한다. 둘의 자산이 같다면 "SAMESAME"을 출력한다. 기존의 코드 import java.util.*; import java.io.*; i..

JAVA 🎻

[JAVA] 스트림 활용하기

모던 자바 인 액션 5장을 보고 정리한 내용입니다. 1. 필터링, 스트림 슬라이싱 고유 요소 필터링 distinct 고유 요소로 이루어진 스트림을 반환하는 메서드 즉, 중복한 값들은 반환하지 X 고유 여부는 스트림에서 만든 객체의 hashCode, equals로 결정 List numbers = Arrays.asList(1, 2, 1, 3, 3, 2, 4); numbers.stream() .filter(i -> i % 2 ==0) .distinct() .forEach(System.out::println); // 출력 // 2 // 4 스트림 슬라이싱 takeWhile 무한 스트림을 포함한 모든 스트림에 프레디케이트를 적용해 스트림을 슬라이스 가능 takeWhile과 filter의 차이? filter 메서드..

JAVA 🎻

[JAVA] Jsoup을 이용한 크롤링

방법 1. Jsoup의존성 추가 gradle에서는 아래와 같은 의존성을 추가해주면 된다. // jsoup HTML parser library @ implementation 'org.jsoup:jsoup:1.15.3' 2. 크롤링할 페이지의 url 등록 Document docs = Jsoup.connect("").get(); 3. 크롤링할 css 요소의 쿼리문 복사 제가 크롤링할 요소는 제목, 카테고리, 본문 url이므로 사진의 개발자 툴에서 해당 요소들이 있는 css 쿼리를 복사한다 각 요소가 속한 태그의 class = “샬라샬라” ← 이 부분을 작성하면 됨! //공지사항 제목 Elements titles = docs.select("a.tbl_title"); //공지사항 카테고리 Elements cate..

minl741
홀리몰리 개발로그