- [실전 알고리즘] 연결 리스트2024-01-08 16:41:01연결 리스트가 무엇인지 알아보고, 구현도 해볼 것이다. 1. 정의와 성질 연결 리스트 정의 연결 리스트란 원소들을 저장할 때 그 다음 원소가 있는 위치를 포함시키는 방식으로 저장하는 자료구조이다. 원소들은 배열과는 다르게 이곳 저곳 흩어져있다. 연결 리스트 성질 1. k번째 원소를 확인/변경하기 위해 O(k)가 필요 - 배열과 다르게 공간에 원소들이 연속해서 위치하고 있지 않기 때문 2. 임의의 위치에 원소를 추가/임의 위치의 원소 제거는 O(1) - 배열과 비교앴을 때 큰 차이가 있는 성질이고, 연결 리스트의 큰 장점이다. 3. 원소들이 메모리 상에 연속해있지 않아 Cache hit rate가 낮지만 할당이 다소 쉬움 - 메모리 상에 데이터들이 연속해있지 않으니까 Cache hit rate가 낮지만 할..
- Spring Cache란?2024-01-07 22:00:59애플리케이션을 개발하며 쓰기 동작보다 읽기 동작이 많은 데이터가 있다면 캐시 도입을 고민할 수 있다. 예를 들어, 상품의 카테고리 목록은 자주 바뀌지 않는 데이터들인데 쇼핑몰 내에서 페이지를 이동할 때마다전체 카테고리들을 DB에서 매번 Query해서 모두 불러오는 것은 비효율적이기에 이런 경우에도 캐시를 적용하면 좋은 케이스다. 일반적으로 캐시는 메모리에 데이터를 미리 적재하고 이를 빠르게 읽어 응답하는 구조다. 그래서 읽기 동작이 많은 서비스에 캐시를 사용하면 서비스 응답 속도를 향상할 수 있고, 시스템 리소스도 효율적으로 사용할 수 있다. Spring은 다양한 저장소에 데이터를 캐시할 수 있는 기능을 제공한다. 또한 저장소에 독립적이고 추상화된 캐시 매커니즘을 제공한다. AOP 기반의 어노테이션을 제..
- Spring Boot란?2024-01-04 17:00:511. spring boot 란? 스프링 부트는 단독적이고, 상용화 수준의 스프링 기반 어플리케이션을 단지 실행할 수 있을 정도로 쉽게 만들 수 있다. 기존 스프링 프레임워크 위에 구축되었다. 스프링 부트를 사용하면 독립실행형과 프로덕션 등급 스프링 기반 어플리케이션을 쉽게 만들 수 있다. 설정의 많은 부분을 자동화하여 사용자가 편하게 스프링을 활용할 수 있도록 도와준다. 2. spring과 spring boot의 차이 spring framework의 경우, dependency를 설정해 줄 때 설정 파일이 매우 길고, 모든 dependency에 대해 버전 관리도 하나하나 해주어야 한다. org.springframework spring-web 5.3.5 org.springframework spring-web..
- [백엔드 로드맵] 언어 배우기 - JAVA2024-01-04 00:08:57백엔드 개발자로서 다룰 수 있는 언어가 다양하다면 많은 장점이 있을 것이다. 하지만 여러 언어를 조금씩 파는 것보다 주 언어를 더 깊게 파는 것이 중요하다고 생각하여 Java에 대해 공부하였다. 1. Java 기본 1-1. 기동 원리 1. 시스템으로부터 메모리 할당(JVM) 2. Java 컴파일러에 의해. java 형식에서. class 형식으로 변환(바이트 코드 변환) 3. 클래스 로더에 의해 클래스 파일들은 JVM에 로드된다. 4. 실행기(Execution Engine)에 의해 클래스 파일을 해석하며 프로그램 실행 1-2. 변수 지역 변수 : 함수 안에 선언 / 함수가 실행될 때 전역 변수(필드 변수) : 함수 밖에 선언 클래스 변수 : static 변수 인스턴스 변수 : 객체 변수 변수의 사용처에 따..
- [실전 알고리즘] 배열2024-01-03 14:30:17지금까지 프로그래밍 언어의 관점에서 배열을 다뤘었기 때문에 자료구조로써의 배열을 익힐 필요가 있어 공부하였다. 1. 정의와 성질 배열의 정의 배열이란 메모리 상에 원소를 연속하게 배치한 자료구조를 말한다. C++에서는 이미 선언된 배열의 길이를 변경하는게 불가능하지만, 자료구조로써의 배열에서는 길이를 마음대로 늘리거나 줄일 수 있다고 생각하겠다. 배열의 성질 1. O(1)에 K번째 원소를 확인/변경 가능 - 시작 주소에서 k칸 만큼 오른쪽으로 가면 되기 때문 2. 추가적으로 소모되는 메모리의 양(=overhead)가 거의 없음 - 다른 자료구조와는 다르게 추가적으로 소모되는 메모리 양이 거의 없슴 3. Cache hit rate가 높음 - 메모리 상에 데이터들이 붙어있으니까 Cache hit rate가 ..
- Spring 이란?2024-01-03 10:18:53너무나 당연하게 쓰고 있던 Spring에 대해서 궁금증이 생겼기에 이 글을 쓴다. Spring framework란? 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로 엔터프라이즈급 애플리케이션 개발을 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션 경량 컨테이너로 자바 객체를 담고 직접 관리 엔터프라이즈급 개발 환경 대규모 데이터 처리와 트랜잭션이 동시에 여러 사용자로부터 행해지는 매우 큰 규모의 환경 객체의 생성 및 소멸, 라이프사이클을 관리하며 언제든 spring 컨테이너로부터 필요한 객체를 가져와 사용하기 때문에 spring은 IOC(Inversion Of Control) 기반의 Framework임을 알 수 있다 IOC Spring에서는 일반적인 Java 객체를 new로 생성하여 개발자가 ..
- 컴퓨터 보안[2]2023-12-12 02:34:10보안시스템 이란? 사이버 공격을 탐지하거나 방지하기 위한 시스템 보안 시스템의 분류 [침입 종류와 대응 방식에 따른 분류] 방화벽(Firewall) : 침입 차단 시스템 - 내부 컴퓨터를 외부로부터 보호하기 위한 정책 이를 수행하는 하드웨어 및 소프트웨어 - 공격자, 인증되지 않은 사용자, 유해정보 내부 네트워크에 진입하지 못하도록 하는 보호 정책과 보호 장치 침입 탐지 시스템 침입 방지 시스템 가상사설망(VPN) 네트워크 접근제어 시스템(NAC) 통합 보안 위협 관리 기술(UTM) - 트래픽의 종류와 양을 결정 - 정상적인 사용자 접근 가능하게 해 주고 불법적이고 인증되지 않은 자는 접근 차단 방화벽의 구성방식 패킷 필터링 OSI 7계층 중 3 계층(네트워크 계층)과 4 계층(트랜스포트 계층)의 패킷..
- [Spring Boot] Spring Security & OAuth2.0 사용 - 소셜 로그인 기능 구현하기12023-11-08 22:42:20오늘은 Spring Security 와 OAuth 2.0 으로 소셜 로그인을 구현해 봤는데 각각 뭘 의미하는지와 버전이 달라지면서 바뀐 부분들을 설명하겠다. 0. 환경 설정 Gradle 사용 plugins { id 'java' id 'org.springframework.boot' version '3.1.2' id 'io.spring.dependency-management' version '1.1.2' } group = 'jpabook' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } 1. 구글 서비스 등록 구글 클라우드 플랫폼 주소로 이동하여 프로젝트를 생성해야 하는데 이 과정은 여기를 참고하면 되겠다. 2-1. application-oau..