본문 바로가기

분류 전체보기

(10)
[Spring] Failed to convert value of type 'java.lang.String' to required type 'long' [ 에러 배경 ]현재 구현하고자 하는 기능은 HLS 프로토콜을 통해 분할된 m3m8 파일과 ts 파일을 클라이언트에게 전송하는 api 다. 사용자가 동영상을 업로드하고 이후 동영상 id 만으로 동영상을 불러올 수 있도록 하는 게 목표다. 저장할 때 경로는 src/main/resource/static/hls/chanel-{chanelId}/{title} 로 지정했다. 프론트에서 사용하는 api 는 아래와 같았다. // 기존@GetMapping("{movieId}")//현재@GetMapping("{moveId-Name}/chanel/{chanelId}") 해당 api 로 데이터를 불러오던 중 에러가 발생했다. String 을 long 으로 바꿀 수 없다는 내용의 에러였다.처음 이 부분만 봤을 때는 Id 만 ..
[Java] static, 잘 알고 사용하자. Static클래스 레벨의 변수나 메소드, 블록을 정의할 때 사용된다.인스턴스 생성 없이 접근 가능하며, 모든 인스턴스에서 공유 가능JVM 에서 드러나는 특성메모리의 메소드 영역에 할당Static 변수와 static 메소드는 Static 메모리 영역에 존재프로그램 시작 시 메모리에 할당되고 프로그램 종료될 때까지 유지된다.객체가 생성되기 이전에 이미 할당이 되어 있다.메모리의 메소드 영역에 할당되기 때문이다.주된 사용법모든 인스턴스가 공통적으로 사용해야 하는 값이 존재할 때단점객체지향 프로그래밍 원칙과 상반된다.과도한 static 사용 시 메모리 누수의 원인이 될 수 있다.💡 메모리의 메소드 영역Static 영역을 포함하고 있으며 GC 의 관리 영역 밖에 존재한다.일반적으로 우리가 만든 Class는 St..
Polling, Long Polling, Socket, SSE 웹 어플리케이션은 클라이언트가 서버에 데이터를 요청하는 클라이언트 서버 모델을 중심으로 발전해왔다. 그렇기에 서버가 클라이언트의 요청 없이 독립적으로 데이터를 보내고 받는 매카니즘은 없었다. 하지만 시대는 계속해서 변화하고 다양한 상황에 대응하기 위한 다양한 통신 방법의 필요성이 증가했다. 이에 아래와 같은 네트워크 기술들이 등장하기 시작했다.HTTP의 비연결성 특징을 해결하기 위한 기술Polling, Long Polling, WebSocket, SSEPolling, Long Polling, Socket, SSE 비교하기PollingHTTP Long Polling 기술은 서버가 사용자에게 가능한 빠르게 정보를 전달하는데 사용되는 기술이다. 그러니 서버는 클라이언트가 요청을 보낼 때까지 기다릴 필요가 없어..
[JAVA] String Literal & String Object 현업에서 시스템 장애를 진단 작업을 하면서 어떤 객체가 가장 많이 생성되는지 점검 하는 경우 String 관련 객체는 몇백개 객체 중에서 상위 5개 안에 항상 포함된다고 한다. String 클래스에 대해 잘 알아야 하는 이유가 되겠다.String 은 어떻게 생겼을까?package java.lang;public final class String // (1) 자식클래스 양산 불가 implements java.io.Serializable, Comparable, CharSequence, Constable, ConstantDesc // (2)자식클래스 양산 불가누구나 사용할 수 있는 클래스클래스가 final 로 선언되어 있으므로 더이상 이 클래스를 확장할 수 없다.구현하는 인터페이..
[ 0510 ] 오류 일기 (MyBatis, SpringBoot) 첫번째 에러Caused by: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'long, long'. Cause: java.lang.ClassNotFoundException: Cannot find class: long, long MyBatis xml 파일에서 매개변수를 두개 두고 싶어서 parameterType="long, long" 을 해봤다.이 부분 때문에 에러가 발생해버렸다... // long으로 바꾸니 돌아감 insert into streamingLike(live_id, us..
[네트워크] HTTP vs HTTPS 인터넷을 사용하면서 주소창에 가장 많이 사용되는 형식은 http 혹은 https 로 시작되는 도메인이다. 우리는 이 주소창에 해당 양식의 url 을 입력하면 목표하는 웹사이트로 이동하게 된다. 서버에서는 무슨 일이 벌어지고 있는 것일까. 이 url에 숨겨진 내용은 무엇일까. www는 World Wide Web의 줄임말 💡 도메인 DNS (Domain Name Service) IP 주소와 도메인 명을 서로 교환하는 장치 인터넷에서는 컴퓨터 식별을 위해 IP 주소를 사용하는데 여기 이름을 붙인 것이다. DNS 서버는 트리 구조로 이뤄졌다. HTTP HyperText Transfer Protocol W3 상에서 정보를 주고받을 수 있는 프로토콜(규칙, 규약) 클라이언트와 서버 간 데이터(텍스트/이미지/동영상 ..
[Java] JVM의 이해(3) - Garbage Collection GC, Garbage Collection JVM은 운영체제로부터 메모리를 활동받아 동작한다. 그렇다면 JVM은 메모리를 어떻게 관리할까? C 언어를 배웠을 때를 생각하면 변수에 메모리를 동적할당(malloc)하고 해제(free)하는 과정들이 있었지만 자바에서는 그렇지 않았다. 제네릭을 이용해 변수를 선언했을 때 동적으로 크기가 변화하기도 했다. 프로그램이 끝날 때 까지 할당된 메모리가 해제되지 않는다면 분명히 저장 가능한 메모리는 바닥날 것이고 OOME(Out Of Memory Error)가 발생하고 만다. 실제로도 자바가 발전하면서 애플리케이션 지연(Suspend) 현상이 두드러짐에 따라 GC가 개발되었다. GC는 필요하지 않은 메모리를 해제하여 사용할 수 있는 메모리를 확보해나간다. 필요한 메모리 영..
[Java] JVM의 이해(2) - 주요 메모리와 static 지난번 포스트에서 JVM의 구조에 대해 살펴봤다. 이번에는 JVM이 메모리를 어떻게 관리하는지 들여다보려고 한다. Runtime Data Area 중 주요 부분을 자세히 살펴보자. Method Area 클래스 정보를 처음 메모리 공간에 올릴 때 초기화되는 대상을 저장하기 위한 메모리 공간 Runtime Constant Pool 영역을 통해 상수 자료형을 저장하여 참조하고 중복을 방지한다. Heap Area 자바로 구성된 객체 및 JRE 클래스가 탑재되는 영역 String Pool, 실제 데이터를 가진 인스턴스, 배열 등 저장 JVM Stack Area 메소드 안에서 사용되는 값, 메소드의 매개변수, 지역변수, 리턴값 및 연산 시 일어나는 값 저장 PC Register 현재 수행중인 JVM 명령의 주소를 ..
[Java] 자바 가상 머신 이해(1) - JVM 구조 자바 개발자라면 모를 수 없는 키워드, JVM. 대학 졸업할 때까지 “JVM 은 자바로 작성한 클래스를 기계어로 번역해주는 역할을 한다” 정도로 이해하고 있었다. 하지만 기술 면접을 찾아보면 JVM에 대해 물어보는 경우가 많다. 학교 생활에 충실했느냐를 판단하고자 물어보는 줄 알고 적당히 알고 넘어가려고 하다가 성능과도 연결되는 것을 알게 되었다. jvm 메모리 영역의 구분과 각 영역의 역할에 대한 이해는 자바 성능 최적화에 중요하다. 이에 차근차근 공부한 내용을 정리해보고자 한다 개요 자바 가상 머신(Java Virtual Machine), JVM이 등장하기 이전 모든 컴퓨터 프로그램은 특정 운영체제에 맞게 작성되었다. 또한 프로그램 메모리는 소프트웨어 개발자가 관리했다. 이런 기존의 틀을 깨부수고 등..
[Python] 곱하기 * 를 이용하여 2차원 배열 선언하기 파이썬은 코딩테스트를 처음 준비하는 이들에게 좋다. 하지만 아이러니하게도 파이썬 문법을 빠삭히 알지 못하기 때문에 문제를 풀 때 종종 실수를 하기도 한다. 오늘은 내가 범했던 실수에 대해 이야기하려 한다. 문제 소개 관련 문제 >>> https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 2중 리스트를 활용해 그래프를 구현해보려고 아래와 같이 초기화 코드를 작성했다. networks = [[0] * 컴퓨터 개수] * 컴퓨터 개수 # ------ 내가 원했던..