전체보기293 JSP / Servlet(서블릿)의 MVC 패턴 [ MVC 패턴 ] M (Model, 모델) : 로직(연산) 수행(데이터 작업 포함)을 담당함 V (View, 뷰) : 사용자 화면 출력을 담당함 C (Controller, 컨트롤러) : 중앙에서 Model과 View의 제어를 담당함 MVC 패턴이란, WAS 안에서의 역할을 3가지로 나눠서 구성하는 디자인 패턴을 말합니다. 일반 자바 프로그램을 작성할 때 기능별로 모듈화를 하는 것과 다르지 않습니다. 웹 어플리케이션도 자바에서 확장되어 나온 기능이기 때문에 결국 기본적인 원리는 언제나 같습니다. [ Controller (컨트롤러) ] 모든 요청은 컨트롤러로 모입니다. 사용자가 직접 URL/IP를 입력해서 접근하건 뷰(View)에서 다른 뷰(View)를 호출하건 모델(Model)에서 다른 모델을 호출하건 .. ▸JSP & Servlet/기본 상식 2020. 2. 13. Tomcat(톰캣), JSP, Servlet(서블릿)의 기본 개념 및 구조 JSP와 Servlet(서블릿)은 모두 자바로 웹 어플리케이션을 만들기 위한 도구입니다. 기존 자바를 통해 채팅 프로그램 등을 만들었듯이, 기본 원리는 거의 유사합니다. 다만 웹(Web)을 조금 더 쉽게 다룰 수 있도록 해주는 확장 기능이라고 생각하면 될 것 같습니다. [ JSP ] 확장자가 .jsp인 파일 Java Server Page html 문서 안에 자바 언어를 삽입해 사용할 수 있도록 해줌 [ Servlet(서블릿) ] 확장자가 .java인 파일 자바의 일반적인 클래스와 동일한 개념 웹을 다룰 수 있도록 해주는 "HttpServlet" 클래스를 상속받은 클래스를 의미함 JSP와 Servlet은 완전 다른 개념이 아니며, Servlet을 사용해 웹을 만들 경우 화면 인터페이스 구현이 워낙 까다로운.. ▸JSP & Servlet/기본 상식 2020. 2. 12. 오라클(Oracle) DB 및 SQL Developer 설치 [ Oracle DB 설치 ] 1. 오라클 사이트 접속 후 로그인 (상단 View Accounts 클릭하면 Sign in이 나옴) https://www.oracle.com/index.html Oracle | Integrated Cloud Applications and Platform Services About Oracle Unlock endless possibilities A culture of innovation has propelled Oracle since its inception. Today, thanks to exceptional people, we lead the market in autonomous, cloud, and applications technologies. www.oracle.co.. ▸JSP & Servlet/개발 TIP 2020. 2. 12. 톰캣(Tomcat), 이클립스(Java EE) 설치 및 연동 JAVA를 먼저 하고 오셨을 테니 JDK는 이미 설치돼 있을 거라고 생각하고 톰캣과 웹 개발용 이클립스 설치하는 과정만 추가했습니다. JDK 설치는 아래 링크 참조 부탁드립니다. 2019/12/09 - [JAVA/개발 TIP] - JAVA JDK 설치 및 환경설정 [ 아파치 톰캣(Apache Tomcat) 설치 ] 톰캣 : WEB/WAS 서버 아파치(Apache)는 기업 이름 (하둡 생태계 등 끊임없이 엄청난걸 만들어내는 비영리 재단) 1. 톰캣 서버 접속 http://tomcat.apache.org/ Apache Tomcat® - Welcome! The Apache Tomcat® software is an open source implementation of the Java Servlet, JavaSe.. ▸JSP & Servlet/개발 TIP 2020. 2. 10. 콜백(Callback) 패턴을 사용한 비동기 방식의 원리와 사용법 [ 콜백 (Callback) ] 피호출자(Callee)가 호출자(Caller)를 다시 호출하는 것 비동기적(Asynchronous) 처리를 하기 위한 디자인 패턴의 종류 자바에서 콜백 패턴을 다루는 방법에 대해 정리해 보았습니다. 간단해 보이는데 개념이 정확히 잡혀있지 않으면 꽤나 헷갈리는 패턴인 것 같습니다. 먼저 아래의 예시 상황을 한번 만들어보겠습니다. 클래스A는 채팅(하는척) 기능 담당하는 클래스이다. 채팅내용으로 "채팅을 하고 있습니다." 라는 문자열을 0.5초에 한번씩 화면에 출력한다. 채팅 문자열이 10개가 쌓이면 네트워크로 대용량 파일을 전송(하는척)한다. 클래스B는 파일 전송(하는척) 기능을 담당하는 클래스이다. 1~10까지의 숫자를 0.5초에 한번씩 전송(하는척)한다. 전송률이 40%,.. ▸JAVA/기본 문법 2020. 2. 7. 네트워크_NIO_논블로킹 채팅 서버/클라이언트 [3/3] 이전글에서 논블로킹 채팅 서버 및 클라이언트를 간단하게 만들어봤습니다. 글이 너무 길어져서 따로 코드만 첨부합니다. 코드 설명은 아래 링크를 참조하시면 됩니다. 2020/02/04 - [JAVA/기본 문법] - 네트워크_소켓(Socket) 통신_NIO 입출력(논블로킹) [2/3] 로직을 쉽게 보기 위해 객체화를 최대한 지양했습니다. [ 스레드를 사용하지 않는 논블로킹(non-blocking) 서버 코드 ] package hs; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.Channels; import java.nio.channels.Select.. ▸JAVA/기본 문법 2020. 2. 6. 네트워크_소켓(Socket) 통신_NIO 입출력(논블로킹) [2/3] [ NIO를 이용한 네트워크 입출력 - 논블로킹(non-blocking) 방식 ] 파일 입출력편에서 다룬 것 처럼 네트워크도 NIO를 통해 입출력을 수행할 수 있습니다. 스트림 계열의 경우 인풋과 아웃풋을 따로 만들어 관리해줘야 하지만 NIO의 채널을 이용하면 양방향 입출력 통로를 생성해서 사용할 수 있습니다. 또한 스트림 계열이 블로킹(blocking) 방식만 지원하는데 반해 NIO는 블로킹 방식에 더해 논블로킹(non-blocking) 방식을 추가로 지원하기 때문에 데이터 송수신양이 많을 경우 기존 스트림 계열보다 병렬처리를 더욱 효과적으로 할 수 있습니다. 블로킹(blocking) 방식이란 데이터 송수신을 기다리는 동안 해당 스레드가 대기 상태로 멈추는 것을 말합니다. 스레드편에서 다룬 블로킹과 동.. ▸JAVA/기본 문법 2020. 2. 4. 네트워크_소켓(Socket) 통신_IO 입출력 [1/3] [ 서버 소켓(ServerSocket) ] 서버에서 클라이언트의 연결 요청을 받기 위해 만들어두는 일종의 문(Door) 포트를 지정해 해당 서비스의 호수를 지정함 (여러 개 문이 있을 때 어느 문으로 들어가야할 지) [ 소켓(Socket) ] 네트워크를 통해 TCP/IP 통신을 연결시켜주는 객체 클라이언트와 서버가 연결된 상태를 만들어줌 (Session을 맺음) 자바에서 파일을 다룰 때 일단 파일을 열어서 파일 객체를 생성한 뒤 스트림이나 채널을 열어 input, output 작업을 수행하고 파일을 닫아줍니다. 네트워크 통신도 파일과 같다고 생각하면 됩니다. 소켓을 통해 서버-클라이언트 간 통신을 열어주는 것, 즉 세션을 맺어준 뒤 역시 스트림이나 채널을 열어 input, output 작업을 수행하면 됩.. ▸JAVA/기본 문법 2020. 2. 4. Thread (스레드)_스레드풀 [3/3] [ 스레드 풀 (Thread Pool) ] 미리 스레드를 생성해두고 재활용해가며 작업을 할당 미리 생성해둔 스레드를 모아둔 묶음을 스레드 풀이라고 함 이전 글들에서 다른 스레드는 각 스레드 당 하나의 run() 메소드를 가지고 있었습니다. 즉, 스레드를 하나 만들어서 실행하면 하나의 스레드는 한개의 로직(run)을 실행하게 됩니다. 그리고 이 로직이 끝나면 스레드는 종료되고 사라집니다. 스레드를 만든다는 것은 JVM이 운영체제(OS)에게 스레드 실행에 필요한 연산 자원(메모리 등)을 할당 받는다는 의미입니다. NIO의 바이트버퍼에서 일반 allocate()에 비해 allocateDirect()가 메모리 버퍼 생성과 해제에 더 시간이 많이 들었던 것처럼, 대부분 JVM 내에서 실행되는 것이 아니라 OS에 .. ▸JAVA/기본 문법 2020. 2. 1. Thread (스레드)_스레드 제어 [2/3] [ wait(), notify(), notifyAll() ] 스레드를 조금 더 세밀하게 제어할 수 있도록 해주는 메소드 동기화(Synchronized) 처리가 된 블록 안에만 사용이 가능 wait() : 스레드 상태를 RUNNABLE → WAITING 상태로 변경 notify() : WAITING 상태의 특정 스레드를 RUNNABLE 상태로 변경 notifyAll() : WAITING 상태의 모든 스레드를 RUNNABLE 상태로 변경 먼저 스레드의 상태 변경을 통해 원하는 조건에 스레드가 중지됐다 다시 가동하도록 하는 방법입니다. 아래 코드에서는 배열에 값이 하나도 없으면 Thread-1을 WAITING 상태로 만들었다가, 다른 스레드에서 배열에 값을 넣으면 notify() 메소드를 통해 Thread-1.. ▸JAVA/기본 문법 2020. 1. 30. Thread (스레드)_기본 스레드 사용 [1/3] [ Thread(스레드) ] 한 프로세스(프로그램 단위)에서 동시에 실행되는 작업 단위 동시에 여러 기능을 사용할 수 있도록 하거나 같은 기능을 여러 명이 동시에 사용할 수 있도록 해줌 프로그램은 항상 절차지향적인 순서대로 실행이 되는데 동시에 여러 절차를 수행할 수 있도록 하는 개념이 스레드의 개념입니다. 연산을 담당하는 CPU의 Core가 한 개라면 여러 스레드의 절차를 돌아가면서 조금씩 수행해 우리가 볼 때는 동시에 여러 로직이 실행되는 것처럼 보이게 됩니다. 4Core CPU라면 4개의 스레드를 동시에 사용해서 연산을 처리하는 것이 가장 좋은 방법이 될 수 있습니다. 만약 8개의 스레드를 사용하게 되면 8개 로직을 동시에 실행할 수 있지만 실질적인 성능이 증가하진 않습니다. 다만 모든 CPU와 스.. ▸JAVA/기본 문법 2020. 1. 30. 윈도우 해상도와 배율 조정 (글자/화면 크기 키우기) 해상도를 높이면 화면의 글자와 그림 등의 크기가 작아집니다. 그림이야 늘려서 보면 되는데 글자가 작아져서 눈이 아픈 경우가 생깁니다. 프로그램에 따라 화면이나 글자를 키워서 보는 방법도 있지만 메모장과 같이 글자 크기를 조정할 수 없는 프로그램도 있어서 짜증이 납니다. 이런 문제를 해결하기 위한 방법이 해상도는 높이되 배율을 늘려서 크기를 키우는 것인데 이 경우 글자들이 번져 보여서 또 한번 짜증을 유발하게 됩니다. 구글링 하다가 해결 방법을 발견해서 공유합니다. 원문 출처는 아래 링크에 있습니다. 다른 유용한 정보도 많은 블로그라 한 번 방문에서 구경해봐도 좋을 것 같습니다. ㅎㅎ https://mastmanban.tistory.com/1019 일단 해상도라는 건 현재 우리가 사용하고 있는 모니터의 픽.. ▸기타 TIP 2020. 1. 19. 크롬 바탕화면 색깔 및 윈도우 기본 색상 바꾸기 까만색 배경의 IDE들만 보다가 블로그 쓰려고 하니 눈이 엄청 아프네요. 바꿀 수 있는 밝은 색깔들을 최대한 어둡게 바꾸는 중입니다. [ 크롬 색상 어둡게 바꾸기 ] 1. 우측 상단 설정창 접속 후 좌측에 '확장 프로그램' 클릭 2. 버전에 따라 다르겠지만 '더 많은 확장 프로그램 보기' 또는 'Chrome 웹 스토어 열기' 클릭 3. 오른쪽 Chrome에 추가 버튼 클릭 (현재 깔려있어서 평가하기로 뜨고 있음) 4. 메세지 뜨면 '확장 프로그램 추가' 클릭 5. 우측 상단에 팽귄 한마리가 추가되면서 설치 완료. 바로 브라우저가 까만색으로 바뀌는데 글자색 반전이 잘 안되는 경우 브라우저를 껐다 키면 잘 됨 6. 팽귄 누르면 블랙 모드를 껐다 켰다 할 수 있음. 세부 조정도 가능해서 이리저리 해봤.. ▸기타 TIP 2020. 1. 19. 컴퓨터 화면 움직이는 그림(gif)으로 만들기 (움짤만들기) 여러 가지 프로그램들이 있지만, 설치가 필요없고 간단하게 gif로 만들어주는 프로그램이 있어서 사용하고 있습니다. [ ScreenToGif ] https://www.screentogif.com/ 1. 두 번째에 있는 "Single executable, no install" 파일을 다운받아 압축 풀어주고 실행파일 실행 2. 원하는 기능 눌러서 gif만들기 녹화 - 모니터에 움직이는 화면을 그대로 녹화 웹캠 - 연결된 녹화 장치가 있다면 찍으면서 녹화 칠판 - 직접 그리는 그림을 녹화 (그림판에 그리면서 녹화버튼 누르는 것과 비슷) 빈 프로젝트 (편집기 누르면 있음) - 직접 사진을 프레임에 넣어서 만들기 3. 편집기 필요 없는 프레임을 제거, 중복된 프레임 제거, 전환효과 부여 등 여러 가지 편.. ▸기타 TIP 2020. 1. 19. string.h_strcat, strncat_문자열 합치기 (구현식 포함) [ strcat ] arguments로 제공된 두 문자열을 합쳐줌 (앞 문자열에 뒷 문자열 내용을 추가함) 원본 문자열은 추가 문자열을 포함할만큼의 충분한 공간을 확보하고 있어야 함 공간이 부족할 경우 에러 발생 [ strncat ] 추가 문자열, 정확히는 char 타입 배열에서 가져올 바이트 수를 지정해줌 구현식은 아래와 같습니다. 실제 코드는 아니고 직접 짜본 코드입니다. 간단한 코드입니다. [ strcat ] #include #include void MyStrcat(char str[], char str2[]); int main() { char str[15] = "Hello "; char str2[] = "Wolrd..!"; strcat(str, str2); printf("%s\n", str); //.. ▸C언어/기본함수 및 구현식 2020. 1. 15. 이전 1 ··· 8 9 10 11 12 13 14 ··· 20 다음 💲 추천 글 반응형