유랑하는 나그네의 갱생 기록

だけど素敵な明日を願っている -HANABI, Mr.children-

전체 글 71

[Java] 직렬화(Serialization)와 역직렬화(Deserialization)

Java에서 직렬화(Serialization)와 역직렬화(Deserialization)는 객체 데이터를 효율적으로 저장하거나 네트워크를 통해 전송하기 위한 중요한 메커니즘입니다. 직렬화와 역직렬화를 왜 사용해야 하는지, 그 동작 원리와 실질적인 활용 사례를 다루겠습니다. 그리고 직렬화 과정에서 사용하는 transient 키워드와 serialVersionUID의 역할 및 설정 방법까지 알아보겠습니다. Serialization?직렬화(Serialization)란 Java 객체를 바이트 스트림으로 변환하는 과정입니다. 이 과정을 통해 객체를 파일에 저장하거나 네트워크로 전송할 수 있습니다. 다시 말해, 객체의 상태를 영구적으로 저장하거나 전송 가능한 형식으로 변환하는 것입니다. 직렬화의 목적1. 데이터 영속성..

Study/Java 2024.11.17

[Java] charAt과 substring에 long 타입 인덱스를 사용할 수 없는 이유에 관하여

최근 Java로 문자열을 처리하던 도중에 골머리를 앓았습니다. 대체 왜 자바에서는 charAt과 substring 메서드에 long 타입 인덱스를 사용할 수 없는가? 물론 문자열을 여기까지 끌고 온 코드 설계의 문제 이긴 하지만요.  charAt 그리고 substring의 구조일단 charAt 메서드의 구조는 이런 식으로 짜여있습니다. 매개변수 자체가 int형이죠. 범위 역시 0부터 Integer.MAX_VALUE 값입니다. substring 메서드 역시 인덱스의 타입을 int 타입으로 받고 있습니다. 아니 그냥 int 타입을 long으로 바꿔서 메서드를 구현하면 안 되냐고 생각할 수도 있겠습니다만. 자바는 굳이 배열이나 문자열과 같은 데이터 구조에서 인덱스를 int 타입으로 제한합니다. 왜why? 자..

Study/Java 2024.11.10

WOOWACON 2024 & AIoT 국제전시회 후기

WOOWACON 2024 운이 좋게도 WOOWACON 2024 참가자로 선정되어 우아콘을 다녀왔습니다. 가장 원했던 것은 기술이사 멘토링.. 한 분야의 정점을 찍은 사람들로부터 인사이트를 얻고 싶었습니다. 다행히 멘토링 세션에 선발이 되었고 우아콘 전날에 덥수룩한 머리를 쳐내었습니다. (오랜만의 행사라..!) 행사는 10시부터 시작이었지만 9시부터 입장할 수 있어서 그전에 미리 도착했습니다. 명찰과 우아콘 키트를 수령하고 로비에서 진행 중인 이벤트에 참여했습니다. 부스는 크게 선물 카드 완성 후 벨 누르기와 식사 메뉴 추천 + 주변 가게 검색 부스로 이루어져 있었습니다. 후자 쪽은 학부생 때 만들어본 서비스이긴 한데 이런 걸 여기서 보게 될 줄이야. 그런데 주변에 떡볶이 파는 곳이 없어서 아무것도 뜨지 ..

etc./Activities 2024.11.03

예금보험공사 그리고 금융결제원 필기 후기

이번 하반기는 공기업도 예외 없이 자격요건에 맞거나 서류 쓸 시간이 생기면 틈틈이 자소서를 쓰고 지원했습니다. 그전에 IM뱅크 전형도 있었는데 NCS가 부족하다고 느꼈습니다. 문제 하나가 있으면 진득하게 푸는 스타일인데 NCS는 그것과는 결이 다르니까요. 그런데 이건 코딩 테스트와 마찬가지로 정확성 + 풀이 속도가 중요한 것 같습니다.  블로그에 쓸 토막글을 적을 때도, 학부 시절 영화 인문학을 수강할 때 매주 제출해야 했던 감상평도, 시간이 오래 걸리는 타입인데... 하루가 짧게 느껴지는 것도 이것과 연관이 좀 있겠네요. 아무튼 공무원이나 공기업은 생각도 안 하고 살았는데 이렇게 시험으로 마주하니 지난 행보에 대한 아쉬움이 생겼습니다.  그래도 이번 시험으로 NCS나 전산학 문제 유형은 어느 정도 챙겨..

日常/就職 2024.10.27

[IntelliJ] Mac 자바 버전 설정 및 변경

That easy 늘 그렇듯이 새로운 프로젝트 설정을 맞춰주는 건 번거로운 일입니다. 서론은 이만 줄이고 바로 본론으로 들어가겠습니다. JDK를 아직 안 받았다? IntelliJ를 통해 JDK를 손쉽게 설치할 수 있습니다. File -> Project Structure  Platform Settings -> SDKs -> (+ 버튼) -> Download JDK를 통해 원하는 버전의 JDK를 다운로드합니다.  그 후, 같은 창에서 Project Settings -> Project를 통해 다운로드한 SDK로 설정합니다.  IntelliJ IDEA -> Settings...  Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JVM에서 해당 ..

Study/Java 2024.10.18

[BOJ] 23289 온풍기 안녕! - Java

1. 문제 링크https://www.acmicpc.net/problem/232892. 문제 풀이 이제 곧 기다리던 삼성 코딩 테스트죠? 구현만큼은 자신 있었던 (과거형) 저도 이번만큼은 긴장되네요. 그야 자소서 문항이 바뀌고 난 후 첫 시험이라 .. 코딩테스트도 변동이 있을 가능성도 없진 않을 테니까요. 그래서 예전 같았으면 그냥 배열 돌리기랑 bfs만 돌리고 갔을 텐데 이번엔 다릅니다. 몇 달 전에 큐빙을 풀긴 했지만 좀 제대로 된 플래티넘 구현 문제를 풀고 싶었습니다.  가장 중요한 건 설계. 코드를 구현하기 전에 꼼꼼하게 조건을 숙지한 후 구현을 해야 합니다. 그래도 나름 짧은 코드로 만들어보고 싶었으나 코드가 좀 길게 나왔습니다. 1. 모든 온풍기에서 바람 나옴2. 온도 조절3. 온도 1 이상인 ..

etc./BOJ 2024.10.12

[Algorithm] A* 알고리즘

A* Algorithm? 얼마 전에 스타크래프트 길찾기 알고리즘과 관련된 글을 읽으면서 길찾기 알고리즘에 관심이 생기게 되었습니다. 물론 코딩 테스트를 준비하면서 다익스트라를 안보고 풀어보려고 얼마 전에 시도하긴 했지만, 이 다익스트라를 현실 문제에 적용하기엔 썩 좋은 방법은 아니죠. 우리가 사는 세상은 디지털 세상이 아니기 때문입니다.(시뮬레이션 우주 가설이 맞다면 이건 또 다른 문제죠.) 아날로그 세상이기 때문에 고려할 요소들이 너무나도 많습니다. Dijkstra! 그래도 일단 다익스트라 알고리즘에 대해서 짚어보고 넘어갑시다. 간단하게요.그래프에서 여러 개의 노드가 있을 때, 특정 노드에서 출발하여 다른 노드로 가는 경로를 구하는 알고리즘 (음의 간선x) 음의 간선은 어쩌냐고 물어보신다면 Bellma..

[Clean Code] 1장 깨끗한 코드 리뷰 (+ 들여쓰기)

Clean Code?중복 제거, 코드 표현력, 설계 단계에서 간단한 추상화. 끝. 클린 코드의 원서는 다음과 같습니다. 2009. Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall. 아니, 2009년에 나온 책의 코드 기법을 왜 읽으시려고 합니까? 말 많은 서적이기도 하던데요? 라고 말할 수도 있겠지만.. 일단은 프로젝트를 진행하기 전 코드 컨벤션이야 미리 정하고들 시작은 합니다. 하지만, 막상 이런 걸 정하고 시작한다 하더라도 결국 개개인의 코드 습관으로 인해 어쩔 수 없이 코드가 난잡해집니다. 물론 컨벤션이야 대부분 클래스/메서드/변수 작명 규칙이 대부분이긴 합니다. 코드 습관을 고치기 위함이 첫 번째. 실제로 이 책의 저자인..

etc./Book Review 2024.09.27

[Java] HashSet과 HashMap 성능 차이

몇 달 전에 알고리즘 문제를 풀었는데 이상하게 시간이 오래 걸렸습니다. 분명 로직은 맞는데 HashMap을 쓴 코드와 HashSet을 쓴 코드의 성능 차이가 많이 났습니다. 왜 Why? 지금부터 여기에 대해서 파보려고 합니다. 1. HashMap과 HashSet의 차이점?HashMap: 키-값(key-value) 쌍을 저장하는 자료구조입니다. 키는 고유하며 값은 중복될 수 있습니다. 주로 put(key, value), get(key), remove(key) 같은 작업이 이루어집니다. HashSet: 중복되지 않는 고유한 요소들의 집합을 저장하는 자료구조입니다. 내부적으로 HashMap을 사용하여, 각 원소를 HashMap의 키로 저장하고, 값은 고정된 더미 객체(PRESENT)를 사용합니다. 잠시만요. ..

Study/Java 2024.09.14

[Java] String 객체 생성법 탐구 (with String Pool)

String? Java의 String 클래스, 많이 사용하는 클래스 중 하나죠? 이번 글에서는 String을 String Pool과 함께 살펴보려고 합니다.String 객체 생성법 String 클래스는 문자열을 표현하는 데 사용됩니다. String 객체는 불변(immutable)이며, 한번 생성된 문자열은 변경할 수 없습니다. String 객체의 생성은 두 가지 방식, 문자열 리터럴(literal) 방식과 new 키워드 방식으로 나뉩니다.String str1 = "Hello, World!";String str2 = new String("Hello, World!");뭐가 더 효율적일까요? 문자열 리터럴 방식이 더 효율적이고 일반적으로 사용됩니다. 무슨 이유에서 일까요? 첫번째 방법이 더 효율적인 이유는 S..

Study/Java 2024.09.08
320x100