Light Blue Pointer
본문 바로가기

Developing159

Creational patterns Singleton Pattern Instance가 딱 하나만 존재할 수 있는 패턴 class 안에 static instance가 있고 static getInstance() 메서드로 instance가 이미 존재한다면 그것을 return, instance가 존재하지 않는다면 생성하고 static에 넣은 후에 그것을 return Prototype Pattern (Clone) 그 클래스의 코드에 의존적이지 않은 채로 존재하는 객체를 복사할 수 있게 해준다 Prototype Pattern이 나온 배경 객체를 복사해서 똑같은 복제본을 만들고 싶은 상황 똑같은 클래스의 객체를 하나 더 생성한다 원래 객체의 모든 필드에서 값을 복사해다 새로운 객체에다가 붙여넣는다 이런 상황에서 생기는 문제점들 어떤 필드는 privat.. 2024. 4. 18.
디자인 패턴 디자인 패턴이란? 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상화관계 등을 이용하여 해결할 수 있도록 하나의 ‘규약’ 형태로 만들어 놓은 것 Design patterns는 Elements of Reusable Object-Oriented Software라는 책으로 처음 등장했는데 네 명의 C++ Engineer들이 썼다고 함 정답은 아니지만 알아두면 사고방식 향상에 도움이 된다고 한다 https://refactoring.guru/design-patterns 이 웹사이트에 가면 상세한 설명이 있다 디자인 패턴의 장점 재사용성 반복적인 문제에 대한 일반적인 해결책을 제공하므로, 이를 재사용하여 유사한 상황에서 코드를 더 쉽게 작성할 수 있다. 가독성 일정한 구조로 정리하고 명확하게 작성하여 개발자가.. 2024. 4. 17.
Spring 프로젝트 HTTP에서 HTTPS로 변경하기 (Java로 SSL 만들어서 Spring 프로젝트에 적용하기(P12 방식)) Spring 프로젝트를 http에서 https로 만들기 위해서 SSL을 발급받아서 추가하는 방법을 설명하려고 한다 인텔리제이 cmd가 먹히지 않아서 Windows cmd prompt로 했다 관리자 모드로 열어주지 않으면 아래와 같은 에러가 발생한다 keytool error: java.io.FileNotFoundException: keystore.p12 (Access is denied) jdk bin으로 이동하면 keytool이 있어서 jdk bin으로 이동해준다 C:\\Program Files\\Java\\jdk-17\\bin> Keystore + 키 쌍 생성 keytool -genkey -alias {keystore name} -keyalg RSA -storetype PKCS12 -keystore {k.. 2024. 4. 17.
HTTP/HTTPS HTTP = Hypertext Transfer Protocol 클라이언트와 서버 간 통신을 위한 통신 규칙 세트 또는 프로토콜 사용자가 웹 사이트를 방문했을 시 사용자 브라우저가 웹 서버에 HTTP 요청을 전송 웹 서버는 HTTP 응답으로 응답 웹 서버와 사용자 브라우저는 데이터를 일반 텍스트로 교환 HTTPS = Hypertext Transfer Protocol Secure HTTP의 더 안전한 버전 HTTPS에서는 브라우저와 서버가 데이터를 전송하기 전에 SSL/TLS를 사용하여 안전하고 암호화된 연결을 설정함 SSL/TLS를 사용하여 연결을 암호화하는 웹사이트는 URL에 HTTPS를 포함한다 📖SSL /TLS HTTP보다 HTTPS가 나은 이유 보안 HTTP 메시지는 일반 텍스트라 권한이 없어도 쉽.. 2024. 4. 11.
SSL/TLS 📖SSL = Secure Sockets Layer encryption-based Internet security protocol SSL은 웹을 통해서 전송되는 데이터를 암호화(Encrypt) 한다. 누군가 데이터를 중간에 가로채더라도 암호화된 의미없는 문자열만 보게 된다. 📖SSL의 작동 방식 두 기기의 본인 확인을 위해 두 기기 사이에 handshake라고 불리는 authentication process를 시작한다. 데이터에 디지털 서명(digital sign)을 남겨서 데이터 무결성(data integrity)를 제공한다 매 업데이트마다 점점 더 안전해 지다가 1999년에 TLS로 넘어갔다 📖TLS = Transport Layer Security Internet security protocol tha.. 2024. 4. 11.
DB 로직 최소화 하기 DB 로직이란 데이터베이스에서 데이터를 저장, 검색, 업데이트, 삭제하는데 사용되는 프로세스 및 규칙 MySQL을 사용하는 애플리케이션에서 주로 사용하는 데이터베이스 로직 MySQL에서의 데이터베이스 로직은 주로 SQL(Structured Query Language) 쿼리 데이터 검색 SELECT * FROM users WHERE age > 18; 데이터 삽입, 갱신, 삭제 INSERT INTO users (name, age) VALUES ('John', 25); UPDATE users SET age = 26 WHERE name = 'John'; DELETE FROM users WHERE name = 'John'; 트랜잭션 관리 BEGIN; -- 트랜잭션 시작 UPDATE accounts SET bala.. 2024. 4. 5.
쿼리 최적화 방법 Query Optimization 쿼리 최적화 Nested Query를 지양 SELECT * FROM Orders WHERE customer_id IN (SELECT customer_id FROM Customers WHERE region = 'Asia'); 인덱싱 자주 액세스되는 필드에 인덱스를 생성하여 데이터 검색 속도를 향상시킨다 인덱스 고르는 가이드라인 검색, 정렬, JOIN에 자주 이용되는 필드 UPDATE가 빈번하게 일어나지 않는 필드 INSERT, UPDATE,DELETE가 동시에 수행되는 FK (Weak Entity에 대한 Shared Locking ) 없이 마스터 테이블에서의 업데이트를 허용함 WHERE와 AND 연산을 자주 사용하는 필드 대부분 CREATE INDEX ON키워드를 포함한다 CREATE INDEX custo.. 2024. 4. 5.
TCP와 UDP TCP와 UDP는 모두 인터넷에서 데이터를 전송하기 위한 네트워크 프로토콜이다 TCP : Transmission Control Protocol 인터넷에서 데이터를 전송하기 위한 네트워크 프로토콜 패킷 단위로 전송한다 패킷 Packet 데이터의 조각(Segment) 인터넷 내에서 라우팅(데이터 경로 배정)을 효율적으로 하기 위해 데이터를 여러개의 조각들로 나누어 전송할 때의 데이터 단위 인터넷 == 패킷 스위칭 네트워크 패킷들은 모두 다른 네트워크를 통해 목적지에 모일 수 있음 TCP가 패킷을 추적하고 관리하는 방법 데이터는 패킷단위로 같은 목적지(IP계층)으로 전송됨 패킷에 번호를 부여하여 모두 도착했는지 확인하고 데이터를 받아서 조립함 TCP의 장점 운영체제에 상관없이 동작한다 → UDP의 사용 및 동.. 2024. 4. 3.
네이버 지도 API에 좌표로 마커 표시하기 1. head에 네이버 지도를 달아준다 2. 지도를 넣고싶은 자리에 코드를 넣어준다 3. 자바스크립트 코드로 지도와 마커를 출력함 데이터를 ajax로 받아와서 넣어줬다 function getData() { $.ajax({ type: 'GET', url: `/api/v1/posts/[[${postId}]]`, dataType: "json", contentType: 'application/json', data: {}, success: function (response) { latitude = response.data.latitude; longitude = response.data.longitude drawMap(latitude, longitude); }, error: function (error) { con.. 2024. 3. 25.