inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

BufferedInputStream이 1바이트씩 조회해도 성능이 좋은 이유

미해결

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

BufferedInputStream에서 read() 를 호출하면 buf 라는 버퍼에 있는 것을 1바이트씩 꺼내어 조회한다고 하는데, 그렇다면 처음에 FileInputStream에서 하나씩 read() 하는 것이랑 결국 호출 횟수는 같으니 똑같은 것 아닌가? 하는 생각이 들었습니다. 그러니까 버퍼에 데이터 100바이트를 FileInputStream에서 한번에 들고와도 결국 바깥에서는 1바이트씩 꺼낸다고하니 뭐가 다른건가 궁금해졌습니다. 강의에서 버퍼에 데이터가 채워져있으면 FileInputStream의 read()를 호출하지 않고 바로 버퍼에서 꺼내준다고 하셨는데요, 여기서 버퍼에 한번에 많이 가져옴으로서 FileInputStream의 read() 를 적게 호출하게 되기 때문에 이에 따라 시스템콜도 적게 호출되므로 성능이 증가하는건가요? 앞의 강의에서 FileInputStream과 FileOutputStream의 read(),write()의 횟수를 줄여야 성능이 증가한다고 하셨으니까요. 그래서 BufferedInputStream의 read()로 1바이트씩 꺼내는건 성능에 큰 지장이 없는 것인가요?

  • java
  • 네트워크
  • 객체지향
yoon6669 댓글 1 좋아요 0 조회수 96

eslint 설정

해결됨

한 입 크기로 잘라먹는 Next.js

실제 코드에 나와 있는 설정과 아래의 설명이 반대로 바뀐 거 같은데 어디에 맞춰서 설정해주면 될까요?

  • react
  • typescript
  • next.js
라연 댓글 2 좋아요 0 조회수 98

Redis를 적용했음에도 불구하고 조회 성능의 큰 차이가 없고 오히려 더 안좋은 조회속도를 보이는 것 같습니다.

미해결

비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)

간단한 영화 목록 조회입니다. 총 약 10000개의 데이터가 있습니다. redis를 적용하고 조회성능이 좋아진것은 맞지만 이상하게 redis를 적용하기 전에도 같은 조회를 계속해도 조회속도가 똑같이 빨라지는 현상을 겪고있습니다. 현재 이 movie는 MSA 의 여러 서비스 중 하나입니다. 혹시 MSA 아키텍쳐 자체가 문제가 될 수도 있나요? @Cacheable(cacheNames = "getMovies", key = "'movie:all'", cacheManager = "movieCacheManager") public List<Movie> getAllMovies() { return movieRepository.findAll(); } @GetMapping("/movies") public ResponseEntity<List<MovieDto>> getAllMovies() { List<Movie> allMovies = movieService.getAllMovies(); List<MovieDto> dtos = new ArrayList<>(); for (Movie movie : allMovies) { dtos.add(new ModelMapper().map(movie, MovieDto.class)); } return ResponseEntity.status(HttpStatus.OK).body(dtos); } @Configuration @EnableCaching // Spring Boot의 캐싱 설정을 활성화 public class RedisCacheConfig { @Bean public CacheManager movieCacheManager(RedisConnectionFactory redisConnectionFactory) { RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration .defaultCacheConfig() // Redis에 Key를 저장할 때 String으로 직렬화(변환)해서 저장 .serializeKeysWith( RedisSerializationContext.SerializationPair.fromSerializer( new StringRedisSerializer())) // Redis에 Value를 저장할 때 Json으로 직렬화(변환)해서 저장 .serializeValuesWith( RedisSerializationContext.SerializationPair.fromSerializer( new GenericJackson2JsonRedisSerializer() ) ) // 데이터의 만료기간(TTL) 설정(1분) .entryTtl(Duration.ofMinutes(1L)); return RedisCacheManager .RedisCacheManagerBuilder .fromConnectionFactory(redisConnectionFactory) .cacheDefaults(redisCacheConfiguration) .build(); } } @Configuration public class RedisConfig { @Value("${spring.data.redis.host}") private String host; @Value("${spring.data.redis.port}") private int port; @Bean public LettuceConnectionFactory redisConnectionFactory() { return new LettuceConnectionFactory(new RedisStandaloneConfiguration(host, port)); } }

  • redis
  • nosql
  • query-tuning
  • performance-tuning
