본문 바로가기

Programing

(393)
[Java] hashCode() internal : String, Object 질문: String 간 비교시 헸길리는 부분이있어서 질문 드립니다. String a = "a"; String b = new String("a"); 이와 같은 케이스는 주소가 다르게 생성되던데 이런 케이스 때문에 무조건 equals()메소드로 비교하는것인가요?? 답변부탁드립니다. 질문에 대한 답부터 하면 "맞다."이다. 하지만 이 글을 쓰게 된 이유에는 '주소'라는 말이 있었기 때문이다. 혹시 주소가 hashCode() 돌려주는 값을 의미했는지 물어보니 그렇다고 한다. String 클래스의 hashCode (보통) String 클래스의 hashCode() 는 Object의 hashCode()를 사용하지 않고 오버라이딩해서 구현한다. 버전에 따라 구현 방법은 바뀌었지만 자바 8에서는 public final ..
[Spring] ClientHttpResponse 인터페이스 계층 구조 ClientHttpRequestInterceptor 인터페이스를 통해 로깅을 남기고 있었는데 비표준 Http Status 코드로 인해 개선을 하게 되면서 정리를 하였다. ClientHttpResponse 인터페이스 close()는 며AutoCloseable에 정의한 인터페이스를 재정의한(override) 것이다. 나머지는 이름(상태코드, 숫자형태의 Raw 상태코드, 상태 문자열)의 정보를 획득한다. AbstractClientHttpResponse 추상 클래스 getStatusCode() 를 구현해놓았고 코드는 아래와 같다. public abstract class AbstractClientHttpResponse implements ClientHttpResponse { @Override public Htt..
[Pokayoke] 휴먼에러를 어떻게 막지? 1955년 히터가 넘어졌을 때 자동 소화되는 장치가 개발된 이후 히터에 의한 화재가 급격히 감소 - 집의 스팀보이도 바닥이 떨어지면 전원이 차단되는 센서와 스위치가 있었음 - 1964년 난연 재료로 잠옷이 만들어진 이후 화재에 의한 사망률이 급격히 줄어듦
[Sonarqube] Spring 기본 테스트 기본 템플릿은 아래와 유사한 테스트를 만들어준다. public class ApplicationFunctionalTest { @Autowired private ApplicationContext applicationContext; @Test public void contextLoads() { } } 문제는 sonarqube에서 단정문이 없다고 아래와 같이 경고한다. 간단한 해결책.. 애플리케이션 컨텍스트가 널이 아님을 단정한다. public class ApplicationFunctionalTest { @Autowired private ApplicationContext applicationContext; @Test public void contextLoads() { assertNotNull(applicatio..
[Java] 한 영역(scope)에서 변수를 두 번 선언할 수 없는 이유? 한 카페에 올라왔던 질문이다. 코드 아래의 코드가 왜 동작하지 않는지에 대한 문의이다. public class DuplicationVarDeclare { public static void main(String[] args) { int i = 100; byte b = (byte) i; System.out.println(b); int i = 300; byte b = (byte) i; System.out.println(b); int k = -2; b = (byte) k; System.out.println(b); System.out.println(Integer.toBinaryString(k)); } } 질문내용: 왜 TYPE을 두번 선언하면 안되나요? 예제 2-13을 보면, I와 b는 처음에만 타입 선언이 되어..
[Java] 자바 컴파일러 - parse(파스) 이전에 자바 컴파일러의 컴파일 단계라는 글을 쓴 적이 있다. 사실은 그 컴파일 이전에 구문 분석 트리를 만드는 작업을 수행한다. 이 글은 그 과정에 대해 다룬다. 자바에서는 JSP등에서 Runtime 중 동적 컴파일링을 할 수있는 도구를 제공한다. ToolProvider 라는 서비스 로더를 통해 시스템 자바 컴파일러를 가져올 수 있다. 아래 코드는 자바 컴파일러를 가져오는 문장이다. import javax.tools.JavaCompiler; import javax.tools.ToolProvider; public class JavaCompilerTest { public static void main(String[] args) { final JavaCompiler compiler = ToolProvider...
[Hours] 1.4 update - ComboBox 후처리를 위해 추가한 TextField 대신 Combo Box로 바꾸기로 하였다. Finder에서 '폴더로 이동'에 보면 최근 사용한 5개의 경로를 최근 사용한 순서대로 보여주는데 이런 구조면 편리하리라 생각했다. 문제점1 - 디센더가 짤린다. g, j, q 같은 글씨의 아래 부분이 짤리는 문제가 있었다. 타이포그래피에서는 디센더(Descender)라고 부른다. Size Inspector에서 보니 Height 가 25로 고정이었다. 우선 Control의 Size를 Regular에서 Small 로 바꾸니 글씨가 작아지기는 하는데 짤리는 것은 적어졌다. 글씨가 작아지니 디자인적으로 균형이 맞지 않는 것 같아서 다시 Regular로 복귀하고 속성을 찾아보았다. Border를 조정하니 괜찮아졌다. 기본적으로 B..
[Redis] 난 Redis가 Ruby로 짰는 줄 알았는데... 난 Redis가 Ruby로 짰는 줄 알았는데... 코드를 받아보니 C로 짜여져 있다. server.h를 보면 ae.h를 포함하고 있다. Jim's event-loop 를 위해 만든 event-driven 프로그래밍 라이브러리를 재사용하기 편하게 라이브러리화 한 것이다. ae.c에 보면 시스템에서 지원하는 최적(최고)의 멀티플렉싱 레이어를 포함하는 코드가 있는데, evport -> epoll -> kqueue -> select 순으로 되어 있다. #ifdef HAVE_EVPORT #include "ae_evport.c" #else #ifdef HAVE_EPOLL #include "ae_epoll.c" #else #ifdef HAVE_KQUEUE #include "ae_kqueue.c" #else #incl..