반응형 분류 전체보기127 [모던 자바 인 액션] 2장. 동작 파라미터화 간단한 예시를 통해 동작 파라미터화가 왜 필요하고 어떻게 코드 개선될 수 있는지 보자. Niniz 객체를 담고 있는 리스트에서 원하는 니니즈를 찾는 프로그램을 개발한다고 가정하겠다. Niniz 클래스는 아래와 같다. /* Niniz.java */ public class Niniz { private String name; private String color; private String classification; public Niniz(String name, String color, String classification) { this.name = name; this.color = color; this.classification = classification; } public String getName(.. 2021. 9. 28. [모던 자바 인 액션] 1장. 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가? 개요 멀티코어 CPU 대중화와 같은 하드웨어적인 변화가 자바8에 영향을 미쳤다. CPU 속도 증가에 한계점에 이르며 코어 수를 높이는 쪽으로 하드웨어가 발전해갔는데 이러한 변화에 발맞춰 자바 또한 변화해간 것이다. 또한 빅데이터(테라바이트 이상의 데이터셋)라는 도전에 직면하면서 멀티코어 서버나 클러스터를 이용하여 이를 효율적으로 처리 해야 됐다. 그러나 자바 8 이전의 자바로는 충분히 대응하기가 어려웠다. 물론 자바가 병렬 처리를 위한 API를 완전히 제공하지 않아왔던 것은 아니다. 자바 5에서는 쓰레드 풀, 병렬 실행 컬렉션을 도입했고 자바7에는 포크/조인 프레임워크을 제공했으나 개발자가 사용하기가 쉽지 않았다. 이에 반해 자바8은 병렬 실행을 새롭고 단순한 방식으로 접근할 수 있는 방법을 제공한다. .. 2021. 9. 28. 하드디스크 인터페이스 비교 - SATA, SCSI, SAS Outline 대표적인 하드디스크인 SATA, SCSI, SAS는 스펠링도 비슷해서 정말 헷갈린다. 이름이 다른만큼 뭔가 차이점이 있을것 같아 찾아본 결과 신뢰가는 여러 블로그 및 포스트를 확인했고 해당 내용을 취합해 정리 해보았다. 이 글을 통해 더 이상 헷갈리지 말고 명확히 구분해서 필요에 따라 구매하자! - Comparision SCSI vs SAS SCSI가 발전된 형태로 나온것이 SAS이다. 둘의 장, 단점은 유사한데 SAS가 여러면에 있어 더욱 뛰어나기 때문에 SATA와 SAS만 두고 비교하도록 하겠다. - SATA VS SAS 글의 제목과 달리 결국 SATA와 SAS 를 정리한 글이 되었다. 둘의 차이를 비교해보도록 하겠다. 아래 비교 내용은 두 하드디스크를 Seagate의 1TB HDD를 .. 2021. 9. 28. 트랜잭션과 격리 레벨 그리고 Lock에 대하여 * 학습에 도움을 주신 스티디원 오길환님께 감사드립니다. 트랜잭션(Transaction) 위키피디아에 설명하는 데이터베이스 트랜잭션 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위입니다. 여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미합니다. 이 말인 즉슨 클라이언트가 서버에 요청을 보낸다고 했을 때, 그 요청 자체를 하나의 트랜잭션이라고 볼 수 있다. 요청은 하나지만 요청을 받는 서버는 여러 단계를 거쳐 처리할 수 있고 그 과정에서 성공하거나, 실패할 수 있습니다. 이러한 트랜잭션이 가지는 특성은 다음과 같습니다. 트랜잭션의 특성 원자성(Atomicity): 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 .. 2020. 12. 19. Spring REST Docs 관련 글 woowabros.github.io/experience/2020/05/13/rest-docs.html 2020. 10. 11. [퍼온 글] 스프링 부트, @RunWith가 더이상 보이지 않는 이유 출처: www.whiteship.me/springboot-no-more-runwith/ 스프링 부트, @RunWith가 더이상 보이지 않는 이유 왜 최근 버전의 스프링 부트를 사용한 프로젝트의 테스트 코드에서 @RunWith를 더이상 볼 수 없는지 살펴보겠습니다. www.whiteship.me 정리하자면, 최근 스프링 부트는 JUnit 5를 사용하기 때문에 더이상 JUnit 4에서 제공하던 @RunWith를 쓸 필요가 없고 (쓰고 싶으면 쓸 수는 있지만), @ExtendWith를 사용해야 하지만, 이미 스프링 부트가 제공하는 모든 테스트용 애노테이션(@SpringBootTest) 에 메타 애노테이션으로 적용되어 있기 때문에 @ExtendWith(SpringExtension.class)를 생략할 수 있다. 2020. 10. 11. Clustering vs Replication vs Sharding 이번 글에서는 샤딩과 클러스터링, 레플리케이션을 비교해보고 그 차이점을 알아보도록 하겠습니다. 아래 사진은 가장 기본적인 DB 구조 입니다. 위 사진은 DB 서버와 디스크 역할을 하는 DB 스토리지가 한 구성으로 되있습니다. 그런데 이 구성과 같이 DB를 한 대만 운영 할 경우에 문제점은 DB 서버가 죽으면 관련된 서비스가 전체가 중단되게 됩니다. 이에 대한 가장 간단한 방안으로 DB 클러스터(Cluster) 가 있습니다. 위 사진과 같이 클러스터를 구성하는 것을 클러스터링(Clustering) 이라 합니다. 동일한 DB 서버를 두 대를 묶고 두 DB 서버를 Active-Active 상태로 운영하면, 하나의 DB 서버가 죽더라도 나머지 DB 서버가 살아있기 때문에 정상적으로 서비스가 가능해집니다. 또한 .. 2020. 9. 24. [우아한 테크 세미나] 컴파일 vs 빌드 원시 파일(소스코드)를 컴파일러로 컴파일 하면 오브젝트 파일이 생성됩니다. 이 오브젝트 파일을 링크 시켜 하나의 실행 가능한 파일로 만들어 주는 것이 링커 입니다. 그리고 여러 소스코드를 하나의 실행 파일로 만들어주는 일련의 과정을 빌드라고 하고 이를 처리해주는 것이 빌더 입니다. 정리하자면 빌드 도구란 소스 코드로 부터 실행 가능한 어플리케이션을 생성하는 것을 자동화하는 프로그램을 말합니다. 여기서 자동화란 빌드와 같은 일련의 프로세스 중 사람의 손을 거치는 반복적인 작업을 프로그램으로 처리하여 효율화하는 것을 말합니다. 2020. 9. 21. TDD 잘하는 법! 3주간의 프리코스를 진행하며 아래와 같은 룰을 지키며 코딩할 것을 강조! https://google.github.io/styleguide/javaguide.html Google Java Style Guide 1 Introduction This document serves as the complete definition of Google's coding standards for source code in the Java™ Programming Language. A Java source file is described as being in Google Style if and only if it adheres to the rules herein. Like ot google.github.io https://my.. 2020. 9. 20. 이전 1 ··· 4 5 6 7 8 9 10 ··· 15 다음 반응형