전체 글 182

[TFAE] 게시판 조회수를 올리는 다양한 방법(Insert)

이 글이 쓰여진 이유를 보고 오시면 더욱 도움이 될 것 같다. TM 락을 해결하기 위한 방법 중의 하나는 Insert로 처리를 하는 것이다. 3부작으로 급조 기획된 이 글이 너무 급박하기 마무리 지어지는 느낌이 없지 않아있지만, 삽질할 시간을 아끼는 것도 중요하니 결론을 얘기하자면 제목과 위에도 언급된 Insert로 처리를 하는 것이다. 소스코드로 빠르게 알아보자 먼저, 기존의 소스 코드 먼저 보자. MyBatis ORM Framework로 작성한 구문은 다음과 같다. 다음은 Insert 구문으로 바꾼 구문이다. 생각보다 심플하죠? 너무 기본적인 INSERT 구문이기 때문이다. 여기서 중요한 건 그 이후의 Service 단과 View단에서 조회 시 어떤 데이터 값을 뿌려주냐에 달렸다. 순차적으로 보자. ..

[TFAE] 게시판 조회수를 올리는 다양한 방법(Update)

이 게시물은 개발을 시작하는 사람들이라면 누구나 한 번 쯤은 만들어봤을 '게시판'에 대한 내용이다. 그 중에서도 게시판이라는 하나의 서비스를 만들기 위해, 점점 살을 붙이고 붙여서 완성해가면서 한 번 쯤은 고려해봤을 조회수에 대한 내용이다. 먼저, 조회수란? 사용자가 게시물을 한 번 클릭할 때, 해당 게시물의 조회수를 1씩 증가시키는 동작이다. 비즈니스 로직에 따라 다르겠지만 간단하게 알고리즘화를 하자면 다음과 같을 것 같다. 클릭 > 해당 게시물의 조회수 칼럼에 1증가 Update > 게시물 내용 프론트로 뿌리기(제목, 저자, 날짜, 조회수 등) - UPDATE 구문을 통한 조회수 업데이트 클릭한 게시물 번호에 해당하는 게시물의 INQUIRY_CNT(조회수)칼럼에 1을 추가해주는 로직이다. 쿼리는 다음..

[MVC] HTML, HTTP API, CSR, SSR

* HTML - HTML 페이지 자체를 넘기는 것 * HTTP API - 데이터를 넘기는 것 - JSON * 백엔드 개발자가 서비스를 제공할 때 고민해야 할 사항 3 가지 - 정적 리소스를 어떻게 제공할 것인가 - 동적인 HTML 페이지를 어떻게 제공할 것인가 - HTTP API를 어떻게 제공할 것인가 * SSR ( Server Side Rendering ) - HTML 최종 결과를 서버에서 만들어서 웹 브라우저에 전달 - 주로, 정적인 화면에 사용한다 - JSP, Thymeleaf * CSR ( Client Side Rendering ) - HTML 결과를 자바 스크립트를 사용하여 웹 브라우저에서 동적으로 생성해서 적용 - 주로 동적인 화면에 사용한다 - 구글 지도, 구글 캘린더

Programming/Spring 2022.06.20

[MVC] 동시요청 - 멀티쓰레드 (Multi-Thread)

* 배경 상황 : Http 요청 -> TCP/IP 연결 (Connection) -> 서블릿 객체 호출 이 때, 서블릿 객체를 호출하는 것은 무엇인가? 쓰레드다. * 쓰레드의 특징 - 애플리케이션 코드를 하나하나 순차적으로 실행하는 것이 쓰레드 - 예. 자바 main 메서드를 처음 실행하면 main 이라는 이름의 쓰레드가 실행 - 쓰레드는 한 번에 하나의 코드 라인만 실행 - 동시 처리가 필요하면 쓰레드를 추가로 생성 * 단일요청이라면? - 단일 요청이 왔다면 연결 시에 쓰레드를 하나 할당한 후, 서블릿을 호출해서 응답을 해주면 된다. * 근데 문제는 다중요청이라면? - 다중 요청(한 개 이상의 요청)시 한 개의 쓰레드를 점유하고 있기 때문에 다른 요청을 처리되지 못하고 대기하고 있게 되어 서비스 지연의 ..

Programming/Spring 2022.06.07

[JSP] JSP 웹 프로그램의 이해

* JSP : JAVA SERVER PAGE, HTML + JAVA * 자바를 잘 알아야한다. 선수지식 필수 * Model 1 동작방식 : 브라우저(클라이언트)의 요청(Request) -> JSP가 처리 -> DB 연동 후 -> JSP 처리 즉, 모든 처리를 JSP가 한다면 Model 1이다. EZ. * Model 1과 Model 2의 가장 큰 차이 : 고객의 요청(Request)을 누가 처리하는지 * Model 1은 고객의 정보를 JSP가 처리한다. * Model 2는 고객의 정보를 Servlet(Controller)이 처리한다. 여기서 Servlet이란 자바로 된 웹 페이지 기술이다. Pure JAVA * JSP는 HTML안에 쓰는 거고, Servlet은 JAVA 코드다. * 이제 Model 2를 쓰..

Programming/JSP 2022.03.21

