JavaRush /Java Blog /Random-KO /커피 브레이크 #42. 모르는 것이 있으면 어떻게 해야 할까요? 생산성 극대화를 위한 5가지 최고의 J...

커피 브레이크 #42. 모르는 것이 있으면 어떻게 해야 할까요? 생산성 극대화를 위한 5가지 최고의 Java 라이브러리

Random-KO 그룹에 게시되었습니다

모르는 것이 있으면 어떻게 해야 할까요?

출처 : Dev.to 개발자라면 조만간 문제 해결 방법을 모르는 상황이 발생했을 것입니다. 이것은 경력의 어느 단계에서나 매우 불쾌한 순간입니다. 결국, 당신이 아무것도 모른다는 사실에도 불구하고 여전히 작업을 완료해야 합니다. 이 기사에서는 개인적인 경험을 공유하고 그러한 문제에 대한 해결책을 찾는 데 무엇이 도움이 될지 알려 드리겠습니다.커피 브레이크 #42.  모르는 것이 있으면 어떻게 해야 할까요?  최대 성능을 위한 5가지 최고의 Java 라이브러리 - 1

질문

제가 초보였을 때는 질문하는 것이 두려웠고, 마지막 순간까지 모든 것을 스스로 해결하려고 노력했습니다. 나는 문제를 해결하는 데 엄청난 시간을 소비하고 결국 상사나 고객과 대화해야 할 때까지 침묵을 지켰습니다. 나는 내가 왜 그런 일을 했는지 이해했다. 나는 다른 사람들 앞에서 바보처럼 보이고 싶지 않았기 때문에 질문을 피했습니다. 나를 제외한 다른 사람들은 본질을 빨리 파악하고 그것이 무엇인지 이해하는 것 같았습니다. 제가 드디어 자존심을 접어두고 이해가 안 되는 부분을 질문하게 된 것은 동료들 덕분이었습니다.

Google과 YouTube는 가장 친한 친구입니다.

나는 Google이 터무니없거나 재미있는 질문에 어떻게 대답하는지에 대한 비디오를 본 적이 있습니다. 답변도 매우 재미있었지만, 궁금한 점이 있으면 Google이 확실히 도움을 줄 수 있다는 것을 깨달았습니다. 그러므로 막다른 골목에 이르렀다면, 이 검색엔진을 통해 답을 찾아보는 것을 잊지 마세요. YouTube는 문제 해결에도 많은 도움을 줍니다. 특히 주제에 대한 더 깊은 이해가 필요한 경우에는 더욱 그렇습니다. 그러다가 늘 화제성 있는 영상을 찾아보곤 해요.

한 쌍의 눈이 더 있으면 아프지 않을 것입니다

문제를 해결할 수 없다면 분노와 좌절에 사로잡히지 마십시오. 이러한 상황의 명확한 예는 문서가 부족하여 리버스 엔지니어링을 수행해야 하는 오래된 코드 기반을 유지해야 하는 경우입니다. 물론 여기에는 많은 노력이 필요합니다. 코드 베이스를 자세히 살펴보고 이전 개발자의 스타일을 이해해야 합니다. 그러한 경우에는 자신이 아닌 다른 사람이 코드를 검토하도록 하는 것이 좋습니다. 상대방은 당신이 놓쳤거나 이해하지 못한 점을 지적할 수도 있습니다. 이렇게 하면 문제 해결 속도를 높일 수 있습니다.

뭔가에 막히더라도 자책하지 마세요.

나는 이것에 특별한 관심을 기울이고 싶습니다. 어딘가에 갇히더라도 자신에게 화를 내지 마십시오. 네, 문제를 해결할 수 없다면 별로 즐겁지 않습니다. 임포스터 증후군이 악화될 수도 있고, 자신이 쓸모없다고 느끼며, 자신이 좋은 개발자라는 자신감을 잃을 수도 있습니다. 나는 어떤 사람이 자신의 일에서 어떤 것에 막힌 적이 없다면 그것은 그가 평소의 행동을 넘어서지 않고 자신의 안락한 영역에서 행동하기 때문이라고 확신합니다. 예상치 못한 상황에 대비하려면 귀하의 전문적 기준을 높이도록 격려할 수 있는 사람들과 소통하십시오. 준비되지 않은 일이 발생하더라도 화를 내지 마십시오. 이러한 사례는 지식의 격차를 파악하고 그에 따라 이를 채우는 데 도움이 됩니다.

