728x90

개발 50

[OS] 프로세스 관리 - 프로세스의 생성과 종료, 시스템콜

프로세스 생성 (Process Creation) 부모 프로세스가 자식 프로세스를 생성한다. 프로세스는 자원을 필요로 하는데 운영체제로부터 받는다. 부모와 자원을 공유하는 경우도 있고 공유하지 않는 경우도 있는데 일반적으로 공유하지 않는다. 자식은 부모의 공간과 PCB, 자원 등을 복사한다. 일단 복제를 하고 새로운 프로그램을 덮어 씌운다. fork() 시스템 콜이 새로운 프로세스를 생성한다. (부모를 그대로 복사 - OS data except PID + binary) exec() 시스템 콜이 새로운 프로그램을 메모리에 올린다. 프로세스 종료 (Process Termination) exit() 시스템 콜을 하면 프로세스가 종료된다. 자발적 종료(exit) 프로세스가 마지막 명령을 수행한 후 운영체제에게 이..

개발/CS 2022.08.17

[Spring] Spring Boot gradle build 에러 - Execution failed for task ':compileQuerydsl'. > ... > Could not find com.sun.mail:javax.mail:. 해결 방법

spring boot gradle 프로젝트를 aws ec2 환경에서 배포하기 위해 빌드를 했는데 다음과 같은 에러가 나왔습니다. * What went wrong: Execution failed for task ':compileQuerydsl'. > Could not resolve all files for configuration ':querydsl'. > Could not find com.sun.mail:javax.mail:. Required by: project : Exception을 포함한 자세한 에러 내용은 다음과 같습니다. org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':compileQuerydsl'. ... Cau..

개발/Spring 2022.08.14

[알고리즘] KMP 알고리즘 (Knuth–Morris–Pratt Algorithm)

KMP 알고리즘 KMP 알고리즘은 문자열 중에 특정한 패턴을 찾아내는 문자열 검색 알고리즘이다. 보통 문자열을 검색하기 위해 자바에서는 아래와 같이 indexOf를 이용해서 쉽게 문자열 포함 여부 및 포함 위치를 알아낼 수 있다. String str1 = "abcdefgh"; String str2 = "cdef"; System.out.println(str1.indexOf(str2)); // 2 하지만 이 방법은 모든 경우를 비교해서 찾아내는 방법으로 최악의 시간 복잡도를 가진다. 그래서 짧은 문자열이나 반복 작업이 아니라면 indexOf를 사용하는 것이 괜찮을지라도 긴 문자열이나 문자열 검색을 자주 실행해야 한다면 더 효율적인 문자열 검색 알고리즘이 필요할 것이다. 본인도 백준 문제(16916 - 부분 ..

개발/알고리즘 2022.07.02

[Vue.js] Vue event, Vue router, SFC, Vuex 간단 정리

Vue event v-on directive를 사용하여 DOM 이벤트를 듣고 트리거 될 때 JavaScript를 실행할 수 있다. 이벤트 발생 시 처리 로직을 v-on에 넣기 힘들기 때문에 v-on에서는 이벤트 발생 시 처리해야 하는 method의 이름을 받아 처리한다. 이벤트 수식서 (Event Modifier) method 내에서 이벤트를 처리하는 작업을 할 수도 있지만 method는 DOM의 이벤트를 처리하는 것보다 data 처리를 위한 로직만 작업하는 것이 좋다. 이 문제를 해결하기 위해서 Vue는 v-on 이벤트에 이벤트 수식어를 제공한다. v-on:click.stop 클릭 이벤트 전파가 중단된다. v-on:submit.prevent 제출 이벤트가 페이지를 다시 로드하지 않는다. v-on:cli..

개발/기타 2022.06.16

[Vue.js] Vue 컴포넌트(Component)란?

