Map 조회에는 3가지 방법이 있다 Iterator Entry KeySet Java8 forEach, Lambda 예제1 package com.kyhslam; import org.junit.Test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class MapTest { @Test public void maptest() { HashMap map = new HashMap(); map.put("A", "TEST"); map.put("B", "TEST2"); map.put("C", "TEST3"); // 방법1: Iterator 사용 Iterator keys = map.keySet().iterator(); ..
람다식(Lambda Expression) 함수를 간단한 '식(expression)'으로 표한하는 방법 익명함수(이름이 없는 함수, anonymous function) 람다식은 익명함수가 아니라 익명 객체 이다. 예시 //Object obj = (a, b) -> a > b ? a: b; //람다식. 익명객체 Object obj = new Object() { int max(int a, int b){ return a > b ? a : b; } }; 위의 두 가지 코드는 같은 방식이다. 함수와 메서드의 차이 근본적으로는 동일. 함수는 일반적인 용어, 메서드는 객체지향개념 용어 함수는 클래스에 독립적, 메서드는 클래스에 종속적 함수형 인터페이스 함수형 인터페이스 : 단 하나의 추상 메서드만 선언된 인터페이스 @F..
람다식 함수적 프로그래밍. 즉, y = f(x) 형태의 함수로 구성된 프로그래밍 기법 함수, 메서드를 하나의 식으로 표현하는 것이다 이름과 반환 값이 없기 때문에 익명함수(Anonymous Function)이라 한다. 람다식은 JDK 1.8에 추가 되었다. 자바에서 람다식을 수용한 이유 코드가 매우 간결해진다. 컬렉션 요소(대용량 데이터)를 필터링 또는 매핑해서 쉽게 집계할 수 있다. 1. 기본예제 (매개변수가 없을 경우) public interface MyFunctionalInterface { public void method(); } package com.kyhslam.lamda; public class MyFunctionalMain { //매개변수가 없을 경우 public static void ma..
메소드 getSystemCpuLoad() : Returns the "recent cpu usage" for the whole system getTotalPhysicalMemorySize() :Returns the total amount of physical memory in bytes getFreePhysicalMemorySize() : Returns the amount of free physical memory in bytes. 테스트 코드 : CPU사용률, 메모리 잔여량, 전체 물리메모리량 package org.kyhslam.doit; import com.sun.management.OperatingSystemMXBean; import java.lang.management.ManagementFactor..
JVM의 내부동작을 알고 있다면 본인이 만드는 애플리케이션의 성능을 더 높일 수 있으며 만들어진 애플리케이션의 성능을 최적화하기 위해서 JVM을 튜닝한다면 높은 성능을 끌어낼 수 있다. 그리고 자바 프로그래밍의 기법인 리플렉션(Reflection)과 클래스 로더(Class Loader)을 이해하는데 도움이 된다. JVM의 내부구조는 큰 형태로 분리해보면 클래스로더 서브시스템(Class Loader Subsystem), 실행 데이터 영역(Runtime Data Area), Execution Engine 으로 나눌 수 있다. 1. 클래스 파일 클래스파일(Class file)은 개발자가 만들었거나 이미 만들어진 프로그램을 의미한다. 우리가 개발할 자바 프로그램은 파일 확장자가 .java이며 이 파일이 자바 컴..
📚 Stack 클래스 Stack클래스는 List컬렉션 클래스의 Vector클래스를 상속받아, 전형적인 스택 메모리 구조의 클래스를 제공한다. 스택메모리 구조는 선형 메모리 공간에 데이터를 저장하면서 후입선출(LIFO)을 따르는 자료구조 이다. 가장 나중에 저장된(PUSH) 데이터가 가장 먼저 인출(POP)되는 구조이다. 메서드 설 명 boolean empty( ) Stack 이 비어있는지 알려줌 Object peek( ) Stack 의 맨 위에 저장된 객체를 반환 pop( ) 과 달리 Stack 에서 객체를 꺼내지 않음(비었을 때는 EmptyStackException 발생) Object pop( ) Stack 의 맨 위에 저장된 객체를 꺼냄(비었을 때는 EmptyStackException 발생) Obje..
배열 선언 방식 int[] arr = new int[3]; int arr2[] = new int[3]; 선언 후, 값 대입 public static void main(String[] args) { int[] arr = new int[3]; arr[0] = 10; arr[1] = 20; arr[2] = 30; } 선언하면서 초기화 public static void main(String[] args) { int[] array = {7,6,5,8,3,5,9,1}; System.out.println(array.length); }
파일 쓰기 writerFile 함수의 상세 소스를 보자 실행하면 아래와 같은 결과를 알수 있다. 특히 FileWriter(fileName, false) 부분을 보면 두 번째 매개변수가 false이면 파일을 새롭게 덮어씌워서 생성을 하고, true로 변경을 하면 해당 내용 뒤에 추가로 이어서 쓰기가 진행된다. 파일 읽기 아래의 readFile함수를 실행하자 위에서 쓰여졌던 내용들이 출력된다.
flush() - 어떤 리소스에 데이터를 쓸 때, 매번 쓰기작업을 할 때마다 저장하면 효율이 안 좋아진다. 예를 들어 누군가 마루에 있을 때 안방에 가서 연필을 가져오고, 휴지도 가져오고, 노트도 가져오라고 시켯을 때, 세번 안방에 가서 가져오는 것보다 한번에 가서 가져오는 것이 효과적이다. 따라서, 대부분 저장을 할 때 버퍼(buffer)를 갖고 데이터를 차고 차곡 쌓아 두었다가 어느 정도 차게 되면 한번에 쓰는 것이 좋다. 그러한 버퍼를 사용 할 때, flush() 메소드는 "현재 버퍼에 있는 내용을 지금 저장해"라고 시키는 것이다.
// 1.폴더 생성 String sCheckOutFolder = "C:\\Active_TEST"; File folder = new File(sCheckOutFolder); if(!folder.isDirectory()){ folder.mkdir(); } // 2. 파일이름 설정 String excelFileName = "Active_check"; String stryymmdd = yuraDateUtil.getCurrentDateString("yyyyMMdd"); String strhhmm = yuraDateUtil.getCurrentDateString("hhmmss"); excelFileName += "-" + stryymmdd + "_" + strhhmm + ".xls"; sCheckOutFolder +..