전체 글
-
Collection - List, Set, MapCS/자료구조 2023. 3. 7. 20:49
1. List - 순서가 있음 - 중복 허용 - 크기가 가변적 - 인덱스로 원소에 접근 가능 1-1. LikedList - 양방향 포인터 구조로 데이터 삽입, 삭제가 빠르다. - ArryList보다 검색이 느리다. 1-2. ArrayList - 단방향 포인터 구조로 데이터 순차적 접근에 강점을 가진다. - 배열을 기반으로 데이터를 저장한다. - 데이터 삽입, 삭제가 느리다. - 데이터 검색이 빠르다. 2. Map key, value 한 쌍으로 이루어지는 데이터 집합 key는 중복을 허용하지 않으며 순서를 보장하지 않는다. 높은 검색 속도를 원할 때 주로 사용된다. 인덱스가 따로 존재하지 않기때문에 iterator를 사용. 2-1. HashMap - Key에 대한 중복이 없음, 순서를 보장하지 않음 - K..
-
HTTP vs HTTPS 쉽게 이해하기CS/Network 2023. 3. 1. 21:21
평소에 내가 알고있던 지식은 고작 - HTTPS는 HTTP 프로토콜에 SSL 프로토콜이 더해져서 보다 더 안전하다. - HTTP는 패킷을 가로채면 수정할 수 있는 위험성이 있지만 HTTPS는 패킷이 암호화되어 패킷을 가로채더라도 암호화 되어있기 때문에 보다 더 안전하다. 이정도로만 알고있었다. 하지만, 어떤 방식으로 암호화가 되는지 깊이있게 공부하지 않았고, 이는 곧 면접에서 대답을 잘 못했었다. 이번 기회에 제대로 알아보고자 정리해보고자 한다. HTTPS HTTPS에서 통신 프로토콜은 TLS(Transport Layer Security) 또는 이전에는 SSL(Secure Sockets Layer)을 사용하여 암호화된다. 따라서 "HTTP over TLS" 또는 "HTTP over SSL" 이라고도 불린..
-
대칭키 vs 비대칭키CS/Network 2023. 3. 1. 21:10
대칭키 : 서버와 클라이언트가 주고 받을 데이터의 암호화를 위해 동일한 키를 갖는다. 비대칭키 : 어떠한 정보를 암호화·복호화 할 때 사용하는 키가 서로 다르다. 대칭키와 다르게 비대칭키를 활용한 암호화에는 개인키와 공개키 두 가지가 사용된다. 또한, 비대칭키를 활용한 암호화는 개인키로 암호화를 하는 방식과 공개키로 암호화를 하는 방식 두 가지로 나뉘게 된다. 1) 공개키로 정보를 암호화하는 경우 공개키로 암호화 되었다면 개인키로 해제할 수 있습니다. 공개키로 해제는 불가능하다. 철수가 영희의 공개키로 보물상자를 암호화하여 주었다면, 이 보물상자는 영희의 개인키만으로만 복호화가 가능하다. 이러한 방식은 개인키를 가지고 있는 사람만 복호화를 할 수 있다에 초점을 둔 암호화 방식이다. 2) 개인키로 정보를 ..
-
nextJS 왜 쓰는가Frontend/NextJS 2023. 1. 19. 16:49
NextJS에 대한 설명을 구글에서 가져오면 아래와 같다. nextJs는 서버 사이트 렌더링, 정적 웹 페이지 생성 등 리액트 기반 웹 애플리케이션 기능들을 가능케 하는 Node.js 위에서 빌드된 오픈 소스 웹 개발 프레임워크이다. 일단 nextJs는 SSR이다. 즉 Server Side Rendering이다. 이것과 많이 나오는 개념이 CSR Client Side Rendering이다. SSR 서버쪽에서 렌더링 준비를 끝마친 상태로 클라이언트에 전달하는 방식 서버에서 사용자에게 보여줄 페이지를 모두 구성하여 사용자에게 페이지를 보여주는 방식 이렇게 이루어진 사이트를 들어가게되면 새로고침을 해도 깜빡임 없이 바로 페이지를 볼 수 있다. CSR의 경우 대부분 React를 이용하여 렌더하는데 그렇게 되면 ..
-
React 렌더링 최적화를 위한 대표적인 방법Frontend/React 2023. 1. 17. 21:35
React는 컴포넌트라는 단위를 기반으로 설계하고, 데이터가 변경됨에 따라 적절한 컴포넌트만 효율적으로 갱신하고 렌더링한다. 이러한 React의 렌더링을 더 효율적으로 할 수 있게 도와주는 Hook들이 있다. 우선, 컴포넌트가 재랜더되는 조건을 살펴보자. 부모에서 전달받은 props가 변경될때 부모 컴포넌트가 리렌더링 될 때 자신의 state가 변경 될 때 shouldComponentUpdate에서 true가 반환될 때 forceUpdate가 실행될 때 컴포넌트가 복잡해질수록 위 조건의 극히 일부를 포함하고 있지만 재랜더하지 않아도 될 컴포넌트들 역시 재랜더가 되곤 한다. 그래서 대표적으로 아래 3가지를 통해 최적화한다. 1. useMemo useMemo(()=> func, [input_dependenc..
-
Tibero Studio, tbAdmin 실행 오류 Java was started but returned exit code= 1 Java was started but returned exit code= 13Backend/DB 2023. 1. 17. 18:50
티맥스에서 제공하는 Tibero Studio DBMS를 윈도우에서 설치 중 오류가 발견되었다. 티베로 스튜디오는 티베로 DB를 관리할 수 있는 DBMS이다. 티맥스에서는 TbAdmin이라는 관리 툴도 제공한다. 이 두가지 모두 아래 테크넷 사이트에서 다운로드가 가능하며, 회원가입이 필요하다. https://technet.tmaxsoft.com/ko/front/download/findDownloadList.do?cmProductCode=0301 TmaxSoft Technical Network [technet-01] 데모라이선스 신청 데모라이선스는 제품구입 전 테스트 및 검토를 위하여 제한 된 기간 동안 발급받아 사용가능한 라이선스 입니다. technet.tmaxsoft.com 문제는, 윈도우 버전 exe ..
-
994. Rotting Oranges javaLeetCode_Study_Plan/Algorithm 2022. 12. 30. 00:23
https://leetcode.com/problems/rotting-oranges/description/?envType=study-plan&id=algorithm-i Rotting Oranges - LeetCode Rotting Oranges - You are given an m x n grid where each cell can have one of three values: * 0 representing an empty cell, * 1 representing a fresh orange, or * 2 representing a rotten orange. Every minute, any fresh orange that is 4-directionally adjacen leetcode.com class So..
-
Java의 Compile Process 자바의 컴파일 과정Backend/Java 2022. 12. 28. 00:10
1. 개발자가 자바 소스코드(.java)를 작성 2. 자바 컴파일러(Java Compiler)가 자바 소스파일을 컴파일 이때 나오는 파일은 자바 바이트 코드(.class)파일로 아직 컴퓨터가 읽을 수 없는 자바 가상머신(JVM)이 이해할 수 있는 코드이다. 3. 컴파일된 바이트 코드를 JVM의 클래스로더(Class Loader)에게 전달 4. 클래스 로더는 동적로딩(Dynamic Loading)을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역(Runtime Data Area) 즉, JVM 메모리에 바이트 코드들을 올려줌 5. 실행엔진(Execution Engine)은 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와서 실행합니다. 이 때, 실행 엔진은 두 가지 방식이 있..