공통업무를 프로그램 흐름의 앞, 중간, 뒤에 추가하여 자동으로 처리할 수 있는 방법이 세 가지인데, Filter, Interceptor, AOP이다. Interceptor와 Filter는 Servlet 단위에서 실행되고, 반면 AOP는 메서드 앞에 Proxy패턴의 형태로 실행된다. 요청이 들어오면 Filter -> Interceptor -> AOP -> Interceptor -> Filter순이다. Filter는 동일한 웹 어플리케이션의 영역 내에서 필요한 자원들을 활용하고, 웹 어플리케이션 내에서 동작하므로 스프링 Context에 접근하기 어렵다. Interceptor는 스프링에서 관리되기 때문에 스프링 내의 모든 객체에 접근 가능하다. https://goddaehee.tistory.com/154 [S..
여러 개의 스레드가 한 개의 자원을 사용하고자 할 때, 현재 데이터를 사용하고 있는 해당 스레드를 제외하고 나머지 스레드들은 데이터에 접근할 수 없도록 막는 개념이다. 너무 남발할 경우 프로그램 성능 저하를 일으킬 수 있다. Synchronized 키워드를 사용하면 자바 내부적으로 메서드나 변수에 동기화를 하기 위해 block과 unblock 처리를 하게 되는데 이런 처리들이 만약 너무 많아지게 되면 오히려 프로그램 성능 저하를 일으킬 수 있기 때문이다. 출처 : https://coding-start.tistory.com/68 java - synchronized 란? 사용법? java - synchronized 란? 사용법? 멀티스레드를 잘 사용하면 프로그램적으로 좋은 성능을 낼 수 있지만, 멀티스레드 ..
Cache Manager. 캐시는 동일한 요청이 들어오면 복잡한 작업을 수행해서 결과를 만드는 대신 이미 보관된 결과를 바로 돌려주는 방식이다. 사용자가 만드는 데이터보다는 서비스에서 제공하는 컨텐츠(뉴스, 허브, 실시간 검색어 등)에 대부분 적용해서 사용중이다. 아래의 조건을 만족한다면 캐시 사용을 고려해보는 것이 좋다. 반복적으로 동일한 결과를 돌려주는 작업 각 작업의 시간이 오래 걸리거나 서버에 부담을 주는 경우(외부 API/DB 데이터호출 등) 출처 : https://jojoldu.tistory.com/57 SpringBoot + Ehcache 기본 예제 및 소개 팀내 신입사원들이 입사하게 되어 간단하게나마 참고할 수 있도록 Spring Cache에 대해 샘플예제와 소개를 정리하게 되었다. 아주 ..
오픈 소스 소프트웨어로 다양한 서비스의 성능을 분석하고 측정하기 위한 도구이다. Sampler : 사용자의 행동 대행(Request) Listener : 처리결과에 대한 data 표시(Response) ThreadGroup : 각종 Test 진행 JMeter 안에는 여러 개의 Thread를 구성할 수 있으며, 하나의 Thread당 하나의 URL을 매핑시킬 수 있다. 하나의 Thread를 하나의 ThreadGroup으로 생성하여 관리한다. Number of Threads(Users) : 동시 사용자 수 Ramp-up Period(in Seconds) : 사용자(Thread) 증가 시간, 사용자를 서서히 증가시킬 때 사용 Loop Count : 반복횟수 https://ko.vvikipedla.com/wiki..
포트번호는 16비트로 이루어져 있어서, 총 65,536개(2^16)의 포트번호가 존재할 수 있다. 0~1023번은 잘 알려진 포트(Well-known port), 1024~49151번은 등록된 포트(Registered port), 49152~65535번은 동적 포트(Dynamic Port). 포트 TCP UDP 설명 상태 20 TCP 파일 전송 프로토콜 (FTP, File Transfer Protocol) - 데이터 포트 공식 21 TCP 파일 전송 프로토콜 (FTP, File Transfer Protocol) - 제어 포트 공식 22 TCP 시큐어 셸 (SSH, Secure SHell) - ssh scp, sftp같은 프로토콜 및 포트 포워딩 공식 23 TCP 텔넷 프로토콜 (Telnet Protoco..
보시다시피 이렇게 구멍이 뻥뻥 뚫린 잔디밭으로 일일커밋 1일 회고를 작성해도 되는지 모르겠지만 불성실했던 날보다 성실했던 날이 더 많기 때문에 회고를 작성해본다. 일일커밋으로 얻고자 했던 것 내가 벌거벗은 이유는 쉽게 눈에 띄기 위함이고, 내 앞머리가 무성한 이유는 사람들이 나를 보았을 때 쉽게 붙잡을 수 있게 하기 위함이며, 내 뒷머리가 대머리인 이유는 내가 지나가고 나면 다시는 사람들이 나를 붙잡지 못하도록 하기 위함이다. 어깨와 발에 날개가 달린 이유는 그들 앞에서 최대한 빨리 사라지기 위해서이다. 나의 이름은 기회이다. 기회의 신 카이로스 나는 꾸준함이 중요하다고 믿는다. 위 글처럼 기회는 찰나에 왔다 사라지기 때문에 그 기회를 잡기 위해선 평상시에 준비가 되어 있어야 한다고 생각하기 때문이다. ..
www.purin-it.com/spring-boot-oracle Spring BootでOracle接続処理を実装してみた|ITエンジニアとして経験・学習したこと Spring BootのWEBアプリケーションを開発する際、なんらかのデータベースにアクセスすることが多いが、Sprin www.purin-it.com 위 링크를 참고하여 Gradle 프로젝트를 JPA로 Oracler과 연결했다. 1. 사용할 테이블 만들고 확인용 더미 만들어주기 2. 프로젝트 - [lib]폴더에 ojdbc.jar 넣어주기 3. build.gradle에 아래의 코드 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' complie files('..
학원 수료하고 나서 강제성이 없어서 풀어지기보다 더더욱 열심히 하려고 노력했다. 4월 11일에 스프링 핵심 원리 강의를 끝내고, 취업준비하면서 개인프로젝트도 하는 와중에 스프링 MVC 강의도 틈틈이 들어서 일찍 끝낸 것 같다. 이 강의 같은 경우는 스프링의 MVC 구조에 대해 되게 상세하게 설명해주는데, 난 그 부분은 다시 한 번 들어야할 것 같다... 😅 뷰리졸버까지는 아는데, 핸들러매핑부터 잘 이해가 안 갔다. 그래도 이 강의를 들으면서 스프링에 더욱 익숙해질 수 있었고, Rest API에 대한 이해도 높아졌으니 얻은 게 많다. 이어지는 2편은 5월말에 나온다고 하던데 이제 2편 기다리면서 1편 복습해야지.