분류 전체보기 23

[CS] Process, Thread

Process 운영체제(OS)로부터 자원을 할당 받는 작업의 단위(Task와 같은 의미) 코드의 집합으로 이뤄진 정적인 상태인 프로그램이 실행되어 동적인 상태가 되는 것이 프로세스. 여러 개의 프로세스를 사용하는 것 = 멀티 프로세스 Thread 할당 받은 자원을 이용해 실행되는 흐름의 단위, 프로세스 내에 여러 개 생성 가능 기본적으로 한 프로그램은 한 개 이상의 쓰레드를 실행. 예를 들어, 엑셀을 사용하는 경우. 글자를 입력 받는 쓰레드, 파일을 디스크에 저장하는 쓰레드, 출력할 내용을 프린터에 보내는 쓰레드, 입력하는 동안 맞춤법 검사를 수행하는 쓰레드 등이 생성됨. 즉, 엑셀이라는 프로세스에 여러 개의 쓰레드가 있는 것. (여러 개의 쓰레드 = 멀티 쓰레드) 실제로 프로세스는 하나의 어드레스를 갖..

CS 2022.11.26

[Error] MyBatis 오류: Invalid bound statement (not found)

MyBatis 오류: Invalid bound statement (not found) Bitmovie 프로젝트에서 다음과 같은 에러 발생 StoreSql.xml namespace 주소를 잘못 입력 SELECT vou_name, vou_price, vou_image FROM voucher_tb SELECT vou_name, vou_price, vou_amount, vou_image FROM voucher_tb WHERE voucher_pk = #{voucher_pk} => 참조하는 Repository를 정상적으로 수정 마이바티스(MyBatis) 쿼리를 실행하는 순간 'Invalid bound statement (not found)' 오류가 발생한다면? 왜 발생할까? Mapper 인터페이스와 XML의 오타 ..

Error 2022.11.25

[CS] Transaction

Transaction이란? 트랜잭션(Transaction 이하 트랜잭션)이란, 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위를 뜻한다. 데이터베이스의 상태를 변화시킨다는 것은 무얼 의미하는 것일까? 간단하게 말해서 아래의 질의어(SQL)를 이용하여 데이터베이스를 접근 하는 것을 의미한다. SELECT INSERT UPDATE DELETE 착각하지 말아야 할 것은, 작업의 단위는 질의어 한문장이 아니라는 점이다. 작업단위는 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미한다. 게시판을 예로 들어보자. 게시판 사용자는 게시글을 작성하고, 올리기 버튼을 누른다. 그 후에 다시 게시판에 돌아왔을때, 게시판은 자신의 글이 포함된 업데이트된 게시판을 보게 된다. 이러한 상황을 데이..

CS 2022.11.24

[MySql] Group By

[MySql] group by 특정 컬럼을 그룹화 사용법 컬럼 그룹화 SELECT 컬럼 FROM 테이블 GROUP BY 그룹화할 컬럼; 조건 처리 후에 컬럼 그룹화 SELECT 컬럼 FROM 테이블 WHERE 조건식 GROUP BY 그룹화할 컬럼; Final Project에서 마이페이지 무비로그에 들어가면 관람한 영화 목록을 모두 출력 문제는 아래 사진처럼 예매수량에 맞춰 같은 영화도 복수로 출력됨 MyBatis SQL문 → select 반환 값이 list SELECT b.book_the_name AS theater, b.book_adult_cnt AS adult, b.book_youth_cnt AS youth, st.scrt_date AS date, st.scrt_stime AS begin, st.sc..

DataBase 2022.11.22

[SpringBoot][React] coolSMS 휴대전화 인증

coolSMS를 이용해 회원가입 또는 가입 후 휴대전화 인증 구현coolSMS 사용 준비 coolSMS 사용 준비 coolSMS 회원가입 하기 coolSMS 개발자센터에 접속 쿨에스엠에스 - 우주에서 가장 빠르고 안정적이고 쉬운 문자메시지(SMS) 서비스를 제공합니다. 알림톡, 문자메시지를 쉽고 빠르게 전달해 드립니다. developer.coolsms.co.kr 아래 화면에 보이는 step1과 step2를 차례대로 실행 ⇒ API KEY와 API SECRET 생성 후, git에서 SDK 다운로드⇒ 인텔리제이 기준 (File - Projects Structure - Libraries - + 버튼 클릭 후 추가) git에서 다운받은 SDK의 압축을 풀고 lib 폴더안에있는 두개의 파일을 라이브러리에 추가 ⇒..

