목록전체 글 276
재밌고 어려운 IT를 이해해보자~!
소유주가 A~Z까지 다른 땅에서 같은 소유주로 이루어진 'ㄷ' 모양 (모양의 방향은 상관없음) 땅을 찾는 알고리즘을 알아보자..! 방향에 상관없이 'ㄷ'자인지 확인하는 과정을 생각해내는게 쉽지않다.. public class DShapeFinder { public static void main(String[] args) { String[] land1 = {"AAA", "AAA", "AAA"}; String[] land2 = {"BAA", "ABB", "ABB", "AAA"}; String[] land3 = {"BAAAD", "AAAAA", "ABBAA", "AAAAA"}; System.out.println(findMaxDArea(land1)); //..
QueryDSL이란?QueryDSL은 하이버네이트 쿼리 언어(HQL: Hibernate Query Language)의 쿼리를 타입에 안전하게 생성 및 관리해주는 프레임워크이다!QueryDSL은 정적 타입을 이용하여 SQL과 같은 쿼리를 생성할 수 있게 해준다.자바 백엔드 기술은 Spring Boot와 Spring Data JPA를 함께 사용한다.하지만 복잡한 쿼리, 동적 쿼리를 구현하는 데 있어 한계가 있다. 이러한 문제점을 해결할 수 있는 것이 QueryDSL이다.QueryDSL이 등장하기 이전에는 Mybatis, JPQL, Criteria 등 문자열 형태로 쿼리문을 작성하여 컴파일 시에 오류를 발견하는 것이 불가능했다.하지만 QueryDSL은 자바 코드로 SQL문을 작성할 수 있어 컴파일 시에 오류를..
장점 1. MySQL 호환성: MariaDB는 MySQL의 fork로 시작되어 MySQL과 높은 호환성을 유지하면서도 여러 기능과 개선 사항을 추가하여 사용자에게 선택의 폭을 넓혀줍니다. 2. 고성능 및 확장성: MariaDB는 높은 성능과 확장성을 제공하며, 병렬 스레딩, 캐시 기능, 효과적인 쿼리 최적화 등을 통해 뛰어난 성능을 보장합니다. 3. 열 지향 저장 엔진 Aria: MariaDB는 특별히 읽기 작업이 많은 경우에 유용한 열 지향 저장 엔진인 Aria를 기본으로 제공합니다. 4. 보안 기능 강화: MariaDB는 데이터 암호화, SSL/TLS 지원 등 다양한 보안 기능을 내장하고 있어 안전한 데이터 관리를 지원합니다. 5. 개발자 및 커뮤니티 지원: 활발한 개발자 및 커뮤니티 지원을 받고 ..
선언type PositionType = { x: number; y: number;};interface PositionInterface { x: number; y: number;}// objectconst obj1: PositionType = { x: 10, y: 1,};const obj2: PositionInterface = { x: 20, y: 2,};일반적으로 객체 타입을 선언하는 거에 있어서 둘이 동일한 방법으로 사용할 수 있다.인터페이스는 당연하겠지만 객체에서만 사용이 가능하다는 점과, Index Signature의 사용 유무 구현type PositionType = { x: number; y: number;};interface PositionInterface { x: numbe..
타입 체크용 인터페이스typescipt에서 제공하는 type 이랑 동일한 역할interface Point { x: number; y: number;}function printCoord(pt: Point) { console.log("The coordinate's x value is " + pt.x); console.log("The coordinate's y value is " + pt.y);}let point: Point = { x: 100, y: 100,};printCoord(point);타입 별칭에서는 허용이 안됐지만 인터페이스에서는 허용이 되는 부분이 있는데 바로 Intersection이다.같은 이름의 타입 별칭을 사용할 경우 에러가 발생하지만 인터페이스의 경우 같은 이름의 인터페이스가 선..
클래스 정의와 접근제한자기존 모던 자바스크립트의 클래스에서도 접근 제한자가 존재하기는 했는데, 특수문자로 선언을 해줘야 하는 제약이 있었으나 타입 스크립트에서는 자바와 같이 클래스 기반 객체 지향 언어가 지원하는 접근 제한자 public, pivate, protected를 지원하며 의미 또한 동일하다. 클래스 정의class Animal { name: string; constructor(name: string) { this.name = name; } talk() { console.log(`this animal's name is ${this.name}`); } } const animal = new Animal("Ruby"); animal.talk();..
Type Inference타입 추론이란 TypeScript에서 명시적인 타입 표기가 없을 때 타입 정보를 제공하기 위해 사용되는 것이다.그냥 쉽게 말하면 자동으로 타입을 결정해주는 것이라고 보면 된다.let x = 3; // let x: numberlet y = "4"; // let y: stringjavascript처럼 사용하면 typescript는 자동적으로 타입을 추론하여 알맞은 타입을 결정한다.여러 타입을 동시에 사용할 경우 최적 공통 타입을 알아서 계산let x = [0, 1, null]; // let x: (number | null)[]이런 식으로 타입 스크립트는 자동으로 타입을 결정지어 주지만 아무래도 타입 스크립트를 선택해서 사용하는 입장에서는 제대로 명시해서 사용해 주는 게 좋다.Type..
EnumEnum은 그 안에 무슨 값들을 열거했냐에 따라서 Numeric enums, String enums 등으로 불리기도 하는데, 보통 상수들의 집합을 정의하고자 할 때 주로 사용되고는 한다. 숫자 열거형 (Numeric enums)enum Weekdays { Monday, Tuesday, Wednesday, Thursday = 10, Friday, Saturday, Sunday,}let day: Weekdays = Weekdays.Thursday;console.log(day);console.log(Weekdays.Friday); 보통 enum은 위와 같이 사용하고는 하는데, 왜 저게 숫자 열거형이냐 하면 따로 특정한 값이 주어지지 않으면 자동적으로 0부터 숫자가 할당되기 때문Moday =..