분류 전체보기
-
[AWS] EC2 프리티어로 인스턴스 생성하는 법!Cloud/AWS 2021. 3. 5. 15:13
AWS EC2 프리티어 만드는 법 AWS 계정을 로그인 화면 위와 같은 화면을 볼 수 있습니다. 그리고 여기서 인스턴스 시작 버튼을 누르겠습니다. 위의 보이는 Ubuntu를 선택하겠습니다. 위와 같이 기본으로 선택에서 있는 것을 선택하고 보안 그룹으로 들어가겠습니다. EC2의 port를 열어주기 위해서 보안 그룹의 설정을 합니다. (규칙 추가를 누르겠습니다.) 저는 HTTP, HTTPS, Spring, NodeJS, MySQL을 주로 사용할 예정이라서 위와 같이 포트번호를 열겠습니다. 그리고 검토 및 시작을 누르겠습니다. 그리고 시작하기를 누르겠습니다. 그러면 위와 같은 화면을 볼 수 있습니다. (EC2에 접속하기 위해서는 pem키가 필요하기 때문에 pem 파일의 이름을 설정한 후에 다운로드 하고 잃어버..
-
[Java] Thread 상태 변화와 관련 메소드 정리카테고리 없음 2021. 2. 12. 14:43
Thread 생명주기와 해당 상태를 만들고 해지할 수 있는 조건 이번 글에서는 Thread의 생명주기에 대해서 정리하고, Java 에서는 쓰레드의 상태 변화를 어떤 메소드를 이용해서 하는지에 대해서 알아보겠습니다. 생성(new) : 프로세스가 메모리에 올라와 실행 준비를 완료한 상태입니다.(쓰레드가 생성되고 start()가 호출되지 않은 상태) 준비(ready) : 생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태(start()가 호출된 상태) 수행(running) : 준비 상태에 있는 프로세스 중 하나가 CPU를 얻어 실제 작업을 수행하는 상태 대기(waiting) : 실행 상태에 있는 프로세스가 입출력을 요청하면 입출력이 완료될 때까지 기다리는 상태 종료(exit) : 프로세스가 종료된 상태 쓰레..
-
[Java] Java Synchronized Lock의 범위는?Language/Java 2021. 2. 11. 20:50
Synchronized 키워드 Lock의 범위는 어떻게 될까? Synchronized 키워드의 lock 범위는 어떻게 될까요? 라는 질문을 들으면 어떤 대답을 할 수 있을까요? 정답을 말하기 전에 예제 코드를 보면서 알아보겠습니다. public class MusicExam { public static void main(String[] args) { MusicBox box = new MusicBox(); MusicPlayer musicPlayer1 = new MusicPlayer(1, box); MusicPlayer musicPlayer2 = new MusicPlayer(2, box); musicPlayer1.start(); musicPlayer2.start(); } } public class MusicB..
-
[Java] ConcurrentHashMap 이란 무엇일까?Language/Java 2021. 2. 11. 20:44
들어가기 전에 HashTable, HashMap, ConcurrnetHashMap은 많이 유사한 특징들을 가지고 있습니다. 하지만 세부적으로 보면 조금씩 꽤나 차이가 있는데요. 간단하게 어떤 차이가 있는지 알아보면서 시작하겠습니다. Hashtable 클래스 public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable { public synchronized int size() { } @SuppressWarnings("unchecked") public synchronized V get(Object key) { } public synchronized V put(K key, V value) { } } Hashta..
-
[Java] 직렬화(Serialization)란 무엇일까?Language/Java 2021. 1. 30. 01:39
Serializable에 대해서 알아보기 직렬화라는 용어에 대해서 들어만 보고 공부해본 적은 없는데 이번 기회에 정리를 하게 되었습니다,, 이번 글에서는 직렬화에 대해서 알아보겠습니다. public interface Serializable { } Serializable의 인터페이스를 보면 메소드가 하나도 없는 것을 볼 수 있습니다. 아무런 구현해야 할 메소드도 없는 이 인터페이스가 도대체 왜 있는 것일까요? 개발을 하다 보면 아래와 같은 경우가 존재합니다. 생성한 객체를 파일로 저장할 일이 있을 수도 있습니다. 저장한 객체를 읽을 일이 생길 수도 있습니다. 다른 서버에서 생성한 객체를 받을 일도 생길 수 있습니다. 이럴 때 꼭 필요한 것이 Serializable 입니다. 우리가 만든 클래스가 파일에 읽거..
-
백준 2110번 공유기 설치 (Java)Baekjoon 2021. 1. 27. 23:10
문제 링크는 여기이고 풀이에 대해서 정리를 해보겠습니다. 문제를 보았을 때, 집의 좌표가 10억까지 가능한 것을 볼 수 있습니다. 굉장히 큰 값이라 그냥 탐색으로는 안될 거 같고 이진탐색으로 해결을 해야 할 것 같습니다. 1. 입력 받기 처음에 입력은 정렬된 순서로 주지 않기 때문에 정렬을 해서 위와 같이 만들었습니다. 그리고 우리가 구해야할 것은 공유기를 설치할 수 있는 집 사이의 최대 거리이기 때문에 이진탐색으로 조건을 걸어서 탐색을 해보겠습니다. 집 사이의 최대거리는 9 - 1 = 8 입니다. 집 사이의 최소거리는 2 - 1 = 1 입니다. 위의 경우라면 집마다 거리가 1 ~ 8 사이일 것이고, 각 거리들 마다 문제에서 준 공유기의 개수만큼 설치할 수 있는지 여부를 판단해야 합니다. 그러면 최대 G..
-
[Java] Generic Type erasure란 무엇일까?Language/Java 2021. 1. 26. 16:55
들어가기 전에 이번 글에서는 Generic Type erasure에 대해서 알아보겠습니다. 저에게는 쉽지 않은 내용입니다 ㅠㅠ 하지만 중요한 내용이니 정리를 열심히 해보겠습니다. 제네릭 은 JDK 1.5에 도입되었습니다. 제네릭을 공부해보셨으면 확실히 버그에 대한 처리와 좀 더 안정적이고 편리하게? 개발을 할 수 있다는 것을 느낄 수 있었을 것입니다. 이렇게 제네릭이 5버전 부터 나왔기에, 하위 버전과의 호환성 유지를 위한 작업이 필요했습니다. 따라서 코드의 호환성 때매 소거(erasure) 방식을 사용하게 됩니다. 제네릭과 배열의 차이를 2가지만 간단하게 알아보면서 소거방식에 대해 정리해보겠습니다. 첫 번째 배열은 공변이고, 제네릭은 불공변입니다. 저번 글에서도 정리한 적이 있는데요 한번 더 정리하고 ..