본문 바로가기

부트캠프/백28

11.17 재귀 오늘부터 section2가 시작되었다. 새롭게 알고리즘 푸는시간이 생겼다. 첫문제는 배열을 입력받아 첫요소와 마지막 요소로 키와 값 으로 받는 Hashmap을 리턴하는 문제였다. 빈 해시맵 객체를 선언하고 거기에 put()으로 값을 넣었다. 연습문제 풀었던걸 복습해 가며 다시 풀어봐야겠다. ㅇ 재귀 원래의자리로 되돌아가거나 되돌아온다는 의미. 처음에 이게 무슨 소린가했는데 코드를 보니 이해가 어느정도 갔다. public void recursion(){ System.out.println("this is"); System.out.println("recursion"); recursion(); 이런식으로 메서드내에 자신을 집어넣는 구조를 말한다. 하지만 이렇게되면 무한루프가 발생되므로 꼭 빠져나올 수 있는 코드.. 2022. 11. 18.
11.15 Thread2 ㅇ Thread 동기화 멀티 스레드 프로세스의 경우 두 스레드가 동일한 데이터를 공유하게 되어 문제 발생가능함. 두 스레드간에 객체가 공유되기 때문에 발생하는 오류를 발생하지 않게 하는 것이 스레드 동기화. ㅇ 임계영역&락 임계영역은 오직 하나의 스레드만 코드를 실행할 수 있는 코드 영역을 의미함. 락은 임계영역을 포함하고 있는 객체에 접근할 수 있는 권한 스레드A가 임계영역내의 코드를 실행할땐 다른 스레드들은 락이 없기때문에 A가 모두 실행하면 다른스레드가 락을 획득하여 코드를 실행할 수 있다. ㅇ 동기화 하는 방법 1. 메서드 전체를 임계 영역으로 지정하기 메서드의 반환 타입 좌측에 synchronized 키워드를 작성해 지정가능. public synchronized boolean withdraw(i.. 2022. 11. 16.
11.15 스레드1, JVM ㅇ Thread 어떤 애플리케이션이 실행되면 운영체제가 해당애플리케이션에 메모리를 할당해주고 애플리케이션이 실행되는데, 실행중인 애플리케이션을 프로세스라고 함. 프로세스 내에서 실행되는 소스 코드의 실행 흐름을 스레드라고 함. ㅇ 프로세스와 스레드 프로세스 - 실행중인 애플리케이션 프로세스는 데이터, 컴퓨터 자원, 스레드로 구성됨. 스레드는 데이터와 애플리케이션이 확보한 자원을 활용하여 소스 코드를 실행함. 스레드 - 하나의 코드 실행 흐름 ㅇ 메인 스레드 자바에서 가장 먼저 실행되는 메서드는 main메서드이다. 메인 스레드가 main 메서드를 실행시킨다. 메인스레드만 가지는 싱글스레드 프로세스, 메인스레드에서 다른 스레드 생성해 실행하면 멀티 스레드 ㅇ 멀티 스레드 하나의 프로세스는 여러개의 스레드를 .. 2022. 11. 16.
11.14 Annotation, Lambda, Stream ㅇ Annotation 주석이라는 뜻. 하지만 우리가 썼던 // , /* */ 같은 comment는 사람에게 정보를 전달하는것이고, Annotation은 프로그램에게 정보를 전달한다. ㅇ 표준어노테이션 @Override - 오버라이딩하는데 실수하면 컴파일러가 알려준다. @Deprecated - 새로운것으로 대체될때 기존의 것을 사용하지 않을 것을 권장할때 사용한다. @SuppressWarnings - 컴파일 경고메시지 나타나지 않게 함. @FunctionalInterface - 함수형 인터페이스의 선언이 바르게 됐는지 확인한다. ㅇ 메타 어노테이션 @Target - 어노테이션을 적용할 대상들을 지정함. @Documented - 어노테이션에 대한 정보가 javadoc으로 작성한 문서에 포함되게함. @Inh.. 2022. 11. 14.