토마토의 개발일지
  • 홈
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • Development (144)
      • Languege (39)
        • Java & Spring (27)
        • C# & ASP.NET (5)
        • JavaScript (2)
        • Kotlin (5)
      • DB (0)
        • Oracle (0)
      • Study (72)
        • 네트워크 (3)
        • 이펙티브 자바 (41)
        • 우아한 테크 코스 (7)
        • Next Step (3)
        • Certificate (5)
        • Side Proejct (6)
      • Error (18)
        • 개발환경 (10)
        • 트러블슈팅 (6)
      • Algorithm (12)
      • 개발환경 (1)
      • 회고 (2)
  • 홈
  • 태그
  • 방명록
Languege/Java & Spring

Stream 사용법

💥 개요 우테코 3주차 코드리뷰 진행 중 Lotto를 파라미터로 받은 개수만큼 새로운 객체를 생성하는 코드를 만드는데, 더 좋은 코드를 추천해주셔서 Stream의 활용과 심화에 대해 알아야겠다. 라고 생각했다. 1. Stream 생성하기 Java에서 Stream을 생성하는 방법은 다양합니다. 컬렉션, 배열, 특정 범위의 숫자 등에서 Stream을 생성할 수 있습니다. List list = Arrays.asList("a", "b", "c"); Stream stream = list.stream(); 2. Stream 가공하기(중간연산) Stream을 가공하는 중간 연산에는 여러 가지가 있습니다. 이들은 Stream을 변형하지만, 최종 연산이 호출되기 전까지는 실행되지 않습니다. [ 필터링 - Filter ]..

2023. 11. 15. 17:32
Study/이펙티브 자바

[Effective Java 3E] 배열보다는 리스트를 사용하라

💥 개요 배열과 제네릭 타입에는 중요한 차이가 두가지 있다. 배열의 경우 Sub가 Super의 하위 타입이라면 배열 Sub[]는 배열 Superp[]의 하위 타입이 된다.(공변) 하지만 제네릭은 불공변이다. List가 List의 하위 타입이 아니다.(불공변) 그럼 제네릭이 더 안 좋은걸까? 배열의 문제점 Object[] objectArray = new Long[1]; objectArray[0] = "타입이 달라 넣을 수 없다."; // ArrayStoreException을 던진다. 위의 코드는 런타임에 실패한다. 하지만 다음 코드는 컴파일 시점에 실패한다. List ol = new ArrayList(); // 호환되지 않는 타입이다. ol.add("타입이 달라 넣을 수 없다."); 어느쪽이든 문자열을 넣..

2023. 11. 10. 22:01
Study/우아한 테크 코스

[우아한 테크 코스] 프리코스 - 3주차, 로또 회고

❤️ 서로 PR하기를 원하시는분은 https://github.com/woowacourse-precourse/java-lotto-6/pull/818 여기에 남겨주세요! 👍3주차 목표 3주차는 2주차에서 계획했던 목표인 mvc 패턴에 맞게 유효성 검사하기 public 메소드만 테스트하기 이 두가지에 중점을 뒀다. 이번주에 적용하기 위해서 해당 내용을 정리하여 블로그에 포스팅했는데, 덕분에 이번주차 미션을 해결하는데 도움이 많이 됐다. 특히 private 메소드를 테스트해야 하는 경우라면, 해당 클래스가 너무 많은 책임을 가진것이 아닌지 확인하라는 말에 많은것을 깨달았다. [해리&션 발표 중, 많이 실수하는 부분] https://mntdev.tistory.com/90#%ED%95%B4%EB%A6%AC%26%E..

2023. 11. 10. 20:37
Study/이펙티브 자바

[Effective Java 3E] 비검사 경고를 제거하라

💥 개요 제네릭을 사용하면 수많은 컴파일러 경고를 보게 된다. 익숙해질수록 마주치는 경고 수는 줄겠지만 새로 작성한 코드가 한번에 깨끗하게 컴파일되리라 기대하지는 말자. 대부분의 비검사 경고는 쉽게 제거가 가능하고, 컴파일러가 이를 알려준다. 이대로 수정하기만 하면 경고가 사라진다. 하지만 제거하기 어려운 경고도 있다. 하지만 포기하지말고 할 수 있는 모든 비검사 경고를 제거하라. 모두 제거하면 타입 안정성이 보장된다.(런타임에 ClassCastException이 발생할 일이 없다.) 경고를 제거할 수 없지만 타입 안전한 경우 @SuppressWarnings("unchecked") 어노테이션을 달아 경고를 숨기자. 단, 타입 안전함을 검증하지 않은 채 경고를 숨기면 경고없이 컴파일되지만, 런타임 시점에 ..

