분류 전체보기
-
Unit / Nothing🔖 Kotlin 2024. 11. 25. 12:20
🎯 목표코틀린에는 return 하지 않아도 되는 반환 유형이 Unit 과 Nothing 두 가지가 존재한다.이 두 가지의 차이점을 알아보고 언제 어떤 반환 유형을 사용해야 할지 공부해보려고 한다.1️⃣ UnitKotlin 에서 반환 유형을 지정하지 않은 경우 기본적으로 반환 유형이 Unit이 된다.Java의 void와 비슷하지만, Kotlin에서는 Unit도 실제로 객체로 존재 특징Unit은 타입이면서 싱글톤 인스턴스로 매번 객체를 생성하지 않는다.함수의 반환값이 없더라도 Unit을 명시적으로 반환할 수 있다.기본적으로 반환값이 없는 함수는 Unit을 암시적으로 반환fun printMessage(message: String): Unit { println(message)}// 아래는 동일fun pr..
-
Gradle Kotlin DSL🔖 Kotlin 2024. 11. 21. 12:47
🔨 빌드 도구빌드 도구는 소스 코드를 실행 가능한 애플리케이션으로 자동으로 만드는 프로그램.빌드는 소스 코드를 컴파일, 연결 및 사용 가능하거나 실행 가능한 형태로 패키징(가공)한다.빌드 자동화의존성 라이브러리 다운소스 코드를 바이너리 코드로 컴파일테스트 실행바이너리 코드 패키징운영 시스템 배포 🚗 빌드 자동화 툴 개발자가 빌드해야 할 코드, 종속성, 순서 등을 직접 추적해서 빌드하고 테스트, 배포하는 작업은 실용적이지 않기 때문에 빌드 자동화 도구를 이용해서 반복적인 작업을 자동화하여 개발 효율성을 높이고 오류 발생 가능성을 줄이며, 일관되게 빌드 프로세스가 진행되도록 한다.Java 에서 사용되고 있는 빌드 도구로는 Maven, Gradle 등이 존재한다. 💡 Gradle Kotlin DSLGro..
-
📒 위상정렬💻 computer science/🤔 알고리즘 2024. 6. 17. 15:46
💡 위상 정렬(Topological Sort)이란?유향 그래프의 꼭짓점들(vertex)을 변의 방향을 거스르지 않도록 나열하는 것 그래프와 관련된 알고리즘 중 하나방향 그래프에서 간선으로 주어진 정점 간 선후 관계를 위배하지 않도록 나열하는 정렬 ❗선후 관계가 정의된 그래프 구조에서 정렬을 하는데 사용할 수 있다. ⚠️ 그래프내에 사이클이 존재하는 경우에는 올바른 위상 정렬이 존재할 수 없다.선후 관계에 모순이 생기기 때문 따라서, 위상 정렬은 사이클이 존재하지 않는 방향 그래프에서만 잘 정의가 된다. 사이클이 존재하지 않는 방향 그래프 = DAG(Directed Acyclic Graph) 🧑🏻💻 구현 🏃 구현 순서 1️⃣ 먼저, 위상 정렬상에서 제일 앞에 오는 정점(A, C, G)로 가능..
-
📒 Map, Set🍌 자바스크립트 2024. 5. 29. 00:49
🧩 Map메서드설명new Map()맵 생성map.set(key, value)key를 이용해 value 저장map.get(key)key에 해당하는 값 반환, key가 없다면 undefined 반환map.has(key)key가 존재하면 true, 존재하지 않는다면 false 반환map.delete(key)key에 해당하는 값을 삭제map.clear()맵 안의 모든 요소 제거map.size요소의 개수를 반환 let map = new Map();map.set('1', 'value1');map.set(1, 'value2');map.set(true, 'value3');console.log(map.get('1')); // value1console.log(map.get(1)); // value2console.log(..
-
📂 배열🍌 자바스크립트 2024. 5. 28. 21:11
💡 배열 만들기📍 배열 리터럴var arr = ["e1", "e2", "e3"]; 다양한 데이터 타입을 배열에 저장할 수 있다.var arr = ["beomsic", 26, [0, 1, 2]]; 📍 배열 생성자var arr = new Array(1, 2, 3);console.log(arr) // [ 1, 2, 3 ]var arr2 = new Array(10);console.log(arr2); // [ ]console.log(arr2.length); // 10배열 생성자에 인수를 하나만 넘겨주는 경우에는 그 인수의 값이 배열의 길이가 된다. 배열 길이length 속성을 이용해 배열의 길이를 알아낼 수 있다.var arr = ["test1", "test2"]arr.length; // 2 📒 배열 ..
-
자료형🍌 자바스크립트 2024. 5. 28. 13:48
🧩 선언JavaScript의 선언 방법은 3가지 이다. 키워드설명var변수를 선언, 동시에 값을 초기화let블록 스코프 지역 변수를 선언, 동시에 값을 초기화const블록 스코프 읽기 전용 상수를 선언 1️⃣ Var (function scope) var 문에서 변수에 초기 값을 지정하지 않는다면, 변수는 값이 설정될 때 까지 undefined 값을 가진다. 👀 함수 유효 범위어떤 함수 안에서 선언된 모든 변수는 그 함수 전체에 걸쳐 유효하다.변수가 선언되기 전에도 유효 Hoisting자바스크립트 코드는 함수 안에 모든 변수를 함수의 맨 위로 끌어올린 것처럼 동작한다.var foo = "boo";function test() { console.log(foo); // boo가 아닌 undefined을 ..
-
MySQL - 트랜잭션 격리 수준 실습💻 computer science/📦 database 2024. 5. 11. 21:24
⚙️ 실습 세팅트랜잭션 격리 수준을 실습해보기 위해서 테이블을 만들고 데이터를 넣어두었다. 👤 Member TableCREATE TABLE MEMBER ( id bigint auto_increment primary key, name varchar(255) not null, constraint UK_name unique (name)); ➕ 데이터 추가INSERT INTO MEMBER (id, name) VALUES(1, 'Beomsic');INSERT INTO MEMBER (id, name) VALUES(2, 'Beomseok');INSERT INTO MEMBER (id, name) VALUES(3, 'KO'); 💻 2개의 데이터베이스 세션 설정set autocommit = FALSE; // 현..
-
MySQL - 스토리지 엔진 수준의 락💻 computer science/📦 database 2024. 5. 11. 14:25
🔒 MySQL 의 락MySQL에서 사용되는 락은 크게 스토리지 엔진 레벨과 MySQL 엔진 레벨로 나눌 수 있다. 🧩 스토리지 엔진 레벨의 락테이블의 데이터를 다루기 위한 락 🧩 MySQL 엔진 레벨의 락테이블이나 데이터베이스 등과 같은 부분을 위한 락 🆎 스토리지 엔진 레벨의 락의 종류레코드 락 (Record Lock)갭 락 (Gap Lock)넥스트 키 락 (Next Key Lock)자동 증가 락 (Auto Increment Lock) 1️⃣ 레코드 락🎯 레코드 락은 테이블 레코드 자체를 잠그는 락을 의미한다. ❗MySQL에서 레코드 락은 테이블의 레코드가 아닌 인덱스의 레코드를 잠근다는 점이 다른 DBMS와의 차이점이다.MySQL에서는 레코드 자체를 잠그는 것이 아닌 인덱스를 잠그기 때문에..