java12 멀티코어를 100% 활용하는 자바 병렬 프로그래밍 챕터 기본 원리 스레드 안정성 객체 공유 객체 구성 프로그래밍 단위 병렬 프로그램 구조 잡기 작업 실행 중단 및 종료 스레드 풀 활용 GUI 애플리케이션 가용성, 성능, 테스트 가용성을 최대로 높이기 성능, 확장성 병렬 프로그램 테스트 고급 주제 명시적인 락 전용 동기화 기능 구현 단일 연산 변수와 넌블로킹 동기화 자바 메모리 모델 2023. 12. 6. 자바의 신 Vol 2: 주요 API 응용편 챕터 이쯤에서 자바의 역사와 JVM에 대해서 알아보자 가장 많이 쓰는 패키지는 자바랭 실수를 방지하기 위한 제네릭이라는 것도 있어요 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part1(List) 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part2(Set과 Queue) 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part3(Map) 쓰레드는 개발자라면 알아두는 것이 좋아요 파일에 있는 것을 읽고 쓰려면 아이오를 알아야죠 Serializable과 NIO도 살펴 봅시다 다른 서버로 데이터를 보내려면 어떻게 하면 되나요? 이제 주요 API도 알아봤으니 정리해 봅시다 Java 7에서 달라진 것들에는? Java 7에 추가된 것들에는? Java 8에 추가된 것들은? Java 8에서 변경된 것들은? Java 9.. 2023. 12. 6. 자바의 신 Vol 1: 기초 문법편 챕터 프로그래밍이란 무엇인가? Hello God Of Java 자바를 제대로 알려면 객체가 무엇인지를 알아야 해요 정보를 어디에 넣고 싶은데 계산을 하고 싶어요 제가 조건을 좀 따져요 여러 데이터를 하나에넣을 수는 없을까요? 참조 자료형에 대해서 더 자세히 알아봅시다 자바를 배우면 패키지와 접근 제어자는 꼭 알아야 해요 자바는 상속이라는 것이 있어요 매번 만들기 귀찮은데 누가 만들어 놓은 거 쓸 수 없나요? 모든 클래스의 부모 클래스는 Object에요 인터페이스와 추상클래스, enum 다 배운 것 같지만, 예외라는 중요한 것이 있어요 String 클래스 안에 클래스가 들어갈 수도 있구나 어노테이션이라는 것도 알아야 한다 이제 기본 문법은 거의 다 배웠으니 정리해 봅시다 2023. 12. 6. Checked Exception vs Unchecked Exception 💡이 포스팅은 백기선 님의 유튜브 영상인 자바 공부를 어떻게 하길래, "언체크드 예외 발생 시 트랜잭션 롤백?"을 시청하고 학습한 내용을 정리한 포스팅입니다. Checked Exception과 Unchecked Exception에 대해 검색하게 되면 위와 같은 표 이미지를 자주 찾아볼 수 있습니다. 언뜻 보면 그렇구나 하고 넘어갈 수 있는데, 한 가지 다시 확인해봐야 할 부분은 예외발생 시 트랜잭션 처리 부분입니다. Exception에 대해 트랜잭션 처리를 한다? 맞는 말이지요. 하지만 Java에서 기본적으로 Exception 처리에 트랜잭션 기능이 있었나? 생각해 보면 아닙니다. 우리가 맞다고 생각했던 이유는 Spring에서의 예외 처리랑 혼동했기 때문인데요, 정리하자면 결과적으로 저기에 적혀있는 트랜.. 2023. 3. 19. window sdkman 설치 SDKMAN은 Software Development Kit Manager의 약자로써 Open JDK, Gradle, Maven, Ant 등 Java 기반의 개발 도구를 설치하고 관리할 수 있도록 CLI 를 제공합니다. 설치 먼저 Git Bash 가 설치되어 있어야 합니다. 그리고 SDKMAN 메인 페이지에 나와 있는 명령어를 복사 후 입력합니다. Please install zip on your system using your favourite package manager. 그럼 위와 같이 zip 파일이 없다는 메세지와 함께 설치가 실패합니다. https://sourceforge.net/projects/gnuwin32/files/ 위 사이트에서 zip, bzip2 파일을 다운받은 후 아래와 같은 경로에 저.. 2023. 1. 31. 1-8. 스프링이란 무엇인가? 8장에서 비로소 스프링이란 무엇인가? 에 대해 설명합니다. 보통의 책들은 1장에서 바로 스프링의 개념에 대해 설명할 텐데, 오히려 토비 님은 책의 마지막에서야 비로소 스프링이 무엇인지 설명합니다. 이는 스프링이 무엇인지 말로 설명해 봤자 이해가 잘 되지 않을뿐더러, 직접 코드로 확인해 봐야 더 잘 이해가 될 것이라는 토비 님의 생각이 담겨 있었기 때문이고, 읽기 모임에서도 여러 번 언급하셨듯이 이를 통해서 토비 님은 스프링이 굉장히 특별한 기술이 아니라는 것을 말하고 싶었던 것 같습니다. 1권을 통해서 스프링 이전에 어떤 문제점들이 있었고, 스프링은 이를 어떻게 해결해 왔는가, 그리고 스프링은 앞으로 어떤 방향성을 가지고 발전해나 가는가에 대해 알 수 있어서 좋았습니다. 스프링의 특징 자바 엔터프라이즈 .. 2023. 1. 15. 1-7. 스프링 핵심 기술의 응용 현실적으로 SQL의 변경 작업은 생각보다 빈번히 일어납니다. 개발 중에는 물론이고 운영 중인 시스템의 SQL을 변경해 달라는 요청도 드물지 않습니다. 그렇다고, 그때마다 DAO 코드를 수정하고 이를 다시 컴파일해서 적용하는 건 번거로울 뿐만 아니라 위험하기도 합니다. (p.558) 이번장은 초난감 DAO에 아직 남아있는 SQL 문자열을 분리하는 과정을 통해 스프링의 여러 추상화된 기술을 설명하며 다시 한번 DI의 중요성에 대해 설명합니다. 1장부터 지금까지 계속해서 DI를 강조하는데, 실제 읽기 모임에서도 토비님은 DI가 정말 중요하다고 거듭 언급하실정도로 스프링을 학습하는 데 있어서 DI는 꼭 빠트릴 수 없는 것 같습니다. DI란 결국 미래를 프로그래밍 하는 것입니다. (p.618) 그리고 DI를 적용.. 2023. 1. 15. 아파치 카프카 애플리케이션 프로그래밍 with 자바 아파치 카프카 애플리케이션 프로그래밍 with 자바 아파치 카프카 애플리케이션 개발을 위한 「실전 가이드」 아파치 카프카란 무엇일까? 카프카 애플리케이션은 어떻게 만들까? 데이터 파이프라인을 만들기 위해 어떤 카프카 라이브러리를 사용해야 할까? 클라우드 기반 아파치 카프카는 어떤 기능을 가지고 있을까? 이 책은 아파치 카프카의 기본적인 개념과 상용 프로젝트에 카프카를 사용하는 방안, 그리고 코드를 기반으로 연동 애플리케이션을 개발하는 과정을 소개한다. 또한, 「실전 프로젝트」에서 실무에 많이 사용되는 아키텍처와 유사한 구조로 실습을 진행하며 상용 환경에서 어떻게 데이터 파이프라인을 구축하는지 설명한다. 이 책을 통해 카프카와 연관된 플랫폼들과의 관계를 전체적으로 이해하는 것을 넘어 카프카를 업무에 성공적.. 2023. 1. 9. 1-3장. 템플릿 템플릿이란 이렇게 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭게 변경하는 성질을 가진 부분으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 방법이다. (p209) 3장에서는 초난감 DAO에 "예외 처리"를 추가하면서 템플릿의 필요성에 대해 설명합니다. 초난감 DAO에 예외 처리를 하기 위해서 try-catch-finally 구문을 사용합니다. Connection c = null; PreparedStatement ps = null; ResultSet rs = null; User user = null; try { c = connectionMaker.makeConnection(); ps = c.prepareStatement( "select.. 2023. 1. 7. 1-2장. 테스트 애플리케이션은 계속 변하고 복잡해져 갑니다. 그 변화에 대응하는 첫 번째 전략이 확장과 변화를 고려한 객체지향적 설계와 그것을 효과적으로 담아낼 수 있는 IoC/DI 같은 기술이라면, 두 번째 전략은 만들어진 코드를 확신할 수 있게 해 주고, 변화에 유연하게 대처할 수 있는 자신감을 주는 테스트 기술입니다. (p145) 2장에서 테스트를 설명하면서 토비님은 "스프링으로 개발을 하면서 테스트를 만들지 않는다면 이는 스프링이 지닌 가치의 절반을 포기하는 셈"이라고 하실 정도로 테스트의 중요성을 강조하고 있습니다. 2장은 전반적으로 테스트의 중요성, 그리고 테스트를 작성해야 하는 이유에 대해 친절히 설명하고 있습니다. public static void main(String[] args) throws SQLEx.. 2022. 9. 19. 1-1장. 오브젝트와 의존관계 저는 개인적으로 1장에서 가장 흥미로웠던 부분은 1.1 ~ 1.4까지 이어지는 초난감 DAO의 리팩터링 과정이라고 생각합니다. 예전에 읽었을 때는 못 느꼈지만 이번에 읽어보니 토비 님께서 DI(Dependency Injection)를 설명하기 전에 DI가 왜 필요한지 직접 코드로 보여주셔서 DI라는 개념을 더 쉽게 이해할 수 있었습니다. 관심사의 분리 : 중복 코드 메서드 추출 DB Connection 코드 독립 : 상속을 통한 확장 (is-a) DAO의 확장 : 포함 관계를 통한 확장 (has-a) 인터페이스 도입 관계 설정 책임의 분리 - 인터페이스 구현체 주입을 외부로 분리 관심사의 분리 관심이 같은 것 끼리는 모으고, 관심이 다른 것은 따로 떨어져 있게 하는 것입니다. 상속을 통한 확장 (is-a.. 2022. 9. 5. 토비의 스프링 3.1 시작하기 참여 계기 & 다짐 디스코드에서 토비의 스프링 3.1 저자이신 이일민(이하 토비)님께서 주관하시는 '토비의 스프링 3.1 읽기 모임'이 생긴 걸 알게 되었는데, 좋은 경험과 유익한 시간이 될 것 같아 읽기 모임에 참여하게 되었습니다. 이전에도 읽어본 적이 있기는 하지만 이번에 읽었을 때는 또 어떤 느낌을 받을지, 어떤 것들을 느낄지 기대가 되며 다시 토비의 스프링 3.1을 펼쳤습니다. 하지만 이번에는 다른 분들과 생각을 공유하는 것이기 때문에 이전과의 차이도 둘 겸, 각 챕터별로 읽은 후 블로그에 제 생각과 느낀 점들을 정리하려고 합니다. 또 이번에는 책에 나와 있는 예제들을 실제 코드로 작성해 봅니다. github 주소: https://github.com/kiekk/tobyspringin5 들어가며 토.. 2022. 9. 4. 이전 1 다음