반응형 Java30 Executor와 TaskExecutor 이모저모 Java Executor Executor public interface Executor { void execute(Runnable command); } 제출된 Runnable 작업을 실행하는 객체이다. 태스크 제출과 각 태스크가 어떻게 실행될 것인지의 메커니즘을 분리하는 방법을 제공하며, 이는 스레드 사용, 스케줄링 등의 세부 사항을 포함한다. Executor는 일반적으로 명시적으로 스레드를 생성하는 대신 사용된다. 보통 스레드 풀을 사용하는 구현체가 많다. Executor 인터페이스는 실행이 반드시 비동기라는 것을 요구하지 않는다. Executor는 제출된 태스크를 즉시 호출자 스레드에서 실행할 수도 있다. Execuotr에서는 보통 태스크는 호출자의 스레드가 아닌 다른 스레드에서 실행된다. 많은 Ex.. 개발/Spring Core 2023. 10. 24. 자바는 Call By Reference가 없다? 오늘은 스터디를 진행하면서 커뮤니티에서 본 자바의 Call By Reference에 대해 정리하려고 한다. 먼저 기본적인 Call by value와 Call by reference에 대해 짚고 넘어가자. Call by value 함수를 호출 할 때 단순히 값을 전달하는 형태의 함수 호출을 의미한다. Call by reference 메모리의 접근에 사용되는 주소 값을 전달하는 함수 호출을 의미한다. 자바는 Call By Reference가 없다? Java에서 primitive type 변수는 실제 값을 저장하는 반면 다른 모든 타입 변수는 참조하는 객체의 주소를 가리키는 참조 변수를 저장한다. 객체의 주소를 가리키는 참조 변수가 스택 메모리에 저장된다. 참조하는 객체는 힙 메모리에 저장된다. 총 2번의 과.. 개발/Java 2023. 8. 2. 토비의 스프링 Vol.1 8장 스프링이란 무엇인가 8.1 스프링이란 무엇인가? 스프링에 대해 가장 잘 알려진 정의는 '자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크'다. 이 문장을 풀어서 살펴보자. 애플리케이션 프레임워크 경량급 자바 엔터프라이즈 개발을 편하게 오픈소스 애플리케이션 프레임워크는 특정 계층이나, 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말한다. 애플리케이션 프레임워크는 애플리케이션 개발의 전 과정을 빠르고 편리하며 효율적으로 진행하는데 일차적인 목표를 두는 프레임워크다. 경량급 스프링이 가볍다는 건 기술수준이 가볍다거나, 스프링이 유치하고 용도가 제한적이라는 의미가 아니다. 불필요하게 무겁지 않고 가볍고 단순한 환경에서도 엔터프라이즈 개발의 고급 기술을 대부분.. 독서/토비의 스프링 2023. 2. 21. 자바 제네릭(Generics) 백기선님이 과거에 진행했던 Java 스터디 14주차 스터디 입니다. 제네릭 사용법 제네릭은 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 제네릭 클래스의 선언 class Box { //제네릭 타입 T를 선언 T item; void setItem(T item){ this.item = item; } T getItem() { return item; } } Box에서 T를 타입 변수라고 하며, Type의 첫 글자에서 따온 것이다. T라고 적지 않아도 된다. 타입 변수가 여러 개인 경우에는 Map와 같이 콤마를 구분자로 나열하면 된다. 기호의 종류만 다를 뿐 임의.. 개발/Java 2022. 12. 10. SLF4J, Logback 개념 이번에는 맨날 단순히 사용하기만 한 SLF4J와 Logback 개념을 정리해보려고한다. SLF4J SLF4J란 The Simple Logging Facade for Java의 약어다. 쉽게 말하면 SLF4J 자바 진영의 로깅 프레임워크 인터페이스이며 개발자가 배포 시 원하는 로깅 프레임워크를 연결할 수 있도록 도와준다. 즉 다양한 로깅 프레임워크 구현체들 (java.util.logging, logback 및 reload4j)을 쉽게 갈아끼워서 사용할 수 있게 도와준다. 그럼 이제 공식 문서에서 소개하는 SLF4J 내용에 대해 정리해보겠다. 레거시 로깅 API 사용 시 SLF4J 사용 만약 프로젝트에서 사용하는 로깅 프레임워크가 SLF4J 이외의 로깅 API에 의존한다고 생각해보자. 기존의 로깅 프레임워크.. 개발/Spring Boot 2022. 10. 10. NextStep 자바 플레이 그라운드 with TDD, 클린코드 part 2 자바지기 박재성님이 운영하시는 NextStep 교육 웹사이트에서 수강한 자바 플레이 그라운드 with TDD, 클린코드에 대한 공부 기록을 남기려고 합니다. 이번 포스팅은 TDD를 사용해 자동차 경주 게임 구현 미션에 관한 포스팅입니다. 강의를 통해 느낀 점 (피드백을 보기 전) 우선 해당 단원에서 제시한 프로그래밍 요구사항은 다음과 같다. 자바 코드 컨벤션을 지키면서 프로그래밍한다. 기본적으로 Google Java Style Guide을 원칙으로 한다. 단, 들여쓰기는 '2 spaces'가 아닌 '4 spaces'로 한다. indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현한다. 2까지만 허용한다. 예를 들어 while문 안에 if문이 있으면 들여쓰기는 2이다. 힌트: indent(인덴.. 프로젝트 2022. 7. 31. NextStep 자바 플레이 그라운드 with TDD, 클린코드 part 1 한동안 포스팅에는 자바지기 박재성님이 운영하시는 NextStep 교육 웹사이트에서 수강한 자바 플레이 그라운드 with TDD, 클린코드에 대한 공부 기록을 남기려고 합니다. 이번 포스팅은 제일 기초 부분인 단위 테스트를 이용한 숫자야구게임에 관한 포스팅입니다. 강의를 수강하게 된 계기 본인은 어렸을 때 부터 눈팅하는 것을 좋아했다. 인터넷 카페에서도 눈팅을 많이 했고, 같이 게임하는 사람들 톡방에서도 종종 눈팅을 했다. 현재 진행하고 있는 연합 동아리 수다방에서도 꽤나 눈팅을 자주 하는 편이다. 필자는 흥미로운 얘기를 보는 것을 좋아하지만, 참여하는 것은 조금 부끄럽다.ㅎㅎ 개발에 대한 흥미도 가지면서 코딩에 몰입하다보니 자연스럽게 개발 커뮤니티도 많이 살펴보고 개발 관련 오픈 톡방에서도 눈팅을 많이 .. 프로젝트 2022. 7. 16. 스프링 트랜잭션 본 게시글은 인프런 김영한 선생님 강의 스프링 DB 2편을 완강하고 배운 것을 남기고자 적은 포스팅입니다. 강의 링크는 아래와 같습니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-2/dashboard 스프링 DB 2편 - 데이터 접근 활용 기술 - 인프런 | 강의 백엔드 개발에 필요한 DB 데이터 접근 기술을 활용하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의 소개 | 인 www.inflearn.com 들어가기전에 인텔리제이에서 @Transactional을 타자로 직접 치면 2가지가 나온다. javax.transaction.Transaction.. 개발/Spring DB 2022. 6. 24. 더 맵게 문제 링크는 아래와 같습니다. https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 최근에 유튜브에서 재밌으면서 유익한 영상을 보게 되었습니다. https://youtu.be/PFKPdjdWbQ8 원래도 입력 값의 범위가 중요하다고 생각했으나, 이 영상을 본 기점으로 더더더 입력 값의 범위를 꼼꼼하게 체크하게 되었다ㅋㅋ 처음 문제를 봤을 때는 느낀점은 '입력 값이 너무 큰데..?!'였다. 절대로 이중 .. 코딩테스트/프로그래머스 2022. 6. 23. JDBC 본 게시글은 인프런 김영한 선생님 강의 스프링 DB 1편을 완강하고 배운 것을 남기고자 적은 포스팅입니다. 강의 링크는 아래와 같습니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard 스프링 DB 1편 - 데이터 접근 핵심 원리 - 인프런 | 강의 백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의 www.inflearn.com JDBC란 JDBC는 Java Database Connectivity의 약어로 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API다. JDB.. 개발/Spring DB 2022. 6. 14. 백준 10610번 30 아래는 문제의 링크입니다. JAVA를 사용했습니다. https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 문제의 설명은 아래와 같습니다. 문제를 요약하면 다음과 같다. 숫자를 입력받는다. 입력받은 숫자를 조합해 30의 배수가 되는 가장 큰 수를 만든다. 처음에 제일 중요하게 생각한 것은 숫자를 조합해 30의 배수인 수를 체크하는 것이었다. 근데 입력을 보니까 10^9..? 아무래도 문자열로 입력을 받아야 한다고 느꼈다. 그러고 생각을 해보니 엄청 긴 .. 코딩테스트/백준 2022. 6. 4. 스트림(Stream) 스트림이란? 스트림은 자바 8 API에 새로 추가된 기능이다. 스트림을 이용하면 선언형(즉, 데이터를 처리하는 임시 구현 코드 대신 질의로 표현)으로 컬렉션 데이터를 처리할 수 있다. 또한 스트림을 이용하면 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. 얼마나 코드가 간단해지는지 직접 눈으로 확인해보자! 먼저 기존 자바 코드다. List lowCaloricDishes = new ArrayList(); for(Dish dish : menu){ if(dish.getCalories() < 400){ lowCaloricDishes.add(dish); } } Collections.sort(lowCaloricDishes, new Comparator(){ //익명 클래스 전달 publi.. 개발/Java 2022. 3. 11. 이전 1 2 3 다음 반응형