이수현 댓글 3 좋아요 0 조회수 174

오타제보

미해결

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

강의명 : 파일 입출력과 성능 최적화4 - Buffered 스트림 읽기 강의 위치: 1분 22초 오타 위치: 2. IO 기본1.pdf 26페이지 최하단 오타 내용 : Buffered Output Stream 분석 -> Buffered Input Stream 분석 해당 부분의 강의는 BufferedInputStream 에 대한 내용이므로 BufferedInputStream 분석 이 되어야하지 않나 싶습니다. 감사합니다

  • java
  • 네트워크
  • 객체지향
yoon6669 댓글 2 좋아요 0 조회수 83

MemberRepository의 JPA 종속성에 관하여

해결됨

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

쉽게 이해할 수 있게 설명해주셔서 강의 잘 봤습니다. 👍 강의 후반부(39. 문서와 코드 다듬기)에 MemberRepository에 @Query를 사용하면서 JPA 종속성이 추가되었는데 이 부분에 대해서 언급 없이 2가지 조인 방식과 관련하여 설명하고 넘어갔습니다. 강의 중반부(23. 회원 애플리케이션의 포트 정의)의 MemberRepository 설명과 같이 spring-data-commons의 Repository라는 마커 인터페이스를 사용하는 것은 동의하나 application layer에 기술 종속성이 추가된 내용 관련하여 부가 설명 요청 드려도 될까요? 물론 다음 강의에 해당 설명이 있을것으로 생각되지만.. MemberQueryRepository로 분리하고 adapter layer에서 구현하는 방향이 더 좋아보이는데 개선 방향도 같이 부탁드립니다.

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
hklee.study 댓글 1 좋아요 0 조회수 437

sql 연결 오류

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] 이러한 오류가 뜨는데 어떻게 해결해야 할지 잘 모르겠습니다 ㅠㅠ application.yml 코드는 다음과 같습니다 spring: datasource: url: "jdbc:mysql://localhost/library" username: "root" password: "" driver-class-name: com.mysql.cj.jdbc.Driver

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
ksangyun04 댓글 2 좋아요 1 조회수 70

문자 집합 호환성 여부를 판단할 때

미해결

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

어떤 두 문자 집합이 호환되는지의 기준은 해당 언어를 표현하는 바이트가 일치해야함 그리고 해당 문자 집합들의 문자의 바이트(비트) 값이 일치해야함. 위 두가지를 모두 만족한다면 두 집합은 서로 호환된다고 이해하면 될까요?

  • java
  • 네트워크
  • 객체지향
yoon6669 댓글 1 좋아요 0 조회수 70

processorNonTransactional 멱등성 질문

해결됨

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

강의 잘 보고 있다. 잘 정리된 자료 덕분에 배치 작업을 이해하고 있는 중이다. 다만 설명 중 이해 안되는 부분이 존재한다. 바로 이 부분 멱등하지 않은 ItemProcessor 를 내결함성(FaultTolerance) 기능 과 함께 사용해야 하는 상황이라면, 반드시 processorNonTransactional 를 설정하도록 하자. 오히려 멱등하지 않은 ItemProecessor의 경우에는 이 설정을 비활성화 해야 하는 거 아닌가? 나의 부족한 영어실력과 GPT를 통해 스프링 배치는 ItemProcessor가 트랜잭션이나 멱등성을 가져야 한다고 되어 있는 것으로 이해하였다. It must be either transactional or idempotent. 출처: https://docs.spring.io/spring-batch/reference/transaction-appendix.html 떠라서 멱등하지 않은 ItemProcessor는 processorNonTransactional()을 지양해야 하는 것으로 나는 이해된다... 답변 부탁한다. (존대로 질문하면 rm -rf 하신다길래 이렇게 남겨요 ㅎㅎ..)

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
검토 댓글 1 좋아요 1 조회수 140

