java 19

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

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

개발/JAVA 2020.11.24 (6)

[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 (2)

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

아.. 블로그에 엄청 오랜만에 글쓰네 ㅋㅋ 쓸건 많았는데. 어쨌든 이상한 일이 일어나서 써본다. 내가 하려던건, 1. Admin server 에서 API로 호출을 한다.2. 여러 정보 + 등록 날짜(Date) 정보를 API로부터 받아온다.3. Admin의 jsp에 위 정보를 뿌린다. 이상한 점은API에서 등록날짜를 어드민으로 보내줄 때 등록날짜를 Date로 보내줬고,받는 어드민쪽에서도 Date로 받았는데.디버깅해보면 값이 잘들어있고jsp에서 출력하면... 타임스템프값으로 출력된다. {createdAt=1413339994000} 원인은 추측해보건데.. 서버투서버 호출만 하면 그러는 것을 봐서는아마도 date객체더라도 통신할 때 표준으로는 타임스템프로 넘기기 때문에 받은 쪽에서 제대로 변환이 안된 상태이다?..

개발/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 (1)

[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..