이번 포스팅에서는 웹 어플리케이션의 동작에서 핵심적인 역할을 하는 WAS에 대해 다룬다. 웹 서버(Web Server)와 혼동하는 사례가 잦아, 면접 전에 정리할 필요가 있는 개념이다. 먼저 이해를 돕기 위해 웹 아키택처에 대한 이야기를 꺼내려고 한다. ▶ 2-tier 아키택처의 구조도. 클라이언트가 서버의 DB에 직접 접속한다. 3-tier(혹은 N-tier) 아키택처가 등장하기 전, 웹 애플리케이션들은 주로 2-tier 아키택처를 활용했다. 클라이언트가 직접 서버에 접속하여, 서버의 자원을 활용하는 방식이었으므로 개발이 편리했다. 하지만 2-tier 아키택처에서의 웹 애플리케이션은 보안에 취약했고, 유지보수도 어려웠다. 그래서 등장한 것이 3-tier 아키택처이다. ▶ 3-tier 아키택처의 구조도 ..
집합연산자는 조회(SELECT) 쿼리의 결과를 대상으로 연산을 수행하는 연산자이다. UNION, UNION ALL, INTERSECT, MINUS등이 있다. 조회의 결과를 대상으로 연산을 수행하므로, 여러 개의 SELECT문을 하나의 쿼리로 만드는 연산자라고 할 수 있다. 정리를 하기 전에, 아래와 같은 데이터가 있다고 가정하자 1234567891011순번 과목명 이름----------------------1 국어 철수2 영어 철수3 수학 철수1 국어 영희2 사회 영희3 과학 영희4 도덕 영희5 영어 영희 cs 철수는 순서대로 국어, 영어, 수학을 이번학기에 듣고, 영희는 국어, 사회, 과학, 도덕, 영어를 이번학기에 듣는다. 이 데이터를 예로, 집합연산자를 소개하려고 한다. 1. UNION UNION은..
C++와 JAVA을 비교하는 것은 대학에서 프로그래밍 언어를 배울 때, 얼핏 배우고 지나갔던 내용이었다. 비슷한 성격(객체지향)을 띄는 언어이지만, 차이점도 극명한 언어이기도하다. 나름의 기준으로 3가지 기준으로 차이점들을 정리해봤다. 아, 그리고 여기에 작성되는 것들이 JAVA와 C++ 차이점의 전부는 아니라는 점 꼭 알아뒀으면 좋겠다. 그리고 나름대로 중요한 것만 뽑았지만... 아닐 수도 있다.. 1. 상속 대학 수업에서 교수가 학생에게 C++과 JAVA의 차이점을 묻는다면, 높은 확률로 학생은 상속에 관련된 차이점을 대답할 것이다. 그정도로 상속에 있어 두 언어의 차이점은 극명한데, JAVA가 C++보다 단순한 상속 체계를 지원한다. 첫째로, C++은 다중 상속을 지원하고 JAVA는 그렇지 않다. ..
오라클에서 사용할 수 있는 함수(사용자 정의 함수)제외를 간단하게 정리함. 1. 숫자함수 - ABS(n): n의 절대값을 반환함 - CEIL(n), FLOOR(n): n보다 같거나 큰 정수를 반환한다 (n은 실수) - ROUND(n, i): n을 소수점 i+1번째 자리에서 반올림 - TRUNC(n,i): n을 소수점 i+1번째 자리에서 버림 - POWER(n1, n2): n1을 n2번 거듭제곱한 결과 - MOD(n1, n2): n1을 n2로 나눈 나머지 값 2. 문자함수 - INITCAP(char): char의 첫문자(공백과 숫자를 제외한 알파벳 중 첫문자)만 대문자, 나머지는 소문자로 변환 - LOWER(char): char을 소문자로 변환 - UPPER(char): char을 대문자로 변환 - CON..
Springboot 책보면서 따라하다가.. (인텔리J 사용) Gradle에 새로운 dependency를 추가하고자 build.gradle에 compile('org.springframework.boot:spring-boot-starter-thymeleaf')compile('org.springframework.boot:spring-boot-starter-social-twitter') 라고 작성. 하지만 적용이 안된다.build하고 compile하고 쌩쇼를 하다가 구글링.. 결국 Refresh를 하라는 답변을 발견.근데 IntelliJ에서 그 기능을 못찾음. 그러다가 우연히 우측 하단에 Gradle 메뉴 발견! Gradle -> 프로젝트 우클릭 -> Refresh external project로 간단하게 해결..
정보보호 관련 수업을 들으면, 가장 먼저 배우게 되는 내용이 SSL이다. 암호화의 기원, DES, AES와 같은 개요에 해당하는 내용은 생략하고, 바로 본론으로 들어가도록 하겠다. 대칭키(Symmetric Key) 암호화 방식은 암호화와 복호화에 같은 암호 키(대칭키)를 사용하는 암호화 알고리즘이다. 후술할 공개키 암호화 방식에 비해 암호화 및 복호화가 빠르다는 장점이 있다. 하지만, 암호화 통신을 하는 사용자끼리 같은 대칭키를 공유해야만 한다는 단점이 있다. ▶대칭키 암호화 방식을 잘 설명한 그림. 대칭키를 공유해야만 한다는 것이 왜 단점일까? 먼저, 대칭키 암호화 방식은 암호화와 복호화가 비교적 간편하다. 게다가 대칭키를 사용자끼리 물리적으로 직접 만나서 전달하지 않는한, 대칭키를 전달하는 과정에서 ..
SQL의 조건식은 WHERE절에서 많이 사용된다. WHERE절은 SELECT, UPDATE, DELETE문에서 특정 조건의 레코드를 지정하고 싶을 때 사용된다. WHERE절에서 사용했던 NOT, NULL등의 조건식들의 모두 포함된다고 보면 된다. 조건식의 분류는 아래와 같다. 1. 비교조건식 (ex: ANY, SOME, ALL, IN, EXIST) 2. 논리조건식 (ex: AND, OR, NOT, BETWEEN) 3. NULL조건식 4. LIKE조건식 1. 비교조건식 비교조건식은 논리연산자(, 등, 참고: [ORACLE] SQL의 연산자(Operator) 정리)나 ANY, SOME, ALL, IN, EXISTS 키워드로 특정 값을 비교하는 조건식을 말한다. 논리연산자의 사용 예는 생략하고, ANY와 SO..
'프레임워크(Framework)'라는 용어는 정말 많이 쓰이지만, 딱 정의를 내리기엔 애매한 용어같다. 먼저, 위키피디아 한국어판의 '소프트웨어 프레임워크'에 대한 정의는 아래와 같다. "소프트웨어 환경에서 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조" '라이브러리(Library)'라는 용어의 경우에는 프레임워크에 비해 비교적 정의가 명확한데, 일단 위키피디아 한국어판의 정의는 아래와 같다. "소프트웨어 개발에 쓰이는 하부 프로그램들의 모임" 즉, 자주 쓰일 만한 기능들을 (따로 구현하여) 모아 놓은 유틸(혹은 클래스)의 모음이라고 할 수 있다. 라이브러리와 프레임워크, 이 둘은 애플리케이션의 틀과 구조를 결정한다는 측면에서 활용도가 상당히 유사하다. 그래서 이를 구분하기가 굉장히 힘들..
당신이 인터넷으로 웹 페이지에 접속 할 때 어떤 네트워크 작용이 일어나는지 설명하는 것. "어느정도로 자세히 설명해야하는가?" 에 대한 명확한 기준은 없지만, 대학 시절 배운 지식만으로도 충분히 자세히 설명할 수 있다. 이 세상의 대부분 웹 서버는 모두 IP 주소를 가지고 있다. 당신이 인터넷을 서핑하는 것도, 해당하는 IP주소로 접속하여 그 웹서버가 제공하는 데이터를 보는 것이다. 즉, 브라우저에 IP 주소를 직접 입력하면 이 포스팅에서 설명할 대부분 과정을 생략하고 웹 사이트에 접속할 수 있다. ▶네이버의 IP주소를 직접 입력하여 접속한 모습, nslookup 명령어로 DNS서버에서 IP주소를 찾았다. 이렇게 접속하면 속도도 뭔가 빠른것 같고(실제로 더 빠르긴 하지만 체감하기 어렵다.) 전과 다름없는..
WHERE문은 SQL의 SELECT, UPDATE, DELETE문에서 쓰인다. 오늘은 SELECT문에서 자주 쓰이는 WHERE 조건에 대해 포스팅해보려고한다. 오라클에서는 다양한 연산자를 제공하는데, 분류하자면 아래와 같다. 1. 수식연산자 (예: +, -, *, /) 2. 문자연산자 (예: ||) 3. 논리연산자 (예: =,, 등) 4. 집합연산자 (예: UNION, INTERSECT 등) 5. 계층형 쿼리연산자 1. 수식연산자 더하기, 빼기, 곱하기, 나누기이다. +와 -의 경우, 양수와 음수를 나타낼 때 사용하기도 한다. 당연히 조건식에 직접적으로는 잘 사용되지 않는다. (+, -, *, / 로는 논리적 판단을 할 수가 없음) 2. 문자연산자 ||이 있는데, 두 문자를 연결하는 연산을 수행한다. 사..