본문 바로가기

분류 전체보기16

[Java] logger(slf4j, log4j), system.out.println() 지난 게시글에서 콘솔에 로깅을 할때 사용하는 system.out.println() 메소드를 직접 확인해보며 실제 운영 중인 서버에서는 사용하지 않아야 한다고 정리했다. 그리고 일반적으로 개발자들이 로깅을 할때 logger를 사용하는 것을 추천한다고 했다. 그런데 logger 또한 서버의 성능에 영향을 미치지는 않을까? 왜 logger를 사용해야하지? 에 대해 추가적으로 고민해보지 못했다. 어떤 시스템을 개발하던 반드시 로그를 남겨야 한다. 소프트웨어 개발 과정 혹은 개발 후에 동작 상태를 파악하고, 문제가 발생했을 때 진단하고 해결하는데 도움이 되기 때문이다. 로그를 남기는 방법에는 시스템 로그(system.out.println), logger(slf4j, log4j) 등 여러가지가 있겠지만, 어떤 lo.. 2023. 11. 27.
[Java] hashcode() (feat. equals()) hashCode hashcode 메소드는 객체의 주소값을 변환하여 생성한 객체의 고유한 정수값이다. 따라서 두 객체가 동일 객체인지 비교할 때 사용할 수 있다. 서로 다른 Book 객체는 주소값이 다르기에 hashCode가 다르다. 서로 다른 String 객체도 문자열이 같으면 hashCode가 같다. 그렇다면 hashCode()와 equals()는 어떤 관계를 가지고 있을까?? 동일한 객체는 동일한 메모리 주소를 가진것 처럼 보겠다(동일성)라는 것을 의미하므로, 동일한 객체는 동일한 해시코드를 가져야 한다. equals와 hashCode의 관계를 정의하면 다음과 같다. 두 객체가 equals()에 의해 동일하다면, 두 객체의 hashCode() 값도 일치해야 한다. 두 객체가 equals()에 의해 동.. 2023. 11. 22.
[Java] == vs. equals() 자바에서 두 객체 혹은 변수를 비교할 때 == 연산자 또는 equals() 메소드를 사용한다. int 와 boolean과 같은 기본 원시 타입(Primitive Type)의 비교는 == 연산자를 사용하여 비교한다. String 또는 클래스와 같이 참조 타입(Reference Type)의 비교는 == 연산자 또는 equals() 메소드를 사용하여 비교할 수 있다. == 연산자(주소 값 비교), 값 비교(equals) == 연산자와 equals() 메소드의 가장 큰 차이점은 == 연산자는 비교하고자 하는 두 대상의 주소 값을 비교하고, equals0 메소드는 비교하고자 하는 두개의 대상의 값 자체를 비교한다는 것이다. 문자열 비교 equals() equals() 메소드는 최상위 클래스인 Object에 포함되.. 2023. 11. 22.
[CS] 단방향 암호화, 체크섬, HMAC 들어가기에 앞서, 단방향 암호화, 체크섬, HMAC 을 알아야하는 이유는 뭘까? 'HTTP/HTTPS 의 동작'을 이해하기 위해서 위의 개념들을 잘 알고 있어야 한다. 그렇다면 간략하게 HTTP/HTTPS 부터 먼저 알아보도록 하자! HTTP/HTTPS 란? HTTP 는 텍스트 기반 통신 규약으로 인터넷에서 데이터를 주고 받을 수 있는 프로토콜이다. HTTP + Secure 즉 HTTP의 보안 버전이다. HTTPS 의 등장 배경 HTTP는 주고 받는 데이터가 암호화 되지 않고 전송되기 때문에 네트워크 어디에서나 *패킷을 캡쳐하면 비밀번호와 같은 중요한 정보도 노출이 되는 위험이 있다. 또한, 정보를 전달해주는 곳이 안전한 곳인지 신뢰할 수 없다는 문제점도 있다. (*피싱, 피싱사이트) 이 두 가지 문제를.. 2023. 11. 21.