분류 전체보기
-
[Java] Spring 빌드 Jar, WarProgramming/Java 2024. 2. 29. 00:26
Spring 프레임워크를 빌드하면 나오는 실행 파일 포맷은 Jar, War 두가지이다. Gradle, Maven 같은 빌드 도구를 사용하여 빌드하면 하나의 산출물인 Jar, War파일이 생성된다. Jar파일은 JVM위에서 실행되지만, War파일은 WAS위에서 실행된다. Jar -> SpringBoot를 사용하는 경우 War -> JSP만으로 이루어져 있거나, 외부 WAS를 사용할 경우 사용하거나 필요에 맞게 배포(패키지)포맷을 정하면 된다. ● 외장 WAS를 사용하는 환경이라면 war배포 ● 내장 WAS를 써야하는 환경이라면 jar배포 ● jar와 달리 war는 WEB-INF 및 META-INF 디렉토리로 사전 정의된 구조를 사용하며, WAR파일을 실행하려면 Tomcat, Weblogic, Websphe..
-
[Java] Garbage CollectionProgramming/Java 2024. 2. 28. 01:36
GC JVM내에서 메모리 관리를 해주는 것. 쓰지 않는 객체(힙 메모리 객체가 null)인 경우 가비지 컬렉터의 대상이 된다. 사용자가 동적으로 생성한 객체가 있는 영역인 Heap메모리에서 동작한다. C++에서는 Heap영역의 메모리를 사용하기 위해 동적 메모리 영역을 할당 받고 해제하는 과정을 개발자가 직접 해야한다(메모리를 수동으로 직접 관리) → 메모리 영역을 할당 받고 해제하지 않으면 메모리 누수가 발생할 수 있고, 이미 해제한 메모리 영역을 또 해제하면 에러가 발생할 수 있다. → Java에서는 동적 메모리 영역(힙 메모리)를 GC가 관리하여 에러 발생 요인을 방지할 수 있다. GC를 수행하게 되면 GC를 수행하는 스레드를 제외한 모든 스레드가 중지된다. → 이것을 stop-the-world라고..
-
[Java] String 클래스Programming/Java 2024. 2. 6. 19:28
String public final class String extends Object implements Serializable, Comparable, CharSequence String 클래스는 final로 선언되어 있다. String 클래스는 자식 클래스를 양산할 수 없다. 모든 클래스의 부모 클래스인 Object클래스를 확장했다. - Serializable 인터페이스 : 구현해야 하는 메소드가 하나도 없는 특이한 인터페이스 - Comparable 인터페이스 : compareTo()메소드 하나만 선언되어 있다. - CharSequence 인터페이스 : 문자열을 다루기 위한 클래스 - StringBuilder, StringBuffer 클래스도 CharSequence인터페이스를 구현해 놓았다. 불변한 객..
-
[Git] github 계정 여러개 사용Github 2024. 1. 5. 02:15
작업 중인 PC에서 github 계정을 여러 개 사용하고 싶었습니다. global 등록된 user.name 과 user.email이 있었기에 다른 계정으로 push가 되지 않는 문제가 있었습니다. 이를 해결하기 위해 한 PC에서 여러 개의 github계정을 사용하는 방법을 포스팅하겠습니다. Config config --global github를 처음 사용할 때 global config 정보인 user.name과 user.email을 등록하게 됩니다. $ git config --global user.name "name" $ git config --global user.email "email@example.com" $ git config --list 이 config는 "~/.gitconfig"에 저장되고 g..
-
[보안] 대칭키 공개키Computer Science/Security 2024. 1. 3. 17:34
대칭키 암복호화에 사용하는 키가 동일한 암호화 방식입니다. 공개키에 비해 속도는 빠르지만 키를 교환해야 한다는 문제가 있습니다.(키 배송 문제) 키를 교환하는 중 키가 탈취될 수 있는 문제가 있고, 사람이 증가할 수록 전부 따로 키 교환을 해야하기 때문에 관리해야할 키의 수가 증가합니다. 키 배송 문제를 해결하기 위한 방법에는 몇 가지가 있습니다. 1. 키의 사전 공유에 의한 해결 키 관리기관(TA, trusted authority)이 사전에 임의의 두 사용자(A, B)에게 비밀 경로를 통하여 임의 키를 선택하여 전달하는 방법입니다. 이 방법은 일반적으로 TA와 네트워크 상의 모든 사용자 사이에 안전한 통로가 필요하며, 사용자가 많은 경우에 TA는 물론 사용자들도 많은 키를 관리해야 하는 문제점이 있습니..
-
[백준] 1991번 트리 순회 c++Coding Test/BaekJoon 2023. 12. 13. 10:54
문제 설명 문제 바로가기 제한 사항 시간 제한 : 2초 메모리 제한 : 128MB 풀이 #include #include #include #include using namespace std; int arr[2][27]; void preOrder(int x, string& str) { if (x < 0) { return; } str.push_back(x + 'A'); preOrder(arr[0][x], str); preOrder(arr[1][x], str); } void inOrder(int x, string& str) { if (x < 0) { return; } inOrder(arr[0][x], str); str.push_back(x + 65); inOrder(arr[1][x], str); } void p..
-
[CS] HTTP HTTP/2 HTTPS QUICComputer Science/CS 2023. 12. 7. 19:05
HTTP Hypertext Transfer Protocol 클라이언트와 서버 간 통신을 위한 통신 규칙 세트 또는 프로토콜입니다. 사용자가 웹 사이트를 방문하면 사용자 브라우저가 웹 서버에 HTTP 요청을 전송하고 웹 서버는 HTTP 응답으로 응답합니다. 웹 서버와 사용자 브라우저는 데이터를 일반 텍스트로 교환합니다. 간단히 말해 HTTP 프로토콜은 네트워크 통신을 작동하게 하는 기본 기술입니다. HTTP특징 ● Stateless(무상태) : 서버가 클라이언트의 상태를 보존하지 않음 ▷ 장점 : 서버 확장성 높음(응답 서버를 바꿀 수 있고 무한한 서버 증설 가능) ▷ 단점 : 클라이언트가 추가 데이터 전송 ▷ 상태 유지는 쿠키나 세션 사용 → 쿠키, 세션, 토큰을 사용해서 상태를 기억할 수 있다. 상태를..
-
[CS] REST APIComputer Science/CS 2023. 12. 7. 18:39
REST API Representational State Transfer 분산 네트워크 상에서 자원(리소스)을 표현하고 그 상태를 전송하는 아키텍처 스타일입니다. REST API란 서버 자원을 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계 방식입니다. 클라이언트에서 정보를 요청하면 서버는 특정 기기에 종속되지 않고 모든 기기에 통용할 수 있는 JSON데이터를 응답으로 보냅니다. 서버가 클라이언트의 요청에 체계적으로 대응할 수 있어서 서버 프로그램의 재사용과 확장성이 좋아집니다. REST HTTP URL로 서버의 자원을 명시하고, HTTP 메서드(POST, GET, PATCH/PUT, DELETE)로 해당 자원에 대해 CRUD하는 것을 말합니다. API 클라이언트가 서버의 자원을 요청할 수 있도록 ..