분류 전체보기205 [Java] 동적 계획법과 분할 정복이란? (개념/ 공통점/ 차이점/ 예제) 서론 알고리즘 공부를 하면 안들어 볼 수 없는 동적 계획법(Dynamic Programming)과 분할 정복의 개념에 대해 알아보려합니다. 이번 포스팅에선 두 개념 중 동적 계획법에 초점을 더 맞추어 작성할 예정이고 이 후 고급 정렬 알고리즘 공부를 할 때 분할 정복에 대해 다시 한번 작성해볼 예정입니다. 동적 계획법(Dynamic Programming)이란? 보통 DP라고 불리는 이 동적 계획법은 다음과 같이 정의할 수 있다. 입력 크기가 작은 부분 문제들을 해결한 후 해당 부분 문제의 해를 활용하여, 보다 큰 크기의 부분 문제를 해결하고 최종적으로 전체 문제를 해결하는 알고리즘 특징 상향식 접근법으로 가장 최하위 해답을 구한 후, 이를 저정하고 해당 결과값을 이요해서 상위 문제를 풀어가는 방식을 말한.. Algorithm/Concept 2022. 7. 12. [Java] 백준 1, 2, 3 더하기 - 9095번 (재귀 용법 사용 / 풀이 방식) 서론 해당 문제는 DP로 분류되어있지만 재귀용법에 대한 학습을 위해 재귀 함수를 사용하여 풀이하였습니다. 문제 문제 풀이 import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int num = sc.nextInt(); for(int i = 0; i< num; i ++){ int N = sc.nextInt(); System.out.println(recursion(N)); } } private static int recursion(int n){ if(n == 1) { return 1; }else if(n == 2){ return 2; }else.. Algorithm/Problem Solving 2022. 7. 11. [Java] 재귀 용법(recursive call)의 개념과 사용 방식 (예제 / 문제 풀이) 서론 이번 포스팅에선 재귀용법의 개념과 예제를 통해 사용 방식에 대해 학습해보려한다. 바로 알아보자 재귀 용법(recursive call)이란? 함수 안에서 동일한 함수를 호출하는 형태를 말한다. 여러 알고리즘 풀이 시 자주 사용되므로 꼭 알고 넘어가야하는 것 중 하나이다. 재귀 호출은 스택 형식을 갖는다. 위와 같이 재귀 함수는 내부적으로 스택 형식으로 관리된다. 재귀 호출의 일반적인 형태는? 예제를 들어가기 앞서 코드 레벨로 기본적인 재귀 형태에 대해서 알아보자 [형태1] function(입력) { if (입력 > 일정값) { // 입력이 일정 값 이상이면 return function(입력 - 1); // 입력보다 작은 값 } else { return 특정값; // 재귀 호출 종료 } } [형태2] .. Algorithm/Concept 2022. 7. 11. IOT 통신 프로토콜 MQTT란 무엇일까? (개념/ 송수신 방식/ 예제) 서론 최근 실무에서 MQTT 프로토콜을 이용한 단말기 등록 프로그램을 개발해야하는 업무가 있었습니다. 처음 접한 프로토콜 개발에 대한 걱정에 비해 다행히 문제없이 개발은 잘 이뤄졌고 이번에 학습한 MQTT에 대해 정리하려합니다. MQTT란? 사물 통신(Machine to Machine, M2M), 사물 인터넷(Internet Of Things,IOT)를 위한 프로토콜로써 최소한의 전력과 패킷량으로 통신하는 경량 메세지 전송 프로토콜을 의미한다. 따라서 MQTT는 IOT와 모바일 어플리케이션 등의 사물 통신에 적합한 프로토콜이라 말할 수 있다. MQTT 송/수신 방식은? 일반적인 HTTP, TCP/IP와 같이 클라이언트/서버의 관계가 아닌 송신자(Publisher)가 메세지 매개자(Broker)에게 발행(.. Computer Science/Network 2022. 7. 8. [Database] 자료형 Varchar와 nVarchar의 차이는? (개념/ 예제) 서론 이번 글에서는 database에서의 자료형 varchar와 nvarchar의 차이점에 대해 간단히 알아보려한다. VARCHAR vs NVARCHAR (n)varchar란? 문자열을 저장할 때 사용하는 자료형이다. 표현 범위로는 지정할 수 있는 길이는 1~255까지이며 지정한 길이보다 작은 데이터를 저장할 때 필요길이만큼 저장된다. (char보다 기억장치를 효율적으로 저장할 수 있다.) varchar 바이트 수를 기준으로 한다. 가변 문자열이다. (비 유니코드) 영어,숫자는 1byte 저장 한글, 한자 등은 2byte 저장 nvarchar 글자 수를 기준으로 한다. 유니코드 지원 가변 문자열이다. 모든 문자를 2byte 저장 예제 영문 예제 "Apple" varchar : 5byte (1x5) nva.. Database/RDBMS 2022. 7. 5. [H2 in-memory Database] Table not found (this database is empty) 에러 해결 방법 서론 jwt 인증 공부 중 다음과 같은 에러를 만났다. 해당 에러를 해결하는 과정과 발생한 이유에 대해 간략히 정리해놓으려 한다. 사용 기술 스택 Spring Boot: version 2.7.0 Spring Data JPA Spring Security Lombok Spring Web H2 Database 에러 문구 Error creating bean with name 'dataSourceScriptDatabaseInitializer' ... 더보기 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class pat.. Error Document/Spring 2022. 6. 21. 원활한 MSA를 위한 Spring Cloud란? (개념/ 종류/ Config Server/ Gateway) 서론 이번 글에서는 MSA(마이크로 서비스 아키텍처)의 개발, 배포, 운영에 필요한 아키텍처를 쉽게 구성할 수 있도록 지원하는 Spring Boot기반의 프레임 워크인 Spring Cloud에 대해 알아보려한다. MSA에 대한 전반적인 지식은 알고있다는 전제하에 Spring Cloud를 중점적으로 알아볼 것이다. Spring Cloud란? Spring Cloud는 서론에서 말했듯 분산 시스템 개발에 효과적인 기능을 제공해주는 프레임 워크이다. 보통 분산 시스템이라 하면 circuit breakers, routing, proxy, load balancing 등이 있는데, 이때 이 spring cloud를 이용해서 이러한 분산 시스템을 쉽고 빠르게 서비스를 개발할 수 있게 해준다. 마지막으로 MSA를 곁들여.. Programming/Spring 2022. 6. 16. Windows 포트번호로 프로세스 상태, 이름 검색 및 프로세스 종료 방법 (CMD/ 작업관리자) 서론 서버를 돌린다거나 어떤 프로그램을 사용할 때 해당 포트가 열려있지않은 것 같은데 이미 포트를 점유 및 실행이 되고있다고할 때 해당 포트를 점유하고있는 프로세스의 이름을 알기위해 해당 명령어들을 정리한다. 포트로 프로세스 상태 검색 방법 1. 명령프롬프트(CMD) Open 2. netstat -ano | findstr "port" 입력 위의 이미지처럼 입력해주면 해당 포트를 사용하고있는 프로그램의 상태와 PID(마지막 열)가 나온다. 이 명령어를 통해 현재 진짜 해당 포트가 점유되고있는지도 알 수 있다. 검색한 PID로 프로세스 이름 검색 방법 1. 명령프롬프트(CMD) Open 2. tasklist | findstr "PID번호" 입력 다음과 같이 findstr에 PID를 입력 후 실행하면 해당 포.. Windows 2022. 6. 15. 암호화 통신 HTTPS란? (개념/ 동작 방식/ 대칭키/ 비대칭키/ SSL/TLS) HTTP란? HTTPS를 알아보기전 HTTP에 대해 알아보자. HTTP는 서버와 클라이언트 간에 데이터를 주고받는 프로토콜을 말한다. HTTP는 텍스트, 이미지, 영상 등 웹상에서 주고 받을 수 있는 모든 형태의 데이터를 전송할 수 있다는 특징을 갖고있다. HTTP의 보안은 ? HTTP 통신은 클라이언트와 서버간의 통신에 있어 특별한 보안 처리 없이 통신을 하기 때문에 만약 누군가 네트워크 통신 패킷을 가로챈다면 해당 데이터에 담긴 정보를 탈취 당할 수 있다. 탈취당한 그 정보가 본인의 계좌정보, 주민번호, 패스워드 등 중요한 개인 신상정보가 담겨져 있다면 보안적으로 큰 문제가 발생할 수 있다. 이러한 HTTP의 보안적인 문제를 해결하기 위해 등장한 것이 HTTPS이다. 이제 HTTPS에 대해 하나씩 알.. Computer Science/Network 2022. 6. 13. TCP와 3-Way, 4-Way Handshake란? (개념/ 동작 방식) 서론 이번 글에서는 TCP의 신뢰성있는 통신 연결과 종료를 위해 3Way, 4Way Handshake의 개념과 통신 동작 방식에 대해 알아보려한다. 이 내용을 이해하기 위해선 TCP의 개념도 알아야해서 간단히 TCP의 중요 개념만 알아보고 자세한 내용은 추 후 알아보기로하자. TCP란? (Transmission Control Protocol) 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜을 말한다. TCP는 애플리케이션에게 신뢰적이고 연결지향성 서비스를 제공한다. 따라서, 서버와 클라이언트간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜이다. 그리고 TCP는 장치들 사이에 논리적인 접속을 성립(establish)하기 위해서 3-way handshake를 사용한다.. Computer Science/Network 2022. 6. 12. [AWS] AWSome day 온라인 컨퍼런스 참여 후기 (클라우드 개념/ 서비스 종류) 서론 회사에서 온프레미스에서 AWS 클라우드 환경으로 마이그레이션을 할 기회가 생겨 이것저것 알아보는 중에 AWS에서 마침 온라인 컨퍼런스를 진행한다는 소식을 접했다. 주말이였다면 집에서 맘편히 들었겠지만 강연시간이 회사 업무시간이여서 회사에 해당 강연 내용과 들어야할 이유를 정리하여 말씀드렸다. 이에 회사에서는 해당 컨퍼런스에 대해 긍정적으로 보아 듣고싶은 직원에 한해서 시청을 승인해주었다. 해당 컨퍼런스의 강의 목록은 다음과 같다. 강의목록 AWS 클라우드 소개 이 강의에서는 클라우드의 정의와 가치, 클라우드 컴퓨팅의 장점, 클라우드 배포 모델, AWS 글로벌 인프라에 대해 알아봅니다. AWS 클라우드 핵심 서비스 소개: 컴퓨팅 AWS 클라우드의 가장 기본이 되는 컴퓨팅 서비스에 대해 알아봅니다. 애.. Self-Development/Lecture Review 2022. 6. 9. [Spring Boot] JPA Entity 현재시간(current_timestamp) 적용 방법(@CreationTimestamp/ @UpdateTimestamp) 서론 JPA를 사용할 때 현재시간 current_timestamp의 값을 넣고 싶을 때가있다. 이번 글에서 다루는 어노테이션만 잘 알아두면 아주 손쉽게 해당 기능을 적용시킬 수 있다. Hibernate Hibernate에서 엔터티 객체에 대해 Insert와 Update 쿼리가 발생할 때 자동으로 현재 서버 시간을 기입시켜주는 어노테이션을 제공해준다. Spring Framework 스프링 프레임워크에서도 하이버네이트와 같은 기능을 제공을 해주는데 이번 포스팅에서는 하이버네이트에서 지원해주는 두 가지 키워드에 대해서만 알아보려한다. 스프링 프레임워크에서 지원해주는 것은 검색어에 CreatedDate를 입력하면 좋은 자료들이 많이 나오니 참고하기 바란다. @CreationTimestamp 해당 어노테이션은 I.. Programming/Spring 2022. 6. 9. 이전 1 2 3 4 5 6 7 8 ··· 18 다음 💲 많이 본 글