공부일기

삐약삐약 개발일기

전체 글 12

웹소켓과 리스너

1. 리스너 - 웹소켓(WebSocket) 통신에서 "리스너(listener)"는 웹소켓 연결이 설정된 후, 서버와 클라이언트 간에 발생하는 다양한 이벤트를 감지하고 처리하는 역할  - 주로 이벤트 핸들러로 작동, 클라이언트나 서버에서 발생하는 특정 이벤트에 반응하여 적절한 작업을 수행 ○ 웹소켓에서 일반적으로 사용하는 이벤트 i. open: 웹소켓 연결이 성공적으로 열렸을 때 발생. ii. message: 서버나 클라이언트가 메시지를 보냈을 때 발생. iii. close: 웹소켓 연결이 종료될 때 발생. iv. error: 웹소켓 연결에서 에러가 발생했을 때 발생. - 역할 : 웹소켓 연결 상태와 메시지 송수신 상태에 따라 적절한 행동을 취하도록 돕는 것        이를 통해, 연결을 관리, 데이터 ..

기술 기초 2025.01.17

refonly란?

refonly 란 플레이백(과거 탐색)에서 사용되는 개념으로 시간은 정방향으로 진행이 되고 있는데 우리가 영상을 보여줄때는 과거로 돌아가야하는 상황이라 생긴 개념이다. I p p p p 로 영상이 들어오게 되면 과거로 가기 위해서는 p에서 앞의 p로 돌아가야 하는 상황인데 모든 p프레임은 i프레임을 참조하게 되어있다. 그렇다면 이때 뒤에 있는 p가 이전의 p로 돌아가려면 i로 갔다가 앞에 있는 p p p를 거쳐서 보여주게 되어야한다. 즉 영상은 바로 이전의 과거p가 아닌 더 이전의 과거i를 갔다가 정배속pp으로 가게되는 형태를 보여지게 된다. 따라서 이때 refonly라는 개념이 등장하게 된다. 앞서 있는 ippp는 ro(refonly)를 가지고 있게 되면 ro값이 있는 것은 디코딩만하고 랜더링은 하지 ..

기술 기초 2025.01.16

RAM과 ROM의 기본 개념