휴식을 취하다

별로 생산적이지 않을 수도 있지만, 크고 복잡한 일을 하고 있을 때 짧은 휴식을 취하는 것은 스트레스 해소에 큰 도움이 됩니다. 15분 동안 걷고, 누군가와 대화하고, 운동하고, 심지어 낮잠도 자보세요. 휴식은 마음을 상쾌하게 하는 데 도움이 되며, 게다가 이번에는 뇌가 계속 작동하고 잠재의식 수준 어딘가에서 당면한 문제를 해결합니다. 결과적으로 커피를 마시는 것만으로도 유레카 순간을 경험할 수 있습니다.

결론

문제를 풀 때 가장 먼저 해야 할 일은 아는 것과 모르는 것의 목록을 작성하는 것입니다. 그런 다음 이 작업을 할당한 사람에게 명확한 질문을 해야 합니다. 아마도 이 단계에서는 뭔가가 더 명확해질 것이며 "모름" 범주에서 일부 질문을 제거할 수 있을 것입니다. 다른 질문에 대한 답변은 Google이나 YouTube에서 직접 검색해야 합니다. 검색할 시간을 좀 주세요. 혼자서 문제를 해결할 수 없다면 주저하지 말고 동료에게 도움을 요청하세요.

생산성 극대화를 위한 5가지 최고의 Java 라이브러리

출처: Medium 아마도 Java로 코드를 작성하고 "더 나은 방법이 있을 텐데..."라고 생각한 적이 있을 것입니다. Java 라이브러리는 이러한 문제를 해결하는 데 도움이 될 수 있습니다. 제 생각에는 최고의 도서관 다섯 곳을 소개하겠습니다. 이 도서관을 사용하면 생산성과 작업 효율성이 높아질 것입니다.커피 브레이크 #42.  모르는 것이 있으면 어떻게 해야 할까요?  최대 성능을 위한 5가지 최고의 Java 라이브러리 - 2

1. 롬복

Project Lombok 은 주석을 사용하여 상용구 코드를 줄이는 Java 라이브러리입니다. @Getter와 같은 주석을 사용하여 getField() 메서드를 자동으로 생성할 수 있습니다 . 지원되는 주석은 다음과 같습니다.
  • getter 및 setter를 생성하는 @Getter 및 @Setter
  • @EqualsAndHashCode는 EqualsHashCode 계약을 준수하는 EqualsHashCode 메서드를 자동으로 생성합니다 .
  • @ToString은 ClassName(fieldName = value, fieldName2 = value...) 형식을 따르는 toString() 메서드를 생성합니다 .
  • @Builder는 POJO를 더 쉽게 생성할 수 있도록 빌더 패턴을 자동으로 구현합니다.
  • @Data는 @Getter, @Setter, @EqualsAndHashCode, @ToString 및 @RequiredArgsConstructor의 약어입니다!
더 많은 지원되고 쉽게 사용자 정의할 수 있는 주석이 있습니다. 이들과 함께 작업하면 상용구 코드를 작성하지 않아도 됩니다.

2. 구아바

Guava 는 Google에서 만들고 유지 관리하는 Java 라이브러리입니다. 여기에는 코드 작업에 널리 사용되는 많은 유틸리티가 포함되어 있습니다. Guava의 기능 중 일부는 다음과 같습니다.
  • Map이 특정 키에 대해 여러 값을 지원하는 Multimap<k, v="">와 같은 컬렉션 확장은 더 깔끔한 API를 사용하는 Map <k, collection="" <v="">>와 동일합니다. ;</k, ></k,>
  • 그래픽 데이터를 모델링하기 위한 다양한 유틸리티가 포함된 Graphs 패키지;
  • MoreExecutors, Atomics 및 ListenableFuture와 같은 동시성 유틸리티.
Guava 라이브러리에는 많은 내용이 있습니다. Google의 지원 덕분에 꽤 인기가 높으므로 해당 API가 철저하게 테스트되고 지원되므로 안심하셔도 됩니다. 일반적인 Java 문제를 해결해야 한다면 반드시 Guava에서 해결책을 찾을 수 있을 것입니다!

