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

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

반응형

java 29

[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

[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

[Java] Java로 풀면 KMP를 써야하는 브론즈 문제가 있다?

관련 링크 : https://www.acmicpc.net/problem/16916  약 1년 전, 백준 스트릭을 유지하던 때가 있었습니다. 자바로 코테 준비를 시작한 지 얼마 안 됐기도 하고, 여러 가지 준비로 바빠서 가볍게 몸풀기로 푸려던 문제 중 하나였습니다. 간단하게 contains를 하면 되지 않을까 싶었지만? import java.io.*;import java.util.*;public class Main { //12:56- public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ..

Study/Java 2024.08.18

[BOJ] 5373 큐빙 - Java

1. 문제 링크https://www.acmicpc.net/problem/5373 2. 문제 풀이 작년에 Java로 알고리즘을 본격적으로 시작하게 됐을 때 삼성 기출 위주로 스터디를 했습니다. 그때부터 눈여겨보던 문제였는데 A형 유형에 익숙해져서 구현 위주의 문제는 이제 마무리 지으려고 풀게 된 문제입니다. 구현이야 학부생부터 다른 언어 쓰면서도 다져온 것이니까 이제는 최적화를 중심으로 좀 더 심화된 알고리즘을 안 보고 코딩하는 연습을 해야겠습니다.  구현 쪽으로는 말이 좀 있는 문젠데 예전에 이 문제를 지나가면서 봤을 땐 배열만 어떻게 부분 복사만 하면 잘 될 거라 생각했습니다. 물론 풀진 않았지만. 전개도를 그리니까 삼성 기출에 들어있던 주사위 굴리기 문제가 생각났습니다. 풀면서 재밌었던 문제였는데 그..

etc./BOJ 2024.08.09

[Spring Boot] Properties Encryption

Properties 암호화의 중요성? 첫 번째 프로젝트 발표를 마쳤을 때, 그동안 했던 프로젝트를 GitLab에서 GitHub로 미러링 하는 과정에서 GitGuardian으로부터 메일이 왔었습니다. 외부로 공개되어서는 안 될 value가 노출이 되었던 겁니다. 첫 번째 프로젝트에서는 application.properties에 담겨있는 value들에 대해 암호화 처리를 하지 않았었죠.. 첫 프로젝트라 다들 어수선하기도 했고 미러링에 문제가 생기자 팀원 중 한 명이 properties 파일을 제거해 버렸습니다..  처음부터 properties에 대해 암호화를 적용시켰더라면 이러한 불상사를 막을 수 있었을 텐데..라는 생각이 들었습니다. 그래서? 두 번째 프로젝트부터는 인프라 세팅을 하면서 스켈레톤 프로젝트의..

Devlog/SpringBoot 2024.07.18

[Spring Boot] WebSocket 뜯어보기

⚠︎ 주의 ⚠︎1. 코드에서 악취가 날 수도 있습니다.2. 작성자도 다시 꺼내보기 어려운, 오래전에 작성한 코드입니다. (3년 전)3. "어? 이거 어디서 본 코드 같은데" 네, 맞습니다.Prologue 안녕하세요. 포트폴리오 만들 겸 경험 정리할 겸 글을 쓰게 되었습니다. 저는 어쩌다 보니 프로젝트 3개를 진행하면서 전부 웹소켓을 담당했습니다. 이전 플젝의 리팩터링은 생각지도 못했고 새로운 프로젝트를 진행할 때 조금씩 변형만 했습니다. 이제 와서 제 코드를 살짝 들춰보니 무슨 괴물을 만들어냈는지 모르겠습니다..그래서? 그래도 그때 나름대로 회의하면서 "이렇게하면 성능 최적화가 되는 건가?"하고 구현만 했었는데 .. 성능 테스트도 못했고 만족스러운 결과도 얻지 못했습니다. 그래서! 이 시리즈는 ... 총..

Devlog/SpringBoot 2024.07.13
반응형