Class는 변수와 함수를 가지고있는 한 구조체이다. 이것은 하나의 그냥 구조체인거지 이 Class를 사용하려면 컴퓨터상에서는 메모리에 올려야 한다. Class를 사용할수 있게 메모리에 올리면 그것은 Instance가 되는것이다. 예를 들어 Human이라는 하나의 클래스를 정의했다 치자. Human Class에는 변수와 함수가 정의 되어있을 것이고 이것을 사용하기 위해 Human man = new Human() 을 했을 것이다. 그러면 Human은 Class이고 man은 Instance이다. man은 new Human() 이라는 메모리에 올려진 하나의 클래스를 담은 변수이다. 이것은 곧 Instance이다.
웹서버를 구동시키고 확인하기 위해 localhost를 치면 It works가 뜬다. 그 이유에 대해 알아보려고 한다. Apache는 웹서버이고 정적파일을 처리해주는 서비스이다. 즉 html, 이미지 같은 파일을 요청했을때 처리해주는 것이다. 그렇다면 어떤 파일을 요청할건지 루트와 파일명까지 알려줘야 웹서버가 처리해줄것이다. 하지만 우리는 localhost라는 정보만 URL에 입력했을뿐인데 It works를 응답받는다. 그 이유는 설정파일에서 정해줬기 때문이다. Apache의 설정파일은 httpd.conf라는 파일이다. 모든 설정은 여기에서 이루어지고 다른 conf파일은 include해서 포함해서 처리한다. 밑에 mod_jk.conf도 마찬가지로 httpd.conf안에 포함시켜서 처리시킨다. httpd.c..
Apache Tomcat 연동이유Apache는 정적파일(html, js, 이미지 등)을 처리해주고Tomcat은 동적파일(jsp 등)을 처리해준다. 위 그림에서 보듯이 이 둘을 연동해주면 정적파일은 Apache로 처리되고 동적파일은 Tomcat이 처리해줌으로써 클라이언트에게 퍼포먼스가 많이 향상된다. 다운로드Mod_jk 파일 다운로드 https://www.apachelounge.com/download/ 위 사이트에서 자기 아파치 버전에 맞는 mod_jk.so 파일을 다운받으면된다. Tomcat은 아무거나 깔아도된다. 다 정상적으로 깔았고 실행되면localhost는 아파치가 처리한 페이지가 뜨고localhost:8080 은 톰캣이 처리한 페이지가 뜰것이다. 설정 먼저 다운받은 mod_jk를 Apache홈에있..
제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 컬렉션을 사용할 때 제네릭을 특히 많이 사용한다. 하지만 파라미터로 컬렉션을 받을 때 제네릭이 Stirng이라면 String 제네릭을 가진 컬렉션만이 파라미터로 받아진다. public class Test { public static void main(String[] args) { List list1 = new ArrayList(); list1.add("1"); list1.add("1"); list1.add("1"); list1.add("1"); method1(list1); List list2 = new ArrayList(); list2.add(1); list2.add(1); list2.add(1); list..
이제 자신이 만든 프로젝트를 EC2 Ubuntu에 올려야 한다. 자신의 컴퓨터에 있는 파일을 서버에 있는 컴퓨터에 올리기 위해 파일질라 라는 프로그램을 사용해야 한다. filezilla 다운받는 곳 https://filezilla-project.org/ 왼쪽걸 다운 받고 실행시키고 파란색 동그라미 안에 있는걸 클릭하고나면 사이트 관리자 창이 뜬다. 호스트는 EC2 인스턴스 IPv4를 입력하면 되고 로그온 유형은 키파일로 정하고 사용자는 ubuntu 키파일은 EC2만들때 설정한 키 페어 파일을 찾아주면된다. 파일이 있는곳으로 갔는데 안보이는데 그이유는 확장자가 달라서 이다. 확장자를 PPM files로 바꿔주면 파일이 보일것이다. 다 성공적으로 기입하고 연결을 누르면 이 창이 뜰텐데 체크를 누르고 확인을 ..
내가 AWS을 공부했던 이유는 프로젝트를 서버에 프로젝트를 올려 어디에서나 그 프로젝트를 실행시키고 싶었기 때문이다. 그렇게 하기 위해선 AWS Ubuntu에 자바, 톰캣, 디비까지 다 설치를 해야한다. AWS 우분투에는 기본적인 프로그램이 깔려있지 않다. 그래서 하나하나 다 깔아줘야 한다. apt-get(Advanced Packaging Tool)은 우분투를 포함한 데비안계열의 리눅스에서 쓰이는 패키지 관리 명령어 도구이다. 이 명령어를 이용해서 개발관련 패키지를 설치할 수 있다. 자바 설치 자바 버전 확인java -versioncs 앞에 sudo 명령어는 슈퍼유저로서 프로그램을 구동할 수 있도록 하는 명령어이다. 쉽게 말해 모든 권한이 있다는 것이다. java -version 결과 자바가 없는 것을 ..
Windows에서 리눅스 인스턴스에 연결Window에서 리눅스 인스턴스에 접속하려면 SSH포트를 이용해야 한다. 윈도우에서는 SSH를 가지고 있지 않기 때문에 원격제어를 하기 위해서는 SSH역할을 해주는 프로그램을 직접 깔아야 한다. 맥이나 리눅스를 이미 사용하고 있다면 깔 필요가 없다. SSH역할을 해주는 프로그램은 여러가지가 있지만 Putty나 Xshell을 사용한다. 나는 Xshell을 사용하도록 하겠다. Xshell 다운https://www.netsarang.co.kr/download/software.html 에서 Xshell을 다운받으면 된다. 버전은 Home/School용으로 다운 받았다. Xshell을 이용하여 EC2 우분투 인스턴스 연결Xehll을 키고 alt + n 을 누르면 새 세션을 ..
키 페어 생성AWS에서 가상 서버에 접근하려면 개인키(private key)와 공개키(public key)로 구성된 키 페어(key pair)가 필요하다. 공개키는 AWS에 업로드되어 가상 가상 서버에 삽이되고, 개인키는 자신이 소유하지만 훨씬 더 안전하다. 리눅스 서버에 접근하려면 SSH 프로토콜을 사용한다. 로그인 시 비밀번호 대신 키 페어를 이용하여 인증할 수 있다. 윈도우 서버에는 원격 데스크톱 프로토콜(RDP, Remote Desktop Protocol)로 접근한다. 로그인하려면 관리자 비밀번호를 해독하는 키 페어가 필요하다. 키페어를 생성하기 위해 먼저 AWS 관리 콘솔을 열고 좌측상단에 서비스를 클릭하여 EC2를 선택하자 그러면 좌측에 EC2 대시보드 메뉴들이 있는데 네트워크 및 보안 탭에서..
AWS란아마존 웹 서비스(AWS, Amazon Web Services)는 추상화된 각기 다른 계층에 컴퓨팅, 저장 공간, 네트워킹 솔루션을 제공하는 웹 서비스 플랫폼이다. 일반적으로 AWS는 클라우드 컴퓨팅 플랫폼(cloud computing platform)으로 알려져 있다. 클라우드 컴퓨팅이란 IT 자원의 공급과 소비를 은유적으로 빗댄 용어다. 클라우드에서의 IT 자원은 사용자에게 직접 드러나지 않는다. 그 사이에 추상화 계층이 있다. 클라우드가 제공하는 추상화의 수준은 가상 하드웨어에서부터 복잡한 분산 시스템에 이르기까지 다양하다. AWS에서는 엄청난 양의 자원을 사용자가 원하는 즉시 사용할 수 있으며 사용한 만큼만 비용을 지불 하면된다. 비용AWS에서 요금은 전기 요금과 유사하게 서비스 사용량에 ..
Object 클래스 클래스를 선언할 때 extneds 키워드로 다른 클래스를 상속하지 않으면 암시적으로 java.lang.Object 클래스를 상속하게 된다. 따라서 자바의 모든 클래스는 Object 클래스의 자식이거나 자손 클래스이다. Object는 자바의 최상위 부모 클래스에 해당한다. 따라서 Object에 있는 메소드를 사용할 수 있는 것이다. 다음 대표적인 객체비교 equals() 메소드를 보자 객체 비교(equals()) equals() 메소드의 매개 타입은 Object인데, 이것은 모든 객체가 매개값으로 대입될 수있음을 말한다. 그 이유는 Object가 최상위 타입이므로 모든 객체는 Object 타입으로 자동 타입 변환될 수 있기 때문이다. 기본적으로 equals() 메소드는 비교 연산자인 =..
스레드의 이름스레드는 자신의 이름을 가지고 있따. 스레드의 이름으로 디버깅할 때 어떤 스레드가 어떤 작업을 하는지 조사할 목적으로 가끔 사용된다. 메인 스레드는 "main"이라는 이름을 가지고 있고, 우리가 직접 생성한 스레드는 자동적으로 "Thread-n"이라는 이름으로 설정된다. Thread-n 대신 다른 이름으로 설정하고 싶다면 Thread 클래스의 setName() 메소드로 변경하면 된다. public class ThreadNameExample { public static void main(String[] args) { Thread mainThread = Thread.currentThread(); System.out.println("프로그램 시작 스레드 이름: " + mainThread.getNa..
프로세스(process)와 스레드(thread) 프로세스란 간단히 말해서 '실행 중인 프로그램'이다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 된다. 프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 드리고 스레드로 구성되어 있으며 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드이다. 즉 프로세스는 CPU, 메모리 등의 자원과 스레드로 구성되어있고, 프로세스에 할당된 자원을 가지고 실제로 작업을 수행하는건 스레드이다. 그리고 프로세스에 자원을 할당해주는건 운영체제이다. 그래서 모든 프로세스에는 최소한 하나 이상의 스레드가 존재하며, 둘 이상의 스레드를 가진 프로세스를 '멀티스레드 프로세스(multi-threaded process..