3. 최대 절전 모드

Hibernate 는 SQL 테이블과 POJO 간의 변환에 대해 걱정할 필요 없이 데이터베이스와 상호 작용할 수 있게 해주는 객체 관계형 매핑 라이브러리입니다. Hibernate 웹사이트는 라이브러리에 대해 다음과 같은 정보를 제공합니다: “Hibernate를 사용하면 상속, 다형성, 연관, 구성 및 Java 컬렉션을 포함한 자연스러운 객체 지향 원칙에 따라 수명이 긴 클래스를 생성할 수 있습니다. Hibernate는 수명이 긴 클래스에 대한 인터페이스나 기본 클래스를 필요로 하지 않으며 모든 클래스나 데이터 구조가 지속되도록 허용합니다.” 영구 데이터 저장을 개선하고 수천 줄의 데이터베이스 코드를 제거하려면 Hibernate를 사용하십시오.

4. 가짜

OpenFeign 은 Java에서 RESTful HTTP 클라이언트를 쉽게 생성할 수 있게 해주는 Netflix의 라이브러리입니다. Feign 클라이언트를 생성하려면 요청 및 응답 세부정보로 인터페이스를 설명하기만 하면 됩니다. 이는 다음 예를 통해 가장 잘 설명됩니다.
@FeignClient(url = "https://github.com")
interface GitHubClient {
    @RequestLine("GET /users/{username}/repos?sort=full_name")
    List<repository> repos(@Param("username") String owner);

    @RequestLine("GET /repos/{owner}/{repo}/contributors")
    List<contributor> contributors(@Param("owner") String owner, @Param("repo") String repo);

    @RequestLine("POST /repos/{owner}/{repo}/issues")
    void createIssue(Issue issue, @Param("owner") String owner, @Param("repo") String repo);
}
</contributor></repository>
위에 언급된 GitHubClient 인터페이스는 메서드에 설명된 GET 및 POST 요청을 수행합니다. 이 클라이언트는 기본적으로 모든 요청에 ​​대해 JSON 형식을 사용합니다. Feign 클라이언트에는 다양한 설정이 있습니다:
  • POJO가 네트워크를 통해 직렬화 및 역직렬화되는 방법을 선택하는 인코더 및 디코더;
  • 재시도 규칙 및 논리를 지정하는 재시도자
  • 쿠키 수신 또는 승인과 같은 기타 사전 요청 작업을 위한 RequestInterceptor입니다.
Feign을 사용하면 HTTP 클라이언트를 수동으로 작성할 필요가 없습니다! 참고: Spring을 사용하는 경우 Spring과의 통합이 OpenFeign 자체보다 더 나은 Spring Cloud OpenFeign을 사용해야 합니다 .

5. 스프링 부트

마지막으로 중요한 라이브러리는 Spring Boot 입니다 . Spring Boot는 프로덕션에 즉시 사용 가능한 Java 애플리케이션을 생성하는 프로세스를 단순화합니다. 이는 다음을 허용합니다:
  • 독립형 Spring 애플리케이션을 생성합니다.
  • Tomcat, Jetty 또는 Undertow를 직접 포함합니다(WAR 파일을 배포할 필요 없음).
  • 빌드 구성을 단순화하기 위해 "스타터" 종속성을 제공합니다.
  • Spring 및 타사 라이브러리를 자동으로 구성합니다.
  • 메트릭, 상태 확인, 외부 구성과 같은 기본 기능을 제공합니다.
Spring Boot를 사용하는 데는 상당한 학습 곡선이 있지만 그만한 가치가 있다고 확신합니다. Spring Boot는 모든 프로젝트의 개발 시간을 단축했으며 안정성, 확장성 및 가독성으로 인해 계속해서 이점을 제공하고 있습니다.

결론

많은 사람들이 Java를 최신 언어의 기능 중 일부가 부족한 "오래된" 언어로 간주한다는 사실에도 불구하고 Java는 수많은 라이브러리와 대규모 개발자 커뮤니티의 형태로 고유한 지원을 제공합니다. 따라서 작업에서 문제가 훨씬 줄어들 것입니다. Java 라이브러리를 사용하면 생산성을 높일 수 있습니다. 바퀴를 재발명하지 말고 핵심 역량에 집중하세요!
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION