안녕하세요. 이 글에서는 Serializable에 대해서 상세히 다루지 않습니다. 다만, java에서 transient 키워드에 대해서 간단하게만 다뤄보고자 합니다. transient가 무엇을 하는 지 알아보기 위해 Serializable을 implements 했어요. 굵게 쳐져 있는 Warning. 신뢰되지 않는 데이터를 역직렬화를 시키지 말아달라는 부분이 있긴 하지만, 여기에서는 다룰 주제가 아닙니다. 직렬화? 뭘 어떻게 한다는 것일까요? data class를 직렬화 시켜서 파일로 떨궈보겠습니다. 그랬더니 byte 형태로 표현이 되었어요. AC ED 00 05 ... 00 02 data의 내용을 조금 조작해서 직렬화를 시켜 봤더니 요래 나왔네요. AC ED 00 ... 01. 우리가 객체를 누군가와 ..
코딩/Java 검색 결과
톡방에서 이야기를 나누다가 record 클래스가 최신 자바 버전에 도입되었다는 것을 알게 되었습니다. 이것을 써 보려고 jdk 17을 깔고, intellij 버전을 2021.x 버전까지 올리게 되었습니다. 제가 설치했던 버전에서는 language level 선택에 17이 없었거든요. 하튼, 간단하게만 써 보고, 코딩 테스트를 푸실 때 어떻게 쓰시면 좋을지 정도만 보도록 하겠습니다. 먼저, record data는 요래 정의했습니다. 그냥 int형 x, int형 y로 이루어진 레코드 (직역하면 구조체) 정도라고 생각하면 좋겠네요. 그러면 이 친구들은 어떤 특성을 가질까요? 먼저, 필드들이 final field로 구성되어 있어요. 그렇다는 이야기는 한 번 값이 정해지면 바뀌지 않는 immutable한 특성을 ..
제가 개최한 코딩 테스트 3회에서 5번 문제였던 가희와 btd5 2는 난이도가 높았던 문제였습니다. 입력 크기와 사이즈를 보니, brute force 솔루션으로 검수진 코드와 제 코드를 교차 검증 가능했습니다. 오래 걸려 봤자 1시간 내외로 수행이 가능한 사이즈였기 때문입니다. 제가 검수했던 문제 중 하나인 시철이가 사랑한 수식 또한 비슷한 이유로 brute force 솔루션을 작성했던 적이 있었습니다. 제가 깃허브에 올린 솔루션은, 당연하게도 객체 지향 같은 건 무시한 코드였는데요. brute force 솔루션 또한 객체 지향적으로 구현하지 못했습니다. 이 문제의 출제 의도 중 하나가 객체 지향 설계 능력을 보는 것이였는데 출제자가 그걸 못 했다니. 앞으로 몇 개의 글에 걸쳐서 brute force 솔..
제가 3회 코딩테스트에 출제한 문제 중에, 가희와 쓰레기 놀이가 있었습니다. 이 문제에 대한 풀이는 다음 편에 상세히 올리도록 하겠습니다. 대신에, 이번에는 어떤 것을 가지고 출제했는지에 대한 썰을 풀어보도록 하겠습니다. 이미, 제 포스팅 스타일을 보신 분들은 눈치 채셨을 지도 모르겠지만. 제 코딩테스트에서 3번 문제는 예외없이 cs가 나오기도 했고요. 일단 자바나 python이나, weak reference 비슷한 게 또 있음을 알 수 있어요. 강한 참조 관계가 아닌 얘들이 있는데요. 자바는 soft, weak, 팬텀이 있긴 한데요. 여기서 다룰 내용은 아닌 듯 합니다. 저는 여기서 의문이 하나 들었습니다. 아니. 굳이 왜? 그냥 객체 a로부터 b에 접근할 수 있다고 치면, 강한 연결 관계로만 대충 이..
안녕하세요. 요새 이것 저것 보다가 문득 클래스 로더는 언제 class를 로드하는지에 대해 궁금했습니다. 이것을 직접 trace 해 볼 수 있는 방법은 없는지를 찾다가 -XX:+TraceClassLoading에 대해서 알게 되었어요. 그리고 조금 더 찾다 보니, 이런 문서도 발견하게 되었는데요. 업데이트가 된 버전에서는 이 옵션 대신 다른 옵션을 쓰라고 안내해 주고 있었어요. 현재 제 서버에 있는 java와 javac 버전입니다. Openjdk를 쓰고 있어요. Main.java를 컴파일 한 다음에 java 명령어로 실행을 시켜보겠습니다. 제가 위에서 링크한 문서에 따르면, Unified logging이 자바 9부터 도입되면서 몇 개의 tracing flag가 다른 것으로 대체되는데, TraceClassL..
최근댓글