SpringBoot 2022.11.21

[Java] String, StringBuffer, StringBuilder

Java에서 문자열을 다루는 대표적인 클래스로 String, StringBuffer, StringBuilder가 있다. 연산이 많지 않을 때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 가능성은 거의 없다. 그러나 연산횟수가 많아지거나 멀티쓰레드, Race condition 등의 상황이 자주 발생한다면 각 클래스의 특징을 이해하고 상황에 맞는 적절한 클래스를 사용해야한다. String vs StringBuffer / StringBuilder String과 StringBuffer / StringBuilder 클래스의 가장 큰 차이점은 String이 불변(immutable)의 속성을 갖는다는 점이다. String str = "hello"; // String str = new String("hell..

Java 2022.11.20

[CS] Protocol 이란?

프로토콜(Protocol)이란? 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 즉 통신 규약 및 약속이다. 프로토콜의 기본 요소 구문(Syntax) : 전송하고자 하는 데이터의 형식(Format), 부호화(Coding), 신호 레벨(Signal Level) 등을 규정 의미(Semantics) : 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정 시간(Timing) : 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정 프로토콜의 구성 프로토콜은 두 가지로 이루어져 있으며 물리적 측면과 논리적 측면으로 나뉜다. 물리적 측면: 자료 전송에 쓰이는 전송 매체, 접속용 단자 및 전송 신호, 회..

CS 2022.11.19

[SpringBoot] Scheduler

@Scheduled 특정 메서드에 @Scheduled 어노테이션을 선언하면 설정한 값에 따라 주기적으로나 특정 시간이나 기간에 해당 메서드를 실행시킬 수 있다. Spring Scheduler는 별도의 추가적인 의존성이 필요하지 않다. Spring Boot starter에 기본적인 의존성으로 제공된다. 사용하기 위해서는 @EnableScheduling 어노테이션을 붙여주면 된다. 1. Scheduling 기능 활성화 @SpringBootApplication이 선언된 곳에 @EnableScheduling 어노테이션을 추가해 스프링 스케줄링 기능을 활성화시킨다. package com.example.bitmovie; import org.springframework.boot.SpringApplication; im..

SpringBoot 2022.11.18

[Spring] @RequestBody

@RequestBody 결론 : @PostMapping을 사용한다고 해서 무분별하게 @RequestBody를 사용할 것이 아니라 xml이나 JSON 형태로 요청할 경우에만 파라미터 타입까지 정확하게 설정하면서 사용한다. 1. 프런트에서 구현되지 않은 백엔드 기능 체크하다가 다음 코드 확인 //비밀번호 변경할 때 아이디 참조해서 기존 비밀번호 가져오기(입력한 비밀번호와 일치하는 지 확인용) @PostMapping("/selectpass") public boolean selectPass(@RequestBody String u_id, String u_pass) { System.out.println("ID : " + u_id); System.out.println("Pass : " + u_pass); return..

Spring 2022.11.17

[Spring] @RequestParam

@RequestParam 컨트롤러를 구현할 때 가장 많이 사용되는 어노테이션 : @RequestParam @RequestParam은 HTTP 요청 파라미터를 컨트롤러 메서드의 파라미터로 전달 받을 때 사용 즉, JSP에서 request.getParameter(); 와 비슷함 @RequestParam 어노테이션이 적용된 파라미터는 기본적으로 필수 파라미터 @RequestParam 어노테이션에 명시한 HTTP 요청 파라미터가 존재하지 않을 경우, 스프링 MVC는 잘못된 요청을 의미하는 400 응답 코드를 웹 브라우저에 전송 필수가 아닌 파라미터일 경우, required 속성 값을 false로 지정(따로 작성하지 않을 시, 기본값 true) @RequestParam(value="query", required=..

Spring 2022.11.16