java 19

windows에서 JAVA 환경변수 설정하기

이클립스 프로그램을 사용할 때(자바 개발 시) JAVA가 설치된 위치를 찾게 해주기 위해 환경변수 설정을 해야한다. 제어판 검색 제어판 > 시스템 및 보안 클릭 제어판 > 시스템 및 보안 > 시스템 클릭 제어판 > 시스템 및 보안 > 시스템 > 고급 시스템 설정 클릭 고급 > 환경 변수 클릭 아래쪽 새로 만들기 클릭 jdk가 설치된 위치로 들어간 후 위에있는 경로 부분을 클릭한다. jdk 경로를 복사한다. 환경 변수 > 새로 만들기 > 새 사용자 변수 (변수 이름은 대문자로!!!) 변수 이름: JAVA_HOME 변수 값: 복사해둔 jdk 경로 확인 다시 새로 만들기 > 새 사용자 변수 (변수 이름은 대문자로!!!) 변수 이름: CLASSPATH 변수 값: %JAVA_HOME%\lib 확인 시스템 변수 중..

개발/JAVA 2020.11.24

[java] selenium으로 Chrome headless 사용해보기

Headless browser란? GUI가 없는 브라우저. command line interface(CLI)에서 다루는 브라우저. CLI 환경에서 에뮬레이션 가능.headless 브라우저에서 phantomJS가 대세였었지만,2017년 4월에 Chrome에서 직접 headless 모드를 추가함으로써 phantomJS의 의미가 없어져서 더 이상 지원하지 않는다고 한다. Selenium이란? 브라우저 플러그인을 넣고 테스트를 실행시킬 수 있도록 하는 자동화 툴이다.서버 사이드에서 테스트를 실행시킬 수 있는 Remote Controller (RC)브라우저를 제어할 수 있는 webdriverJava, Python, node.js, javascript, ruby, groovy, php, perl 등 다양한 언어 제..

개발/ETC 2018.01.19

Java의 Integer, int 숫자 비교의 주의사항

예전에 프로그램에 버그가 있었고 원인을 한참을 못찾은적이 있었다.숫자 비교하다 생긴 문제였고, 무심코 코딩하다 틀리고 삽질할 수 있는 부분이라 블로그에 남겨본다.ㅎㅎ 아래는 숫자를 저장하는 3가지 방법이다. int a = 1;Integer b = 1;Integer c = new Integer(1); if (a == 1) => true if (b == 1) => trueif (c == 1) => true a, b, c 모두 숫자 1인지 비교해보면 결과는 true이다. 그럼 변수끼리 비교해보겠음 1) int VS Integer int a = 1;Integer b = 1; if (a == b) => true 2) int VS Integer int a = 1;Integer c = new Integer(1); i..

개발/JAVA 2016.03.30

server to server에서 DATE 전송. jsp에서 포멧에 맞춰 출력하기.

아.. 블로그에 엄청 오랜만에 글쓰네 ㅋㅋ 쓸건 많았는데. 어쨌든 이상한 일이 일어나서 써본다. 내가 하려던건, 1. 어드민 서버 -> API 서버로 호출을 한다. 2. 날짜(Date) 정보를 API 서버로부터 받아온다. 3. Admin의 jsp에 날짜 정보를 뿌린다. 이상한 점은 API에서 등록날짜를 어드민으로 보내줄 때 등록날짜를 Date로 보내줬고, 받는 어드민쪽에서도 Date로 받았는데. 디버깅해보면 값이 잘들어있고 jsp에서 출력하면... 타임스템프값으로 출력된다. {createdAt=1413339994000}

개발/JAVA 2014.10.15

Hash Set - Custom class 중복 제거하기

Java의 콜렉션 중 Set은 중복된 값이 들어가지 않는다.어릴적 배웠었던 수학에서의 집합의 특성과 같다.'여러대상의 모임이며, 순서가 없고 중복된 값이 없다' Set의 구현체 중 HashSet을 이용해보겠다.아래처럼 사용한다. Test.java public void 해시셋테스트() { Set set = new HashSet(); set.add(1); set.add(2); set.add(2); System.out.println(set); } 결과 >> [1, 2] 결과를 보면, 중복된 값을 제거해서 저장해준다. 그러나, Wrapper class(Integer, String, Long...)가 아닌내가 만든 Custom class로 하면, 중복된 데이터가 들어가버린다.아래의 예를 한번 보자. CreateO..

개발/JAVA 2014.02.16

텍스트 파일 읽어오기 - (JAVA)

