일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- openapi
- 스프링
- 향상된for문
- 참조변수타입변환
- ChatGPT
- 날씨API
- 배열탐색
- 동전교환알고리즘
- 99클럽
- 파일사용권한
- 4A피드백
- 프로젝트
- 코딩테스트
- string메서드
- 네이티브애플리케이션
- SQL
- Java
- 성장형마인드셋
- 프로그래머스
- SQ3R
- 루트사용자
- API명세서
- 스레드동기화
- API
- 자바
- 백준
- 제너릭메서드
- 재귀적사고
- Spring
- staging_area
- Today
- Total
목록전체 글 (45)
개발 공부용
가변 인자는 매개변수 개수를 유동적으로 받을 수 있는 기능이다.메서드나 생성자를 호출할 때 인자의 개수를 정하지 않고 넘길 수 있게 해준다. public void printNames(String... names) { for (String name : names) { System.out.println(name); }} 이와 같이 타입 뒤에 ... 을 붙여 사용한다. 가변 인자 규칙가변 인자는 내부적으로 배열로 처리된다.하나의 메서드에 가변 인자는 하나만 사용 가능하다.가변 인자는 마지막 매개변수여야 한다. 데이터가 외부에서 바뀌면 안될 때나 멀티스레드 환경에서는일관성과 불변성을 위해서 가변 인자를 받아서 불변 리스트(List.of)로 만든다. //불변 리스트 아닌 경우BasicIn..
https://www.acmicpc.net/problem/2178 문제NxM 미로가 있다.미로에서 1은 이동할 수 있는 칸이고 0은 이동할 수 없는 칸이다.(1,1)에서 출발하여 (N,M)의 위치로 이동할 때 지나야 하는 최소 칸 수를 구하는 프로그램을 작성해라. 입력첫째줄에 두 정수 N,M(2다음 N개의 줄에는 M개의 정수가 미로로 주어진다.각각의 수들은 붙어서 입력으로 주어진다. 출력첫째 줄에 지나야 하는 최소 칸 수를 출력한다.도착 위치로 이동할 수 있는 경우만 입력으로 주어진다. 풀이 방법최소 칸 수를 구하라고 명시되어 있으므로 BFS 문제임을 알 수 있다. (최소를 구하면 BFS, 모든 경우를 탐색해야 하면 DFS)시작 위치를 queue에 추가하고 방문 처리를 해준다.while문으로 queue가..
완전 탐색(Brute Force)은 주어진 데이터에서 가능한 모든 경우의 수를 시도하여 정답을 찾는 알고리즘이다.시간복잡도 면에서는 불리하지만 문제의 입력 크기가 작을 때 유리하다. DFS(Depth First Search)하나의 탐색을 전부 온전히 수행할 때까지 진행재귀 호출, 스택(LIFO)으로 구현모든 경우의 수를 탐색해야 한다면 DFS출발지에서 목적지에 도달할 수 있는지를 중점으로 탐색하는 완전 탐색 기법재귀 방식과 똑같고, 구현이 편하다.특히 문제에서 탐색 시 제약 조건을 붙이거나 결과가 누적되어야 하는 조건이 있다면,하나의 경우의 수를 고유하게 취급해주기 위해 사용한다. 구현 로직시작 부분을 스택에 삽입하고 함수 호출해당 위치를 방문했다고 표시하고 작업 처리이동 가능한 방향을 하나씩 확인다음..
자바에서 Null은 참조형의 기본값이며 데이터 타입이 아니고 형변환을 허용하는 값이다.NullPointerException은 특정 객체 참조가 Null일 때 그 객체를 사용하려고 시도해서 발생한다. String name = null;int length = name.length(); // 여기서 NPE name이 null인데 length()를 호출해서 NPE가 발생한다.Null에는 메소드나 필드 접근을 할 수 없기 때문이다. if (item == null) { throw new NullArgumentException("item");}// 생략...List children = getMenuItems(item.getPortal().getId(), item.getId()); 이 코드에서 NPE가 발생했다...

1. Riot Developer Portal에서 api 키 발급받기 Riot Developer PortalAbout the Riot Games API With this site we hope to provide the League of Legends developer community with access to game data in a secure and reliable way. This is just part of our ongoing effort to respond to players' and developers' requests for data anddeveloper.riotgames.com 라이엇 계정이 없으면 회원가입이 필요합니다.로그인하면 하루 뒤 만료되는 api key를 발급해 줍니다.pr..

