POI로 엑셀을 만들어 다운로드하여 열어봤더니 "허용되는 글꼴 수가 초과되어 이 파일에 글꼴 서식이 제대로 적용되지 않을 수 있습니다." 라는 오류가 떴다. 엑셀에서는 적용되는 글꼴의 개수를 최대 512개로 제한하고 있다. https://answers.microsoft.com/ko-kr/msoffice/forum/all/%EC%97%91%EC%85%80-%ED%8C%8C%EC%9D%BC%EC%9D%B4/c9349b2f-1599-4ac3-a455-66e796546035 리디렉션 중 login.microsoftonline.com 글꼴을 512개 이상 사용했다면 이 오류가 날 수 있다. Excel 2007이상에서는 경고창을 닫고 작업을 계속 할 수 있지만, Excel 2003과 Excel 2002에서는 수정 ..
람다함수 람다함수는 메소드를 하나의 식(Expression)으로 표현하는 것으로 익명함수(Anonymous function)를 생성 한다. 함수형 프로그래밍을 하고자 하며 나왔다고 한다. 자바에서는 메소드 혼자 선언해서 쓸 수 없다. 무조건 class의 구성멤버로 선언되어야 한다. 람다식으로 생성되는 것은 메소드 자체가 아니라 실행문(메소드)를 가진 객체이다. 이 객체는 일반적인 객체가 아닌 함수형 인터페이스를 구현한 익명 구현 객체이다. 람다의 특징 1. 익명함수 함수 이름이 없다. 익명함수는 일급객체(first class citizen)이다. 2. 커링 두개 이상의 입력이 있는 함수는 최종적으로 1개의 입력만 받는 람다로 단순화 할 수 있다. 람다의 표현식 1. 화살표로 표시한다. 2. 몸체가 한줄이..
JDK8을 설치할 것이다. Oracel 접속 https://www.oracle.com/kr/java/technologies/javase/javase8-archive-downloads.html java8 download라고 검색해서 다음 페이지에 접속한다. Java SE Development Kit 8이 맞는지 확인한다. 아래로 내려보면.. window64버전이 있다. 자기 운영체제에 맞는 버전을 선택한다. 참고로 x86은 window32를 말한다. 체크하라니까 체크도 하고 로그인하라니까 로그인도 해준다.(귀찮아) 설치하기 다운로드된 exe파일을 열고 실행한다. 이 화면에서는 원하는 위치를 선택해주고 next 설치가 끝나면 jre설치 창이 나온다. 원하는 위치 선택해주고 설치진행 설치가 완료됐다. 환경변수..
Request, Response 클라이언트에서 서버로 통신하는 메시지를 요청(request) 메시지라고 하며, 서버에서 클라이언트로 통신하는 메시지를 응답(response) 메시지라고 한다. 클라이언트가 서버에게 요청(request)하면 서버는 클라이언트에게 응답(response) 해준다. 요청하고 응답해주는 데이터는 header와 body등으로 되어있다. body에는 실제 보내는 데이터가 담기고, header에는 body데이터의 형식등의 다양한 정보가 담긴다. 즉, AJAX를 이용해 서버에게 요청을 하면 요청은 request body(요청 본문)에 담겨서 되고 클라이언트의 응답도 response body(응답 본문)에 담겨서 전달된다는 것이다. 스프링에서 데이터 주고받기 스프링에서 javascript쪽..
컬렉션(collection) JDK는 자료구조 과목에서 배운 많은 것들을 컬렉션으로 만들어 제공한다. 이것들은 매우 유용하게 사용되기 때문에 꼭 알아둘 필요가 있다. 컬렉션에는 Vector, ArrayList, LinkedList, HashMap등이 있다. 컬렉션의 특징 - 컬렉션은 제네릭으로 만들어져 있다. - 요소는 객체만 가능하다 ( int X, Integer O) Vector v = new Vector(); 제네릭의 개념 ArrayList 라는 것을 본 적이 있을 것이다. 여기서 E는 여러 종류의 타입으로 변신할 수 있도록 컬렉션을 일반화시키기 위해 사용한다. ArrayList라고 하면 ArrayList에 Integer도 String도 모두 넣을 수 있다. 를 구체화시켜서 ArrayList라고 하..
추상메소드 추상 메소드는 abstract를 사용하여 껍데기만 작성한 메소드다. 추상메소드가 있는 class를 추상클래스라고 한다. 추상클래스는 미완성 설계도에 비유하며, 인스턴스화 할 수 없다. 예를 들어 TV를 만드는데 대부분의 TV는 90%가 같은 기능이라고 하자. 그렇다면 설계도의 90%는 같으므로, 미리 90%가 만들어진 설계도를 작성해놓는 것이 좋을 것이다. 이때 쓰는 것이 바로 추상 클래스이다. 추상메소드의 디테일한 내용은 추상클래스를 상속받아 오버라이딩하여 구현해야 한다. abstract class Shape { // 추상 클래스 선언 public Shape() { } // 생성자 public void paint() { draw(); } // 일반적인 메소드도 구현할 수 있다. abstrac..
상속의 개념 상속(inheritance)은 실세계의 유전과 비슷하다. 상속을 받으면 부모의 모든 필드와 메소드를 자식이 그대로 받는다. 예를 들어 사람은 먹기, 자기를 할 수 있다. 사람을 상속받은 학생은 부모의 특성을 물려받아 먹기, 자기도 할 수 있을 뿐만 아니라 공부하기도 할 수 있다. 이처럼 상속을 통해 기능을 확장(extends)할 수 있다. 상속을 표현할 때는 extends를 사용한다. class Person { public void eat(){ System.out.println("eat"); }; public void sleep(){ System.out.println("sleep"); }; } class Student extends Person{ public void study(){ Syst..