Programming/Java 14

Java) POI 활용해 DB데이터 엑셀 파일로 저장하기

사용자에게 요구 데이터를 보여 주는 방법은 여러가지가 있습니다. 보통은 웹 페이지를 통해 화면을 보여주는데요, 사용자가 해당 내용을 확인하기 위해서는 항상 해당 웹 페이지에 방문 해야만 하며, 인터넷에 연결되어있어야만 한다는 제약이 생깁니다. 그래서 파일로 조회 데이터를 저장하고자 하는 수요는 반드시 생기고, 그 수요를 충족시키기 위한 여러가지 라이브러리들이 나와 있습니다. 그 대표적으로 Apache POI가 있습니다. ​ Apache POI (Poor Obfuscation Implementation) https://poi.apache.org Apache POI는 아파치 소프트웨어 재단에 의해 운영되는 오픈소스 프로젝트 입니다. 순수 자바 라이브러리로서 Microsoft Office의 Word, Powe..

Programming/Java 2021.10.15

스트림 (Stream)

스트림이란 ? https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html ​ Stream이 추가 되기 전인 Java 7 버전 까지에서는 많은 수의 데이터들을 다룰 때에 컬렉션이나 배열에 데이터를 담아 둔 후, 원하는 결과를 얻기 위해서 반복문 혹은 Iterator를 이용하는 방법 만으로 코드를 작성 해 왔습니다. package com.tistory.shanepark.stream; public class Stream01 { public static void main(String[] args) { int[] numbers = {1,2,3,4,5,6,7,8,9,10}; for(int n : numbers){ System.out.println(..

Programming/Java 2021.09.05 (1)

람다식 (Lambda Expression)

람다식 (Lambda Expression) ​ Lambda는 2014년 3월 18일에 발표한 java 8에서 추가된 대표적인 기능입니다. 자바에 대한 함수형 언어의 기능 요구가 끊임없이 있어 왔고, 객체지향언어인 자바가 함수형 언어의 기능까지 갖추게 하는 일은 쉽지 않았을 테지만 그 어려운 일을 똑똑한 개발자들이 해준 덕분에 우리는 이 좋은 기능을 사용 할 수 있게 되었습니다. ​ 람다식이란? 람다는 간단하게 말해서 메서드를 하나의 식으로 표현 한 것입니다. 람다식은 함수를 간략하면서도 명확한 식으로 포현할 수 있게 해줍니다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없기 때문에 람다식을 "익명함수" 라고 부릅니다. 객체지향 언어인 자바에서는 method라는 용어를 사용하는데요, 특정 클래스..

Programming/Java 2021.08.29 (1)

java ) Fail-Safe Iterator vs Fail-Fast Iterator

java ) Fail-Safe Iterator vs Fail-Fast Iterator ​ 1 소개 이번 글에서는 Fail-fast와 Fail-Safe Iterator의 개념에 대해 알아보겠습니다. 영어로 된 문서를 읽으며 공부하다보니 의미에 맞게 번역하는 과정에서 제가 전문 번역가가 아니라 다소 표현이 딱딱한 느낌이 날 수도 있습니다. 간단한 차이를 말씀드리고 시작하자면, Fail-Fast 시스템에서는 오류가 발생하는 즉시 작업을 중단하고 오류를 알립니다. 또한 진행중이던 전체 작업을 모두 중단시킵니다. 반면에 Fail-Safe 시스템에서는 문제가 생겨도 작업을 중단 하지 않습니다. 해당 시스템에서는 오류 발생을 가능한 피하려고 합니다. ​ ​ 2 Fail-Fast Iterators java의 컬렉션은 ..

Programming/Java 2021.08.23 (6)

자바 static import 사용해서 static method (정적메소드)를 클래스 메소드 처럼 사용하기

getProjNoFromSession 이라는 static method가 있습니다. 이 메서드를 다른 클래스에서 사용 하려면, 해당 클래스 명을 다 써줘야 하는 불편함이 있습니다. 하지만 import static 을 사용하여 해당 메서드를 import 시켜둔다면, 해당 클래스에서는 언제든 이미 가지고 있는 메서드 처럼 사용 할 수 있습니다. 코드의 ReadAbility 에도 좋고 Code Assist 도 되니 알아둔다면 유용하게 사용할 수 있습니다! import static best.gaia.utils.SessionUtil.*; 위와 같이 import 해둔다면 해당 클래스의 모든 메서드를 import 합니다 !

Programming/Java 2021.06.06 (1)

이클립스에서 메이븐 MAVEN 웹 프로젝트 만들기

메이븐으로 프로젝트를 만들면 빌드관리가 매우 수월해집니다. 꼭 자바에서만 쓸 수 있는건 아닌 듯 합니다. 최근엔 Gradle이 널리들 쓰이는 것 같은데 아직 학원에서는 MAVEN을 가르쳐 주고 있습니다. 여유가 있다면 MAVEN에 충분히 익숙해 진 후에 Gradle로도 연습 프로젝트를 만들어 보고 싶고, 괜찮다면 최종 프로젝트때는 Gradle을 쓰고 싶습니다. 중급프로젝트부터 Windows 에서 개발하던걸 Mac OS로 전환해 개발을 하니 학원에서 가르쳐주는걸 온전히 내 것으로 만들지 않고 무작정 따라하기만으로는 벽에 부딪히는 점이 많아 더욱 정신을 바짝 차리고 수업을 듣게 된 것처럼, DB는 오라클로 배워서 MYSQL로, 빌드관리는 Maven으로 배워서 Gradle로 프로젝트를 한다면 더 힘든만큼 더 ..

Programming/Java 2021.04.14

Servlet으로 text file Reader 만들기

수업에서 배운 tmpl 파일구조를 이용합니다. tmpl은 jsp 구조를 익히기 위해 임의로 만든 확장자입니다. package kr.or.ddit.servlet01; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet..

Programming/Java 2021.03.14

웹페이지로 만든 sns에서 메시지 기능 구현하기

playddit 메시지 기능 구현 설명 저희 팀에서 중간 발표로 준비중인 playddit 프로젝트 에서는 메시지 기능을 선보일 예정입니다. 학원 학생들이 사용하는 SNS라는 프로젝트 주제에서, 구현하고자 하는 기능들을 분류할때 '회원가입 & 로그인', '피드', '공지사항' 에 이어 '메시지, 알림' 또한 필수 기능으로 분류했습니다. 채팅을 구현한다고 하니, 소켓을 이용한 실시간 서버에서의 채팅으로 생각하는 분들이 많았는데요, 데이터 베이스를 이용한 '쪽지' 개념으로 접근하였습니다. 개인 간의 메시지와 단체 메시지는 비슷하지만 다르게 구현을 했습니다. 개인 메시지에서 메시지 테이블은 수신자,송신자가 모두 users 테이블의 user_id를 FK로 받아옵니다. public class MessageVO { ..

Programming/Java 2021.02.27

javax.mail 이용해 이메일 보내기

JAVA 이용해 이메일 보내기 play ddit에서 웹사이트에 회원가입시 저희는 '이메일'을 회원 아이디로 할 예정입니다. 이메일을 통해 대부분의 확인을 할 예정이기때문에 회원가입시 입력한 이메일이 본인의 것이라는게 확인이 되어야만 합니다. ​ 백엔드 서버를 Servlet으로 구현할 예정이기 때문에, 자바에서 입력한 이메일로 본인의 이메일임을 확인 할 수 있는 코드를 보낼 예정입니다. 해당 코드는 랜덤으로 생성한 난수를 보낼 것이며, 정확히 입력시 본인의 이메일임을 증명할 수 있습니다. ​ 시작에 앞서 본인이 사용하실 이메일의 SMTP 설정을 확인해주세요. 저는 gmail을 기준으로 설명하겠습니다. ​ ☐ 전체코드를 먼저 한번에 올린 뒤 파트별로 따로 설명해드리겠습니다. package us..

Programming/Java 2021.02.17 (2)

iText 활용한 pdf 파일 작성하기

What is iText? iText는 개발자가 결과물을 PDF 파일로 작성하는 작업을 수행 할 수 있게끔 도와주는 SDK(개발도구) 입니다. 그 자체로서 완성되어 사용자가 사용하는 도구(end-user tool)가 아닌, 개발자가 반드시 본인의 응용프로그램 에서 iText를 구축해야 PDF 생성 및 프로세서를 자동화 할 수 있습니다. PDF 형식은 어느 환경에서나 동일한 결과물을 일관적으로 보여주기 위해 개발되었습니다. 글꼴과 이미지 또한 포함이 가능하며, 기본적으로 출력을 전제로 하기때문에 pdf 파일은 한번 생성되면 이후 편집은 고려되지 않습니다. github.com/itext iText Technical support: https://itextpdf.com/support. iText has 30 ..

Programming/Java 2021.01.24

게시판 페이징 처리하기

5주간의 일정으로 기초 자바 수업이 모두 마무리 되었습니다. 마지막 주에는 JDBC를 이용한 게시판 만들기를 했습니다. Map SelectOne(String sql) Map SelectOne(String sql, List param) List SelectList(String sql) List SelectList(String sql, List param) int update(String sql) int update(String sql, List param) 이렇게 6개의 메서드를 구현한 JDBCUtil 클래스를 만든 뒤, 해당 메서드들을 이용해 게시판을 만드는 숙제를 했습니다. 5주동안 받은 기초 데이터베이스 수업과 기초 자바 수업이 마침내 콜라보레이션을 하는 역사적인 순간이었습니다. 이 수업 전에는 해시..

Programming/Java 2020.12.20

클래스 자유생성 과제

자바교육 3주차에 객체지향 수업을 듣고 있습니다. 이번 숙제는 배운것을 이용해 자유롭게 클래스를 만들어 보라고 하셨습니다. 별 고민없이, 단지 '재밌을거' 같다는 이유로 노트에 슥슥 써봤습니다. 선생님께서 학생들 테이블을 순회하시다가 제 노트를 슥 보시고는 한마디 하십니다. [ "오늘 안에 하겠어요?" ] 쉽지 않은 주제란걸 말씀하셨단건 눈치챘지만, 괜히 오기가 더 생겨서 [ 내일 수업시간 까지 뭐가 됐든 기본적인 틀은 만들어 놓겠다 ] 란 다짐을 합니다. 쉬는시간, 점심시간 내내 이클립스를 켜고는 생각해봤던 객체들을 구현해 보려고 하는데. 생각했던것보다 복잡합니다. 일단 hp, exp로 끝날게 아니라 max 값이 지정이 되어야 했습니다. 그렇지 않으면 전투 후 체력이 떨어지고는, 본래의 체력을 나중에 ..

Programming/Java 2020.12.06

3자리 마다 콤마(,) 넣는 프로그램

국비지원 자바수업을 시작한지 어느덧 2주가 지났습니다. 매일 오전 4시간동안 자바 수업을 듣고, 수업이 끝날때면 과제를 주시는데 생각을 꽤 해야하는 재밌는 문제를 주로 주셔서 항상 즐겁게 하고 있습니다. 마침 이번에는 간만에 비교적 간단한 과제를 주셔서, 해결책을 여러개 만들어 보았습니다. 일단 내가 손으로 ' , ' 를 붙인다면 어떤 절차로 할까 하고 잠시 생각해 보았습니다. 저는 뒤에서 부터 숫자를 세자리씩 세면서 콤마를 붙이기 때문에 일단 생각대로 구현해보기로 했습니다. 또한, 금요일 수업에서 배운게 String 클래스기 때문에, 새로배운 charAt()을 통해 각 자리 숫자를 읽어오기로 했습니다. 뒤에서 부터 숫자를 셌으니, 당연하게도 숫자가 뒤에서부터 출력이 되었습니다. 세자리 마다 쉼표를 찍지..

Programming/Java 2020.11.29

1. 논리형 type ' boolean '은 왜 1bit가 아닌 1byte의 크기를 가질까?

JAVA의 기본형(Primitive type) 중 논리형 데이터 타입인 boolean은 true 혹은 false 둘중 하나의 값만을 가진다. true =1, false=0 이라고 간주하고 1 bit 면 충분히 표현 가능하다고 생각되는데, 왜 굳이 1byte 일까? 다행히도, google 검색을 통해 같은 질문을 찾을 수 있었다. 간단한 대답이 달렸는데, cpu가 1바이트 보다 작은 데이터를 처리 할 수 없다는 듯 두번째 대답도 비슷했다. 주소를 매길 수 있는 최소한의 단위가 byte 라는것. 검색을 이어가다보니 c 언어에서의 bool 타입도 똑같이 1 byte 를 차지한다는 걸 알 수 있었는데, 위의 이유 때문이라면 사실 어느 프로그래밍 언어에서도 논리형 데이터 타입이 1bit만 차지할 수는 없겠다. 실..

Programming/Java 2020.11.21
반응형