compareTo

미해결

김영한의 실전 자바 - 중급 2편

[질문 내용] 처음 문제를 풀떄 Card 클래스에 compareTo 오버라이딩을 @Override public int compareTo(Card o) { if(number != o.getNumber()){ return this.number - o.number; } return shape.compareTo(o.getShape()); } 위 코드처럼 작성했는데 숫자가 낮은 카드 먼저 안 나올때가 있는데 잘못 작성한걸까요?

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
HY_NGK 댓글 1 좋아요 0 조회수 81

세션 6의 퀴즈 5번 정답 옵셔널 캐치올 아닌가요?

미해결

Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)

문제에서도 /docs 가 있고, 해설에도 옵셔널 캐치올에는 /docs 가 포함 될때도 사용된다고 되어 있는데, 막상 답은 캐치올을 선택해야 답으로 나오네요.

  • react
  • 블로그
  • next.js
  • cursor
  • cursorai
Jmob 댓글 2 좋아요 1 조회수 114

TransactionMessage 질문

해결됨

은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스

안녕하세요. TransactionMessage 부분에서 time을 기본값 LocalDateTime.now() 로 설정하실 때 val -> var로 변경하시는 것을 봤습니다. 실무에서 코틀린에서 기본값을 선언할때 관례적으로 var로 하는지 궁금합니다. (코틀린으로 서버를 개발해본적이 없어서 기초적인 질문 드려서 죄송합니다..) 감사합니다.

  • kotlin
  • mysql
  • mongodb
  • kafka
  • redis
HAHA 댓글 2 좋아요 0 조회수 77

CompletableFuture 질문

해결됨

은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스

안녕하세요. KafkaProducer future.whenComplete에서 throw 하는 코드를 보고 질문 드립니다. 코드를 보니까 CompletableFuture로 구현되어 있던데 transactional.run 안에서 예외를 잡을 수가 있는지 궁금합니다. 코드만 보기로는 whenComplete가 비동기로 동작해서 저기서 예외를 던진다고 누가 받는지 잘 모르겠습니다. 제가 스프링 비동기를 구현해보지 않아서 질문드립니다. 감사합니다.

  • kotlin
  • mysql
  • mongodb
  • kafka
  • redis
HAHA 댓글 3 좋아요 0 조회수 103

자바 버전에 관하여

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

자바 21버전이 아닌 17버전을 사용해도 괜찮나요?

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
커디널스 댓글 1 좋아요 0 조회수 70

질문

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

안녕하세요 문제1번 관련 문의 사항이 있어 글 남깁니다. 1번에 getCount는 synchroinized 하는 이유가 뭔가요? 중간에 호출되는 부분이 없는 것 같고, t1.join() t2.join() 으로 마지막 출력할때도,,, synchroinized이게 안필요하다는 생각이 들어서요 제가 이해를 잘못한건지 문의드립니다.

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
hi_man159 댓글 1 좋아요 0 조회수 73

스프링 빈 질문

해결됨

은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스

