본문 바로가기

분류 전체보기57

[Java] 배열 복사 import java.util.Arrays; public class Solution { public static void main(String[] args) { int [] arr1 = {1, 2, 3, 4, 5}; // 1. copyOf() 사용 : 배열 전체 복사 int [] arr2 = Arrays.copyOf(arr1, arr1.length); // [1,2,3,4,5] // 2. copyOfRange() 사용 : 배열 특정 범위 복사 int [] arr3 = Arrays.copyOfRange(arr1, 1, 4); // [2,3,4] } } Method copyOf public static int[] copyOf​(int[] original, int newLength) copyOfRange pu.. 2022. 11. 4.
[mariaDB] create or replace function Definer와 Sql Security 옵션 만약 definer 옵션 TEST_USER 로 설정하여, CREATE OR REPLECE DEFINER=`TEST_USER`@`%` FUNCTION AAA(... 로 생성한 경우, 이 FUNCTION을 DROP할 수 있는 권한 또한 TEST_USER 임 deterministic 옵션 MySQL의 Stored procedure나 Function이 NOT DETERMINISTIC으로 정의되면, MySQL은 이 Stored routine의 결과값이 시시각각 달라진다고 가정하고, 비교가 실행되는 레코드마다 이 Stored routine을 매번 새로 호출해서 비교를 실행하게 된다. 즉, 함수 호출의 결과값이 Cache되지 않고, 비교되는 레코드 건수만큼 함수 호출이 발.. 2022. 10. 28.
MSSQL master 테이블 spt_values 활용 SELECT convert(varchar(10), DATEADD(DAY, number, '2020-01-01'), 120) STATS_DATE FROM master..spt_values WHERE type = 'P'; MS-SQL 를 설치하면 master, model, msdb, tempdb 네 가지의 시스템 데이터베이스를 지원한다. 그 중 master 데이터베이스에 있는 spt_values 테이블의 컬럼 number는 0에서 2047 사이의 시퀀스 번호를 가지고 있고, 컬럼 type =’P’ 이다. select number from master.dbo.spt_values where type='P'; ** 활용방법 ⇒ 숫자의 순서를 가지고 있기 때문에 반복, 재귀 등에 활용할 수 있다. 그러나 비교대상이.. 2022. 6. 29.
배포란 ? 배포 ? 만든 작업물을 외부 환경에 공개하는 일. 1. FTP 나 원격저장소로 설치 & 실행 FTP를 통해 서버에 소스 코드를 업로드하거나 GitHub와 같은 코드 원격 저장소를 통해 코드를 업로드하고, 이후 서버에 접속하여 소스 코드를 실행시킴. → 그러나, 한 서버에 여러개 서비스를 실행할 경우, 각 서비스는 독립적이지만, 같은 실행 환경을 공유하고 있기 때문에 부작용이 발생할 수 있음. → ‘코드를 실행하는 환경'과 ‘베포의 독립성'에 대한 이슈를 제기하게 됨. 2. VM 위에 배포 VM으로 리눅스 환경을 구축하여, 이 위에서 실행할 수 있음. VM을 사용하여 테스트 환경과 똑같은 운영체제 환경을 구축 할 수 있음. 3. 컨테이너 기반 (Docker) 으로 배포 코드 개발 → Dockerfile 을.. 2022. 6. 2.
가상화 기술과 도커 OS 하드웨어 리소스를 관리하는 소프트웨어. 사용자와 하드웨어 사이 매개체 역할을 함. 가상화 기술이란 ? 하드웨어 리소스를 추상화하여 소프트웨어화 하는 기술. (예를 들어, 가상화 기술을 통해, 또다른 운영환경 (CPU 1코어, Memory 2G, Ubuntu 16.04) 처럼 소프트웨어를 만듬) → 하드웨어 리소스를 추상화했기 때문에 서비스에 자원을 자유롭게 할당할 수 있음. → OS에 관계없이 동일한 환경에서 소프트웨어를 구동할 수 있음. → 특정 리소스만큼 할당된 가상화 공간을 제공받음. 가상화 기술 종류 VM (Virtual Machine) → VM은 하드웨어를 가상화하는 기술 중 하나로, 컴퓨터에 기본적으로 설치한 OS 위에 Hypervisor라는 소프트웨어를 통해 여러 OS (Guest OS.. 2022. 6. 2.
모놀리스와 마이크로서비스 소프트웨어 아키텍처 패턴. 모놀리스 (Monolith) 아키텍처 모놀리스 아키텍처란 하나의 소프트웨어를 구성하는 모든 모듈을 한 프로젝트에서 관리함. → 한 프로젝트 내에 모든 모듈과 코드가 있음 → 소프트웨어가 비규적 단순 → 그러나, 애플리케이션 코드가 많아지고 서비스가 확장되면 전체 구조나 코드 흐름을 쉽게 이해하기 어려움. 한 프로젝트 내에 있는 코드이므로, 모든 코드가 결합되어 있기 때문에 사이드 이펙트가 일어날 수 있음. ⇒ 모놀리스 아키텍처는 하나의 소프트웨어를 하나의 프로젝트로 개발하는 아키텍처임. 마이크로서비스 아키텍처 마이크로 서비스는 하나의 소프트웨어를 구성하는 컴포넌트들을 독립적인 프로젝트들로 분리하여 관리함. → 각각의 컴포넌트들을 마이크로 서비스라고함. → 개발과 배포도 분리된 .. 2022. 6. 2.