컴포넌트(Component) 컴포넌트는 Vue의 가장 강력한 기능 중 하나이다. HTML Element를 확장하여 재사용 가능한 코드를 캡슐화한다. Vue Component는 Vue Instance이기도 하기 때문에 모든 옵션 객체를 사용할 수 있다. Life Cycle Hook 사용 가능하다. 전역 컴포넌트와 지역 컴포넌트가 있다. 전역 컴포넌트를 등록하려면 Vue.component(tagName, options)를 사용한다. 컴포넌트를 components 인스턴스 옵션으로 등록함으로써 다른 인스턴스/컴포넌트의 범위에서만 사용할 수 있는 컴포넌트를 만들 수 있다. 컴포넌트 간 통신 상위(부모) - 하위(자식) 컴포넌트 간의 data 전달 방법 부모에서 자식 : props라는 특별한 속성을 전달한다. (..

개발/기타 2022.06.15

[Vue.js] Vue 디렉티브(Directive)란?

디렉티브(Directive) 디렉티브는 v- 접두사가 있는 특수 속성이다. 디렉티브 속성 값은 단일 JavaScript 표현식이 된다. (v-for는 예외) 디렉티브의 역할은 표현식의 값이 변경될 때 사이드 이펙트를 반응적으로 DOM에 적용한다. template 여러 개의 태그들을 묶어서 처리해야 할 경우에 template를 사용한다. v-if, v-for, component등과 함께 많이 사용한다. v-text 자바스크립트의 innerText와 같은 역할을 한다. html 태그가 적용되지 않고 문자열이 그대로 보여진다. v-bind 엘리먼트의 속성과 바인딩 처리를 위해서 사용한다. 약어로 ":"로 사용이 가능하다. v-html 자바스크립트의 innerHTML과 같은 역할을 한다. html 태그가 적용된..

개발/기타 2022.06.14

[Vue.js] Vue 인스턴스(instance)란?

Vue instance의 속성 el Vue가 적용될 요소를 지정한다. CSS Selector or HTML Element data Vue에서 사용되는 정보를 저장한다. 객체 또는 함수의 형태이다. template 화면에 표시할 HTML, CSS 등의 마크업 요소를 정의하는 속성이다. 뷰의 데이터 및 기타 속성들도 함께 화면에 그릴 수 있다. methods 화면 로직 제어와 관계된 method를 정의하는 속성이다. 마우스 클릭 이벤트 처리와 같이 화면의 전반적인 이벤트와 화면 동작과 관련된 로직을 추가한다. created 뷰 인스턴스가 생성되자마자 실행할 로직을 정의한다. Vue Instance의 유효 범위 Vue Instance를 생성하면 HTML의 특정 범위 안에서만 옵션 속성들이 적용된다. el 속성..

개발/기타 2022.06.14

[Spring] MyBatis, MyBatis-Spring 특징과 역할

MyBatis MyBatis는 Java Object와 SQL문 사이의 자동 Mapping 기능을 지원하는 ORM Framework이다. MyBatis는 SQL을 별도의 파일로 분리해서 관리한다. MyBatis의 특징 1. 쉬운 접근성과 코드의 간결함 - 가장 간단한 persistence framework - XML 형태로 작성된 JDBC 코드라 생각해도 될 만큼 JDBC의 모든 기능을 MyBatis가 대부분 제공한다. - 복잡한 JDBC 코드를 걷어내며 깔끔한 소스코드를 유지할 수 있다. - 수동적인 parameter 설정과 Query 결과에 대한 mapping 구문을 제거 2. SQL문과 프로그래밍 코드의 분리 - SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일하지 않아도 된다. - SQL ..

개발/Spring 2022.05.31

[DB] MySQL - SELECT 쿼리 실행되는 순서

SELECT select_list [ FROM table_source ] [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ] FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY 1. FROM절의 테이블로부터 2. WHERE절의 조건에 맞는 데이터를 3. GROUP BY절로 그룹핑하고 4. HAVING절의 조건에 맞는 것을 5. SELECT절의 컬럼들을 선택해서 6. ORDER BY절에 맞게 정렬해서 리턴한다.

개발/CS 2022.05.20

[DB] SQL - DDL, DML, DCL, TCL (데이터 정의어, 조작어, 제어어)

★DDL (Data Definition Language) : 데이터 정의어 데이터베이스 객체(table, view, index, ...)의 구조를 정의한다. 테이블 생성, 컬럼 추가, 타입 변경, 제약조건 지정, 수정 등 CREATE - 데이터베이스 객체를 생성한다. ALTER - 기존에 존재하는 데이터베이스 객체를 수정한다. DROP - 데이터베이스 객체를 삭제한다. 테이블 생성 제약 조건 제약 조건이란 컬럼에 저장될 데이터의 조건을 설정하는 것이다. 제약조건을 설정하면 조건에 위배되는 데이터는 저장이 불가하다. 테이블 생성시 컬럼에 직접 지정하거나 constraint로 지정하거나 ALTER를 이용해서 설정이 가능하다. NOT NULL - 컬럼에 NULL 값을 저장할 수 없고 반드시 쿼리문을 이용하여 ..

개발/CS 2022.05.19
728x90