class StaticVar {
	static int a = 1;
	int b = 1;
	
	public void staticTest() {
		a = a + 1;
		b = b + 1;
		System.out.println("static int a : " + a);
		System.out.println("member int b : " + b);
	}
}


public class StaticMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StaticVar v1 = new StaticVar();
		v1.staticTest();
		
		StaticVar v2 = new StaticVar();
		v2.staticTest();
	}

}

Static 변수는 Static메모리 영역에 프로그램 종료까지 남아있다.

전역변수가 프로그램이 종료될 때까지 어디서든 사용이 가능하다

위 프로그램을 돌려본 결과는 다음과 같다.

static int a : 2
member int b : 2
static int a : 3
member int b : 2

static 변수는 모든 객체가 메모리를 공유해서 1이 두번 더해진다.

 

class A{}

public class HeapArea {
	public static void main(String[] args) {
		A a = null; // A타입의 a객체 선언 및 Stack 영역 공간 할당
		System.out.println(a); // 결과 : null
		a = new A(); // Heap 메모리에 공간 할당 및 객체(a)에 참조값 할당
		System.out.println(a); // 결과 : @15db9742
	}
}

A타입의 a객체 선언을 하면 메모리의 Stack 영역에 공간 할당이된다.

new연산자를 쓰면 Heap 메모리에 공간 할당 및 객체(a)에 참조값이 할당된다.

클래스는 틀이고, 인스턴스는 메모리에 올라온 상태다.

class Animal {
    String name;

    public void setName(String name) {
        this.name = name;
    }
}

public class Sample {
    public static void main(String[] args) {
        Animal cat = new Animal();
        cat.setName("boby");  // 메소드 호출

        Animal dog = new Animal();
        dog.setName("happy");

        System.out.println(cat.name);
        System.out.println(dog.name);
    }
}

Animal이라는 틀을 만들어서 cat과 dog 객체를 생성한다.

각각 setName 메소드를 통해 이름을 대입하고 멤버 변수 를 출력한다.

결과는 다음과 같다.

boby
happy
public class ArrayTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int[] arr2 = {1, 2, 3, 4, 5};
		
		// arr2 에 있는,
		// 모든 데이터를 출력하세요.
		for (int i = 0;i < arr2.length;i++) {
			System.out.println(arr[i]);
		}

	}

}

배열이름.length로 배열의 길이를 구할 수 있다.

배열에 있는 모든 데이터를 출력하고 싶으면 위와 같이 쓸 수 있다.

public class ArrayTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// 데이터를 여러개 저장하는, 가장 기본적인 방법
		// 배열 (Array)
		
		int[] arr = new int[5];
		
		arr[0] = 1;
		arr[1] = 2;
		arr[2] = 3;
		arr[3] = 4;
		arr[4] = 5;
		arr[5] = 6; // 에러

	}

}

배열의 범위를 벗어나는 인덱스를 억세스 할 경우 IndexOutofBounds Exception 오류가 나온다.

public class ArrayTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// 데이터를 여러개 저장하는, 가장 기본적인 방법
		// 배열 (Array)
		
		int[] arr = new int[5];
		
		arr[0] = 1;
		arr[1] = 2;
		arr[2] = 3;
		arr[3] = 4;
		arr[4] = 5;


	}

}

배열이름[0부터 배열의길이-1까지의 자연수] 로 억세스 한다.

public class ArrayTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// 데이터를 여러개 저장하는, 가장 기본적인 방법
		// 배열 (Array)
		
        	int[] arr = {1, 2, 3}
		int[] arr2 = new int[5];
        
		
		
		}

	}

}

타입[] = {들어갈 값} 또는 

타입[] = new 타입[배열의 길이]로 생성한다.

기본 timeout은 6초인데 실행시간이 오래걸리는 api면 오류가 날 수 있다.

serverless.yml 파일에 provider에 timeout:원하는 초 를 대입한다.

판다스 레이어 만드는 방법

1. putty를 이용해서 ec2에 접속한다.

2. 파이썬이 없으면, 아나콘다를 설치한다.

3. $ conda create -n lambda python=3.8 가상환경을 파이썬 3.8버전으로 만들어준다.

4. 가상환경으로 이동하고

5. $mkdir python 디렉토리를 하나 만든다.

6. 디렉토리에 이동해서

7. $ pip install -t . pandas 설치한다.

8.필요 없는 파일 삭제 

9. 아마존의 리눅스에서 설치될 판다스와 넘파이 파일을 다운로드한다.

 

pandas

Powerful data structures for data analysis, time series, and statistics

pypi.org

 

numpy

NumPy is the fundamental package for array computing with Python.

pypi.org

10. 파이썬 3.8이므로, 38검색한다.

11. 그중에서 manylinux ... x86_64.whl 파일의 링크 주소를 복사한다.

12. 복사한 링크 주소를,putty로 가서, ec2에 다운로드 받는다.

$ wget 복사한 링크 주소

13.먼저 파일명을 whl => zip으로 변경

$ mv ...numpy...whl ..numpy...zip

$ my ...pandas...whl ...pandas...zip

14. 변경된 파일을 압축 푼다.

$ unzip numpy...zip

$ unzip pandas...zip

15. 필요없는 파일들 삭제한다.

$ rm -rf *.zip *.dist-info

16. 상위 경로로 이동한다.

$ ce..

17. python 폴더를 압축한다.

$ zip -r pandas_layer.zip python

18. aws에 로그인한다.

19. s3를 선택하고 버킷을 만든다.

20. 버킷이 만들어지면, 그 버킷으로 이동해서, pandas_layer.zip 파일을 업로드한다.

21. 저 파일은, 파일질라로 다운로드 받는다.

22. 아까의 버킷에, 다운로드 받은 pandas_layer.zip파일을 업로드한다.

23. 업로드가 완료되면, 파일명을 눌러서 속성 부분의 객체 url을 링크주소 복사한다.

24. aws 람다로 이동한다.

25. 람다에서 왼쪽의 계층 메뉴를 선택한다.

26. 이름w적고, s3 링크 넣고, x86_64,python3.8로 생성한다.

27. 람다에서 함수를 클릭 우리가 만든 앱을 선택한다.

28. Layers를 클릭한후, Add a Layer 클릭

29. 사용자 지정 레이어를 선택한 후 아래쪽 목록 누르면 우리가 만든 레이어가 나온다.

30. 비주얼스튜디오코드의 requirement.txt 파일에서 pandas와 numpy는 빼준다.

 

 

serverless framework를 통해서 다음과 같이 만들 것이다.

먼저 콘솔에서 서버리스 앱 생성한다.

로컬 디렉토리에  코드 붙여넣기

sls deploy로 배포해서 테스트

깃허브닷컴에 레파지토리 새로 생성

로컬 디렉토리랑 레파지토리랑 연결

서버리스 프레임워크에서 ci/cd 설정

소스코드 수정해서, 커밋하고 푸시
자동배포 잘 되었는지 확인

+ Recent posts