우아한 프로그래밍
반응형
article thumbnail
[자바/Java] serialVersionUID에 대해 알아보자.
프로그래밍/Java 2022. 12. 13. 23:36

serialVersionUID란 무엇인가? serialVersionUID는 시리얼 통신을 하는 클래스의 버전을 표시하는 것이다. 자바에서는 객체를 직렬화(Serialization)하여 바이트스트림으로 만들어서 저장한다. 이때 저장되는 바이트스트림에는 버전정보인 serialVersionUID가 포함되게 된다. 이 후 바이트스트림을 역직렬화(Deserialization)하여 자바의 객체로 만들때 버전을 체크하게되는데 이 때 사용되는 버전정보가 바로 serialVersionUID이다. 자바 직렬화란? 자바 객체를 바이트스트림으로 만들어서 파일, 데이터베이스, 메모리, 네트워크 송신이 가능하도록 하는 것이다. 자바 역직렬화란? 파일, 데이터베이스,메모리, 네트워크로 부터 수신된 바이트스트림을 자바객체로 변환하는..

article thumbnail
[JAVA/자바] 공학용계산기 만들기
프로그래밍/Java 2021. 1. 14. 00:41

1. 소스코드 import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.BorderPane; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; import javax.swing.*; import java.text.DecimalFormat; import java.util.*; public class MyApp extends Application { // 연산스택 Stack s..

[JAVA] 자바로 파일 읽고/쓰기에 대해 알아 보자
프로그래밍/Java 2020. 4. 8. 12:35

파일 읽기 /** * 파일을 읽는다. * @param filePath * @param fileName * @param source * @return * @throws Exception */ public static List readFile(String filePath, String fileName) throws Exception { return readFile( filePath, fileName, DEFAULT_CHARSET); } /** * 파일을 읽는다. * @param filePath * @param fileName * @param source * @return * @throws Exception */ public static List readFile(String filePath, String fi..

article thumbnail
Html으 PDF로 변경하는 방법
프로그래밍/Java 2020. 3. 13. 00:07

1. 서론 해당 방법은 많은 수의 HTML파일 혹은 HTML을 리턴하는 Url을 PDF로 빠르게 전환하는 방법을 설명하고자한다. 해당 방법은 크롬을 이용하여 크롬이 제공하는 API를 사용하여 처리하는 방법을 사용한다. 2. 방법 일단 폴더 구조는 아래와 같다. 그리고 배치 파일은 아래와 같다. @echo off set root=C:\Users\korea\Desktop\test set chrome=C:\Program Files (x86)\Google\Chrome\Application\chrome.exe set saveToPath="%root%\savePath" set logFile=%root%\log\batch.log echo %saveToPath% cd "%root%" for /f "usebackq to..

[자바/JAVA] 디자인패턴 #6 데코레이터( Decorator) 패턴
프로그래밍/Java 2019. 1. 10. 11:21

1. 데코레이터 패턴이란? 데코레이터 패턴이란 말그대로 장식을 하는 패턴이다. 쉽게 말하자면 기본기능이 있고 그 기능에 추가적인 기능들을 수행하고자 할때 사용하면된다. 예를 들어 맥도날드 햄버거 가격을 계산해주는 시스템이 있다고 생각해보자. 맥도날드에는 다양한 메뉴들이 존재한다. 치즈버거, 빅백, 콜라, 치킨텐더, 감자튀김 등등 이러한 메뉴들의 조합에 대해서 가격을 산정하려면 과연 어떻게 구현하는게 가장 깔끔할까? 클래스 멤버변수로 각 메뉴의 가격을 두고 조합을 하는 방법이 있겠지만 추가적인 메뉴가 추가된다면 기존 클래스 변경이 불가피하다. 혹은 새로운 클래스를 만들어도 될것이다. 하지만 메뉴가 늘어나고 조합이 늘어남에 따라 추가적으로 수많은 클래스들이 생겨날 것이다. 이러한 경우 데코레이터 패턴을 한번..

[자바/JAVA] 디자인패턴 #6 빌더( Builder) 패턴
프로그래밍/Java 2019. 1. 6. 17:48

1. 빌더패턴이란? 빌더패턴이란 빌더 클래스는 인스턴스를 생성자를 통해 직접 생성하지 않고, 빌더라는 내부 클래스를 통해 간접적으로 생성하게 하는 패턴이다. 생성자가 많은 클래스가 있다면 빌더패턴을 고려해 보는 것이 좋다. 아래 나오는 고전적 방법2를 이용해도 되나 가독성의 문제를 고려하여 빌드 패턴을 고려해도 좋다. 사실 가독성은 개인차가 있는 것 같다. 굳이 시간이 없다면 빌더 패턴을 쓰지 않아도 되고 고전적 방법2를 써도된다. 2. 고전적 방법1. 점진적 생성자를 이용한 방법 public class User { private String name; private String juminNum; private int age; private int sex; public User(String name) {..

article thumbnail
[자바/프로그램] 폴더구조 및 파일을 똑같이 복사하는 프로그램
프로그래밍/Java 2017. 11. 21. 22:31

[파일다운로드] [대상자] GIT를 사용하여 개발하다보면 여러가지(?) 이유로 인하여 A브런치와 B브런치의 파일을 수동으로 비교해야하는 경우가 생기기도 한다. 그런경우에 비교하고자 하는 파일을 복사해주는 프로그램이 필요한 사람이 사용하면 되겠다. [사용방법] 압축파일을 다운로드 받는다. 압축을 풀고 폴더내에 아래그림처럼 copy.bat 파일에 있는 TARGET_ROOT( 복사할 폴더)를 변경하여준다. 굳이 필요없다면 변경안해도 된다. 배치파일을 실행한다. 배치파일을 실행하면 날짜로 TARGET_ROOT 폴더내에 연월일시분초폴더로 떨어진다. 기준폴더와 비교하고자하는 폴더를 각각 배치를 돌려 만든다. Winmerge같은 소스 병합툴을 이용하여 폴더째 잡고 수동병합을 시작한다. [실행화면]

article thumbnail
[자바/JAVA] 디자인패턴#5 생산자/소비자 패턴( Producer/Consumer Pattern)
프로그래밍/Java 2017. 11. 17. 23:39

[개요] 아래의 코드는 Linear( 선형큐)가 아닌 Circle Queue( 순환큐)를 이용하여 생산자/소비자 패턴을 구현해 보았습니다. 생산자/소비자 패턴은 멀티쓰레드 환경에서 주로 쓰이는 패턴입니다. 생산자와 소비자는 하나의 클래스를 공유하고 그 클래스는 큐구조를 가지게 됩니다. 생산자는 데이터를 지속적으로 만들어 큐에 넣을 것이고 소비자는 데이터를 지속적으로 큐에서 빼낼 것입니다. [구조] [Main.java] package provider_consumer; public class Main { public static void main(String[] args) { int size = 100; Table table = new Table(100); Thread provider = new Thread..

article thumbnail
[JAVA/실전코딩] 파일로부터 학생의 점수를 입력받아 학점을 부여하는 프로그램
프로그래밍/Java 2017. 11. 17. 22:26

Grade.txt 파일 Main.java public class Main { public static void main(String[] args) throws Exception { // 학생수 int STUDENT_SIZE = 20; // 학생의 점수를 관리하는 클래스 선언 StudentManager studentManager = new StudentManager(STUDENT_SIZE); // 파일 경로 세팅 studentManager.setFilePath("D:/Grade.txt"); // 학생 학점 출력 studentManager.printGrades(); } } Student.java /** * 학생 클래스 */ public class Student { // 학번 private String stu..

[자바/사용자함수] XPath를 이용한 사용자 XML파싱 함수
프로그래밍/Java 2017. 11. 4. 16:39

import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c...

반응형