본문 바로가기

분류 전체보기93

Thread란? Process와 Thread의 차이/ Thread Pool? Process : OS로 부터 자원을 할당받아 실행중인 프로그램. 즉 메모리에 올라가서 실행중인 프로그램 단위. Thread : Process 내 에서 Task를 처리하는 단위. 따라서 한 Process 내의 Thread들은 자원을 공유. 이 그림만 외우면 완벽하다! 장/단점비교 Process Thread 자원공유(서로간) X O Context Swiching 속도 느림 빠름 동기화문제 X O Thread Pool : Thread의 생성및 제거에 의한 오버헤드를 줄일 수 있어 작업효율이 향상됨. 단순하게 생각하면, 처리가 필요한 Task가 쌓이는Task Queue에서 Thread Pool의 Thread들이 Task들을 꺼내 처리하는 구조라고 생각하자. 이그림만 외우면 완벽해! 만약 웹 서버에 수많은 페이.. 2019. 5. 22.
(JPA) JPA 영속성이란? 간단 요약 정리! (영속성 상태 / 기능) JPA 영속성 1. 영속성 컨텍스트 : Entity가 영구적으로 저장되는 환경 (논리적인 개념) 2. Entity Manager : Entity를 영속성 컨텍스트에 등록하거나 삭제 등의 기능을 담당 3. Entity의 상태 - 1. 비영속 : Entity가 영속성 컨텍스트에 등록되어 있지 않음 - 2. 영속 : Entity가 영속성 컨텍스트에 등록되어 있음. (기능을 제공받을 수 있음) - 3. 준영속 : Entity가 영속 상태에서 해제되었음 ( 하지만 영속성 컨텍스트에 식별정보는 남아있다 -> 다시 영속상태로 되돌릴 수 있음) - 4. 삭제 : Entity가 영속성 컨텍스트에서 아예 삭제되었음. 4. 제공받을 수 있는 기능 - 1. 1차 캐싱 지원 : Entity의 조회가 필요한 상황에서 영속성 컨텍.. 2019. 4. 23.
(마이크로 서비스 vs 모놀리식 아키텍처) MicroService vs Monolithic Architecture 간단 소개 및 주관적 의견 모놀리식 아키텍처 (Monolithic Architecture) 장점 1. 어떤 기능(서비스)이든지 개발되어있는 환경이 같아서 복잡하지않다. 2. 쉽게 고가용성 서버 환경을 만들 수 있다. ( 같은 어플리케이션으로 하나더 만들면 됨) 3. End-to-End 테스트가 용이하다. (MSA의 경우 테스트에 필요한 서비스들을 모두 동작시켜야함) 단점 1. 한 프로젝트의 덩치가 너무 커져서 어플리케이션 구동시간이 늘어나고 빌드,배포 시간도 길어진다. 2. 조그마한 수정사항이 있어도 전체를 다시 빌드하고 배포를 해야한다. 3. 많은 양의 코드가 몰려있어 개발자가 모두를 이해 할 수 없고 유지보수도 힘들다. 4. 일부분의 오류가 전체에 영향을 미친다. 5. 기능별로 알맞는 기술, 언어, 프레임워크를 선택하기가 까다.. 2019. 4. 15.
(JPA) JPA란? JPA는 어떻게 구현되어있을까? JPA 란? (Java Persistence API) 자바 어플리케이션에서 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. 기본적인 CRUD 기능들이 정의되어있다. EntityManager라는 인터페이스에 메소드를 정의해놓았다. 그렇다면 구현체는? JPA의 구현체는 Hibernate이다. 그말은 JPA를 사용하기위해 반드시 Hibernate를 구현체로 사용할 필요는 없다는 뜻. 하지만 Hibernate가 신뢰할 수 있는 검증된 라이브러리이기 때문에 사용. 2. Hibernate EntityManager와 관련된 클래스를 구현해놓았다. 실제 데이터베이스와 통신하는 코드는 이 코드라는 뜻! 3. Spring Data JPA Repository라는 인터페이스를 제공한다. JPA를 한단계 추상화 시킨것. .. 2019. 4. 15.
(Spring) Spring IOC , Spring DI Spring IOC : (Inversion Of Control) 제어의 역전 Ex) DAO 클래스의 DB커넥션 얻어오는 메소드. -> 커넥션 얻어오는 기능을 하는 Conn 클래스로 분리 -> DAO 클래스는 Conn 클래스를 받아 DB와 연결 후 기능 수행 (생성자나 메소드로 받음) -> 받는 부분을 Conn 인터페이스로 한다면 Conn 구현체를 바꿔가며 사용할 수 있어서 DAO는 연결설정과 관련없이 동작가능 원래는 Conn 클래스를 new하는 형식으로 구현되어있겠으나(직접 생성 및 사용) 이것을 위처럼 바꾸면 제 3자가 Conn 클래스를 넘겨주는 것이므로 제어가 역전되었다고 하는 것이다! (오브젝트에 대한 제어권이 넘어감) Spring DI : (Dependency Injection) 의존 관계 주입 .. 2019. 4. 8.
비슷한 유형의 페이지의 중복되는 코드 모듈화 진행 베스트 상품목록, 할인 상품목록, 신상품목록 등 목록이 표시되는 페이지가 여러개가 존재한다. 이페이지들의 코드를 보면 목록부분은 모두 비슷한 코드로 작성되어있는데 각각 따로 구현되어있어 유지보수가 매우 비효율 적이었다. (ex : 목록페이지에서 상세페이지로 이동후 뒤로가기를 실행하였을때 이전 상태를 유지하기위해 저장되어야하는 정보가 필요한데 같은 코드이지만 해당코드를 각 페이지마다 일일히 추가해주어야함) 따라서 목록을 세팅하는 코드부분을 모듈화하여 공통 js로 분리 후 사용하도록 하였고 이후 다른 QA요청 시 매우 빨리 처리가 가능하였다. 2019. 4. 2.
페이지 이동중 뒤로가기에서 양식제출 오류 페이지 이동중 뒤로가기에서 양식제출 오류 상단 네비게이션 메뉴에서 다른 카테고리로 이동 후 뒤로가기를 하면 오류가 발생하였다. (양식 제출 확인) 이유 : 다른 카테고리 이동시 POST 방식으로 페이지를 호출하기 때문에 오류가 발생함. (Chrome 에서 post 요청으로 페이지 이동후 뒤로가기를 하면 다시 양식을 제출하겠냐는 확인 페이지를 제공하도록 되어있다.) GET방식으로 수정하고 다른 메서드들도 RESTFUL 하게 수정하였다. 2019. 3. 29.
(Eclipse 서버시작 오류) Mac 사용중인 포트 확인/ 사용중인 포트 중지 Mac 사용중인 포트 확인/ 사용중인 포트 중지 이번에 근무하게된 회사가 Eclipse를 사용 중인데 자잘한 버그가 많더라구요. 3년전쯤에 공부하면서 버그를 접했던 기억을 더듬어보니 서비스 Start 할 때 났던 에러를 또 접했습니다. "8080포트 사용불가" 이것은 서비스 Stop이 제대로 되지않아서 발생하는 문제로 기억되고 터미널에서 해당포트사용을 중지시켜주어 해결하였습니다. Mac 기준으로 sof -i tcp:8080 사용중인 포트의 pid를 확인하고 sudo kill -9 {pid} 위 명령어에 해당 pid를 넣어 kill하면 정삭적으로 동작 됩니다! 2019. 3. 25.
(LINE+)(네이버 라인) 네이버LINE+ 인턴 코딩테스트 문제, 후기 네이버LINE+ 인턴 코딩테스트 후기 안녕하세요~ 이번에 네이버 LINE+ 인턴 코딩테스트 후기 남깁니다. 먼저 서류접수는 지원하고싶은 분야 중 선택하여 지원 하였고 통과하였습니다. (거의 다 통과 시켜준다고 하네요.) 서류 발표가 나고 2일 정도 후 바로 코딩테스트를 온라인으로 보았습니다. 총 5문제가 나왔고 제한시간은 3시간! C / C++ / Python / Java 등 원하는 언어로 문제를 풀 수 있도록 되어있었어요. 문제 유출은 금하고있어서 완전 자세하게는 알려 드리지 못하지만 간단하게 알려드릴게요. 첫문제는 다각형 문제 였는데, 삼각형 사각형등을 가지고 공식을 만들어 푸는 문제였습니다. 두번째 문제는 문자열 관련 문제였습니다. 특정조건에 맞는 문자열을 찾아 해당 문자열이나 길이를 반환하는 문제.. 2019. 3. 25.