Elasticsearch의 특징 Elastic Search는 검색을 위한 DB역색인 방식을 사용하여 단어나 문장을 매우 빠르게 찾음자연어 처리 기능이 내장(NIP)단어를 쪼개는 토큰화 지원불필요한 단어를 거르는 필터링 지원비슷한 형태로 바꿔주는 정규화가 자동 지원조건 검색, 정렬 지원=> 대량의 리뷰도 빠르게 검색 가능하다. Elasticsearch의 기능 스키마리스: 데이터 구조를 정하지 않고 유연하게 데이터를 추가할 수 있음 -> 성능을 위해서 권장되진 않음분산시스템(클러스터링): 데이터를 여러 노드에 나누어 저장(샤딩)하여 대량 대이터를 분산 처리함 -> 노드가 늘어날수록 검색 성능이 향상됨높은 확장성 및 고가용성: 클러스터 노드를 쉽게 추가하거나 제거할 수 있고 장애가 발생해도 서비스가 중단되지..
소프트웨어 테스트 소프트웨어의 기능과 동작, 데이터 등이 의도한 대로 처리되는지 확인하는 과정.결함을 찾아내고 수정한다.독립적으로 격리된 환경을 만들고특정 조건을 세팅하고코드를 실행하여내가 의도한 것과 결과값이 같은지 검증하는 것 테스트코드: 테스트를 반복할 수 있는 틀테스트를 반복적으로 실행 가능하므로 문제 상황을 빠르게 재현해야 한다.또한 테스트코드에는 의도한 시나리오 담겨있으므로 문서로서도 기능한다.소프트웨어 테스트!=테스트 테스트코드 작성 패턴: Give - When - Then Given: 시나리오테스트 준비과정, 테스트에 필요한 변수, 입력값 준비When: 실행실제로 테스트 실행해보는 관계Then: 검증예상값과 테스트 결과값을 비교하여 검증 테스트 코드에 사용하는 Annotation @Spr..
ORM(Object-Relational Mapping) 객체 지향 프로그래밍 언어의 객체와 관계형 데이터베이스의 테이블을 자동으로 연결해주는 기술SQL 대신 객체 중심의 코드로 데이터 조작 가능 ORM이 제공하는 핵심 기능객체와 테이블의 매핑: 클래스 테이블, 객체 필드 테이블 컬럼 연결 자동화CRUD 기능 자동화: 생성, 읽기, 수정, 삭제 작업을 객체 중심으로 제공영속성 관리: 객체의 상태를 추적하고 DB에 동기화트랜잭션: 데이터의 일관성 보장(트랜잭션, 롤백, 커밋 자동 관리)객체 지향 쿼리 지원: 객체 중심의 쿼리 제공 ORM의 단점 성능 저하 가능성: 내부적으로 복잡한 작업을 수행하는 ORM=> 복잡한 조건이나 대량 데이터 처리 시 직접 작성한 SQL 대비 성능 저하 발생복잡한 쿼리 작성의..
Websocket 운영에서 고려할 요소연결 상태연결된 클라이언트 수신규 연결연결 종료 빈도 메시지 처리 성능메시지 지연 시간메시자 처리량리소스 사용량CPU, 메모리 사용량File Descriptor 사용 현황에러 및 예외websocket 연결 에러전송 실패 빈도 Websocket을 비즈니스적으로 봤을 때과거 사용자들 : 접속 상태 확인/메시지 즉시 전달 선호요즘 사용자들: 반응 기능(좋아요, 공지 등) 선호 사용자가 서비스를 자주, 오래 이용할 수록 매출 발생 가능성이 높아짐-> Websocket 세션 수를 모니터링/기록함으로써 유저 활성도 지표 체크 필요-> 또한 성과를 비즈니스적으로 증명할 수 있음-> 이러한 모니터링을 돕는 것이 External Broker Simple Broker(In-Memo..
Websocket 웹소켓은 하나의 TCP 연결을 공유하여 실시간 양방향 통신을 제공하는 기술이다.텍스트 채팅 서비스에 주로 사용되며 화상 회의 서비스도 구현할 수 있으나, 화상 회의에는 주로 WebRTC 기술을 사용한다. 클라이언트는 서버에 소켓을 연결한 상태를 유지하여 언제든지 서버에서 보낸 데이터를 받을 준비를 하고 있다.HTTP 통신은 지속적으로 데이터를 요청하는 폴링의 방식을 사용해야 하지만 웹소켓은 그럴 필요가 없다. Websocket의 특징기본 웹소켓은 낮은 수준의 프로토콜로 제공하는 기능이 제한적이라 구현 부담이 크다.웹소켓 세션도 관리가 되지 않아 따로 관리를 해야 한다. -> 그래서 필요한 것이 STOMP어느 한 쪽에서 연결 종료를 요청하거나 네트워크 문제가 발생하면 연결이 닫히고 통..