목록웹 개발 (23)
개발 기록이

1. AES 알고리즘대칭키 암호화 방식으로 암호화와 복호화에 동일한 키를 사용한다. 이 키는 비밀로 유지되어야 하며 암호화된 데이터는 키를 알고 있는 사람만 복호화할 수 있다. AES 알고리즘 중 AES-256을 사용하여 256비트(32바이트) 키로 더 강력한 보안 방법을 적용해보려고 한다. 2. 암복호화하기import java.util.Base64;import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;public class CipherExample { public static void main(String[] args) throws Exception { // AES-256을 사용하려면 키 길이가 32바이트(256비트)여야 함. Stri..

1. public vs private public: 누구나(어디서든) 접근 가능private: private이 선언된 메서드나 변수가 속한 클래스 안에서만 접근 가능public class PrivateTest { public static void main(String[] args) { Cafe cafe = new Cafe(); cafe.orderCoffee(); // 커피 주문하기(호출 가능) // cafe.makeCoffee(); // private라서 호출 불가 } public static class Cafe { private void makeCoffee() { // 카페 관계자만 사용 가능(커피 만들기) Sy..

여러 사람에게 메일 발송을 하는 것처럼 반복적인 작업을 동기 방식으로 처리하면, 각 작업이 완료될 때까지 블로킹이 발생하여 전체 처리 시간이 늘어날 수 있다. ExecutorService를 활용한 비동기 처리에 대해 알아보자. 병렬 작업과 스레드풀병렬 작업(여러 작업을 동시에 처리) 증가 → 스레드 개수 증가 → CPU, 메모리 사용량↑ → 성능 저하병렬 작업 시 스레드풀을 사용하여 스레드 수 제어가 필요하다. 스레드풀(ThreadPool)의 동작제한된 개수의 스레드를 사용하여, 작업이 끝난 후에는 해당 스레드를 재사용하여 성능 저하를 막아준다. 자바에서 스레드풀 사용ExecutorService 인터페이스를 통해 스레드풀을 관리한다.Executors 클래스를 사용하여 다양한 유형의 스레드풀을 생성한다.*..

1. 클라이언트 사이드 렌더링(CSR, Client Side Rendering)1. 브라우저 -> 서버에 콘텐츠 요청사용자가 웹사이트에 접근하면 브라우저는 서버에 페이지 로딩을 위한 HTML, CSS, JS 등의 콘텐츠를 요청한다.2. 서버가 기본 HTML 파일을 보냄서버가 웹페이지의 기본 구조가 담긴 HTML 파일을 브라우저에 보낸다. (이 HTML 파일은 내용이 거의 비어 있고, 기본적인 틀만 가지고 있는 상태)3. 브라우저가 자바스크립트 파일 다운로드 및 실행브라우저는 HTML에 포함된 자바스크립트 파일 링크를 통해 서버에서 자바스크립트 파일을 추가로 다운로드한다. 자바스크립트가 실행되면서 필요한 데이터를 서버에 다시 요청한다.4. 자바스크립트가 동적으로 페이지를 생성 및 표시자바스크립트는 서버에서..

1. 서버 IP 가져오기InetAddress.getLocalHost()import java.net.InetAddress;import java.net.UnknownHostException;public class ipTest { public static void main(String args[]) throws UnknownHostException { InetAddress ipnetAddr = InetAddress.getLocalHost(); System.err.println("현재 아이피 : " + ipnetAddr.getHostAddress()); System.err.println("현재 hostname : " + ipnetAddr.getHostName()); }}..
JPA(Java Persistence API)란?객체 지향 프로그래밍과 관계형 데이터베이스 간의 차이를 자동으로 연결해 주는 역할을 하며 다음과 같은 장점이 있다. 1. SQL 중심 -> 객체 중심 개발 JDBC API를 통해 직접 SQL 쿼리를 작성하는 경우, 프로젝트가 커지고 쿼리가 복잡해질수록 관리가 어려워질 수 있는데 JPA를 사용하면 SQL에 대한 의존도를 줄여주어, 복잡한 프로젝트에서도 객체 중심으로 효율적인 개발을 할 수 있다. 2. 생산성 증대CRUD를 간단한 메서드를 통해 사용할 수 있다.저장: jpa.persist(member)조회: Member member = jpa.find(memberId)수정: member.setName("변경할 이름")삭제: jpa.remove(member)JP..

필터는 1개 이상이 존재할 수 있으며 각각의 필터는 맡은 작업을 수행하고 작업이 다음 필터에서 수행될 수 있도록 제어권을 넘겨주면서 최종적으로 서블릿까지 도달한다. FilterChain은 요청이 여러 필터를 거쳐 최종적으로 서블릿에 도달하도록 하는 구조.각 필터는 doFilter 메서드 내에서 chain.doFilter(request, response)를 호출하여 다음 필터 또는 서블릿으로 요청 전달.필터 체인의 각 필터는 요청과 응답을 처리할 수 있으며, 필터 체인이 완료되면 서블릿이 요청을 처리.출처 : https://realrain.net/posts/spring-security-filterOpenAI ChatGPT (https://openai.com)

Java로 난수를 생성하는 방법이 여럿 있는데 대표적인 3가지 방식을 정리해보려고 한다. 1. Math.random() 메서드 0.0 이상 1.0 미만의 난수가 생성된다. 그러나 Math.random()은 고정된 시드를 설정할 수 없어, 동일한 난수 시퀀스를 재현하기 어렵다는 단점이 있다. import java.util.*;class Main { public static void main(String[] args) { double num1 = Math.random(); int num2 = (int)(Math.random()*100); // 0 ~ 100 사이의 난수 생성 System.out.println(num1); System.out..

개발자 도구로 내가 현재 접속한 웹사이트의 포트 번호를 알 수 있다. 1. 포트번호를 확인하고자 하는 사이트에 접속(예시: 티스토리) 2. 키보드 F12를 눌러 개발자도구 열기 - [Network] 탭 - [Headers] - Remote Address 확인 1) 211.249.221.185 : 현재 접속한 웹사이트(티스토리)의 IP 주소2) 443 : 웹사이트가 사용하고 있는 포트 번호 대부분의 상용 웹사이트는 사용자 편의, 보안, 호환성을 위해 표준 포트인 80(HTTP)과 443(HTTPS)을 사용하며 비표준 포트는 주로 개발자 포트, 관리 페이지, 특정 서비스 목적 등의 용도로 사용된다고 한다. ex) 개발자 포트: http://localhost:8080관리 페이지: http://IP주소:8080..

자바를 사용하여 원하는 URL로 이동할 수 있는 QR 코드 이미지를 다운로드하는 방법에 대해 알아보자.@RequestMapping("/qrDownload.do")public void qrDownload(HttpServletResponse response) throws WriterException { try { //QR코드 이미지 생성 QRCodeWriter qrCodeWriter = new QRCodeWriter(); Map hintMap = new HashMap(); hintMap.put(EncodeHintType.CHARACTER_SET, "UTF-8"); BitMatrix bitMatrix = qrCodeWriter.encode("..