느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라
article thumbnail
Cookie는 왜쓰는가? 그리고 Cookie관련 간단한 자바 예제
IT/JAVA 2022. 3. 6. 14:17

과거의 나는 쿠키라고 하면 나는 일단, 맛있는 쿠키가 생각난다. 하지만, 지금같이 개발자로 일하고 있는 경우에는 쿠키라 하면, IT 용어로서의 쿠키가 생각나는게 현실이다. 그러면 쿠키가 무엇인지 IT 용어사전을 통해 검색을 해보자. 쿠키(영어: cookie)란 하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 일컫는다. HTTP 쿠키, 웹 쿠키, 브라우저 쿠키라고도 한다. 이 기록 파일에 담긴 정보는 인터넷 사용자가 같은 웹사이트를 방문할 때마다 읽히고 수시로 새로운 정보로 바뀐다. 위와같이 인터넷에 정의되어 있다. 일단, 쿠키를 사용하는 이유는 HTTP는 기본적으로..

article thumbnail
Equals를 재정의할때 반드시 hashCode를 재정의 해야한다.
IT/JAVA 2022. 2. 13. 19:21

회사업무중 중국개발자 분들(위메프 연길센터에서 업무를 수행하시는 분들)이 작성한 통계관련 코드에 기능을 추가하는 페어프로그래밍을 하던도중, 이슈가 있는 코드를 발견하였다. Custom하게 만든 객체를 HashMap의 키값으로 사용하였고, Custom객체를 통해 key값에 해당하는 값을 갖고오는데 원하는 데로 갖고오지 않았기 때문이다. 문제가 있었던 부분은 Custom객체를 확인하자 바로 알 수 있었다. 문제가 있었던 부분은 Effective Java에서 강조하는 아래의 법칙을 지키지 않았기 때문이다. 아래의 글은 Effective 자바의 글이다. equals를 재정의할 떄는 반드시 hashCode도 재정의 하라 많은 버그가 hashCode 메서드를 재정의하지 않아서 생긴다. equals 메서드를 재정의하..

article thumbnail
i = i + 1, i++ 의 차이
IT/JAVA 2022. 1. 25. 20:16

재밌는 문제가 있었다. 관련하여 리서치 및 테스트를 조금 해봐서 적게된다. 문제의 요지는 for문에서 3번째로 오는 증감연산자에서 i = i + 1을 사용하는 것보다 i++를 사용하는게 성능의 이점이 있다는 말이다. 리서치를 해본 결과, i++ 연산의 경우에는 다음과 같이 바이트 코드로 컴파일 된다고 한다. IINC 1 1 그리고 i = i + 1 연산의 경우는 다음과 같은 형의 바이트 코드로 컴파일 된다고 한다. ILOAD 1 ICONST_1 IADD ISTORE 1 결론적으로 i++쪽의 바이코드가 더 적은 연산을 수행한다. i++의 경우 1번인덱스의 값을 1 증가시키는 바이트 코드이고 i = i + 1의 경우 1번 인덱스의 값을 스택에 넣고 상수 1을 스택에 넣고 이 둘을 더해서 1번 인덱스에 저장하..

article thumbnail
Java 람다 표현식, 람다 함수란?
IT/JAVA 2019. 12. 25. 14:30

최근, 아니 2, 3년 전부터 한국에서 자바8과 관련하여 함수형 프로그래밍을 배워야 한다는 이슈가 회사내에 있었던 것으로 기억한다. 그로부터 몇년이 지난 지금 다시 개발자로 이직을 하려니 자바8과 관련된 질문을 많이 받고 이에 대한 대답을 하지 못해 면접에서 떨어진 경우가 많았다. 그러므로 앞으로 매일 1시간 이상 자바8 이후에 나온 기능들에 대해 살펴보고 테스트 하는 시간을 가지며, 간간히 포스팅 하는 시간을 갖고자 한다. 이 포스팅은 그 첫번째 포스팅이다. 자바 8 이후 여러 기능이 나왔지만 그중 가장 많이 쓰이고 있는 기술은 람다식이라고 한다. 람다식이란 기존에 동작파라미터로 객체를 넘겨주는 방식을 대신해서 다음과 같이 익명 메서드를 넘겨준다. 람다식 표현법 (매개변수, ...) -> { 실행문 ...

이클립스(Eclipse) 거의 모든 단축키 모음
IT/JAVA 2019. 12. 24. 07:25

File Keyboard Shortcut 설명 Alt + Shift + N 프로젝트, 파일, 클래스 생성 Ctrl + N Wizard를 통해 프로젝트 생성 Ctrl + W 현재파일 닫기 Ctrl + S 현재파일 저장하기 Ctrl + Shift + S 모든파일 저장하기 F2 이름 바꾸기 F5 리소스 내용 새로고침 Ctrl + P 출력 Alt + Enter 속성 대화상자 보기 Edit Keyboard Shortcut Description Ctrl + Z 실행취소 Ctrl + Y 다시실행 Ctrl + X 잘라내기 Ctrl + C 복사 Ctrl + V 붙여넣기 Del 현재 또는 선택된 텍스트 삭제 Ctrl + A 모든 텍스트 선택 Alt + Shift + Up 선택 요소를 둘러싸는 요소로 확장 Alt + Shi..

article thumbnail
JAVA enum 자료형(직관적인 코드와 상수를 옳게 사용하기 위한)
IT/JAVA 2019. 11. 27. 20:38

최근 토비의 스프링을 공부하는데 enum을 사용하는 경우를 가끔씩 볼 수 있다. enum을 사용할 줄은 알지만 정확히 잘 사용하지는 못하는지라 이참에 enum에 대해서 제대로 숙지하기 위해 블로그 포스팅을 하면서 고찰을 해보고자 한다. 이러한 고찰을 하는 이유는 드라마 브레인에서 이강훈의 대사처럼 할 수 있는것과 잘하는 것은 다르기 때문이다. 잘 숙지하고 의식적으로 필요할 경우 enum을 사용하여 할 수 있는경지가 아닌 잘하는 경지가 되도록 하겠다. 열거 자료형(enumerated type)은 고정 개수의 상수들로 값이 구성되는 자료형이다. 상수들의 모임이라면 내 개인적인 생각으로는 그냥 클래스에 아래와 같이 상수를 넣으면 되지 않을까 생각하였다. ex) public static final int USE..

