본문 바로가기

자바17

Hashing 이번에는 위 영상을 보고 Hash에 대해 다시한번 복습하고자 글을 써본다. Hashing이란? Hashing 구조 Hash 간단 구현 1. Hashing란? 선요약 1.해싱은 자료를 저장하는 자료구조중 위치의 개념을 사용하지 않는 방법 2.자료를 Key,Value쌍으로 저장하고 Key만 있으면 자료를 찾는데 O(1)의 시간복잡도로 찾을 수 있다. 3.Key를 만들기 위해 해시함수가 존재 하며 해시함수의 성능에 따라 해싱의 효율이 달라진다. 4.Key를 만드는 해시함수를 잘만들어도 Key의 중복(충돌)이 일어날 수 있으니 대비를 잘해야한다.(체이닝) 우선 Hash는 컴퓨터에서 자료를 저장하는 컨테이너중 하나이다. 그런데 이 Hash는 여러 컨테이너들중(List,Queue,Stack...) 가장 컴퓨터를 이.. 2021. 2. 21.
JVM JVM jvm(java virtual machine)은 자바를 실행하는데 필수적인 것이다. 한글로 말하면 자바 가상 기계인데, 여기서 기계라는 말때문에 좀 다르게 이해할 수 있는데 여기서 기계는 컴퓨터에서 실행되는 프로그램으로 의미하면 편하다. 그렇기 때문에 jvm은 컴퓨터에서 자바 파일을 실행하기 위한 프로그램으로 생각하면 된다. JVM의 역할 JVM은 크게 2가지 역할을한다. 첫째, 자바 프로그램을 실행되는 기계에 관계없이 실행되도록 한다.(플랫폼 독립적) 둘째, 자바 프로그램이 실행되면서 메모리관리, 최적화등의 역할을 한다. 첫번째 역할을 보면 실행되는 플랫폼에 상관없이 실행되도록한다고 했는데 좀 더 풀어서 설명하면 우리가 작성한 자바 프로그램을 실행파일로 만든다음 이것을 배포하는 경우를 생각해보자.. 2021. 2. 14.
Iterator,Iterable 자바에서는 ArrayList,LinedList등 자료를 탐색할 수 있는 Collection이 존재한다. 하지만 이런 Collection들은 탐색방법을 우리가 임의로 정하지 못한다. 예를들어 총 10개가 저장돼있는 선형적 자료구조에서 짝수번째만 보고싶다하더라도 for,forEach를 통해 인덱스를 홀수번째라면 건너뛰고 확인해야 한다. public class Main { public static void main(String[] args) { ArrayList test=new ArrayList(); test.add("사과"); test.add("딸기"); test.add("오렌지"); test.add("포도"); test.add("참외"); test.add("파인애플"); for(int i=0;i 2021. 2. 13.
Thread-3 실행제어 동기화 이번글이 쓰레드의 마지막이면서 쓰레드의 가장 핵심적인 내용이다. 1. 실행제어 쓰레드는 실행시키고, 중단시키는일을 실행제어라고 한다. 쓰레드는 우리가 처리해야할 작업들을 병렬로 처리해야 할 때 사용하는데, 각 작업들의 실행을 중간에 중단시킨다던가, 아니면 중단 되었던 작업을 실행시키는것을 직접 제어해야 할 때가 있다. 이번에는 이렇게 직접 제어할 수 있는 쓰레드 메소드들을 알아보고 적당한 사용방법을 알아보겠다. 1-1 sleep 우선 쓰레드를 일시적으로 멈추는 sleep이 있다. public class Main { public static void main(String[] args) { Thread thread=new Thread(()->{ for(int i=0;i{ for(int i=0.. 2021. 2. 12.
Thread-2 우선순위 쓰레드 그룹 데몬 쓰레드 1. 우선순위 쓰레드에는 우선순위라는 개념이 있다. 우선순위는 쓰레드간의 중요도에 따라 지정할 수 있다. 예를들어 채팅과 파일전송을 하는 프로그램을 예로 들어보자. 채팅같은경우는 아주빠른 시간안에 응답을 해줘야하고, 파일전송은 채팅보다는 비교적 느려도 괜찮다. 그런데 만약 2가지의 작업의 우선순위가 같다면 채팅의 응답속도가 느려질 수 있다. 이럴때 채팅의 우선순위를 보다 빠르게 하면 우리가 채팅을하는데 큰 문제를 못느낄것이다. 그러면 자바 Thread에서 어떻게 우선순위를 지정하는지 보자. Thread thread=new Thread(()->{ // do something }); thread.setPriority(5); // 1~10 thread.start(); 자바 T.. 2021. 2. 11.
Thread-1 자바 쓰레드 사용방법 start, run 쓰레드의 효율성 1. 자바 쓰레드 사용방법 자바에서 쓰레드를 만들 수 있는 방법은 2가지가 있다. 1. Thread를 상속받아서 구현 2. Runnable 인터페이스이용하는 방법 우선 Thread를 상속받는 방법부터 보자. public class ThreadEx1 extends Thread{ //Thread의 run 메소드를 구현한다. @Override public void run(){ for(int i=0;i 2021. 2. 8.