안녕하세요. 궁금한 점이 있어 질문드립니다. 코드를 보면 @Component private class Advice: Runner ... 이렇게 내부 클래스가 Private으로 되어 있는데 private으로 선언된 클래스도 component scan 대상이 되나요? 만약 1번에서 안된다면 인자로 받은 Runner가 프록시 빈으로 생성이 안될 것 같은데, 그렇다면 프록시가 제대로 동작하는게 맞는지 궁금합니다. private val advice : Runner = Advice() 코드를 보면 만약 빈으로 생성된 인자를 넣지 않는다면 기본 Advice() 를 생성해서 넣는다고 보이는데 이렇게 된다면 Advice 프록시가 자동으로 생성되지 않는다고 생각되고 그렇다면 aop가 작동되지 않을것 같은데 맞는지 궁금합니다.(그래서 기본값을 넣지 않는게 맞지 않나 궁금합니다.) 감사합니다.

  • kotlin
  • mysql
  • mongodb
  • kafka
  • redis
HAHA 댓글 2 좋아요 1 조회수 109

db 연결 url 오류

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] h2데이터베이스를 사용해보고 난 후 직접 mysql을 연결하여 해보고 싶어져 연동을 시도하였습니다. <오류화면> <application.properties> 그런데 이때 사진과 같은 오류가 발생합니다. application.properties에 mysql에 대한 정보를 정확히 적었으나 해당 오류가 발생합니다. application.properties의 위치는 src/main/resources에 위치하고 있습니다. 사진과 같이 build.gradle에 의존성도 추가해 두었습니다. 이 때, 영상에서 말씀해주신대로 빌드를 intelliJ로 설정해두면 해당 오류가 발생하나 gradle로 변경하면 정상적으로 db와 연결되어 작동합니다,, intelliJ가 속도가 빠르다고 하셔서 사용하고 있었으나 intelliJ로 빌드하면 오류가 발생하는지 모르겠습니다...ㅜ 코드가 정확히 작성되어도 해당 오류가 발생할 수 있는 것일까요? 이대로 gradle로 빌드하면서 나아가도 나중에 문제가 없을지 궁금합니다.

  • java
  • spring
  • mvc
  • spring-boot
전유민 댓글 2 좋아요 0 조회수 64

RabbitMQ에서의 트랙잭션 메시징 질문

해결됨

RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기

안녕하세요. 트랜잭션 메시징에 대해 궁금한 것이 생겨 질문드립니다. 트랜잭션 메시징은 데이터베이스 작업과 메시지 발행 작업을 원자적으로 수행하여 데이터의 일관성을 보장하는 것으로 알고 있습니다. 강의 내용 중 '트랜잭션 메시징의 한계'에서 분산 트랜잭션을 완벽하게 보장하지는 않는다고 하셔서 이를 DB의 트랜잭션과 메시지 전송의 트랜잭션이 서로 독립적으로 작동한다고 이해했습니다. 그럼 RabbitMQ에서 트랜잭션 메시징을 지원한다고 할 수 있나요?

  • java
  • spring-boot
  • jpa
  • msa
  • websocket
  • rabbitmq
ssunn0812 댓글 2 좋아요 0 조회수 144

npm 배포 후 import 시 오류사항

해결됨

[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스

npm 배포 후 import 해서 컴포넌트 사용할 때 첫 번째 사진과 같은 오류가 발생합니다. 'codecamp-ui' 설치 후 접속해도 동일한 오류가 나옵니다. 어떤 부분이 문제일까요..?

  • react
  • react-native
  • 하이브리드-앱
  • graphql
  • next.js
mh 댓글 2 좋아요 0 조회수 120

코글 인코딩이 뭔가요?

해결됨

모르면 야근하는 문자 인코딩 완전 정복

안녕하세요 강의 잘 듣고 있습니다. 강의 듣다가 용어에 관해 궁금한게 생겨서 질문 남겨봅니다. 1강 1분 27초쯤에 인코딩에 대한 구체화된 방법론을 설명하시면서 구글 인코딩이라고 하시는거 같은데 스크립트에서는 코글 인코딩이라고 표현되어서 확인 부탁 드립니다.

  • java
  • mysql
  • utf-8
  • endian
  • us-ascii
  • 인코딩
jh0508 댓글 2 좋아요 0 조회수 112

인기 태그

인프런 TOP Writers

주간 인기글