[JSP] 한글 깨짐 처리방법
IT/JAVA 2019. 11. 27. 16:02

이제 이론적인것은 어느정보 배웠겠다. 내 스스로 프로젝트를 조금씩 수행하려고 하는 첫걸음에 문제가 발생하였다. 문제는 바로 jsp에서 한글깨짐 현상이 일어난 것이다. 예전 Java개발자 양성교육때 이러한 버그를 고치는데 상당히 헤맸던 것으로 기억나는 추억마저 생기는 버그다. 초보자 시절 기억을 되살려 jsp / servlet 개발시 한글깨짐 방법에 대해 처리하는 방법에 대해 포스팅 하도록 한다. 현재 내가 사용하고 있는 WAS(Web Application Server)는 Tomcat이고 모든 페이지는 UTF-8로 개발할 예정이다. 1. GET 전송시 파일깨짐 [server.xml] server.xml 파일에서 Connector 태그에 URIEncoding=UTF-8을 추가하여 준다. 2. POST 전송시..

article thumbnail
STS(스프링 편집툴)에 톰캣 서버 추가하기
IT/JAVA 2019. 11. 27. 15:31

STS를 사용하는데 내가 평소 사용하던 Tomcat이 아닌 다른 Spring에서 제공하는 서버가 깔려있어 해당 서버를 제거하고 내가 익숙한 Tomcat을 사용하고자 한다. 일단 Tomcat서버를 다음의 사이트에 들어가서 다운 받는다. 나 같은 경우에는 톰캣7을 설치할 예정이다. https://tomcat.apache.org/ Apache Tomcat® - Welcome! The Apache Tomcat® software is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies. The Java Servlet, JavaServer Pa..

article thumbnail
XML 파일정보를 읽기위한 Java API JAXB(Java Architecture for XML binding)
IT/JAVA 2019. 11. 15. 15:23

스프링 핵심 기술 활용하기 챕터를 공부하고 있는데 해당 부분에 코드와 sql 분리시키기라는 기술적 분야를 보고 있다. 코드와 sql을 분리시킬경우 xml로 분리하는 경우만 생각하고 있었는데, 토비의 스프링에서는 JAXB라는 기술을 설명한다. 여기서 JAXB란 JAXB(Java Architecture for XML Binding)의 약자이다. JAXB는 XML문서정보를 거의 동일한 구조의 오브젝트로 직접 매핑해준다. DOM은 XML정보를 마치 자바의 리플렉션 API를 사용해서 오브젝트를 조작하는 것처럼 간접적으로 접근해야 하는 불편함이 있다. 그에 비해 JAXB는 XML의 정보를 그대로 담고 있는 오브젝트 트리 구조로 만들어주기 때문에 XML 정보를 오브젝트처럼 다룰 수 있어 편리하다. JAXB 테스트를 ..

article thumbnail
이클립스 디버깅(eclipse debugging)
IT/JAVA 2019. 11. 2. 07:58

프로그래밍을 처음 배울때 디버깅이라는 것에 대해 배우게 되는데 코딩을 시작한지 꽤 지났음에도 편리하다는 이유로 System.out.println으로 디버깅을 했다. 최근에는 JUnit등을 이용한 테스트 케이스를 만드는 것으로 버그에 대해 대처를 하고는 하는데 좀 복잡한 알고리즘 문제를 풀면서 System.out.println만으로는 잡기 한계가 있다는 생각을 하게 되었다. 이클립스를 사용하면서 디버깅 관련한 메뉴가 있다는 것을 알고는 있었으나 하루 몇시간 투자하기 귀찮아서 해당 기능을 그냥 지나쳐 버렸는데 요즘에는 셜록홈즈에 나온 대사인 '보기만 하고 관찰은 하지 않는다.' 라는 말이 정말 뼈에 사무친다. 얼마나 많이 봐왔던 기능인데 제대로 사용해보지도 않고 있었으니 말이다. 이렇게 된 거 이참에 제대로..