티스토리

Jaeyoung
검색하기

블로그 홈

Jaeyoung

jaeyoungb.tistory.com/m

https://github.com/bangjaeyoung

구독자
13
방명록 방문하기
공지 Notice 모두보기

주요 글 목록

  • WSL2 - Windows 파일 시스템 권한 변경 안되는 이슈 # windows 파일 시스템 mnt/c/~ 경로에 위치한 파일의 권한 변경 안되는 이슈권한 변경이 필요한 파일을 도커 볼륨을 통해 컨테이너 안에서 권한 변경을 시도했지만 실패. WSL2에서 Windows 파일 시스템(/mnt/c/)에 있는 파일은 기본적으로 Linux 파일 권한 변경(chmod, chown)이 적용되지 않음.이 문제를 해결하려면 wsl.conf 설정을 수정하여 metadata 옵션 활성화가 필요함. WSL2에서 Windows 파일 시스템(/mnt/c/)은 기본적으로 NTFS 파일 시스템을 사용하며, Linux의 파일 권한(chmod, chown) 저장할 수 없음.metadata 옵션을 활성화하면 WSL이 파일 권한 정보를 별도의 메타데이터로 저장하여 Linux 파일 권한을 변경할 수 있.. 공감수 1 댓글수 2 2025. 3. 29.
  • DB 커넥션 관련 에러 - 트랜잭션 # 에러 메시지### Caused by: co[http://m.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException:](http://m.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException:) Lock wait timeout exceeded; try restarting transaction\### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Cann.. 공감수 2 댓글수 0 2025. 3. 29.
  • Datagrip Data Source 연결 시, invalid fetch size 문제 해결 Maria DB를 로컬에 생성한 후, Datagrip을 통해 Data Source를 연결하는 과정에서 문제가 발생하였습니다.  Test Connection을 통해 정상적으로 연결되는 것을 확인하였습니다.OK를 눌러 Data Source 연결을 적용하려고 하니, 우측 하단에 다음과 같은 경고 문구가 떴습니다.  Data Source를 연결할 때, 디폴트 값으로 설정된 fetch size에 문제가 있나 싶었습니다.해당 Data Source의 속성 설정에 들어가 defaultFetchSize 값을 늘려서 연결해보았지만 실패했습니다.  관련해서 구글링을 해보다가 Jetbrains YouTrack에 동일한 이슈에 대해서 다루고 있었고, 해답을 찾게 되었습니다.  JDBC 드라이버의 버전 문제였고, 버전을 낮춰주니.. 공감수 0 댓글수 0 2024. 6. 16.
  • [책 리뷰] 객체지향의 사실과 오해 읽게 된 계기  전부터 이 책을 알고는 있었지만, 항상 읽어야지.. 읽어야지.. 생각만 했었다. 이런저런 생각은 많은데, 바로바로 실행에 옮기는 게 쉽지는 않다. 엄청난 필요성을 느끼는 게 아니면, 그냥 생각하는 선에서 그치곤 한다. 그러던 중, 우테코 프리코스 미션을 수행하면서 객체지향 설계에 관한 지식의 필요성을 굉장히 많이 느꼈다.  프리코스 동안의 미션들은 대부분 클래스의 적절한 설계, 클래스 간의 낮은 결합도와 상호작용을 많이 신경써야 했고, 또 그 부분을 지키려고 애썼다. 매 주차마다 더 나은 설계를 하고 싶었고, 그래서 이 책을 택해서 읽게 되었다. 객체지향 하면 떠오르는 캡슐화, 상속, 다형성, 추상화 등의 특징들 이외에도 객체지향 설계에 관한 내용을 더 알아보고 싶었다.   기억에 남는 .. 공감수 4 댓글수 7 2024. 2. 21.
  • 조회 쿼리 개선 + 성능 테스트 (Querydsl, nGrinder) 귤박스 프로젝트에서 초기 단일 게시글 조회 API는 다음과 같은 쿼리 메서드를 사용했다. public interface PostRepository extends JpaRepository { Optional findByPostId(long id); } Spring Data JPA에서 제공하는 단순 쿼리 메서드를 이용했고, 다음과 같이 N+1 문제가 발생하였다. 먼저, N+1 문제가 발생하는 이유는 단일 게시글을 조회 시, 응답되는 데이터 때문이다. (엄밀히 말하면, 응답되는 데이터라기보다 응답 데이터를 불러오는 방식 때문) 해당 응답 데이터는 다음과 같은 데이터들을 포함한다. 1. 조회하는 게시글의 정보 (Post) 2. 게시글의 작성자 (User) 3. 게시글이 속한 주거 공간 (HouseInfo) 4... 공감수 0 댓글수 0 2024. 1. 10.
  • API 성능 테스트를 위한 nGrinder 시작하기 nGrinder는 네이버에서 제작한 The Grinder 기반의 테스팅 플랫폼이다. - nGrinder 공식 페이지: https://naver.github.io/ngrinder/ nGrinder Please post questions in Discussions not Issues. nGrinder 3.5.5-p1 version is now available. Check the changes at here. nGrinder is a platform for stress tests that enables you to execute script creation, test execution, monitoring, and result report gener naver.github.io 이전에 진행했던 사이드 프로젝.. 공감수 2 댓글수 1 2023. 12. 25.
  • 우아한테크코스 6기 - 프리코스 회고 여타 기업 공채 지원서를 작성하듯이, 한 번 지원해보자라는 가벼운 마음으로 우테코 6기 지원서를 작성해나갔다. 지원서를 작성하다보니 가벼운 마음은 사라졌고, 점점 몰입해서 작성하면서 꼬박 며칠을 몰두해서 썼던 것 같다. 우아한테크코스 6기에 지원서를 제출하고 약 3일 뒤부터 프리코스가 시작되었다. 10월 19일부터 11월 15일까지 총 4주간의 프리코스 일정을 경험하면서 배운 것들을 기록해보며 다시 한 번 되새겨보려 한다. 각 주차마다 미션이 주어지고, 해당 미션의 요구사항들을 지키면서 개발을 진행하면 된다. 먼저, 미션의 요구사항을 이해하고 필요한 기능들을 스스로 정의해야 한다. 이 기능 목록을 작성하는 것이 매 미션마다 새로웠고 쉽지 않았다. 하지만, 주차가 지나갈수록 기능 목록 작성에 대해 나만의 .. 공감수 16 댓글수 14 2023. 11. 16.
  • H2 DB - 3가지 모드(Embedded, In-Memory, Server Mode) H2 DB는 Java 기반 경량의 오픈소스 RDBMS입니다. 다음과 같은 특징을 가집니다. 매우 빠른 성능을 제공하는 오픈소스 JDBC를 사용한 Java 애플리케이션과 상호작용 가능 임베디드 모드, 인메모리 모드, 그리고 서버 모드를 지원 영구적으로 저장되지 않는 인메모리 데이터베이스 브라우저 기반의 콘솔 응용 프로그램 제공 경량 데이터베이스(H2의 JAR 파일 크기는 약 2.5MB) 각각의 모드에 대한 사용법과 특징은 아래와 같습니다. 임베디드 모드(Embedded Mode) 해당 모드는 애플리케이션 내에 포함되어 실행되고, 로컬 파일 시스템에 DB 파일이 영구적으로 저장됩니다. 애플리케이션을 다시 실행해도 데이터가 그대로 유지됩니다. jdbc:h2:~/test - 사용자의 홈 디렉토리 안에 test라.. 공감수 4 댓글수 0 2023. 10. 5.
  • SQL 쿼리 실행 순서 1. FROM: 데이터 검색, 조작할 테이블 또는 데이터 소스 지정 2. JOIN: 필요한 경우, JOIN 절에서 두 개 이상의 테이블 결합 3. WHERE: 조건을 사용하여 원하는 행 필터링 4. GROUP BY: 그룹화를 위해 특정 열을 기준으로 행 그룹화 5. HAVING: 그룹화된 결과에 대한 조건 지정 6. SELECT: 반환하려는 열 선택, 결과 데이터의 형식 지정 7. DISTINCT: 필요한 경우, 중복된 행 제거 8. ORDER BY: 결과 정렬 9. LIMIT / OFFSET: 페이지네이션을 위해 결과를 제한 or 오프셋 적용 10. SELECT 절에서 계산식이나 함수를 사용하여 데이터 가공 및 변환 11. 실행된 쿼리의 결과 반환 ( INSERT / UPDATE / DELETE: 데이.. 공감수 1 댓글수 3 2023. 9. 27.
  • 벌크 연산으로 인한 데이터 값 불일치 문제 해결하기 📌 벌크 연산이란? 데이터베이스에서 대량의 데이터를 한 번에 처리하는 기술을 말한다. 📌 장점 - 성능 향상 : 대량의 데이터를 한 번에 처리하는 기술이기에, 데이터베이스와의 통신 횟수가 감소한다. - 코드 간결성 : 복잡한 반복문과 데이터 조작 코드를 줄일 수 있다. - 트랜잭션 최적화 : 트랜잭션 내에서 데이터 조작을 최적화할 수 있다. (데이터 일관성, DB 락 관리 측면에서 유리) - 쿼리 최적화 : DB 내부적으로 쿼리를 최적화하는 기회를 제공한다. (효율적인 리소스 사용 가능) 📌 단점 - 메모리 사용 : 대량의 데이터를 메모리에 로드하고 처리하기 때문에, 메모리 사용량이 증가할 수 있다. - 데이터 일관성 : 잘못된 벌크 연산을 구현하거나 트랜잭션 처리가 제대로 되지 않으면, 데이터 불일치 .. 공감수 3 댓글수 0 2023. 8. 29.
  • 인프콘 2023 후기 및 회고 인프콘 2023 운이 좋게도 인프콘 참가자로 선정되어, 어제(8월 15일) 강남 엑스포에서 열린 인프콘에 다녀왔다. 9시부터 입장 등록 시간이였고 10시부터 인프런의 CTO님과 이동욱님의 시작 연사가 시작이었기 때문에, 아침 6시 정도 일어나 준비하고 서둘러 일찍 출발했다. 인천에서 출발하면 약 2시간 정도.. 엑스포 들어가는 입구부터 사람들이 보이기 시작했고, 긴장반 설렘반으로 입장했다. 1층 입구에서 인프콘 개인 인프콘 티와 굿즈, 이름표를 부여 받고 드디어 입장! 이번 인프콘 참가자가 약 1500명이라는데, 들어서자마자 실감 안날 정도로 많은 인파가 몰려있었다. 사람 많은 곳에서는 한없이 약해지는 나에겐, 입장 처음에 정신이 너무 없었다. 10시 연사 바로 직전에 도착했기 때문에, 주변 분위기에 동.. 공감수 3 댓글수 3 2023. 8. 16.
  • DP - LIS, 냅색 알고리즘 LIS (Longest Increasing Subsequence) 주어진 수열에서 가장 긴 증가하는 부분 수열을 찾는 알고리즘이다. 부분 수열은 원래 수열의 순서를 유지하되, 연속하지 않은 원소들로 이루어진 수열을 말한다. public static int solution() { Collections.sort(bricks); dy[0] = bricks.get(0).height; int answer = dy[0]; for (int i = 1; i = 0; j--) { if (bricks.get(i).weight max) { max = dy[j]; .. 공감수 2 댓글수 1 2023. 8. 3.
  • Java) 이진탐색트리 구현 package org.example; import java.util.ArrayList; public class Tree { // 트리를 구성하는 노드 클래스입니다. public static class Node { private int data; private Node left; private Node right; // 생성자 public Node(int data) { this.setData(data); setLeft(null); setRight(null); } public int getData() { return data; } public Node getLeft() { return left; } public Node getRight() { return right; } public void setData(.. 공감수 0 댓글수 0 2023. 7. 28.
  • TCP/IP 4계층 모델 인터넷 프로토콜 스위트(internet protocol suite)는 프로토콜의 집합으로, TCP/IP 4계층 모델이나 OSI 7계층 모델로 설명할 수 있습니다. TCP/IP 4계층 OSI 7계층 애플리케이션 계층 애플리케이션 계층 프레젠테이션 계층 세션 계층 전송 계층 전송 계층 인터넷 계층 네트워크 계층 링크 계층 데이터 링크 계층 물리 계층 애플리케이션 계층 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공합니다. 더보기 FTP 장치 간의 파일을 전송하는데 사용되는 표준 통신 프로토콜 SSH 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜 HTTP 웹 사이트를 이용하는 데 쓰이는 프로토콜 SMTP 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜 DNS 도메인 이름과 IP.. 공감수 0 댓글수 0 2023. 7. 12.
  • 네트워크 기초 네트워크 노드(node)와 링크(link)가 서로 연결되어 있거나 연결되어 있지 않은 집합체를 의미합니다. 더보기 노드는 서버, 라우터, 스위치 등 네트워크 장비를 의미 링크는 유선, 무선을 의미 처리량(throughput) 링크를 통해 전달되는 단위 시간단 데이터양을 의미합니다. 단위로는 bps(bits per second)를 사용합니다. 더보기 대역폭 : 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수 지연 시간(latency) 요청이 처리되는 시간을 말하며, 어떤 메시지가 두 장치 사이를 왕복하는 데 걸린 시간을 의미합니다. 네트워크 토폴로지(network topology) 노드와 링크가 어떻게 배치되어 있는지에 대한 방식, 연결 형태를 의미합니다. 트리(tree) 토폴로지 - .. 공감수 0 댓글수 0 2023. 7. 12.
  • [Spring Data JPA] N+1 문제를 해결하기 위한 방법(JPQL의 fetch join, @EntityGraph, ...) 먼저, N+1 문제란 무엇일까? ORM(Object-Relational Mapping) 기술을 사용하는 경우에 발생할 수 있는 문제로,연관 관계가 있는 데이터를 조회할 때, N번의 쿼리가 추가적으로 발생하는 것을 말합니다.더보기ORM 기술에는 익히 들어본 Spring Data JPA, Hibernate 등이 있습니다    표현 방식의 측면에서 N+1 문제와 1+N 문제의 상황으로 나눌 수 있습니다.(둘은 같은 개념이고 나가는 쿼리 수도 동일합니다)  다음 예시를 통해 살펴봅시다.  N+1 문제 (일대다 관계) : 하나의 부서에는 여러 명의 직원이 존재하고, 모든 부서를 조회하는 상황 한 번의 쿼리로 모든 부서를 조회이후, 각 부서별로 N번의 쿼리를 추가로 실행하여 각 부서의 직원 정보를 조회→ 부서 조회.. 공감수 3 댓글수 1 2023. 6. 26.
  • AWS EC2 터미널 - 애플리케이션 빌드 과정 중 멈춤 현상 해결 프리티어 계정을 사용중이고, 배포하기 위해 EC2 터미널에서 애플리케이션을 빌드하는 과정에서 항상 76%, test 빌드 단계에서 실행 시간만 늘어날 뿐, 다음 과정으로 넘어가질 않았습니다. 구글링을 해보던 중, 메모리 부족 현상을 해결하기 위한 swap 메모리를 할당하는 방법이 있었습니다. 속는셈치고 한 번 방법을 따라해보았고, 빌드 과정만 10분이상 지나도 되질 않던 것이 1분만에 빌드되었습니다. swap 메모리란? '가상 메모리 또는 페이징이라고도 불리는 swap 메모리는 시스템의 사용 가능한 메모리 용량을 확장하기 위해 사용되는 기술이다. RAM의 확장으로 사용할 수 있으므로, 활발하게 사용되지 않는 데이터를 저장하기 위한 추가 공간을 제공한다.' 과정은 다음과 같습니다. 일단, EC2 연결을 진.. 공감수 0 댓글수 0 2023. 6. 7.
  • 로컬에서 생성한 MySQL 데이터베이스를 마이그레이션하기 Gyul-Box 프로젝트를 진행하면서, 제주도 지역의 동마다의 주거 공간들을 데이터베이스에 넣어야 했다. 배포를 진행한 후에 많은 양의 데이터를 집어넣으려 했지만, 많은 데이터의 통신은 AWS 과금 발생의 위험이 있다는 팀원의 조언이 있었다. 팀원과 상의 후 내린 결론은 MySQL 데이터베이스에 일단 많은 양의 데이터를 로컬에서 넣어준 뒤, AWS RDS로 마이그레이션하기로 결정했다. 마이그레이션하는 과정을 따라가보자. 1. RDS 인스턴스 생성 RDS 인스턴스를 생성한다. default인 보안 그룹 설정에서 사용하는 DB 벤더 유형을 적용하고, 모든 트래픽의 IPv4 접근들을 허용한다. - 백업한 데이터를 RDS 데이터베이스로 가져올 때, connect 에러가 발생하기 때문 2. 데이터베이스 백업 및 .. 공감수 0 댓글수 2 2023. 6. 6.
  • 연결된 그룹 개수 찾기(DFS) 1. 각 노드의 방문 여부를 체크할 배열 생성 2. 각 노드에 연결된 노드를 추가할 배열 리스트를 추가 3. 각 노드에 연결된 노드들을 찾아 각 노드의 배열 리스트에 추가 4. 방문하지 않은 노드일 경우, dfs 진행 및 count 1 증가 dfs - 1. 방문할 노드인 경우 즉시 탈출, - 2. 해당 노드를 방문한 걸로 바꾸기 - 3. 연결된 노드들을 순회하면서 방문하지 않은 노드가 있다면, dfs 진행 class Solution { static List graph = new ArrayList(); static boolean[] visited; public int solution(int n, int[][] computers) { // 1 visited = new boolean[n]; // 2 for (.. 공감수 0 댓글수 2 2023. 4. 25.
  • 너비 우선 탐색(BFS) vs 깊이 우선 탐색(DFS) 일단, 둘을 다음 그림을 통해 이해해보자. 너비 우선 탐색(BFS) 특징 depth는 0이 아닌 1부터 시작 노드 수가 적고 깊이가 얕은, 검색 대상의 규모가 작은 경우, 유리하다. 큐 이용 장점 답이 되는 경로가 여러 개인 경우에, 최단 경로를 보장한다. 최단 경로가 존재하면, 어느 한 경로가 무한히 깊어진다 하더라도, 최단 경로를 반드시 찾을 수 있다. 단점 DFS에 비해 저장 공간의 필요성이 크다. DFS와는 달리 큐를 이용해서 다음에 탐색할 노드를 저장하므로, 노드의 수가 많을수록 필요 없는 노드들까지 저장해야 하기 때문이다. 최악의 경우에는 모든 경로를 다 살펴봐야 한다. 깊이 우선 탐색(DFS) 특징 depth는 0이 아닌 1부터 시작 검색 대상의 규모가 클 경우, 유리하다. 재귀, 스택 이용.. 공감수 1 댓글수 0 2023. 4. 25.
  • 서버에서 내려주는 에러 메시지를 직접 정의해야만 하는 이유 1차원적으로 개발자가 에러 메시지를 마음대로 컨트롤할 수 없음이 제일 큰 문제이다. 이유를 좀 더 상세하게 풀어보자. 스프링 프레임워크에서 기본으로 제공되는 형식화된 StatusCode, ErrorMessage로 응답을 내려주기 때문에, 소통하는 상대 서버나 클라이언트가 이해할 수 없다. 또, 상호 간에 정해놓은 에러 메시지에 대한 규칙이 깨질 수 있다. 에러 메시지를 서버에서 커스텀하게 정의해주지 않게 되면, 스프링 프레임워크에 종속적인 에러 메시지를 가져다 쓰게 되는 것이고 자연스레 개발자는 스프링 프레임워크에 의존적이게 되는 것이다. 어느 날 갑자기 스프링 프레임워크가 특정 에러에 대한 업데이트를 한다면, 갑자기 클라이언트에서 예상치 못한 장애가 발생할 수 있게 된다. 또 다른 이유로는 의도치 않게.. 공감수 0 댓글수 0 2023. 4. 22.
  • Java 에러 - Exception in thread "main" java.util.regex.PatternSyntaxException 다음과 같이, "+"를 구분자로 split() 메서드를 이용해서 문자열을 분리하려 했다. 에러 메시지는 다음과 같았다. 구글링을 통해 확인해보니, ?, *, +, (, ), [, ], {, } 와 같은 일부 특수 문자를 replace(), replaceAll(), split() 메서드의 구분자나 기준으로 사용할 때 발생하는 에러라고 한다. 해결방안은 위 특수문자 앞에 역슬래쉬 2개(\\)를 같이 넣어주면 가볍게 해결할 수 있다. // example String str = "123+456"; String[] strArr = str.split("\\+"); // 역슬래쉬 = 원화 표시 // strArr = ["123", "456"] ++ 위 특수문자 양 옆에 대괄호([])로 감싸줘도 가능하다. // exam.. 공감수 0 댓글수 0 2023. 3. 20.
  • 우선순위 큐(Priority Queue)를 공부하면서 Queue는 먼저 선입선출(FIFO)이라는 특징을 가지는 구조이다. (Stack은 후입선출 - LIFO) 그럼 우선순위 큐는? 우선순위 큐는 말 그대로 우선순위가 높은 데이터를 먼저 뽑아내는 구조를 말한다. 그럼 여기서 의아할 게 어떤 기준을 가지고 우선순위를 정하는 걸까 싶은데, 단순히 요소의 크기를 우선순위를 잡고 오름차순, 내림차순 정렬을 할 수 있고, 우선순위 큐의 타입을 배열로 지정한다면, 특정 요소의 크기순으로 우선순위 기준을 잡을 수도 있다. Queue pq = new PriorityQueue(Comparator.comparingInt(o -> o[1])); (pq라는 우선순위 큐에는 int타입의 1차원 배열이 들어가게 되고, 배열의 1번째 인덱스의 값을 기준으로 정렬이 된다) Java에서 .. 공감수 0 댓글수 0 2023. 3. 6.
  • 2023년 2월 27일 - SI 탈출용 백엔드 학습 공략집 웨비나 회고 부트캠프 수료를 하고, 백엔드 개발과 관련된 세미나는 원 없이 듣고 싶었다. 부트캠프에서 프로젝트를 하면서 AWS 서비스를 사용해보지 못해서 관련된 지식을 좀 쌓고 싶었기 때문에, 첫 번째로 AWS에 관련된 웨비나를 들었다. 여러 AWS 서비스와 EC2, S3, RDS 등등 직접 과정을 진행하는 웨비나였는데, 큰 도움은 되지 못했다. 그 후에 들었던 것이 이 SI 탈출용 백엔드 학습 공략집 웨비나였다. 현재 취준생인 나는, 이직을 주제로 하는 이 웨비나와는 살짝 거리가 있었지만, 꽤나 도움은 됐다. 이 웨비나를 통해, 현재의 나에게 도움이 되었던 말 5가지는 다음과 같다. 인생은 선택이 전부다. 한정된 선택의 기회 중에서 좋은 선택은 인생을 좌우한다. 이직에 관련된 웨비나였기에, 이직에 대한 좋은 기회는.. 공감수 2 댓글수 0 2023. 3. 5.
  • 작성중) 클린 코드(Clean Code) - Uncle Bob; Robert Cecil Martin 책의 제목 그대로 깨끗한 코드 작성법을 알기 위해 읽게 되었다. 이 책에서 워드 커닝햄(Ward Cunningham)의 말을 인용한 부분이 인상깊었다. 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면, 깨끗한 코드라 불러도 되겠다. 코드가 그 문제를 풀기 위한 언어처럼 보인다면, 아름다운 코드라 불러도 되겠다. 깨끗한 코드는 읽으면서 놀랄 필요가 없어야 한다고 워드는 말한다. 즉, 코드를 독해하느라 머리를 쥐어짤 필요가 없어야 한다고 말한다. 프로그래밍 공부를 시작한지 별로 안되었지만, 이 인용문을 보면서 저절로 고개를 끄덕이게 되었다. 반드시 알아야 하는 객체 지향 설계의 다섯 가지 원칙은 다음과 같다. SRP(The Single Responsibilty Principle) : 클래스에는 .. 공감수 1 댓글수 0 2023. 3. 3.
  • Java 진수 변환 10진수 → n진수 public class Test { public static void main(String[] args) { int k = 15; System.out.println("10진수 → 2진수"); System.out.println(Integer.toString(k,2)); System.out.println(Integer.toBinaryString(k)); System.out.println(); System.out.println("10진수 → 3진수"); System.out.println(Integer.toString(k,3)); System.out.println(); System.out.println("10진수 → 4진수"); System.out.println(Integer.toString.. 공감수 0 댓글수 0 2023. 2. 18.
  • 2개 리스트의 교집합, 합집합, 차집합 구하기 교집합 retainAll() 메서드로 두 리스트의 교집합 구하기 import java.util.Set; import java.util.HashSet; import java.util.Arrays; import java.util.List; import java.util.ArrayList; public class Test { public static void main(String[] args) { Set str1Set = new HashSet(Arrays.asList("ab", "bc", "cd", "ef", "fg")); Set str2Set = new HashSet(Arrays.asList("cd", "ef", "fg", "gh", "hi")); Set intersection = new HashSet(st.. 공감수 2 댓글수 2 2023. 2. 17.
  • 2개의 List를 Stream을 사용하여 비교하기 noneMatch ( 불일치하는 요소 ) import java.util.Arrays; import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; public class Test { public static void main(String[] args) { List str1List = Arrays.asList("ab", "bc", "cd", "ef", "fg"); List str2List = Arrays.asList("cd", "ef", "fg", "gh", "hi"); List filteredList = str1List.stream() .filter(el -> str2List.stream().n.. 공감수 0 댓글수 0 2023. 2. 17.
  • Map 순회하기 Iterator 사용 Map map = new HashMap(); Iterator keys = map.keySet().iterator(); while (keys.hasNext()) { String key = keys.next(); map.get(key); } entrySet 사용 Map map = new HashMap(); for (Map.Entry entry : map.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); } Map은 Key-Value 쌍으로 이루어져있고, 이 한 묶음을 Entry라고 표현한다. keySet 사용 Map map = new HashMap(); for (String key : map.keySe.. 공감수 0 댓글수 0 2023. 2. 10.
  • ArrayList vs LinkedList List 인터페이스는 Java의 Collection을 확장한 인터페이스이다. ArrayList와 LinkedList 모두 이 List 인터페이스의 구현체이다. ArrayList 먼저, ArrayList는 배열(array)에 기반을 두고 있다. index를 통한 요소 검색에 빠르다는 장점이 있지만, 요소의 추가 삭제가 느리다는 단점이 있다. ArrayList의 일반적인 add() 메서드(맨 마지막 요소 뒤에 요소를 추가하는)를 통한 요소 삽입은 시간복잡도 Big-O 기준 O(1)의 시간복잡도를 가진다. 그러나, 특정 요소 사이에 요소를 삽입하거나 삭제하는 과정의 시간복잡도는 O(n)을 가진다. LinkedList LinkedList는 각 노드(Node)가 서로 연결되어 있는 형태이다. 링크를 건다라는 말을.. 공감수 0 댓글수 0 2023. 2. 9.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.