본문 바로가기
728x90

분류 전체보기103

연습#27 안녕하세요! 오늘도 한문제를 풀었습니다. greedy하게 풀면 그냥 끝나는 쉬운 문제였습니다. 다만 아쉬운건 저는 이상하게 포문을 두개 엮었네요 -_-; Arrays.sort(g); Arrays.sort(s); int i = 0; for(int j=0;i 2024. 1. 3.
NoSQL에서 다대일 관계, Join에 대한 지원이 약한 이유 중복된 데이터를 정규화하려면 다대일(many-to-one)관계가 필요합니다. 관계형 데이터베이스에서는 조인이 쉽기 때문에 ID로 다른 테이블의 로우를 참조하는 방식은 일반적이지만, 보통 문서 데이터베이스에서는 조인에 대한 지원이 약합니다. 그러므로 다대일 관계는 안타깝게도 문서 모델에 적합하지 않습니다. NoSQL에서 Join에 대한 지원이 약한 이유는 다음과 같습니다. 1. Schema Flexibility NoSQL 데이터베이스에서는 각 레코드(MongoDB의 경우 문서)가 레코드마다 다를 수 있는 자체 구조를 가질 수 있습니다. 이러한 유연성으로 인해 서로 다른 스키마를 가진 여러 테이블의 데이터를 결합해야 하는 기존 SQL 스타일 조인을 수행하기가 어렵습니다. 2. Distributed Archi.. 2024. 1. 3.
SDKMAN 꽤 괜찮은 툴을 발견했습니다. SDKMAN 이라는 툴인데요. 각종 유틸기능을 제공합니다. 1. sdk list java : java의 sdk 즉 jdk 구현체들 종류와 버전을 볼 수 있습니다. 2. sdk install java 11.0.21-amzn : list로 본 것 중 하나를 골라 설치합니다. 3. sdk use java 17.0.5-amzn : 특정 터미널 세션에서 java 버전을 변경합니다. 일시적 변경이므로 해당 세션이 종료되면 default 설정으로 돌아갑니다. 2024. 1. 2.
JVM runtime data area, GC 포인트 JVM 구조와 GC에 대해 다시 공부했습니다. 가끔 생각날 때마다 보긴 하는데 장기기억으로는 가지 않아서 이번에도 마치 처음 보는 녀석 같았습니다ㅎㅎ 이번에 배운 포인트 몇 가지만 정리해보려고 합니다. JVM의 runtime data area 관련 1. Metaspace영역은 java heap이 아닌 native 메모리 영역을 사용합니다. 리플렉션 클래스를 로드시 사용하므로, Spring을 사용하여 개발하는 사람들은 이 부분을 기억해둬야할 것 같습니다. (java heap이 아닌 native memory영역을 사용하므로 메모리 관리에 실패할 경우 OS수준까지 문제가 전파되기 때문입니다.) 2. Native Memory 영역이 있습니다. 여기에는 위에 이야기한 Metaspace, C heap, Thread.. 2023. 12. 31.
Spring Batch job_parameter 유무에 따른 예외 처리 차이 스프링 배치를 공부중입니다. 이런저런 테스트를 해보다가 다음과 같은 상황을 맞이했습니다. completed된 동일한 job instance를 재실행 하는 경우, 1. job parameter가 있는 경우에는 JobExecution을 만드는 과정에서 JobInstanceAlreadyCompleteException 발생합니다. 2. job parameter가 없는 경우에는 위 코드 조건문에 맞지 않아서 JobExecution이 생깁니다. Step Handler에서 Step이 모두 Completed상태이므로 Step already complete or not restartable, so no action to execute: StepExecution~ 로그가 찍힙니다. 생성된 JobExecution의 STAT.. 2023. 12. 29.
localhost.http-alt 란? PNS(Port Name Service) 안녕하세요. 오늘은 tcpdump를 볼 때 자주 보이는 localhost.http-alt에 대해 알아보겠습니다. 8080으로 서버를 띄우고 tcpdump를 보면 아래처럼 src/dst에 localhost.http-alt 가 보이곤 합니다. 여기서 localhost는 현재 실행중인 로컬호스트를 나타내고, 뒤의 http-alt는 이는 Port Name Service 의 일환으로 8080 포트 번호를 나타내는 것입니다. Port Name Service (PNS)는 TCP/UDP 포트 번호와 해당 포트가 사용되는 서비스의 이름을 매핑하는 서비스입니다. 이 매핑 정보는 주로 /etc/services 파일(유닉스계열)이나 유사한 데이터베이스에 저장되어 있습니다. PNS는 포트 번호에 의미 있는 이름을 부여하여 특정.. 2023. 12. 28.
SpringBatch 실습중에 H2 console 접근시 Connection Refused Spring Batch를 공부하는 중에 발생한 이슈를 적어봅니다. Spring Batch 프로젝트를 셋팅하고 H2디비를 연결 후에 각종 Job을 만들어 테스트 하는 도중, H2 Console 접근이 되지 않았습니다. http://localhost:8080/h2_console 접근시 ERR_CONNECTION_REFUSED 가 발생하였고, 역시나 RST를 받아서 connection_refused가 발생하고 있었습니다. 흠.. 이상합니다. 8080포트가 열려있는지 확인해보았습니다. > lsof -i :8080 아무것도 나오지 않았습니다. 설마 명령어가 잘못되었나 열린 포트를 확인해보았습니다. > lsof -PiTCP -sTCP:LISTEN LISTEN중인 포트에 8080이 없었습니다. 프로젝트의 pom.xm.. 2023. 12. 28.
연습#26 안녕하세요! 해피 크리스마스! 즐거운 연휴를 보내고 다시 일상 시작입니다. 1491. Average Salary Excluding the Minimum and Maximum Salary 너무 쉬웠습니다. (편안) 한가지 배운 점이 있습니다. 리턴하는 자료구조형으로 내부에서도 연산 하기 위 문제는 double을 리턴하므로, 소수점까지 처리가 필요합니다. 그러므로 내부 연산에서도 double형을 사용해야 합니다. 2023. 12. 26.
연습#25 하나 더 풀었습니다. 그냥 노동으로 풀었습니다. 그래서 runtime, memory모두 상위권이네요! (뒤에서 ㅠ) 2357. Make Array Zero by Subtracting Equal Amounts 다른 분들의 풀이를 보자마자 벽 느꼈습니다. Same elements, are always same -> Deduplicate Different elements, are always different until 0 -> Counts unique elements 1번은 이미 알고 있었는데 2번이 핵심인 것 같습니다. 예를들어 [4,5,6]이 있다고 할 때 단일 숫자는 자기 자신 말고는 다른 수를 0으로 만들 수 있는 가능성은 아예 없습니다. (Is there a possibility that a sin.. 2023. 12. 23.
연습#24 안녕하세요! 오늘도 문자열 조작 문제가 나왔습니다. 557. Reverse Words in a String III 저는 그냥 포문을 두번 돌려서 처리했습니다. 다른 분들의 풀이도 비슷하네요. 단어를 뒤집는데 StringBuilder를 썼냐, 아니면 손수 구현했나 차이만 있구요. 하나 더 풀어야지! 2023. 12. 23.
연습#23 1859. Sorting the Sentence 오늘은 문자열을 조작하는 문제를 풀었습니다. 그냥 배열 하나 만들어놓고, 해당 인덱스에 넣으면 됐는데(split -> insert -> join) 왜 저는 괜히 복잡하게 정렬을 했을까요 -_-; 알고리즘을 하다보면 간단하게 하는 방법을 아예 배제해버리는 것 같습니다. 그리고 String.join()을 사용하면 간단하게 이어붙일 수 있겠습니다. 분하다 분해.. 2023. 12. 22.
MySQL 트랜잭션 격리 수준 (isolation level) 안녕하세요. 오늘은 MySQL의 격리수준을 알아보겠습니다. 트랜잭션에서 격리수준(isolation level)은 여러 트랜잭션이 동시에 처리될 때, 다른 트랜잭션의 변경사항을 어디까지 허용할 것인지 설정하는 매우 중요한 개념입니다. 트랜잭션의 격리수준에 따라서 고립도, 동시 처리 성능, 부정합 정도가 달라지게 됩니다. (격리 수준이 높아지면 고립도가 올라가고, 동시 처리 성능이 떨어지며 부정합 정도가 완화된다 라고 직관적으로 이해해볼 수 있습니다.) 위 표를 보면 행이 격리수준이고, 밑으로 내려갈 수록 격리 수준이 올라가는 것입니다. 열은 부정합의 종류입니다. 먼저 부정합의 종류부터 알아보겠습니다. 1. Dirty Read 특정 트랜잭션에서 처리한 작업이 완료되지 않았는 데도 다른 트랜잭션에서 볼 수 있.. 2023. 12. 21.
728x90