2023. 11. 9. 20:36
Error/개발환경

[Git] 잘못된 브랜치에 커밋 했을때 대처법

🔍 개요 프리코스를 진행하면서 실수로 branch를 만들고 체크아웃을 하지 않고 미션을 진행했다. 이런 경우 첫 번째 커밋을 제외한 나머지는 전부 롤백시키고, 그동안 진행한 커밋들을 branch로 옮겨야 하는데.. 1.새로운 브랜치 생성 및 체크아웃 먼저 옮길 브랜치를 생성하고 해당 브랜치로 체크아웃합니다. git checkout -b 2.커밋 해시 찾기 git log # 첫 번째 커밋 해시를 확인하세요. (방향키로 조작 가능) git reset --hard git log 명령어를 사용하여 main 브랜치의 첫 번째 커밋 해시를 찾습니다. (만약 다른 해시로 복구하려면 그걸 복사) 그런 다음 첫 번째 커밋 상태로 브랜치를 초기화합니다. 는 실제 첫 번째 커밋의 해시로 교체해야 합니다. 3.main 브랜치..

2023. 11. 8. 13:22
Study/우아한 테크 코스

테스트는 왜 해야할까? 내가 생각하는 테스트코드를 작성하는 이유

테스트와 OCP의 관계 테스트를 작성하는 여러 이유 중 하나는 객체 지향 설계 원칙 중 OCP(Open-Closed Principle)와 관련이 있다. 이 원칙은 클래스는 확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 한다는 것을 의미한다. 이 원칙을 지키지 않을 경우, 테스트하기 어려운 코드가 발생할 수 있다. 예를 들어, 랜덤한 숫자를 가져와야 하는 로직이 있다면, 이 로직을 테스트하는 것이 어려울 수 있다. 랜덤넘버를 이용한 코드와 테스트 [문제 상황] 랜덤한 숫자를 이용해서 게임을 진행하는 코드가 있다고 가정하자. 이러한 로직은 직접 테스트하기 어렵다. public class RandomGame { public String play() { int randomNumber = (int) (Math..

2023. 11. 6. 22:34
  • «
  • 1
  • ···
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • ···
  • 24
  • »

공지사항

  • GitHub & WorkSpace

전체 카테고리

  • Development (144)
    • Languege (39)
      • Java & Spring (27)
      • C# & ASP.NET (5)
      • JavaScript (2)
      • Kotlin (5)
    • DB (0)
      • Oracle (0)
    • Study (72)
      • 네트워크 (3)
      • 이펙티브 자바 (41)
      • 우아한 테크 코스 (7)
      • Next Step (3)
      • Certificate (5)
      • Side Proejct (6)
    • Error (18)
      • 개발환경 (10)
      • 트러블슈팅 (6)
    • Algorithm (12)
    • 개발환경 (1)
    • 회고 (2)
애드센스 광고 영역
  • 최근 글
  • 최근 댓글

최근 글

최근댓글

태그

  • #객체지향
  • #백준
  • #spring boot
  • #이펙티브 자바
  • #코틀린
  • #김영한
  • #Java
  • #트러블슈팅
  • #우테코
  • #TDD
  • #kotlin
  • #effective java
  • #자바
  • #파이썬
  • #AWS
  • #스프링부트
  • #개발자
  • #백엔드
  • #GCP
  • #김영한 스프링
  • #spring
  • #구글 클라우드
  • #saa
  • #이펙티브자바
  • #도메인 주도 개발
  • #제네릭
  • #스프링
  • #BOJ
  • #클라우드
  • #후기
MORE

전체 방문자

오늘
어제
전체

블로그 인기글

Powered by Privatenote Copyright © 토마토의 개발일지 All rights reserved. TistoryWhaleSkin3.4

티스토리툴바