백엔드
[C#] List 클래스 Remove() 이슈
😄 List 클래스 사용 중 요소 제거 중 발생하기 쉬운 문제 해결 방법 C#의 List 클래스에는 아이템을 제거하는 메소드가 Remove, RemoveAt로 2개 존재한다. Remove(obejct element) 특정 요소를 리스트에서 제거 ( 객체 지정 ) RemoveAt(int index) 특정 위치의 요소를 리스트에서 제거 ( 인덱스 지정 ) 이 때 아래와 같이 반복문을 사용하며 Remove 메소드를 사용하면, class Game { public string name; // 게임 이름 public int favorite // 나의 선호도 } class Program { static void Main(string[] args) { List list = new List(); list.Add(new ..
[WebRTC] TURN 서버의 필요성
WebRTC 기술을 사용해 음성 애플리케이션을 만들어 테스트하는 중 P2P 연결이 잘 안 되는 문제가 있었다. 원인을 찾아보려고 코드를 계속 수정했지만 실행이 되지 않았다. 그러던 중 LTE를 사용하고 있던 Test 폰을 와이파이를 연결해보니 잘 동작했었고, LTE 환경에서 P2P 연결이 안 된다는 것을 알 수 있었다!! 🧐 Why? WebRTC에서 P2P 연결을 위해 최적의 ICE를 찾으며 연결해야할 사용자에게 갈 수 있는 최적의 네트워크 경로를 찾는다. 이때 최적의 경로는 어떻게 찾게 되는 걸까? 보통은 NAT환경에 있는 사용자를 찾기 위해 STUN서버를 사용하고 이를 통해 NAT 뒤의 종단(사용자)을 파악할 수 있다. 하지만 이때 STUN 서버를 거쳐도 NAT 뒤에 누군가가 있는지 (IP정보가 무엇..
[Spring] 싱글톤 레지스트리
💡 싱글톤 패턴이란? 서버는 하나당 최대로 초당 수십에서 수백 번씩 요청을 받아 처리할 수 있는 높은 성능을 요구하며, 계층형구조로 이뤄진 경우가 대부분이고, 비즈니스 로직도 복잡한 경우가 많습니다. 이때 매번 요청이 올때마다 로직을 담당하는 오브젝트를 만든다면, 부하가 걸려 서버가 감당하기 힘들것입니다. (오브젝트의 동일성과 등등성 참고) 그래서 서비스 오브젝트라는 개념을 사용해 하나의 오브젝트만 만들어두고, 이를 공유해서 사용하는 방식을 택합니다. 이렇게 애플리케이션 안에 제한된 수, 대개 한 개의 오브젝트만 만들엇 사용하는 것이 싱글톤 패턴 원리입니다. ✏️ 싱글톤 패턴의 구현 방법 클래스 밖에서는 오브젝트 생성을 못하고, 생성자를 private로 만듭니다. 생성된 싱글톤 오브젝트를 저장할 수 있는..
[Spring] DAO 기본 구조 만들기
🧐 DAO란? DAO(Data Access Object)는 DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트 🧐 DAO 기본 구조 먼저 사용자 정보를 쉽게 저장하기 위한 객체를 위해 User 클래스를 만들어줍니다. User Class public class User { String id; String name; String password; public String getId(){ return id; } public void setId(String id){ this.id = id; } public String getName(){ return name; } public void setName(String name){ this.name = name; } public String ge..
[Spring] @Bean 과 @Component 차이
🧐 @Bean 과 @Component 사용하는 이유? IoC Container는 @Configuration, @Bean, @Component, @Repository, @Service, @Controller가 달린 클래스를 감지하며 빈을 가져오기 위해 빈 스캐닝을 합니다. 대표적으로 빈으로 사용 할 수 있도록 해주는 어노테이션으로 @Bean과 @Component이 있다. (@Configuration은 구성클래스를 만들 때 사용, @Repository, @Service, @Controller는 @Component에 속해있다.) 😊@Bean vs @Component 👉 @Bean @Bean은 개발자가 직접 제어가 불가능한 외부 라이브러리를 사용할 때 사용한다. @Configuration을 선언한 클래스 내부에..
[Spring] POJO 구성해보기
🧐 자바로 POJO 구성해보기 (1) POJO클래스를 설계할 때 @Configuration, @Bean을 붙여 자바 구성 클래스를 만들거나, @Component, @Repository, @Service, @Controller를 붙여 자바 컴포넌트를 구성해야합니다. IoC 컨테이너는 위와 같이 애너테이션을 붙인 자바 클래스를 스캐닝하여 POJO 인스턴스를 구성해줄 수 있습니다. 기본적인 POJO를 설계할 때의 원리는, 아래 그림과 같이 Main Class에서 IoC 컨테이너를 생성해주고, 구성 클래스에서 생성된 빈 인스턴스를 가져오는 원리입니다. POJO를 사용하기 위해 다목적 시퀀스 생성기 애플리케이션을 만들어보면, prefix, suffix, initial 세 프로퍼티를 지닌 SequenceGenera..