전체 글 61

[자료구조] List, Set, Map

1. List : 순서가 있다. 중복을 허용한다. 크기가 가변적이다. LinkedList ArrayList 구조 양방향 포인터 구조 단방향 포인터 구조 데이터 삽입&삭제 빠름!!! 느림 검색 느림 빠름!!! 2. Map : key -value의 한 쌍으로 이루어진 데이터 집합 key에 대한 중복 X 검색속도 빠름 HashMap HashTable ConcurrentHashMap Thread-safe X O O key와 value Null 값 허용 O X X Synchronized(동기화) X O O * HashMap은 동기화를 보장하지 않아 데이터를 탐색하는 속도가 빠르며 Thread-sefe를 하지않기에 싱글 쓰레드 환경에서 사용하는것이 좋음. * 반면, HashTable 은 동기화를 보장하여 탐색속도가..

자료구조/자바 2022.11.22

[자료구조] 배열(Array)와 리스트(List)

1. 배열(Array) : 같은 타입의 여러 변수들을 하나의 묶음으로 다루는 것. 고정된 크기를 가진다. 인덱스(index)를 가지며 각 원소번호는 0부터 시작. * Array 사용 예시 int[] array = {1,2,3}; String[] weeks = new String[3]; week[0] = "일"; week[1] = "월"; week[2] = "화"; * 배열의 장점 1. 인덱스를 통한 검색 용이. 2. 연속적으로 메모리 관리가 편리. *배열의 단점 1. 크기가 고정되어 있어 한 element가 삭제되면 삭제된 상태를 빈 공간( 메모리 낭비 ) 2. 정적으로 배열의 크기를 컴파일 전 정해야하며 컴파일 후에는 크기를 변동할 수 없음. 2. 리스트(List) : 배열의 단점을 보완한 것. 고정된..

자료구조/자바 2022.11.22

쿠키(Cookie)와 세션(Session)

1. 쿠키와 세션은 왜 사용할까? : HTTP 프로토콜은 conncertionless , stateless 성질을 가지기 때문에 서버는 클라이언트가 누군지 매번 확인해야 하는데, 이 같은 점을 보안하기 위해 쿠키와 세션이 사용된다. 만약 쿠키와 세션이 없다면 영화표를 예매하려 페이지에서 로그인을 했음에도 다른 페이지로 이동할 때마다 계속 로그인을 해야 하는 상황이 일어날 수 있다. *connectionless : 클라이언트 요청(request) -> 서버 응답(response) 후 연결 끊음. *stateless : 통신이 끊나면 상태 유지하지 않음. 2. 쿠키 ( Cookie ) : 클라이언트(브라우저) 로컬에 저장되는 데이터 파일 ( 키와 값이 들어있음) 2-1. 쿠키의 동작 방식 1. 클라이언트의 ..

언어/자바 2022.11.22

TLSv1.3 오류

API 통신 중, 아래와 같은 TLSv1.3이라는 오류가 발생하여 몇시간을 삽질한 결과, 저 오류는 서버간 SSL 보안 등급이 맞지않아 발생되는 것 같다. java.lang.IllegalArgumentException: TLSv1.3 at sun.security.ssl.ProtocolVersion.valueOf(ProtocolVersion.java:215) ~[?:?] at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:264) ~[?:?] at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:145) ~[?:?] ..

웹개발/오류 2022.11.09

AES256 암호화, 복호화

1. AES(Advanced Encryption Standard)란? : 고급 암호화 표준, 대칭키를 쓰는 블럭 암호이다. 크기 라운드 수 128 bit 10 192 bit 12 256 bit 14 2. 패딩(Padding)이란? : 데이터를 특정 크기로 맞추고, 특정 크기보다 부족한 부분의 공간을 의미없는 문자들로 채워 비트수를 맞추는 것. 블럭 암호화 진행을 위해 패딩 기법이 필요함. Cipher cipher = Cipher.getInstance("AES/CNC/PKCS5Padding"); 3. AES256 암호화 import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.IvParameterSpec; impo..

언어/자바 2022.10.25

자바 특수 문자, 정규식 처리

입력 출력 \ ERROR \\ \ \' ' \" " ( ( \( ERROR / / \/ ERROR \\| | * 괄호나 일반 슬래시(/) 는 백슬래시(\)를 붙이지 않아도 된다. *split 사용 시 | 를 사용하는데, 이때 \\| 로 잘라야한다. ex> String splitTest = "홍길동|22|서울"; String[] info = splitTest.split("\\|"); 입력 출력 \n 줄바꿈 \r 줄의 맨 처음으로 \t 탭 \b 커서를 한 문자 앞으로 \0 빈 칸 : 특정한 규칙을 가진 문자열의 집 합을 표현하는데 사용되는 언어. 1. pattern 클래스 String patternTest = "^[0-9]*$"; //숫자 검증 정규식 st..

언어/자바 2022.10.24

JSON 이란?

1. JSON(JavaScript Object Notatio) 이란? : 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 데이터 교환 형식 데이터 포맷일 뿐이다. 단순히 데이터를 표시하는 표현 방법이다. 2. jSON 문법 // KEY - VALUE { "NAME" : "홍길동", "AGE" : "20" } //배열일 경우 { "STUDENT" : [ { "NAME" : "김나나", "AGE" : "22" }, { "NAME" : "나다다", "AGE" : "24" } ] } 3. JSON 파싱 1. 단순 KEY - VALUE import org.json.JSONObject; public void jsonParsing(){ String jsonResponse = "{ \"name\" : \"홍길동\"..

언어/자바 2022.10.24

API 연동(1)_ 토큰발급

1. API(Application Programming interface) 란? : 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다 즉, 어떤 방식으로 정보를 요청해야하는지, 이러한 요청 시 어떠한 형식으로 데이터를 전달 받을 수 있을지에 대해 정리한 일종의 규격이라고 볼 수 있다. * 토큰 요청 명세서 URL, HTTP 요청/응답 Header와 Body(JSON)로 구성되어 있다. HTTP Header 『Content-Type』은 요청/응답: 『application/json; charset=UTF-8』로 한다. 요청 메시지 HTTP 항목명 필수 타입 설명(비고) BODY id Y String(50) 발급받은 ID pw Y St..

언어/자바 2022.10.21

[Spring] Spring MVC 세팅(with IntelliJ Community)

선행 사항 : intellij Maven project 생성 * Spring MVC 프로젝트 환경설정 세팅하기 (+ Maven, +Oracle , +Mybatis, +Intellij ) 1. pom.xml 4.0.0 war com.bsidesoft bsspring 0.1 org.springframework spring-webmvc 5.2.3.RELEASE javax.servlet.jsp jsp-api 2.2 provided javax.servlet javax.servlet-api 4.0.1 provided javax.servlet jstl 1.2 runtime com.fasterxml.jackson.core jackson-databind 2.9.5 org.springframework spring-jdbc..

웹개발/BackEnd 2022.09.02

web.xml이란?

1. web.xml이란? : web application의 설정을 위한 파일. 2. web.xml의 역할 - Servlet 정보 설정 - 브라우저가 JAVA Servlet에 접근하기 위해서는 WAS에 필요한 정보를 알려줘야 해당하는 Servlet 호출을 할 수 있는데, 이때 참조하는 것이 web.xml 3. web.xml의 내용 - 배포할 Servlet이 무엇인지 - 해당 Servlet이 어떤 url에 매핑되는지 * (예시) spring MVC에서의 web.xml contextConfigLocation classpath:spring/*-context.xml org.springframework.web.context.ContextLoaderListener appServlet //servlet-name은 반드..

웹개발/BackEnd 2022.02.19