암호화 알고리즘
2024. 1. 1. 13:29
DEVELOP/IT
정의 암호화는 정보 보안의 중요한 구성 요소로, 데이터를 무단 액세스, 변경 또는 배포로부터 보호하는 데 도움이 됩니다. 암호화: 데이터를 읽을 수 없는 형태로 변환하여 외부로부터의 무단 접근을 방지하는 기술. 암호화 알고리즘: 평문을 암호문으로 변환하는 데 사용되는 수학적 프로세스. 평문(Plain Text): 해독 가능한 형태, 즉 암호화 전의 메시지 암호문(Cipher Text): 해독 불가능한 형태, 즉 암호화 후의 메시지 암호화(Encryption): 평문을 암호문으로 변환하는 작업 복호화(Decryption): 암호문을 평문으로 변한하는 작업 안전한 암호에는 혼돈(Confusion)과 확산(Diffusion)의 성질이 있어야한다 - 클라우드 섀넌(Claude E. Shannon) 혼돈: 암호문..
Spring Boot, Kotlin 인프런 강의 제작 후기
2023. 12. 28. 13:14
DEVELOP/IT
Spring Boot, Kotlin 인프런 강의 제작 후기 결론 요즘은 두괄식으로 말하는 연습을 하고 있습니다. 결론부터 얘기하자면 인프런에 입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기 강의를 오픈했습니다. 아래 링크 방문해서 어떤 강의인지 살펴봐주시면 감사하겠습니다. 입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기 입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기 강의 - 인프런 이론부터 실습까지. 직접 개발한 웹사이트를 클라우드에 올리며 웹 개발 전반을 학습할 수 있습니다., [사진]개발자 고양이 용백이의 가상 프로필로 만든 포트폴리오 사이트Kotlin과 Spring..
[Spring] 스프링 의존관계 주입 방법
2023. 3. 18. 08:30
DEVELOP/Spring
[Spring] 스프링 의존관계 주입 방법 스프링의 가장 큰 특징이라고 할 수 있는 것이 제어의 역전입니다. 이 제어의 역전은 프레임워크와 라이브러리를 구분하는 기준이 되기도 하는데요. 스프링 프레임워크는 객체의 생성과 세팅 등을 개발자가 직접 관리하지 않고, 스프링에서 관리하도록 설계되어 있습니다. 여기서 스프링이 관리하는 객체를 스프링 빈, 빈을 관리하는 주체를 DI 컨테이너라고 부릅니다. 한 스프링 빈에서 다른 스프링 빈을 사용할 때, 즉 한 스프링 빈이 다른 스프링 빈이 의존할 때 의존하는 객체를 스프링 DI 컨테이너에서 알아서 넣어줍니다. 이것을 의존성 주입이라고 부릅니다. 의존성 주입 방법에는 대표적으로 3가지가 있습니다. 주입 방법 1. 생성자 주입(Constructor) @Service p..
[Network] TCP의 연결 성립과 해제 - 3 Way & 4 Way Handshake
2023. 3. 17. 09:00
DEVELOP/Network
[Network] TCP의 연결 성립과 해제 - 3 Way & 4 Way Handshake TCP는 Transmission Control Protocol의 약자로, 전송 제어 프로토콜이라고 번역됩니다. OSI 7 계층 중 4번째인 전송 계층에서 사용되는 프로토콜인데요. 일반적으로 IP와 엮어서 TCP/IP라고도 표현합니다. TCP와 자주 비교되는 개념으로 UDP가 있는데요. UDP와 비교하여 TCP의 특징 중 하나는 신뢰성입니다. 신뢰성은 구체적으로 다음 두 가지를 의미합니다. 전송하는 패킷들의 순서를 보장한다. 수신 여부를 확인한다. 이를 위해 TCP는 연결의 성립과 해제에 있어 각각 3 Way Handshake, 4 Way Handshake란 방식을 사용합니다. 연결 성립: 3 Way Handshak..
[Database] 데이터베이스의 인덱스
2023. 3. 16. 20:06
DEVELOP/Database
[Database] 데이터베이스의 인덱스 인덱스란? 인덱스는 데이터베이스에서 테이블의 동작 속도를 높여주는 자료구조를 의미합니다. 말 그대로 책의 색인과도 같다고 할 수 있습니다. 많은 책들에는 특정 키워드를 찾기 쉽도록 책의 맨 뒤에 키워드와 그 키워드가 나온 페이지를 정리해둔 색인이 있습니다. 만약 데이터베이스 책에서 Distinct란 단어를 찾고 싶다고 가정해봅시다. 가장 먼저 떠오르는 방식은 책의 1 페이지부터 한장씩 넘기면서 Distinct란 단어를 찾는 것입니다. 이건 Table Full Scan과 같습니다. 하지만 이렇게 할 경우 10 페이지 짜리 책이라면 그리 오래 걸리지 않겠지만, 1000 페이지 책이라면 상당히 많은 시간이 걸릴 것입니다. 52 페이지 쯤에서 키워드를 발견했다고 해도 뒤..
[Java] Call by Value와 Call by Reference
2023. 3. 15. 09:00
DEVELOP/Java
[Java] Call by Value와 Call by Reference 프로그래밍 언어에는 Call by Value와 Call by Reference라는 개념이 있습니다. 함수, 또는 메소드에 파라미터를 넘겨주는 방식에 대한 개념인데요. Call by Value는 값에 의한 호출, Call by Reference는 참조에 의한 호출이라고 번역됩니다. 그럼 각각은 어떤 차이가 있을까요? Call by Value Call by Value는 메소드를 호출할 때, 인자로 넣어주는 변수의 값을 복사합니다. plusOne()이라는 이름의 숫자 num을 받는 메소드가 있다고 하겠습니다. 인자로 들어온 num에 1을 더하는 기능을 합니다. 다음 코드와 같이 plusOne() 메소드를 호출하면 어떤 일이 일어날까요? @..
[운영체제] 메모리 단편화와 페이징
2023. 3. 14. 08:00
DEVELOP/OS
[운영체제] 메모리 단편화와 페이징 메모리 단편화란? RAM에서 메모리의 공간이 조각나서, 사용 가능한 메모리가 총합은 충분하지만 프로세스의 할당이 불가능한 상태를 의미합니다. 이 개념을 이해하기 위해선 우선 CPU가 어떻게 메모리에 프로세스를 할당하는지 알아야할 필요가 있습니다. 연속 메모리 할당 메모리를 할당하는 방법 중 가장 기본적으로 떠올릴 수 있는 방법입니다. 100만큼의 크기를 갖고 있는 메모리와 프로세스 A, B, C 각각 10, 20, 30만큼의 크기를 갖고 있다고 가정해봅시다. A를 0 9까지, B를 10 29까지, C를 30~59까지 할당할 수 있습니다. 결과적으로 메모리에는 다음 그림과 같이 프로세스가 적재됩니다. 이 방식은 문제가 있습니다. 프로세스 B가 가장 먼저 실행이 중단됐다고..
[Database] SQLD SQL 개발자 시험 후기
2023. 3. 13. 16:46
DEVELOP/Database
[Database] SQLD SQL 개발자 시험 후기 2022년 11월 5일 47회 SQL 개발자 자격증 시험을 봤습니다. 누군가에게는 도움이 될까 싶어, 그리고 기록을 위해 남겨두는 후기입니다. 동기 시험을 본 시점에서 저는 이런 사람이었습니다. 4년차 백엔드 개발자 경제학 전공 SQLD는 난이도가 높은 시험이 아닙니다. 개발자에겐 없어도 그만, 있으면 좋은가...? 싶은 정도의 느낌인 것 같습니다. 만 3년 넘게 개발 업무를 했으면 떨어질 수 없는, 떨어져서는 안 되는 시험이라고 생각합니다. 사실 주변에도 이 시험을 본 기획자분들은 있는데, 개발자분은 못 본 것 같습니다. 그럼에도 SQLD 시험을 본 이유는 두가지입니다. 컴퓨터공학 학위가 없다 SQLP 대비 체험 일단 학위가 없어도 개발 일을 할 수..
[디자인 패턴] 전략 패턴
2022. 12. 10. 22:32
DEVELOP/Java
[디자인 패턴] 전략 패턴 전략 패턴이란? 위키피디아에 따르면 전략 패턴은 실행 중에 알고리즘을 선택할 수 있게 하는 행위 디자인 패턴이라고 한다. 객체가 선택할 수 있는 행위, 즉 전략을 객체로 간주하여 캡슐화 해놓고 동적으로 변경할 수 있게 한다고 풀어쓸 수 있을 것 같다. 더 직관적으로 줄이면 행동을 객체로 만든다고 할 수 있을 것 같다. 사실 풀어썼다고 해도 이런 식으로는 잘 와닿지 않는다. 전략 패턴의 생겨나게 된 배경부터, 구체적인 사례까지 쭉 살펴보겠다. 전략 패턴은 왜 생겼을까? 미션: 게임의 직업 클래스를 만들자 전략 패턴의 가장 직관적인 예시는 역시 게임 캐릭터라고 생각된다. 새로 오픈하는 RPG 게임에서 캐릭터의 각 직업 클래스를 구현하게 됐다고 해보자. 구현해야 될 직업은 총 5개,..
[JPA] N+1 문제 해결
2022. 10. 23. 02:21
DEVELOP/Java
[JPA] N+1 문제 해결 N+1 문제가 발생했다! 이력서 목적으로 웹사이트를 하나 띄워서 운영하고 있다. 오버스펙일 순 있겠지만 컨텐츠는 DB로 별도 분리해서 관리하고 있다. 처음 만들 당시에는 회사에서 JPA를 쓸 일이 없어 JPA로 만들어 봤는데, 딱히 공부를 했다기보단 이렇게 하니깐 CRUD가 되는군, 참 쉽다 요 정도로 사용만 했었다. 그리고 최근에 간만에 이력서 업데이트 겸 프로젝트 업데이트도 했는데 테스트 중에 문제를 발견했다. 컨트롤러 한 번 호출했는데, 쿼리가 몇 개가 나가는거지. 지금이야 JPA 공부를 한 번 해둔 상태라, 어떤 문제인지 바로 알 수 있었다. JPA를 조금만 찾아봐도 들어봤을 N+1 문제였다. N+1이란? 이건 사실 1+N 문제라고 하는 편이 정확하다. N+1이라 하면..