1. RAM (Random Access Memory) • RAM은 임시 저장 공간, 컴퓨터가 현재 실행 중인 프로그램이나 데이터들을 일시적으로 저장하는 메모리 • 작동 원리: ○ 프로그램을 실행할 때, 컴퓨터는 **디스크(하드디스크(HDD) 또는 SSD)**에 저장된 파일을 RAM으로 복사하여 처리 ○ 빠른 읽기/쓰기 속도를 제공하여 프로그램이 원활하게 실행 ○ RAM이 꽉 차면, 시스템은 하드디스크나 SSD를 사용하여 가상메모리(virtual memory)를 생성 ○ 가상메모리는 물리적인 RAM이 부족할 때 디스크 공간을 메모리처럼 사용하는 기법 ○ 단점: 가상메모리를 사용하면 디스크의 속도가 RAM보다 훨씬 느리기 때문에, 프로그램 실행 속도가 느려질 수밖에 없음 2. ROM (Read-Only Me..

기술 기초 2025.01.15

Promise

Promise란? 프로미스가 생성된 시점에는 알려지지 않은 값의 대리자로,비동기 연산이 동료된 이후에 결과 값과 실패 사유를 처리하기 위한 처리기를 연결비동기 메서드에서 like 동기 메서드처럼 값을 반환할 수 있음but  최종 결과를 반환 X -> 미래의 어떤 시점에 결과를 제공하겠다는 Promise를 반환 https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise

Dev/JavaScript 2024.11.04

클라이언트와 서버 구조

## 클라이언트와 서버 구조웹브라우저(요청) -> 웹서버가 가지고 있는 html문서(응답) -> html문서를 클라이언트에게예를 들어 크롬이라는 브라우저에서 서버에 요청을 보낼 때는 서버의 주소(IP 주소) 또는 서버의 주소를 대체할 수 있는 도메인명을 알아야 한다.예를 들어 주소창에 naver.com을 입력하면 네이버에서 운용하고 있는 웹 서버가 호출되고 서버는 요청에 대한 응답을 브라우저에 돌려준다.즉, 웹서버는 요청에 대한 응답으로 html문서나 다른 resource들을 브라우저에 표시하게 된다.​프로토콜 : http의 서비스 내용은 웹 서비스, 포트번호는 80https 프로토콜 : 서비스 내용은 SSL(보안)을 적용한 웹서비스 제공, 포트번호 443FTP(파일전송 프로토콜) : 서비스내용은 파일 ..

Dev/Spring 2024.06.18

스프링 부트 환경 설정

https://spring.io/tools  Spring | Tools spring.io위 링크에서 이클립스 다운 jar파일을 열 수 있도록 알집 같은 파일이 있다면 미리 프로그램을 제거하도록 한다. 다운로드 받아진 jar 파일을 더블클릭하면 sts 파일이 생성된다. sts 파일안에 exe 파일 있는 것을 확인하고 sts 파일을 잘라서 C드라이브로 잘라 붙이기 한다.편의성을 위해서 sts 파일 안에 있는 exe 파일을 바탕화면 바로가기 만들기 혹은 하단 바에 고정하기를 설정한다.이클립스를 실행 후 해당 경로를 지워내고 런치!스프링 프로젝트 생성프로젝트에 맞춰서 밑줄 친 부분을 확인하며 작성한다.Next를 진행 후 나오는 체크리스트 중 Spring Web을 체크해 준다.JDK 연결 에러가 발생할 때 해결 ..

Dev/Spring 2024.06.18

스프링 부트란?

# 스프링 부트란?웹 프로그램(웹 애플리케이션)을 쉽게 빠르게 만들 수 있도록 도와주는 자바의 웹 프레임워크​라이브러리 : like 플러그인, on off가 가능한, 연동해서 사용가능한, 환경이 아닌프레임워크 : 구축이 되어 있는 환경​웹 프로젝트를 완성하기 위해서 많은 기능을 생성해야 한다.쿠키처리, 로그인, 로그아웃, 데이터베이스 처리 등,,,웹 프레임워크에는 기능들이 이미 만들어져 있다.웹 프레임워크에 있는 기능을 익혀서 사용하기만 하면 되고 흐름을 정확하게 파악하면 된다.​스프링부트는 웹 보안적인 부분에서 굉장히 튼튼한 웹 프레임 워크이다.SQL 인젝션 : 악의적인 SQL을 주입하여 공격하는 방법 XSS(Crose Site Scripting) : 자바스크립트를 삽입해 공격하는 방법CSRF(Cros..

Dev/Spring 2024.06.18

형변환

형변환 - CPU도 연산을 할 수 있도록 표현법(자료형)을 하나로 통일시켜 줘야 함 - 자동 형변환 : 피연산자의 자료형이 일치하지 않아서 자동으로 발생하는 형변환 - 명시적 형변환 : 명시적으로 형변환 연산자를 이용해서 발생시키는 형 변환 - 연산 및 대입에서 발생 [1] 연산 서로 다른 데이터 형으로 계산할 때는 Java는 더 큰 데이터 형을 사용해 계산함 예상치 못한 오류의 원인이 될 수 있으므로 주의! 연산의 우선순위와 함께 다른 결과 유발 [2] 대입 변수에 값을 대입할 때나 변수끼리 대입할 때는 좌우변의 타입이 일치해야 함 ex) int a = 10; long b = a; // 자동형 변환, int인 a가 long으로 자동 형변환 규칙- boolean을 제외한 나머지 7개의 기본형은 서로 형변..

Dev/JAVA 2024.06.11

JAVA의 메모리

메모리코드영역 : 실행할 프로그램의 코드를 올려놓을 공간데이터 영역 : static 영역 프로그램이 종료될 때까지 유지해야 하는 데이터 저장할 공간코드영역 + 데이터 영역 > method 영역​스택영역 : 아주 잠깐 사용하고 삭제할 데이터의 공간힙 영역 : 프로그래머가 원하는 방식으로 쓸 수 있는 공간  스택 : 데이터가 아래서부터 차곡차곡 쌓였다가, 제거될 때는 맨 위의 데이터부터 차례로 제거 > LIFO(Last In First Out)Queue(큐) : FIFO(First In First Out)힙 : 자유 기억 공간, 주소를 기억하고 있다가 직접 데이터가 있는 곳에 접근

Dev/JAVA 2024.06.11

변수와 자료형

# 변수 - 데이터를 저장하기 위해 메모리에 공간을 만들어 할당하고, 이름을 부여한 것 - 데이터의 저장과 참조를 위해 할당된 메모리 공간 # 데이터타입 - 자료형 - 변수 공간을 얼마나 확보할 것인지 크기를 정하는 것 - 자료에 대한 형태, 종류 - 변수를 만들 때 어떠한 데이터가 들어가며 메모리는 몇 바이트를 차지하는지 명시해 주는 것 // 변수 선언 int 1; a = 10; // 값 할당 // 선언과 동시에 값 할당 int b = 20; // 여러 개를 동시에 선언과 할당 int c = 30, d = 40; // 여러 개를 선언한 후, 할당 int e, f; e = 100; f = 200; // 변수끼리의 할당 int k = 45; int n = k; ** 지역..

Dev/JAVA 2024.06.11