반응형

프로그래밍(~2017)/자바 16

[JAVA] byte to int, double, etc (혹은 그반대) 등 코드포함

자바에서 바이트배열을 수로 바꾸기, 수를 바이트배열로 바꾸기 참고사항byte 에서 int 로 형변환시 lsb 가 커진다. 무슨 말이냐 하면 byte 가 0x80라 하자. 그럼 1000 0000 이다. byte 를 부호있는 십진수로 보면 -128이다. int i= byte 라 하면 int i 의 값은 -128이다. 왜냐면 작은 크기의 형이 큰 형으로 변환될 때는 lsb 즉 부호 비트 값이 왼쪽 모두를 채운다. 1000 1000 -> 0000 0000 0000 0000 0000 0000 1000 0000 이 되기를 기대하지만 실제로는 1000 0000 -> 1111 1111 1111 1111 1111 1111 1000 0000 이 된다. unsigned 가 없는 자바 로써는 당연한거다.(byte 도 sign..

[자바] URL , HttpURLConnection 에서 파라미터(parameter) 인코딩(utf-8) 관련

서버의 인코딩 방식이 utf-8 이라면 클라이언트도 utf-8로 보내야한다. 그래야 서버가 디코딩하고 또다시 utf-8로 인코딩하는 번거로움도 없어지고 서로의 규약을 맞출수 있다. 예) URL url = new URL("http://www.test.com/login.jsp?id=홍길동&pass=지리산 호랑이"); 예문과 같이 하게되면 홍길동과 지리산 호랑이가 한글이고 이것의 인코딩 방식이 자바의 인코딩 방식을 따르기 때문에 서버에서는 이상한 문자로 받아들일수가 있다. 이 경우 String id=URLEncoder.encode("홍길동", "UTF-8"); String pass=URLEncoder.encode("지리산 호랑이", "UTF-8"); URL url = new URL("http://www.tes..

[JAVA] 이클립스에서 주석 이쁘게 달기 (자동완성기능 사용했을때 내용뜨기)

Window -> Preferences -> Java -> Code Style -> Code Templates -> Comments 에서 파일정보 주석 (소스 가장 위 상단을 선택) Types -> Edit /** * @FileName : ${file_name} * @Project : ${project_name} * @Date : ${date} * @작성자 : ${user} * @변경이력 : * @프로그램 설명 : */ 메소드정보 주석 (원하는 함수를 선택) Methods -> Edit /** * @Method Name : ${enclosing_method} * @작성일 : ${date} * @작성자 : ${user} * @변경이력 : * @Method 설명 : * ${tags} */ ${} 내용설명 d..

[자바] MD5 만드는 함수

파일이 바뀌었는지를 확인하기 위해서 사용하였다. 아마존 클라우드랑 로컬 파일시스템이랑 데이터 자동 동기화 프로그램을 작성중인데 최근 수정 날짜로만 파일이 바뀐지를 알아보기는 아주 비효율적이라 파일의 DNA 즉 MD5 코드를 이용하여 파일이 바뀐지 분석하였다. 클라우드에 파일이 생겼는지 삭제됐는지 수정됐는지 알기 위해서 클라우드상의 파일 목록을 로컬에서 저장해두고 N초 마다 목록을 다시 가져와 과거의 목록과 비교하면서 감시하고 있는데... 클라우드상에서 이런걸 지원해주는거 없나?? 시간을 보내주면 그 시간 이후에 파일이 생겼는지, 수정됐는지, 삭제됐는지 아는 방법... 생성, 수정은 최근 수정 날짜로 판단하면 되는데 삭제된 파일은.. 최근 수정 날짜로 판단이 불가하니까.. 에이.. 어째든 아래의 코드가 파..

[자바] wait(), notify() , notifyall() 사용시 주의점 java.lang.IllegalMonitorStateException

자바 wait(), notify(), notifyall() 을 무한 쓰레드의 cpu 점유율을 줄이기 위해 사용하게 되었다. 근데 위 함수를 사용하는 곳에서 자꾸 java.lang.IllegalMonitorStateException 예외가 떴다. 알아보니 wait(), notify(), notifyall()을 사용하는 객체가 synchronized(){} 되어야 했다. 정리 wait(), notify(), notifyall() 사용하는 객체를 synchronized(){} 하여라.. 만약 thread 라는 객체가 있고 이 객체의 wait(), notify(), notifyall() 을 호출하기 위해서는 synchronized(thread) { thread.wait(); } 하라는 말이다.. synchron..

inner 내부 클래스가 존재하는 클래스에서 외부클래스를 나타내는 this와 내부클래스를 나타내는 this- 클래스.this

public class DotThis { void f() { System.out.println("DotThis.f()"); } public class Inner { public DotThis outer() { return DotThis.this; //DotThis.this 는 외부클래스 객체(DotThis)를 나타낸다. //return this; //this 는 내부클래스 객체(Inner)를 나타낸다. } } public Inner inner() { return new Inner(); } public static void main(String[] args) { DotThis dt = new DotThis(); DotThis.Inner dti = dt.inner(); dti.outer().f(); //ou..

[자바] 리플렉션(Reflection)에 대해서

Reflection 리플렉션(Reflection)이란 객체를 통해 클래스의 정보를 분석해 내는 프로그램 기법을 말합니다. 약간 어렵죠. 영어 단어로 Reflection은 '거울에 비친 그림자' 또는 '반사' 등의 의미로 사용됩니다. 자세히 관찰하면 자바의 리플렉션은 이 의미를 그대로 따르고 있습니다. 거꾸로라는 의미죠. ▣ 리플렉션(Reflection)이란? ◈ 객체를 통해 클래스의 정보를 분석해 내는 프로그램 기법 일반적으로 여러분들은 클래스를 디자인하고, 클래스의 모든 정보를 담고있는 .class 파일을 만듭니다. 만들어진 클래스를 이용해서 새로운 객체를 선언하고, 그리고 객체의 메모리를 할당하게 됩니다. 그런데 이것을 역으로 생각해 보죠. 만약 객체의 메모리만을 알고 있고, 그리고 이 객체의 형을 ..

반응형