getPath() : 파일의 경로(path)를 반환한다. getAbsolutePath() : 파일의 절대경로를 반환한다. getCanonicalPath() : 파일의 정규경로를 반환한다. 파일의 '경로', '절대경로', '정규경로'... 분명히 한글인데... 무슨 차이인지 이해가 되지 않았다. 절대경로는 알아도 정규경로(canonical path)는 처음 들어봤다. 경로를 변경하면서 세 메서드의 차이를 알아보자. 1. 경로명 -> 절대경로 public class FileExample { public static void main(String[] args) throws Exception { File f = new File("C:\\Spring\\java-pract..
들어가며 HTML 코드가 들어가 있는 데이터를 문자열만 추출해야 할 상황이 생겼다. 정규식을 사용해서 어찌저찌 태그는 다 제거했는데 Html Entity로 표기된 특수문자는 그대로 남아있었다. 처음엔 만 공백으로 치환했다. 그런데 데이터를 더 확인해보니 자주 쓰이는 >, <, 그 외 &숫자;형식으로 된 처음 보는 Entity들이 가득했다. 일일히 replace하기를 포기하고... 구글링을 해본다. ...역시 사람은 도구(?)를 사용해야 할 줄 안다고. 아파치와 스프링에서 관련 Util 클래스를 제공해주고 있었다. HTML Entity? HTML에서
AOP (Aspect Oriented Programming) 들어가며 공통 관심사항(cross cutting concern) vs 핵심 관심사항(core concern) 분리 핵심 기능에 부가 기능(ex. 호출 시간 측정, 트랜잭션)을 추가했다. 핵심 기능을 담당하는 코드에서 흩어져 나타나는 부가 기능 코드는, 말 그대로 부가적이기 때문에 적용이 되는 대상(Target)이 있어야 의미가 있다. 두 기능을 무조건 분리하기가 애매하다. 부가 기능을 여러 메소드에서 공통으로 사용한다고 해보자. 부가 기능 코드가 중복된다. 요구사항이 변경되서 부가 기능 코드를 수정해야 한다. 여러 메소드에서 사용한 부가 기능 코드를 일일히 수정해야 한다. 위 상황에서 하나의 관심, 핵심 비즈니스 로직에만 집중하는 단일 책임의 ..
IoC 제어의 역전(Inversion of Control)? 나 자신이 제어권을 가지고 있지 x, 나 이외의 누군가가 의존성에 대한 제어권을 가지고 있다. 어떤 객체가 사용하는 의존 객체를 직접 만들어서 사용하는게 아니라 주입 받아서 사용하는 것을 말한다. 1. 의존성에 대한 제어권 일반적인 경우 "내가 쓸 놈은 내가 만들어 쓸게" class OwnerController { private OwnerRepository repository = new OwnerRepository(); } OwnerController가 OwnerRepository를 생성한다. 의존성에 대한 제어권 => 본인(OwnerController) IoC : 역전된 경우 "내가 쓸 놈은 이 놈인데... 누군가 알아서 주겠지" class ..
Optional 기초 : NPE에서 벗어나보자. 들어가며 WAS log에서 NullPointerException을 발견했던 과거 발생 시점을 추적하기가 어려웠다. 스택 트레이스 보는데도 모르겠음. 메서드를 짜는데 객체가 없을 경우 null을 리턴 x 100(반복) null 체크를 계속 해야 하는 불편. 코드가 거슬린다. (if 널 존재여부...) 까먹었을까봐 불안하다. 그러던 중 스프링 강의에서 객체를 Optional로 감싸 NPE를 막는 걸 발견 => 배워야겠다. Optional은 람다, 스트림을 알아야 더 사용하기 좋지만...아직 사용하지 못한다. 그저 Optional만 알았을 뿐. 때문에 람다와 스트림을 몰라도 써먹을 수 있는 Optional의 기초만 정리해보도록 한다. Optional Option..
자바스크립트에서 제공하는 내장 객체 중 Date 객체가 있다. Date는 java를 써봤으면 쉽게 다룰 수 있는데 나는 연월일을 가져오는 것도 몰랐으므로(;) 정리를 해본다. 특정 날짜 Date 객체 생성 및 날짜(연,월,일,요일) 가져오기 주의할 점은 월을 가져올 때 0부터 시작하므로 특정 날짜를 생성할 때는 특정 월 -1을 해줘야 원하는 날짜로 세팅되고 이를 가져올 때는 +1을 해야 원하는 날짜를 가져올 수 있다. 또 getDate()가 일을 가져오는 함수, getDay()는 요일을 가져오는 함수다. 이 때 getDay는 일요일(0)부터 시작하여 값을 반환한다. 그 외에 시분초를 가져오는 함수는 아래와 같다. getHours() getMinutes() getSecond() getMilisecond()
Ant 빌드를 잘 쓰고 있었는데 갑자기 "Could not find the main class: org.eclipse.ant.internal. launching.remote.InternalAntRunner. Program will exit." 창이 뜨면서 정상적으로 실행되지 않았다. 문제가 되는 Ant 빌드의 Run As> External tools configuration을 확인해보니 Separate JRE로 런타임하는 JRE가 1.8으로 설정되어있었다. 구글링을 해보니 여러 jdk를 가지고 있을 때 빌드(run)하면 문제가 발생하는 듯 싶었다. 실제로 나도 jdk 1.6과 1.8을 가지고 있었다. 해결 방법은 간단했다. Run As> External tools configuration -> JRE -..
사용자가 단을 입력하면 해당 구구단을 자동 출력해주는 예제이다. 2단부터 9단까지만 출력하도록 제한하는 예제이기 때문에 올바른 수가 입력될 때까지 루프를 반복한다. MultiplicationTable.java import java.util.Scanner; public class MultiplicationTable { public static void main(String[] args) { int num; Scanner sc = new Scanner(System.in); System.out.println("----구구단 출력-----"); while(true) { System.out.print("단? "); num = sc.nextInt(); if (num 1) break; Sys..
- Total
- Today
- Yesterday
- 정규경로
- opencsv
- hls.js
- github actions 기초
- sockjs
- 그런RESTAPI로괜찮은가
- csv to bean
- AOP
- Best Time to Buy and Sell Stock
- 문자열인코딩과 문자집합의 차이
- 정규표현식 패턴
- 특수문자 치환
- MPEG-2 TS
- csv 라이브러리
- 정규표현식 플래그
- getAbsolutePath와
- CGLIB프록시
- FileNameFilter
- getPath
- 다이나믹프록시
- HtmlUtils
- file
- github actions components
- 코프링
- self-descriptive
- getCanonicalPath
- websocket handshake
- Longest Consecutive Sequence
- github actions 구성요소
- java8 stream
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |