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

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

Study 20

[Python] 로또 번호 분석으로 추첨번호를 만들어낼 가치가 있을까 (feat. 스피또, 트리플럭)

최근 일확천금으로 억만장자가 되자! 프로젝트를 진행하고 있습니다. 거창한 건 아니구요."코인이나 주식을 하려니 시드 머니가 없는뎁쇼 ?-?" ... 그러면 시드 머니를 만들면 되는 거 아닌가?   그런데 경마장 가서도 한 번도 못 딴 사람이 운으로만 승부하는 도박판에서 이길 수 있는 확률이 얼마나 될까요..? 유난히 소소한 행운은 잘 따라주는 편이지만, 각 잡고 하는 도박에는 영 소질이 없습니다. 소소한 행운이라 하면 에피소드야 많습니다. 게임 스타팅 뽑기라던가 한정 가챠 운이 좋아서 상위 랭크까지 찍고 접은 모바일 게임들이 많았습니다. 가장 기억에 남는 것은 학부생 1학년 때 "4년치 학생회비를 내지 않으면 행사에 참여할 수 없다"는 소리에 끝까지 안 내고 버티고 있었지만, 신입생 환영회 당일에 명단을..

Study/Python 2024.12.29

[Github] 토이 프로젝트를 위한 Issue Template & PR Template 설정 (+ Github Projects)

얼마 전부터 토이 프로젝트를 시작하게 되었습니다. 1인 프로젝트라 규모는 작긴 한데, 예전 프로젝트에서 다뤄보고 싶었던 WebClient를 기반으로 매주 특정 작업을 반복적으로 실행하는 프로젝트라 꼼꼼하게 만드는 게 목표입니다! 팀 프로젝트는 Jira와 Gitlab을 기반으로 진행했었지만 이번에는 오로지 Github의 기능만을 사용해보려고 합니다. Github의 Projects에는 Jira에서 사용하는 Epic과 같은 기능이 없긴 하지만, 이슈에 도메인 명시 + 관련 요구 사항을 구체적으로 작성해 두면 충분할 것이라 생각했습니다.  또한 Jira에서 사용하였던 Backlog 기능도 있기 때문에 사용하는 데에는 큰 무리가 없어 보입니다. 이전 프로젝트에서는 Jira와 Gitlab을 연동할 때는 Jira의 ..

Study/Github 2024.12.14

[Java] HashMap의 데이터 관리?! Linked List와 Red-Black Tree의 전환 과정!

제 블로그는 대체로 즉흥적으로 글 쓰는 용도라 이전 포스트에 이어서 시리즈가 연재가 되지 않는다 싶으면 다른 관심사가 생긴 것입니다. 그래도 이렇게 지나가면서 이어나가니까 기다려주시면 감사하겠습니다. 꼼꼼하게 준비하려다 보니 늦어질 때도 있어요. 2024.09.14 - [Study/Java] - [Java] HashSet과 HashMap 성능 차이 [Java] HashSet과 HashMap 성능 차이몇 달 전에 알고리즘 문제를 풀었는데 이상하게 시간이 오래 걸렸습니다. 분명 로직은 맞는데 HashMap을 쓴 코드와 HashSet을 쓴 코드의 성능 차이가 많이 났습니다. 왜 Why? 지금부터 여기에 대해서claris.tistory.com 예전 게시글에서 HashSet과 HashMap의 성능 차이에 대해서 ..

Study/Java 2024.12.01

[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

[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

[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

[Java] Stream 훑어보기

Java Stream API? 저번 시간에는 Java 8에서 도입된 람다식에 대해서 알아보았습니다.2024.08.25 - [Study/Java] - [Java] Lambda 훑어보기 [Java] Lambda 훑어보기Lambda Expressions? 람다 표현식은 Java 8에서 도입되었습니다. 함수형 프로그래밍 스타일을 Java에 도입하면서 코드를 간결, 명확하게 작성할 수 있도록 한 것이죠. 익명 함수(anonymous function)를 정의하claris.tistory.com 이번 시간에는 람다 표현식과 함께 도입된 Stream API에 대해서 훑어보겠습니다. 스트림(Stream)은 말 그대로 데이터의 연속된 흐름이라 볼 수 있습니다. 이 API는 컬렉션(List, Set 등), 배열과 같은 데이터..

Study/Java 2024.09.01

[Java] Lambda 훑어보기

Lambda Expressions? 람다 표현식은 Java 8에서 도입되었습니다. 함수형 프로그래밍 스타일을 Java에 도입하면서 코드를 간결, 명확하게 작성할 수 있도록 한 것이죠. 익명 함수(anonymous function)를 정의하는 방법으로 하나의 메서드를 간단하게 표현할 수 있습니다. 한 가지 예시를 들어 보여드리겠습니다. // 기존 익명 클래스 사용 방식 Comparator comparator = new Comparator() { @Override public int compare(Integer o1, Integer o2) { return o1.compareTo(o2); } }; 기존에는 익명 클래스를 사용하여 Comparator 인터페이스를 구현했지만, 람다식을 활용하면 다음과 같이 간결한..

Study/Java 2024.08.25
320x100