[DB] 트랜잭션이란? Transaction

트랜잭션 하나의 작업을 수행하기 위해서 필요한 데이터베이스 연산을 묶어 놓은 것 데이터베이스 연산이라고하는것은 SELECT, UPDATE, INSERT, DELETE와 같은 행동을 한 것 예. 송금은 1. 보내는 사람의 계좌에서 돈을 빼고, 2. 받는 사람의 계좌에 돈을 추가하는 두 가지 행위가 묶인 한 작업이다. 트랜잭션 4가지 성질(ACID) Atomicity(원자성) : transaction의 작업이 부분적으로 성공하는 일이 없도록 보장하는 성질이다. 송금하는 사람의 계좌에서 돈은 빠져나갔는데 받는 사람의 계좌에 돈이 들어오지 않는 일은 없어야 한다. Consistency(일관성) : transaction이 끝날 때 DB의 여러 제약 조건에 맞는 상태를 보장하는 성질이다. 송금하는 사람의 계좌 잔고..

Computer Science 2022.03.11

[DB] 인덱스를 사용하는 이유

인덱스란 무엇인가?? 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조 실생활에서 보는 인덱스 백과사전이나 책들을 보면 색인(인덱스)라는 페이지를 앞쪽 혹은 뒤쪽에서 볼수있다. 인덱스 관리 인덱스는 항상 최신 상태를 유지해야 원하는 값을 빠르게 탐색할수있다. 하지만 인덱스에서는 DB와 달리 Insert, Delete, Update가 달라서 추가적인 작업이 필요하다. INSERT : 새로운 데이터에 대한 인덱스를 추가 DELETE : 삭제하는 데이터의 인덱스를 사용하지 않는다는 작업을 진행 UPDATE : 기존의 인덱스를 사용하지 않음 처리하고, 갱신된 데이터에 대해 인덱스를 추가 이러한 이유로 빈번한 DELETE와 UPDATE를 하면 내가 가진 DB의 ..

Computer Science 2022.03.10

[운영체제] 가상 메모리, Virtual Memory

가상 메모리란? 물리적인 메모리의 크기 한계를 극복하기 위한 기술 가상메모리를 사용하면 100MB메모리에 200MB의 프로세스를 수행할 수 있다. (수행에 필요한 프로그램의 일부분을 메모리에 올리는 방법) 가상메모리가 구동하는 아이디어 cpu가 프로세스의 공간을 참조할때에는 먼저 가상메모리를 참조한다. 가상메모리는 실제 메모리를 참조한다. 1→2 의 변환과정을 빠르게 해주기 위해서 MMU라는 하드웨어칩을 지원받는다. MMU(Memory Management Unit): CPU에 코드 실행 시, 가상 주소 메모리 접근이 필요할 때 해당 주소를 물리 주소값으로 변환해주는 하드웨어 장치. 페이징 시스템(Paging System) : 페이징 시스템은 가상메모리 구현에서 가장 많이 쓰이는 기술이다. Page : 고..

Computer Science 2022.03.06

[운영체제] Thread-safe

들어가기에 앞서...참고하기 좋은 게시물 링크를 달아놓았다. 나중에 공부할 때 다시 참고하자! [운영체제] 프로세스와 쓰레드의 차이 프로세스와 스레드의 차이 프로세스 현재 실행 중인 프로그램 메모리 위에 적재되어 cpu의 할당을 받을 수 있다. 동적 메모리인 힙을 할당받을 수 있다. 프로세스의 구조 text(code): 일반적인 코드 supreme-ys.tistory.com [운영체제] Multithread, 멀티쓰레드 멀티 스레드 한 프로세스 내에서 여러 스레드를 두는 것 멀티 프로세스 대신 멀티 스레드를 사용하는 이유 스택을 제외한 자원을 공유하기 때문에 자원의 효율성 증대 프로세스 생성 비용보다 supreme-ys.tistory.com [운영체제] 사용자 수준 쓰레드와 커널 수준 쓰레드 쓰레드는 뭐..

Computer Science 2022.03.06

[운영체제] 캐시 메모리, Cache Memory

캐시 메모리란 주기억장치에서 자주 사용하는 프로그램 or 데이터를 저장해 속도를 빠르게 하는 메모리 주기억장치와 캐시 기억 장치 사이에서 정보 옮기는 행위를 사상(매핑)이라고 함 매핑의 3가지 방법 직접 매핑: 메인 메모리를 여러 구역으로 분할하여 캐시 슬롯과 매핑 장점: 절차가 단순하고 신속 단점: 높은 캐시 미스율 연관 매핑: 메인 메모리의 각 블록이 캐시 어느 슬롯이던 적재 가능 장점: 지역성 높은 접근 시 캐시 적중률이 높다. 단점: 구현이 어려워 구현 비용이 상승한다. 집합 연관 매핑: 캐시와 메모리가 M대 1로 대응한다. 장점: 앞의 두 가지 매핑 방법의 장점을 수용 단점: 구현 비용이 비쌈 캐시 메모리 교체 알고리즘의 종류 Random - 교체될 페이지를 임의 선정 - 오버헤드가 적음 FIF..

Computer Science 2022.03.05