텍스트 파일에 아래와 같은 내용이 들어있다.코드명과 값이 세미콜론으로 구분되어있는 상황. code.txt CODE001;firstCODE002;secondCODE003;third 이 파일을 읽어오고 출력해볼 것이다. 1) 텍스트 파일 저장 파일 저장 위치는 src/main/resources 밑에 저장한다. 나는 src/main/resources/test/code.txt위의 경로에 저장했다. 2) 파일 읽어오기 인풋스트림으로 파일을 읽어와서 세미콜론(;)으로 잘라서 출력한다. public void readFile() throws IOException { InputStream is = getClass().getClassLoader().getResourceAsStream("test/code.txt"); Buf..

개발/JAVA 2014.01.11

[JAVA] Insertion Sort (삽입정렬)

1. Insertion Sort 개념 아래와 같은 순서로 카드가 놓여져 있다고 생각해보자. 4 5 3 2 (1)4 5 3 2 2번째부터 기준이 되어 시작한다. (왼쪽과 비교해야 하므로 2번째부터 시작한다)기준인 5와 그 왼쪽인 4를 비교하니 5가 더 크므로 냅둔다. 4 5 3 2 이 알고리즘은 특성상, 기준의 왼쪽 값들은 모두 정렬이 되어있다. (2)4 5 3 2 그 다음 기준은 3번째가 되었다.바로 왼쪽 값과 비교한다. 3이 5보다 작기에, 큰 값인 5를 기준 자리에 밀어 넣는다.(여기서 회색부분은 비어있는 자리라고 생각하면 됨) 4 5 2 3 이번엔 기준과, 그 왼쪽인 4와 비교한다. 기준값이 4보다 작으므로, 위에서처럼 4를 오른쪽으로 밀어 넣는다. 4 5 2 이제 비교대상이 없어졌으므로 비어있는 ..

C++ 의 virtual 함수. 가상화. JAVA랑 C++의 차이점

가상화에 대해서 검색해보다가 사소하게 생각하며 지나친 부분에대해 새로이 알게됐다.C++에 있는 virtual 키워드의 용도, 그리고 JAVA와의 차이점을 알게 되었다. 1. C++에서의 상속 class Parent { public : Parent(){}; ~Parent() {}; void foo() { std::cout > parent!!! Parent* p = new Child(); 이 것을 통해 불려진 foo함수에서, child의 foo가 아닌 parent의 foo가 호출되는 것을 볼 수 있다.이유는, 컴파일러가 포인터의 타입을 보고 타입에 맞는 메소드를 찾아주기 때문이다. 그러나, 부모의 foo 메소드 앞에 virtual 이라는 키워드를 붙인다면???부모가 아닌 child의 foo 메소드가 호출된다..

개발/JAVA 2013.07.26

[JAVA] 재귀 - 이진트리(Binary Tree)의 순회

앞에 글에서 이진탐색트리의 삽입을 구현했었다. 이진탐색트리 삽입 (1) - http://marobiana.tistory.com/81이진탐색트리 삽입 (2) - http://marobiana.tistory.com/82 이번에는 순회에 대해 짜볼 것이다.사실 이걸 정리하고 싶었을 뿐인데, 이진탐색트리 삽입이 더 복잡해서 거기서 시간 다보냄 ㅎㅎ 요번건 소스가 아주 간단함. 1. 이진트리 순회 방법컴공 2학년 때 자료구조에서 배우는 요것.. 순회 방법에는 3가지가 있다.각 순회방법으로 갔을 때 순서를 적어보겠다. - Pre order (전위) : Root부터 왼쪽 모든 노드 탐색 후 오른쪽 24 15 2 19 28 27 30 - In order (중위) : 맨 왼쪽 아래노드부터 Root, 오른쪽 2 15 19..

[JAVA] 재귀 - 이진 탐색 트리(Binary Search Tree)의 삽입 - (2)

앞에 글에 이어서.. 앞 글 - http://marobiana.tistory.com/81 문제 : 트리에 넣을 숫자들을 입력 받아 이진탐색트리를 만들어라. 3. 예제 C++로 하면 포인터 써서 눈에 보기 더 좋을 것을ㅠㅠ Java로 포인터처럼 짜봤음 ㅋㅋ아래와 같이 3개의 클래스로 구성할 수 있음. 트리 삽입참고로, Tree에 넣는 숫자 순서가 트리모양을 결정한다public class BinarySearchTree { public static void main(String[] args) {Tree tree = new Tree();tree.addNode(24);tree.addNode(15);tree.addNode(19);tree.addNode(2);tree.addNode(28);tree.addNode(27..