[Java] 자바에서는 스택을 잘 안 쓴다고?
·
공부 기록/CS
포스팅 계기이미지로 대신한다. 그래서 오늘은 왜 스택을 잘 안 쓰는지, 그럼 대신 뭘 사용하는지에 대해 작성해보려 한다.Stack은 Vector를 상속받기 때문자바의 `Stack` 클래스는 `java.util.Vector`를 상속받아 만들어졌다.바로 이 점에서 문제가 시작된다. `Vector`는 동기화된(synchronized) 클래스이다.이는 멀티스레드 환경에서 안전하다는 장점이 있으나, 싱글스레드 환경에서는 불필요한 성능 저하를 일으킨다.동기화되는 게 왜?동기화(Synchronization)란?동기화는 여러 스레드가 공유 자원에 접근할 때, 동시에 접근하지 못하게 막는 것이다.int cnt = 0;public void increment() { cnt++; // 여러 스레드가 동시에 실행하면 문제..
[Java] String이 뭐야
·
공부 기록/CS
포스팅 계기임스님 : java의 String pool 검색해서 공부하세요나 : 이번주 블로그 String pool로 하겠습니다임스님 : 그냥 String에 대한 모든것 해오세요String이란?자바의 String은 문자 배열을 기반으로 하는 불변(immutable) 객체이다. 그럼 불변 객체가 뭔데?한 번 생성되면 수정이 불가능한 객체를 의미한다. 자바에서는 String을 두 가지 방법으로 생성할 수 있다.// 리터럴 방식String s = "Hello";// new 방식String s = new String("Hello"); 두 방식의 차이점이 무엇이냐?메모리 위치와 객체 생성 방식에서 차이가 있다.생성 방식메모리 위치객체 재사용equals()=="Hello"String Pool (Heap이긴 함)가능t..
[Spring] Controller, Service, Repository, Domain, DTO가 뭐야
·
공부 기록/CS
1. Controller – 사용자 요청 받기웹에서 사용자가 로그인, 게시글 조회, 회원가입과 같은 행동을 할 때,그 요청을 받는 곳이 Controller이다.`@RestController`, `@RequestMapping`, `@GetMapping` 같은 어노테이션을 사용해 요청을 받음요청을 어떻게 처리할지 Service에 전달로직 처리는 하지 않고 연결 역할만 함❓ 그럴 거면 Controller 없이 그냥 Service 호출하면 안 돼?계층역할초점ControllerHTTP 요청/응답만 신경씀요청 → 적절한 서비스에 전달Service비즈니스 로직 다룸실제 로직 처리Controller는 점원, Service는 주방이라고 생각하면 편함역할을 나누면 테스트 편리, 재사용 가능, 코드 깔끔해짐2. Servic..
[Java] String to int, int to String 변환하기
·
공부 기록/CS
부끄럽지만...변환할 때마다 자꾸 구글링을 하게 돼서(int에서 String으로 변환할 때 ^^...)이번에 정리하면서 머릿속에 넣으려고 써본다. 1. String → int방법 1 : `Integer.parseInt(String)`String s = "123";int i = Integer.parseInt(s);가장 일반적인 방법숫자가 아닌 문자가 포함되면 `NumberFormatException` 발생방법 2 : `Interger.valueOf(String)`String s = "123";int i = Integer.valueOf(s)`parseInt`와 유사하나, `Integer` 객체 변환자동으로 언박싱됨2. int → String방법 1 : `String.valueOf(int)`int i = 12..
[Java] LinkedList와 ListIterator에 대한 고찰
·
공부 기록/CS
💡 문제 배경 : 백준 1406번 - 에디터바킹독 연결리스트 강의의 연습문제다. 연결리스트 강의였으니 자연스럽게 연결리스트로 풀어야겠다고 생각했다.야매 연결리스트를 만들 수도 있었지만, 일단 라이브러리 함수를 사용해서 풀어보고 그 후에 직접 구현하기로 했다. 초기 코드는 다음과 같다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.List;import java.util.StringTokenizer;public class Main { public static void main(String[] args) thr..
[백엔드/Java] Stream vs for-loop 성능 비교
·
공부 기록/CS
Java의 `Stream API`와 `for-loop` 간 성능 차이를 체험한 경험을 바탕으로, 그 원인과 상황별 선택 기준을 정리했다.💡 문제 배경: 백준 1233번 - 주사위 문제 이 문제를 풀면서 두 버전의 코드를 제출했고, Stream API를 쓴 코드보다 for-loop를 쓴 코드가 유의미하게 더 빠르다는 걸 확인했다.첫 번째 코드 (Stream 사용) ➝ 순위권 밖두 번째 코드 (for-loop 사용) ➝ Java 제출 기준 2등 기록 이러한 차이가 생긴 원인이 궁금하여 분석해보았다.🔍 코드 비교✅ 첫 번째 코드 (Stream 사용)int max = Arrays.stream(sumCnt).max().getAsInt();배열의 최대값을 구할 때 Stream을 사용간결하지만 성능은 떨어짐✅ 두..