JVM (Java Virtual Machine) 개념, JDK, JRE
·
Java
1. 정의 및 특징자바코드로 작성된 프로그램이 CPU나 운영체제 등의 환경에 상관없이 독립적으로 동일하게 동작될 수 있게 만들어진 프로그램자바코드로 작성된 프로그램은 컴파일될 때, 컴파일러(javac)에 의해 바이너리 코드로 변환된 .class 파일로 변환되는 것을 볼 수 있는데 이 파일을 JVM으로 실행시키기 때문에 동일하게 동작될 수 있음때문에 JVM이 구동될 수 있는 환경이라면 모두 실행이 가능하기 때문에 높은 이식성을 보인다. 2. JVM의 실행과정JVM은 Class Loader, Execution Engine, Runtime Data Area, Garbage Collector 4가지의 구성으로 나눌 수 있다.정리부터 하자면 컴파일된 소스코드(.class)를 Class Loader를 통해 Runt..
자바 우선순위큐(PriorityQueue)
·
Java
//오름차순(우선순위가 낮은 숫자 순) PriorityQueue pq = new PriorityQueue(); //내림차순(우선순위가 높은 숫자 순) PriorityQueue pqHightest = new PriorityQueue(Collections.reverseOrder()); pq.add(1); pq.offer(2); pq.add(3); pq.poll(); // 첫번째 값을 반환하고 제거 비어있다면 null System.out.println(pq); // [2, 3] pqHightest.add(1); pqHightest.add(2); pqHightest.add(3); pqHightest.peek(); // 첫번째 값 참조 3 pqHightest.remove(); // 첫번째 값 제거 System.o..
자바 스트림(Stream), 람다(Lambda)
·
Java
Stream 생성 배열 Arrays 클래스의 static 메소드인 stream()에 배열 인스턴스를 전달 int[] i = {1,2,3,4,5}; IntStream istm = Arrays.stream(i); 컬렉션 컬렉션 인스턴스를 대상으로 디폴트 메소드 stream()을 호출 List s = Arrays.asList("a", "b", "c"); Stream stm = s.stream(); 데이터 직접 전달 Stream클래스 혹은 IntStream 등의 기본 자료형 스트림의 static 메소드인 of()에 stream에 넣고 싶은 데이터들을 전달 Stream istm = Stream.of(1,2,3); IntStream istm = IntStream.of(1,2,3); 중간 연산 filter(Predi..
자바 순열, 조합 구하기 (파이썬 itertools 라이브러리)
·
Java
자바는 파이썬의 itertools 라이브러리 같은 내장함수로 순열, 조합이 없어 직접 구현해야함 n개중에 r개 선택한다는 가정 Depth를 r만큼 재귀 변수 int n, r : n개 중 r개를 뽑음 int[] now : 현재 저장한 list값 인덱스 List result : 결과값 boolean[] visited : 순열 방문 여부 순열 public static void permutation(List list, int depth) { if (depth == r) { List temp = new ArrayList(); for (int i = 0; i < now.length; i++) { temp.add(list.get(now[i])); } result.add(temp); return; } for (int ..
ProcessBuilder Java 쉘 명령어, 스크립트 실행
·
Java
쉘 스크립트 실행 1. ProcessBuilder 객체 생성 ProcessBuilder builder = new ProcessBuilder(); ProcessBuilder객체를 사용하여 Linux 또는 Window의 커맨드라인의 커맨드입력을 실행할 수 있다. 2. directory(new File(“파일경로”)) : 해당 커맨드를 실행할 경로 String homeDirectory = System.getProperty("user.home"); builder.directory(new File(homeDirectory)); 3. command(“커맨드”) : 커맨드 입력메서드 builder.command("sh", "-c", "ls -l | grep P"); 4. ProcuessBuilder.start() :..
[Mac OS / Java] 맥 JDK 자바 버전 변경
·
Java
현재 jdk 버전 확인 java -version 설치된 모든 jdk 버전들 확인 /usr/libexec/java_home -V 사용하는 shell 확인 echo $SHELL bash 혹은 zsh vi 를 통해 환경변수 수정 vi ~/.bash_profile #bash vi ~/.zshrc # zsh 사용하는 shell에 따라 파일 열기 export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0) export JAVA_HOME=$(/usr/libexec/java_home -v 11) export JAVA_HOME=$(/usr/libexec/java_home -v 17) 변경하려는 버전 입력 i 키를 입력해 수정 :wq! 를 입력해 저장 후 편집기 닫기 source ~/.zs..