전체 글

프로그래밍 공부한거 정리해두는 메모장 블로그
0.WebGPU이전 WebGL2011년 정식적으로 출시된 웹 브라우저에서 3D 그래픽을 그리게 해주는 표준 기술입니다.일반적인 GPU 연산이라기보단 그래픽 렌더링을 위해 사용되던 기술입니다.옛기술이라최신 GPU 하드웨어의 발전과 웹 환경의 요구사항에는 맞지않는 부분이 있어 WebGPU가 출시되었습니다. 1.WebGPU란OpenGL에 뿌리를 둔 기술로 Google Chrome 과 Microsoft Edge는 2023년 4월 WebGPU라는것을 발표합니다.WebGPU는 윈도우의 다이렉트X 12(DirectX 12), 애플의 메탈(Metal), 리눅스의 벌칸(Vulkan) 등 각 운영체제의 그래픽카드를 사용할수 있게 해줬습니다.성능적인면을 많이 개선했고, 일반적인 GPU작업을 Web에서 사용가능하도록 하..
1. CVE(Common Vulnerabilities and Exposures)란?CVE가 뭔지 잘 모르더라도 뭔가 이러한 형식의 코드같은걸 본기억이 한번쯤은 있을것이다.풀네임을 직역하면 대중적인 취약점 및 노출 정도로 직역할수있을거같은데 공개적으로 알려진 소프트웨어 및 하드웨어의 보안 취약점을 식별하고 명명하기 위한 글로벌 표준 식별 체계이다.CVE-2021-34527 2.코드의 해석코드는 다음처럼 해석하면 된다. 언제 발견된 취약점인지 정도는 바로 알수있다.CVE-발견연도-일련번호 3.CVSS(Common Vulnerability Scoring System)CVSS는 이제 이 취약점의 심각도와 위험성을 나타내는 숫자 지표이다.주로 지금은 아래 보이는 CVSS v3.0 을 사용해서 점수를 측정..
1.valkey가 등장한 배경 (Redis의 오픈소스 정책 변경)Redis는 2024년 3월 오픈소스 라이선스인 BSD 3-Clause를 폐기했습니다.나같은 일반 개발자가 백엔드 앱에 쓰는 것은 무료이나 클라우드 업체가 Redis를 상품화하여 재판매하는 것은 금지한것입니다.https://redis.io/legal/licenses/ Licenses | RedisDevelopers love Redis. Unlock the full potential of the Redis database with Redis Enterprise and start building blazing fast apps.redis.io 때문에 개발자들은 Redis 7.2.4를 기반으로 포크하여 프로젝트를 만들기 시작하였고, 리눅스 재..
1.멱등성(Idempotency)연산을 한 번 실행하든, 여러 번 실행하든 동일하게 유지되는 성질을 멱등성이라고 부른다.개발분야에서는 동일한 요청을 여러 번 보내야 할 때, 시스템의 데이터 일관성을 지키는 특징을 설명할때 멱등성의 용어를 사용한다. 2.HTTP 메서드 멱등성HTTP 멱등성은 동일한 요청을 한 번 보내든 여러 번 연속으로 보내든 서버의 상태가 동일하게 유지되는 성질을 의미한다.즉, 서버에 미치는 영향이 항상 같으며 중복 요청으로 인한 side effect가 발생하지 않는다.아래 표에서 GET같은 경우는 리소스를 단순히 조회만 한다. 백 번을 조회해도 서버의 데이터 상태는 변하지 않으므로 멱등하다고 할수있다..GET데이터 조회멱등리소스를 변경하지 않고 여러 번 조회해도 항상 같은 데이터가..
0. 개요 ALTER TABLEALTER TABLE를 실무에서 함부로 사용했다가 서비스 중단이 몇일동안 이어졌다는 사례글을 보았기 때문에 이에 관한 내용을 보고 정리하기로 하였다. 1.MySQL1-1. Copy 방식 (MySQL 5.5 이전)가장 전통적인 방법으로 아래의 3단계의 과정을 거쳐서 테이블 변경을 이뤄낸다.작업 시간 동안 원본 테이블이 읽기/쓰기 잠금이 되기 때문에 실제 서비스가 해당 작업이 끝날때까지 마비가 된다.1. 새로운 구조의 임시 테이블 생성2. 원본 테이블의 모든 데이터를 임시 테이블로 복사 (이때 테이블은 읽기 전용 상태가 됨)3. 원본 테이블 삭제 후, 임시 테이블의 이름을 원본으로 변경 1-2.In-Place & Online DDL 방식(MySQL 5.6 ~ 5...
1. 풀스캔인덱스를 거치지 않고 테이블 데이터 스캔 방식이나 인덱스의 전체 구조를 처음부터 끝까지 순차적으로 읽는 방식을 의미한다.데이터의 크기가 커질수록 이 방식은 속도가 점점더 느려진다. 때문에 서비스들은 풀스캔을 하지않기 위해 인덱스를 DB에 사용한다. 2.인덱스2-1. 단일 인덱스하나의 컬럼으로만 구성된 가장 기본적인 형태의 인덱스이다.검색 조건이 단순하고 하나의 컬럼을 기준으로 데이터를 찾을 때 사용할수있다.(여러 조건이 복합적으로 들어오는 복잡한 쿼리에서는 효율이 떨어진다.)-- 인덱스 생성CREATE INDEX idx_name ON Employees(name);SELECT * FROM Employees WHERE name = '홍길동'; 2-2. 복합 인덱스두 개 이상의 컬럼을 묶어..
1.heap dump 란?특정 시점에 실행 중인 애플리케이션의 힙(Heap) 메모리 상태를 그대로 복사하여 저장한 스냅샷(Snapshot) 파일을 의미한다. 주로 OOM같은 메모리 오류같은 부분들을 추하기 위해 사용한다. 2.heap dump 생성법2-1.OOM 발생 시 자동 생성OutOfMemoryError(OOM)로 죽는 순간의 정확한 상태를 잡기 위해 애플리케이션 실행 시 JVM 옵션에 추가할수있다.-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/경로/원하는파일명.hprof 2-2. 수동으로 생성메모리 사용량이 비정상적으로 치솟거나 서버가 느려졌을 때 터미널에서 명령어를 입력해 직접 heap dump를 생성해볼수도있다.jcmd GC.heap_..
0. 개요서버측에서 Cache를 부르는 용어와 종류가 여러가지 있는거같아서 그에 대해 알아보기 위해 정리한다. 1. 로컬 캐시(Local Cache)WAS내부의 자체 메모리(RAM) 공간을 직접 사용하는 방식이다.네트워크로 별도의 캐시공간을 접근할 필요가 없어서 제일 빠르다!대신 WAS를 재구동하면 로컬 캐시도 다 날아가서 그때는 캐시히트률이 낮을수밖에없다.... 1-1.Java CaffeineJava 8 이상에서 동작하는 고성능 로컬 캐싱 라이브러리이다.Spring Boot에서도 의존성을 추가하면 어노테이션으로 간단하게 사용할수있다. @Cacheable(value = "categories")public List getAllCategories() { return categoryR..
박종범_
개발공부 블로그