본문 바로가기

반응형

컴퓨터

(71)
자바 고급 스터디 1. 스트림, 람다 (stream, lamda) 자바 고급 스터디 목록 공부 시간 : 2021/03/09 02:00 ~ 03:40 / 2021/03/10 12:00 ~ 12:30 / 2021/04/07 05:30 ~ 05:55 1주차. Stream, lamda에 대해서 아는대로 설명해보세요. 스트림과 람다는 자바8에서 새롭게 생긴 기술 중 하나이다. 주제는 아는대로 설명하시오.. 이지만 이미 알고 있는 기본적인 사용 방법은 생략하고 고오급 내용이라 생각되는 부분만 정리해보려고 한다. stream의 작동순서 list에 "aaa" , "aa"가 있을때 list.stream() .filter(str->{ System.out.println("filter() 작동"); return str.contains("a"); }) .map(str->{ System.out..
자바 고급 스터디 주제 정리 최근 1~2년 정도간 매일매일 자바를 사용하고 있다. 딱히 사용하는데 문제는 없었고, 문제가 생겨도 어떠한 키워드로 검색을 해야할지 판단할 정도의 수준까지는 달성했다고 생각한다. 하지만 최근 좋은 회사에 다니는 고수 개발자분들과 대화를 하는 상황이 종종 생기는데, 그분들의 대화를 듣다보면 내가 사용하고 있는 자바와 조금은 다른 것 같다는 생각이 들곤했다. 그래서 좀 더 deep 하고 고오오~~급 내용들을 공부해야 겠다는 생각을 하였고 자바 고급내용 스터디를 구성하였고 주제를 정해보았다. 주제는 평소 자바를 사용하면서 궁금했지만 깊이있게 공부하지 않았던 부분과 현직 개발자분들께서 추천해주신 주제, 구글에 자바고급이라고 치면 공통적으로 많이 나오는 주제들로 선정하였다. 아래 목록에서 1번부터 1주일에 하나씩..
관계형 db vs 그래프 db에 대한 고민 신규 프로젝트를 진행하는 도중 db 설계한 내용을 시니어 개발자분께 보여드렸더니, 해당 도메인에 관계형 db를 사용 할 시 성능문제가 발생 할 수 있다는 피드백을 받았고, 그래프 db를 사용하는 것을 검토해보라는 피드백을 받아 내용을 정리해보려고 합니다. 먼저 그래프 db는 관계형 db와 아래와 같은 차이점이 있습니다. 새로운 속성 추가시 관계형 db 새로운 칼럼을 추가하고, 외래키 등을 이용해 연관관계를 맺어주고 제약조건 등을 설정해주는 과정을 거쳐야한다. 그래프 db 새로운 노드를 추가하고 다른 데이터와 연결해주는 과정만 거치면 쉽게 속성을 추가 할 수 있다. 처리 속도 관련 관계형 db 다른 테이블을 join해야 하는 경우가 많을시, depth가 깊어지게 될 시 성능에 대한 부담이 계속해서 증가한다..
robots.txt 정확히 알고 사용하기 / 무단 크롤링 불법? 합법? 1. robots.txt 란? 구글 robots.txt 파일을 사용하면 크롤러가 사이트에 요청할 수 있는 페이지/파일과 요청할 수 없는 페이지/파일을 검색엔진 크롤러에 알려 줄 수 있습니다. 이 파일은 주로 요청으로 인해 사이트가 오버로드되는 것을 방지하기 위해 사용하며,Google로부터 웹페이지를 숨기기 위한 메커니즘이 아닙니다.웹페이지가 Google에 표시되지 않도록 하려면noindex명령어를 사용하거나 비밀번호로 페이지를 보호해야 합니다. 출처:developers.google.com/search/docs/advanced/robots/intro?hl=ko 위키백과 로봇 배제 표준(robots exclusion standard),로봇 배제 프로토콜(robots exclusion protocol)은웹 사..
[Spring JPA] OneToOne N+1 문제 (원인 해결방법 포함) 먼저 문제 상황은 이러하다. 상황 설명 : 1. bbs와 user 는 ManyToOne 양방향 관계이고 Lazy로딩으로 설정되어있다. 2. 게시글을 페이징하여 가져올 필요가 있다. 게시글을 가져올때 작성자 닉네임을 함께 가져와야 하기 때문에 user 테이블과 fetch join(EntityGraph)를 통해 성능최적화를 하였다. 3. 위 사항까지만 있었을때는 쿼리 한번으로 모든 정보를 가져올 수 있었고, 성능문제가 발생하지 않았다. 4. 새로운 기능 추가를 위해 game 테이블을 추가로 생성했다. user 와 game은 OneToOne양방향 관계이며 Lazy로딩으로 설정되어있다. 5. game테이블을 생성했는데, 예상하지 못한 곳에서 문제가 발생했다. 게시판을 조회하니 아래와 같은 의도하지 않은 쿼리가 ..
[스프링] spring bean 과 java bean의 차이점! 먼저 spring bean은 Spring Ioc 컨테이너에 등록되어 관리되고 있는 객체라고 말 할 수 있다. spring bean을 IoC 컨테이너에 등록하는 방법은 크게 2가지로 나뉜다. 1. Component Scan을 통한 등록 ( annotation을 이용한 방법 )2. 빈 설정파일에 직접 등록 @Component 어노테이션이 붙어 있는 클래스, 인터페이스 등은 자동으로 IoC컨테이너에 등록되게 된다.@Controller, @Service, @Entity 등도 클래스 파일을 열어보면 내부적으로 @Component 어노테이션을 사용한다. 빈 파일에 직접 등록하는 방식은 아래와 같이 진행된다.@Configuration public class SampleConfiguration { @Bean publi..
[해결방법] Git 협업 Your local changes to the following files would be overwritten by merge: 다른 사람이 수정한 코드를 pull 하려 했을때 아래와 같은 오류가 발생했다. Your local changes to the following files would be overwritten by merge: { 파일이름 } 내가 수정한 파일을 누군가가 새로운 내용으로 push 했을때 발생 할 수 있다. 해결 방법 : 1. 현재 버전관리가 되고 있는 파일들을 임시로 백업해준다. git stash 2. master에서 pull 한다. git pull origin master 3. 1번에서 백업했던 내용을 불러오고 삭제한다 git stach pop
[해결방법] [spring boot] ResourceHttpRequestHandler - Path with "WEB-INF" or "META-INF" spring boot 에서 템플릿 엔진을 thymeleaf 에서 jsp로 바꾼후 페이지를 로드하려 했을때 아래와 같은 오류가 발생했다. ResourceHttpRequestHandler - Path with "WEB-INF" or "META-INF": 로그를 살펴봤을때 WEB-INF/views/main.jsp 경로를 표시해주는 것으로 보아 controller와 application.yml에서 아래와 같이 지정해준 경로는 제대로 적용 되는 것 같다. 원인 : spring boot 내장 톰캣을 사용하는 경우 jsp페이지를 처리할 서블릿을 추가하지 않아 발생하는 오류 입니다. 해결방법 : 아래와 같은 의존성을 추가해주면 됩니다. gradle : compile('org.apache.tomcat.embed:tomc..

반응형