본문 바로가기

JAVA

Java(자바) Integer.toString 함수에 대해서 보통 int 함수를 string으로 변환할 때 여러 방법을 쓰는데, 간단하게는 int i + "" 이런식으로 공백 문자열을 붙여 쓰기도 한다. 이게 문자열로 변환되는 이유는 묵시적 형변환과 관련이 있는데 여하간 string이 더 큰 데이터 범위를 가지고 있어 자동으로 형변환 해준다는 것으로 이해하고 있다. 다만 간단하게 작성할 수 있는 위의 방법은 유니코드 관련해서 문제가 생길 여지가 있고, 실제로도 경험해봤기 때문에, 최근에 들어서야 좋은 방법이 아니라는 확신이 생기게 되었다. 자바에서 제공하는 함수가 두 가지가 있는데, 그 중 하나가 바로 Integer.toString이며 나머지 하나가 String.valueOf이다. 양쪽 모두 동일한 기능을 하는데 왜 나뉘어있는지에 대해서는 알 수 없고, 다만 St.. 더보기
Jedis(Redis) 자바(Java) 세션(Session) 서버 일반적으로 하나의 톰캣만을 사용했을 때 해당 톰캣 서버의 정보로 세션이 구성되지만, 프로젝트 규모가 커졌을 때, 여러개의 톰캣을 운용할 경우 하나의 서비스에서 각각의 서버가 자신만의 아이피와 포트, 세션을 가지고 있게 되어 운용에 어려움이 생기는데 이를 Redis를 세션 서버로 사용한다면 각자 다른 톰캣 서버의 세션 정보가 Redis를 통해 통합되어 운영할 수 있게 된다. 더보기
자바 문자열 개행 기준으로 자르기(split) 실제 현업에서도 데이터베이스에는 대부분의 데이터를 문자 형태로 넣어 쓰는데, 때문에 특정 문자 토큰을 넣어둬서 사용하기에 용이하게 작성해두는 경우도 드물지 않게 볼 수있다. 이 때 많이 쓰이는게 split함수인데 특정 문자를 기준으로 문자열을 잘라내서 배열로 반환하기가 굉장히 편하다. 그런데 눈에 보이지는 않지만, 실제로는 작성된 보이지 않는 특수문자 값들이 있는데, 이것을 제대로 잘라내지 못해서 헤매고 있다가 겨우 해결 방법을 찾아냈다. 토큰을 "\\n" 이렇게 주면 간단하게 해결이 된다. String[] myArr = splitWord.split("\\n") 개행 기준으로 배열 인덱스값 순서대로 들어가는 것을 확인할 수 있다. 더보기
Java Selenium 크롤링 (서울시 코로나 환자 정보) 자바로 셀레니움을 사용해서 크롤링을 해보고 있는데 생각보다 강력한 기능에 감탄하고 재밌는것도 몇 시간일뿐이고, 지나고 나니 깨닫는 것은 역시 쉽지 않다는 것. 태그를 골라내서 뽑아내는 것도 좋았지만, 여러 문장으로 이루어진 내용이 전부 필요한데 그게 하나의 큰 태그에 담겨있고 하위태그에 한줄 한줄 p태그로 나뉘어져 있어 난감한 경우도 있었다. 결국 상위태그로 내용을 뽑아내긴 했지만 한줄 한줄이 p태그로 나뉘어져있어 한 줄 한 줄 나뉘어있기도 하고, $nbsp같은 특수문자가 사용되어 줄바꿈이 되어있는 경우도 있어서 이 부분은 참 난감한 것 같다. 한 줄 두 줄도 아니고 이걸 문자열로 어떻게 가공해야할지는 당장 떠오르지 않는 상태. 또 하나 굉장히 힘들었던 점이 있는데, 요즘 대부분의 사이트들이 Ajax를 .. 더보기
자바(JAVA) 난수 범위 지정 자바 랜덤 난수를 뽑는 방법. 1. Math.random을 이용하는 방법 Math.random 메소드는 기본적으로 따로 임포트 하지 않아도 사용이 가능하다. java.lang 패키지 안의 클래스가 존재하기 때문. 개발도구(IDE)에서 Math.random에 대한 설명을 보면 double java.lang.Math.random() randompublic static double random() Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. Returned values are chosen pseudorandomly with (approximately) uniform distribution .. 더보기
[JSP] getSession(), getSession(true), getSession(false) 차이점 getSession(), getSession(true), getSession(false) 차이점 1. getSession(), getSession(true) - HttpSession이 존재하면 현재 HttpSession을 반환하고 존재하지 않으면 새로 세션을 생성합니다. 2. getSession(false) - HttpSession이 존재하면 현재 HttpSession을 반환하고 존재하지 않으면 새로 생성하지 않고 그냥 null을 반환합니다. [참고] session.isNew() : 새로 생성된 세션이면 true를 리턴. [참고] getSession(), getSession(true)는 null 체크없이 바로 getAttribute()를 사용해도 무방하지만, getSession(false)는 null을 .. 더보기
PhoneInfor.01 // 이름, 전화번호, 생년월일을 저장하는 데이터 // 이름, 전화번호, 생년월일을 입력받아 출력하는 메소드 // 이름, 전화번호, 생년월일 세 가지를 모두 받아 출력할 수 있게도 하고. 이름, 전화번호만 받아서 출력할 수 있게도 // 클래스를 구성하라. // 3가지의 데이터 변수 String name; String phoneNumber; String birthday; // 생성자의 생성. // 세 가지 변수를 모두 받는 생성자. PhoneInfor(String name, String phoneNumber, String birthday); this.name = name; this.phoneNumber = phoneNumber; this.birthday = birthday; // 두 가지 변수만 받는 생성.. 더보기
변수와 리터럴의 상관관계, 그리고 형변환 할 때의 주의점 기본적으로 자바에서 변수 선언을 하고 초기화값을 지정한 리터럴값은 메모리로 가서 저장을 하게 된다. 예를 들어 int i =32; 라고 한다면 여기서 32;라는 리터럴 값 또한 메모리로 이동해 계산이 저장이 된다는 것. 그런데 여기서, 자바는 기본적으로 메모리로 이동한 리터럴 값들 중 정수들은 int를 기본으로 변환해 저장해 쓰인다는 점. 만약 이 점을 상기해두고 작업을 하지 않는 다면 아래와 같은 오류가 발생할 수 도 있다. short a = 32; short b = 64; 라고 지정했을 때 각각의 a, b 값 자체는 문제가 없을 수 있다. 그러나 이미 이 순간에서 32와 64라는 리터럴 값은 메모리 내에서 int형으로 변환되어 저장되어 있다는 점을 기억해둬야 한다. 아래를 보자. short c = a.. 더보기
기본형 8가지 변수와 참조형 변수의 기본 초기화 값. package day02; public class Ex05 { int num; // 0 의 초기화값 byte b; // 0 의 초기화값 short s; // 0 의 초기화값 long l; // 0L 의 초기화값 float f; // 0.0f 의 초기화값 double d; // 0.0d 또는 0.0 의 초기화값 char c; // '\u0000' 의 초기화값 boolean tf; // false 의 초기화값 String s1; // null 의 초기화값 //클래스형 변수들의 경우는 따로 초기화값을 지정하지 않아도 선언이 가능하다. //상위에 위치해있는 변수이기 때문에 아래의 메소드들에서도 따로 초기화값을 줘서 이용이 가능하다. //초기화값을 지정하지는 않았지만 자바에서기본적으로 지정해주는 초기화값이 따로 .. 더보기
문자열을 출력할 때 쓰는 여러 방법들. package day02; public class Ex01 { public static void main(String[] args) { System.out.print("123\n야호"); System.out.print("이렇게\t다음탭으로\t이동한다."); System.out.print("다음은\b 뒤로 한칸\b 이동한다."); System.out.print("맨 앞으로 이동\r 줄의"); System.out.print("\\이것은 \\을 출력시켜준다."); System.out.print("\' 이것은 \'를 출력시켜준다"); System.out.print("\" 이것은 \"을 출력시키는 것."); } } 더보기