들어가며 회사에서 개발 중인 서비스가 통신하기 위한 서버가 특정 서버에서만 접근 가능한 상황이었다. 백그라운드에서 동작하는 (유저가 접근하지 않아도 되는) 어플리케이션은 그 특정 서버에 서비스를 띄워서 서로 통신이 가능한 방식을 사용하고 있었지만 개발 중인 서비스가 동작 중인 서버는 별도의 서버로 분리가 되어있었고, 이 서버는 정책상 특정 서버에서 인바운드가 막혀있는 상태였다. 조금 복잡한데 아무튼 개발 중 서비스 -> 타겟 서버로의 직접 접근이 안된다는 말이다. 이 문제를 해결하기 위해서는 타겟 서버로의 접속을 우회하는 방식을 사용해야하는데 이걸 SSH 터널링이라고 한다. 이번에는 SSH 터널링의 개념과 필요성, 구현 예시에 대해 작성해보고자 한다. SSH (Secure Shell) 시큐어 셸(Secu..
Java
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify JSON.stringify() - JavaScript | MDN JSON.stringify() 메서드는 JavaScript 값이나 객체를 JSON 문자열로 변환합니다. 선택적으로, replacer를 함수로 전달할 경우 변환 전 값을 변형할 수 있고, 배열로 전달할 경우 지정한 속성만 결과에 포함 developer.mozilla.org 공공 api에서 가져온 유기동물 객체를 그대로 서버에 넘겨줘야하는 일이 생겼다. 이걸 Object 그대로 서버에 넘겨준 후 서버에서 파싱하는 방법이 있지만 이번에는 클라이언트단에서 JSON형태로 만들어 보내주기..
REST(REpresentational State Transfer)란? HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식 즉, REST란 어떤 자원에 대해 CRUD연산을 수행하기 위해 URI(Resource)로 요청을 보내는 것으로, POST / GET / PUT / DELETE / PATCH 등의 방식(Method)를 사용하여 요청을 보내며 요청을 위한 자원은 특정한 형태(Representation of Resource)으로 표현된다. 이러한 REST기반의 API를 웹으로 구현한 것이 REST API이다. REST의 구성요소 자원 (Resource) - URI 서버는 고유한 ID를 가지는 Resource를 가지고 있으며, 클라이언트..
싱글톤 패턴(Singleton Pattern)이란? 어떤 클래스가 최초 한번만 메모리를 할당하고(Static) 그 메모리에 객체를 만들어 사용하는 디자인 패턴을 의미한다. 즉, 인스턴스가 오직 1개만 생성되어야 하는 경우에, 클래스에 하나의 객체만을 생성해 이후에 호출된 곳에서는 생성된 객체를 반환하여 프로그램 전반에서 하나의 인스턴스만을 사용하게 하는 패턴이다. 싱글톤 패턴 생성 규칙 https://velog.io/@ednadev/%EC%9E%90%EB%B0%94-static-%EC%8B%B1%EA%B8%80%ED%86%A4-%ED%8C%A8%ED%84%B4singleton-pattern 자바 static - 싱글톤 패턴(singleton pattern) . . . . . static은 '클래스의', ..
https://ifuwanna.tistory.com/221 [Java] String, StringBuffer, StringBuilder 차이 및 장단점 Java 에서 문자열을 다루를 대표적인 클래스로 String , StringBuffer, StringBuilder 가 있습니다. 연산이 많지 않을때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 가능성은 거의 없습니다 ifuwanna.tistory.com String String과 StringBuffer/StringBuilder 클래스의 가장 큰 차이점은 String은 불변(immutable)의 속성을 갖는다는 점이다. String에 새로운 값을 추가하게 되면 기존의 값이 변경되는 것이 아니라 추가한 값은 새로운 메모리영역을 할당받고, 기존의 값..
JDK 8에 추가된 API로 함수형 인터페이스인 람다(lambda)를 활용할 수 있는 기술. 데이터를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드를 정의한 API이다. 배열이나 컬렉션을 출력할 때, 코드를 간결하고 가독성있게 표현할 수 있는 API로 길게 늘어진 for문을 체이닝과 람다를 이용하여 보기 쉽게 정리할 수 있다. 이렇게 적어서는 잘 이해가 되지 않으므로 예제를 가지고 이해해보기로 했다! 2021.11.26 - [개발자가 될 때까지/JAVA] - [Java] 람다식 (Lambda Expression) [Java] 람다식 (Lambda Expression) [JAVA] 람다식(Lambda Expression) (tistory.com) [JAVA] 람다식(Lambda Expression) ..
Map 특징 key와 value 쌍으로 이루어져 있다. key는 중복이 되지 않지만, value는 중복이 가능하다. (ex: 주민번호 - 이름) key를 통해 value를 빠르게 찾을 수 있다.(key는 입력할 때 hashing 처리함) key는 set으로 되어있다. value로 key를 찾기는 어렵다. HashMap 중복과 순서가 허용되지 않으며 null값이 올 수 있다. 가장 많이 사용된다. TreeMap 정렬된 순서대로 키(Key)와 값(Value)을 저장하여 검색이 빠르다. map의 메소드 메소드명 설명 반환값 get(키) 키로 값을 얻어온다. Object: 값을 반환 toString() 리스트 값을 [값, 값...]의 문자열 형태로 돌려준다. String put(키, 값) 키와 값을 추가한다 O..
Set 특징 요소값이 중복이 되지 않는다. 저장한 순서를 유지하지 않는다. 따라서 index가 없다. HashSet Set에서 가장 많이 사용하는 클래스 해시 알고리즘(hash algorithm)을 사용해서 검색속도가 빠르다. 순서를 예측할 수 없음 TreeSet 값을 정렬하지만 정렬방법을 지정할 수는 없다. 그래서 HashSet보다 상대적으로 느리다. Set의 메소드 메소드명 설명 반환값 toString() 리스트 값을 [값, 값...]의 문자열 형태로 돌려준다. String add(값) 값을 추가한다 boolean: add가 성공했는지 여부 addAll(콜렉션) Collection을 통째로 추가한다. boolean: add가 성공했는지 여부 contains(값) 리스트에 값이 들어있는지 확인 bool..
https://lelecoder.com/78 Java 리스트(List) 컬렉션 종류 ArrayList, Vector, LinkedList List 컬렉션의 종류로는 ArrayList, Vector, LinkedList가 있다. 애플리케이션 개발 업무를 하면서 List 컬렉션을 많이 사용한다. 특히 ArrayList를 많이 사용하고, 가끔 Queue 자료구조를 사용할 때만 LinkedList.. lelecoder.com 배열과의 차이점 배열 크기를 미리 알고 있어야 한다. 크기는 고정되어있다. 배열에 있는 중간 값을 빼내면 비어있는 채로 유지된다. index기반으로 접근이 가능하다. 기본자료형(primitive type), 클래스 자료형도 담을 수 있다. 리스트 크기가 고정되어있지 않고, 동적으로 할당된다..
추상클래스 (Abstract Class) 일반 클래스와 크게 다를 것이 없으나, 추상메서드를 선언하고 상속을 통해서 자식 클래스에서 완성하도록 유도를 하는 클래스이다. 추상 메소드가 하나라도 존재하는 클래스 일반 메소드도 존재할 수 있다. 추상 클래스로는 객체를 생성할 수 없다. → 상속을 위한 클래스이므로. 추상 클래스를 물려받은 자식 클래스만 객체 생성 가능(상속 문법은 클래스 상속과 동일함) 추상메소드 상속 기반 부모 클래스에서는 구현하지 않고, 자식 클래스에서 반드시 구현해야 하는 메소드이다. // 추상 메소드 public abstract void cry(); // 부모 클래스에서 구현하지 않음 // 일반 메소드 public void eat() { System.out.println("냠냠"); }..
반응형