목록분류 전체보기 (435)
보라코딩
240617 - Jeager vs Zipkin 분산 모니터링 서비스 비교 - interface 테스트코드 (minio) - watcher 코드리뷰 요청함 ㄴ 수정 중... ㄴ 서비스에 있는 메서드를 domain으로 옮겨서 코드 깔끔하게! ㄴ 도메인은 pojo class로 구성!!! 중요!!! ㄴ 도메인에 비지니스 로직이 들어가게!!!! 240618 - watcher 코드 리뷰 중...ㅎㅎㅎ (Map구조 List로 다시 변경) - jpa 연관관계 편의 메서드240619 - 리팩터링 : 도메인(pojo class로 의존성 없게)에 비지니스 로직 들어가게하고, 도메인 구성을 잘 해야 한다...! - allocationSize : 시퀀스 한 번 호출에 증가하는 수(성능 최적화에 사용) ㄴ allocationSi..
AOP (Aspect-Oriented Programming)는 프로그래밍에서 코드를 재사용하기 쉽게 만드는 기법입니다. 특히, 여러 곳에서 반복되는 관심 사항(예: 로깅, 보안, 트랜잭션 관리 등)을 한 곳에서 관리할 수 있도록 도와줍니다. AOP를 사용하면 코드의 중복을 줄이고 유지보수성을 높일 수 있습니다. 1. 프록시 객체의 역할프록시 객체는 스프링 AOP에서 중요한 역할을 합니다. 주로 다음과 같은 상황에서 사용됩니다:트랜잭션 관리: @Transactional 어노테이션이 붙은 메소드의 경우, 스프링은 해당 메소드를 호출할 때 프록시 객체를 생성하여 메소드 실행을 감싸고 트랜잭션 관리를 수행합니다.보안 제어: 특정 사용자가 접근할 수 있는 메소드를 제어하기 위해 프록시 객체를 사용하여 접근 권한..
SPA(Single Page Application)는 하나의 웹 페이지로 구성된 웹 애플리케이션을 말합니다. 기존의 다중 페이지 웹 애플리케이션과는 달리, SPA는 단 하나의 HTML 페이지를 사용하고, JavaScript를 이용해 동적으로 내용을 갱신합니다. 이는 웹 애플리케이션을 보다 빠르고 사용자 친화적으로 만들어줍니다. 다음은 SPA의 주요 특징과 장점, 그리고 몇 가지 대표적인 프레임워크에 대한 설명입니다.주요 특징단일 HTML 파일: 초기 로딩 시에 하나의 HTML 파일을 서버로부터 가져옵니다. 이후 페이지 이동은 JavaScript를 통해 이루어집니다.클라이언트 사이드 라우팅: 페이지 이동 시 전체 페이지를 다시 로딩하는 것이 아니라, JavaScript를 통해 필요한 부분만 갱신합니다.빠른..

재귀함수~~ class Solution { int count = 0; public int solution(int[] numbers, int target) { int answer = 0; dfs(numbers, target, 0, 0); answer = count; return answer; } public void dfs(int[] numbers, int target, int depth, int result){ if(depth == numbers.length){ if (result == target){ ..
import java.util.*; class Solution { public static int n,m; public static int answer = -1; public static int dx[] = {-1,1,0,0}; public static int dy[] = {0,0,-1,1}; public static boolean visited[][]; public int solution(int[][] maps) { n = maps.length; // 행 m = maps[0].length; // 열 visited = new boolean[n][m]; // 방문배열여부 모두 ..

처음에는 문자를 숫자로 변환하려고 했는데 다시 또 문자로 변환하고.. 그럼 매우 복잡해져서char로 처리하는 것이 훨씬 편하다.이중 for 문으로 처리할 필요가 없었따!!! index를 빼는 방식으로 while문 조건을 걸어 진행하는 것과toCharArray()로 char 배열로 만드는 것을 익혔다!set.contains로 한번에 확인할 수 있는 점도 매우 편리하다 :) import java.util.*; class Solution { public String solution(String s, String skip, int index) { // answer을 StringBuilder로!! StringBuilder answer = new Strin..
PostgreSQL을 사용하는 이유1. 데이터 관리 방식의 차이MySQL: 주로 테이블 단위로 데이터를 관리하며, 트랜잭션 처리 시 테이블 레벨의 잠금을 사용합니다.PostgreSQL: 레코드 단위로 데이터를 관리하며, 다중 버전 동시성 제어(MVCC)를 통해 레코드 레벨의 잠금을 사용하여 동시성을 높입니다.2. 성능 최적화 (버퍼와 언두 로그)MySQL: 많은 양의 데이터를 처리할 때, 예를 들어 만 건의 레코드를 한 번에 디스크로 옮기는 방식으로 작업을 처리합니다. 이는 대량의 데이터를 처리하는 데 유리할 수 있지만, 작업량이 많아질수록 성능 저하가 발생할 수 있습니다.PostgreSQL: 트랜잭션 처리 시, 데이터 변경 사항을 하나씩 차례로 디스크로 옮기는 방식을 사용합니다. 이러한 방식은 변경 사..
240610 - 테스트 코드 작성 및 FTP 동시에 멀티 스레드 코드 수정- 틈틈히 RealMySQL 5장 트랜잭션 공부 중 1. domain 먼저 짜면 좋다. 하지만 어려우니 2. ServiceImpl을 먼저 만든다 (상세 코드 구현이 아님) 3. Port(인터페이스 구성) 4. ServiceImpl 단위 테스트 코드를 먼저 짠다 5. 하나씩 adaptor을 구현하며 통합테스트로 구성한다 이런 방식으로 하면 DB랑 카프카를 도커로 올리지 않고도 편하게 코드 구현 가능하다. 240611 - batch insert 문제해결 - interface 리팩터링 240612 - MinIO 적용해서 FTP에서 바로 MinIO로 옮기고 로컬에 다운받지 않고 파싱 - 다른 서비스 코드 리뷰 중 240613 -..

고민하다가 다른 풀이 보고 푼 문제 신선했던 점은일단 x, y값을 주고 나서이후 조건을 따지고조건에 맞는 변수를 반환하기...! Map으로 푸는 방법으로도 풀고 싶다! import java.util.*; class Solution { public int[] solution(String[] park, String[] routes) { // 스타트 지점 찾기 int start_x = -1; int start_y = -1; char[][] arr = new char[park.length][park[0].length()]; // 현재 위치 for (int i =..
240603 - Jeager vs Zipkin - FTP 감시 다시 시작 (DB설계도! scheduler도) - 테스트 주도 개발 방식으로 시작해보자! - Real MySQL 스터디 예정 (DB 아키텍처 공부 중..) - fixedDelay : 작업이 완료된 후 일정 시간 후에 다음 작업이 시작 - fixedRate : 특정 시간 간격으로 해당 메서드를 주기적으로 실행 (이전 작업이 완료되었는지 여부에 상관없이 일정한 시간 간격으로 작업이 실행) 240604 - FTP 감시 코드 진행 중.. (Map으로 그룹화, 중복 데이터 감지 등..) 240605- interface 리팩토링- FTP 연결 시점 변경, 스케쥴러 adaptor out으로 위치 변경 - OneToMany, ManyToOne 문제 해..